Modify c vs SIMD test

The current c vs SIMD test takes very long, which causes timeout in
nightly Jenkins test. This modification largely reduces the amount of
tests to run while still provides the coverage for different encoding
modes, speeds, and SIMD optimization variants.

Change-Id: I534c02d816931d7f8ebaebcbb2eb8d60d78941b5
diff --git a/test/av1_c_vs_simd_encode.sh b/test/av1_c_vs_simd_encode.sh
index 631b56d..29a2f99 100755
--- a/test/av1_c_vs_simd_encode.sh
+++ b/test/av1_c_vs_simd_encode.sh
@@ -14,8 +14,11 @@
 . $(dirname $0)/tools_common.sh
 
 PRESETS="good rt"
-LOWBD_CLIPS="yuv_raw_input yuv_480p_raw_input y4m_720p_input y4m_screen_input"
-HIGHBD_CLIPS="y4m_360p_10bit_input"
+LOWBD_CIF_CLIP="yuv_raw_input"
+LOWBD_480p_CLIP="yuv_480p_raw_input"
+LOWBD_720p_CLIP="y4m_720p_input"
+HIGHBD_CLIP="y4m_360p_10bit_input"
+SC_CLIP="y4m_screen_input"
 OUT_FILE_SUFFIX=".ivf"
 SCRIPT_DIR=$(dirname "$0")
 LIBAOM_SOURCE_DIR=$(cd ${SCRIPT_DIR}/..; pwd)
@@ -134,15 +137,15 @@
   local preset=$2
 
   # Bit-rates:
-  local bitrate_lowres_good="100 1000"
-  local bitrate_480p_good="200 2000"
-  local bitrate_720p_good="600 6000"
-  local bitrate_scc_360p_good="400 1200"
-  local bitrate_lowres_rt="50 400"
-  local bitrate_480p_rt="100 1800"
-  local bitrate_720p_rt="150 2000"
-  local bitrate_scc_360p_rt="400 800"
-  local bitrate_hbd_360p="100 1600"
+  local bitrate_lowres_good="300"
+  local bitrate_480p_good="500"
+  local bitrate_720p_good="1000"
+  local bitrate_scc_360p_good="500"
+  local bitrate_lowres_rt="200"
+  local bitrate_480p_rt="300"
+  local bitrate_720p_rt="600"
+  local bitrate_scc_360p_rt="300"
+  local bitrate_hbd_360p="500"
 
   if [ "${preset}" = "good" ]; then
     if [ "${content}" = "yuv_raw_input" ]; then
@@ -334,35 +337,60 @@
 
 av1_enc_test() {
   local encoder="$1"
-  local target="$2"
-  local preset="$3"
+  local arch="$2"
+  local target="$3"
+  local preset="$4"
   if [ -z "$(av1_enc_tool_path "${target}"  "${preset}")" ]; then
     elog "aomenc_{preset} not found. It must exist in ${AOM_TEST_OUTPUT_DIR}/build_target_${target} path"
     return 1
   fi
 
   if [ "${preset}" = "good" ]; then
-    local min_cpu_used=0
-    local max_cpu_used=6
-    local test_params=av1_encode_good_params
-    if [ "${target}" = "armv8-linux-gcc" ]; then
-      # TODO(BUG=aomedia:3474): Enable testing of high bit-depth clips after
-      # fixing C vs SIMD mismatches.
-      local test_clips="${LOWBD_CLIPS}"
-    else
-      local test_clips="${LOWBD_CLIPS} ${HIGHBD_CLIPS}"
+    if [ "${arch}" = "x86_64" ]; then
+      local min_cpu_used=0
+      local max_cpu_used=6
+    elif [ "${arch}" = "x86" ]; then
+      local min_cpu_used=2
+      local max_cpu_used=3
     fi
+    local test_params=av1_encode_good_params
   elif [ "${preset}" = "rt" ]; then
     local min_cpu_used=5
-    local max_cpu_used=10
+    local max_cpu_used=11
     local test_params=av1_encode_rt_params
-    local test_clips="${LOWBD_CLIPS}"
   else
     elog "Invalid preset"
     return 1
   fi
 
   for cpu in $(seq $min_cpu_used $max_cpu_used); do
+    if [ "${preset}" = "good" ]; then
+      if [ "${arch}" = "x86_64" ]; then
+        if [ "${cpu}" -lt 2 ]; then
+          local test_clips="${LOWBD_CIF_CLIP} ${HIGHBD_CLIP}"
+        elif [ "${cpu}" -lt 5 ]; then
+          local test_clips="${LOWBD_480p_CLIP} ${HIGHBD_CLIP}"
+        else
+          local test_clips="${LOWBD_720p_CLIP} ${HIGHBD_CLIP}"
+        fi
+      elif [ "${arch}" = "x86" ]; then
+        local test_clips="${LOWBD_CIF_CLIP} ${HIGHBD_CLIP}"
+      elif [ "${arch}" = "arm64" ]; then
+        # TODO(BUG=aomedia:3474): Enable testing of high bit-depth clips after
+        # fixing C vs SIMD mismatches.
+        local test_clips="${LOWBD_CIF_CLIP}"
+      fi
+    elif [ "${preset}" = "rt" ]; then
+      if [ "${cpu}" -lt 8 ]; then
+        local test_clips="${LOWBD_CIF_CLIP} ${SC_CLIP}"
+      else
+        local test_clips="${LOWBD_480p_CLIP} ${SC_CLIP}"
+      fi
+    else
+      elog "Invalid preset"
+      return 1
+    fi
+
     for clip in ${test_clips}; do
       local test_bitrates=$(get_bitrates ${clip} ${preset})
       for bitrate in ${test_bitrates}; do
@@ -402,7 +430,7 @@
 
   for preset in $PRESETS; do
     local encoder="$(av1_enc_tool_path "${target}" "${preset}")"
-    av1_enc_test $encoder "${target}" "${preset}"
+    av1_enc_test $encoder "${arch}" "${target}" "${preset}"
   done
 }
 
@@ -441,7 +469,8 @@
     local cmake_command="cmake $LIBAOM_SOURCE_DIR"
   fi
 
-  local x86_isa_variants="avx2 avx sse4_1 ssse3 sse3 sse2"
+  # Available x86 isa variants: "avx2 avx sse4_1 ssse3 sse3 sse2"
+  local x86_isa_variants="avx2 sse4_1 sse2"
 
   echo "Build for x86: ${target}"
   av1_enc_build "${target}" "${cmake_command}"
@@ -455,7 +484,7 @@
         continue
       fi
       export AOM_SIMD_CAPS_MASK=$($isa)
-      if ! av1_enc_test $encoder "${target}" "${preset}"; then
+      if ! av1_enc_test $encoder "${arch}" "${target}" "${preset}"; then
         # Found a mismatch
         return 1
       fi
@@ -465,6 +494,7 @@
 }
 
 av1_test_arm() {
+  local arch="arm64"
   local target="arm64-linux-gcc"
   local cmake_command="cmake $LIBAOM_SOURCE_DIR \
         -DCMAKE_TOOLCHAIN_FILE=$LIBAOM_SOURCE_DIR/build/cmake/toolchains/${target}.cmake \
@@ -480,7 +510,7 @@
       continue
     fi
     local encoder="$(av1_enc_tool_path "${target}" "${preset}")"
-    if ! av1_enc_test "qemu-aarch64 -L /usr/aarch64-linux-gnu ${encoder}" "${target}" "${preset}"; then
+    if ! av1_enc_test "qemu-aarch64 -L /usr/aarch64-linux-gnu ${encoder}" "${arch}" "${target}" "${preset}"; then
       # Found a mismatch
       return 1
     fi