masked_variance_test.cc (36939B)
1 /* 2 * Copyright (c) 2016, Alliance for Open Media. All rights reserved. 3 * 4 * This source code is subject to the terms of the BSD 2 Clause License and 5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License 6 * was not distributed with this source code in the LICENSE file, you can 7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open 8 * Media Patent License 1.0 was not distributed with this source code in the 9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent. 10 */ 11 12 #include <math.h> 13 #include <stdlib.h> 14 #include <string.h> 15 #include <tuple> 16 17 #include "gtest/gtest.h" 18 #include "test/acm_random.h" 19 #include "test/register_state_check.h" 20 #include "test/util.h" 21 22 #include "config/aom_config.h" 23 #include "config/aom_dsp_rtcd.h" 24 25 #include "aom/aom_codec.h" 26 #include "aom/aom_integer.h" 27 #include "aom_dsp/aom_filter.h" 28 #include "aom_mem/aom_mem.h" 29 30 using libaom_test::ACMRandom; 31 32 namespace { 33 const int number_of_iterations = 200; 34 35 using MaskedSubPixelVarianceFunc = unsigned int (*)( 36 const uint8_t *src, int src_stride, int xoffset, int yoffset, 37 const uint8_t *ref, int ref_stride, const uint8_t *second_pred, 38 const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); 39 40 using MaskedSubPixelVarianceParam = 41 std::tuple<MaskedSubPixelVarianceFunc, MaskedSubPixelVarianceFunc>; 42 43 class MaskedSubPixelVarianceTest 44 : public ::testing::TestWithParam<MaskedSubPixelVarianceParam> { 45 public: 46 ~MaskedSubPixelVarianceTest() override = default; 47 void SetUp() override { 48 opt_func_ = GET_PARAM(0); 49 ref_func_ = GET_PARAM(1); 50 } 51 52 protected: 53 MaskedSubPixelVarianceFunc opt_func_; 54 MaskedSubPixelVarianceFunc ref_func_; 55 }; 56 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(MaskedSubPixelVarianceTest); 57 58 TEST_P(MaskedSubPixelVarianceTest, OperationCheck) { 59 unsigned int ref_ret, opt_ret; 60 unsigned int ref_sse, opt_sse; 61 ACMRandom rnd(ACMRandom::DeterministicSeed()); 62 // Note: We pad out the input array to a multiple of 16 bytes wide, so that 63 // consecutive rows keep the 16-byte alignment. 64 DECLARE_ALIGNED(16, uint8_t, src_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)]); 65 DECLARE_ALIGNED(16, uint8_t, ref_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)]); 66 DECLARE_ALIGNED(16, uint8_t, 67 second_pred_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)]); 68 DECLARE_ALIGNED(16, uint8_t, msk_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)]); 69 int err_count = 0; 70 int first_failure = -1; 71 int src_stride = (MAX_SB_SIZE + 16); 72 int ref_stride = (MAX_SB_SIZE + 16); 73 int msk_stride = (MAX_SB_SIZE + 16); 74 int xoffset; 75 int yoffset; 76 77 for (int i = 0; i < number_of_iterations; ++i) { 78 int xoffsets[] = { 0, 4, rnd(BIL_SUBPEL_SHIFTS) }; 79 int yoffsets[] = { 0, 4, rnd(BIL_SUBPEL_SHIFTS) }; 80 for (int j = 0; j < (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16); j++) { 81 src_ptr[j] = rnd.Rand8(); 82 ref_ptr[j] = rnd.Rand8(); 83 second_pred_ptr[j] = rnd.Rand8(); 84 msk_ptr[j] = rnd(65); 85 } 86 for (int k = 0; k < 3; k++) { 87 for (int l = 0; l < 3; l++) { 88 xoffset = xoffsets[k]; 89 yoffset = yoffsets[l]; 90 for (int invert_mask = 0; invert_mask < 2; ++invert_mask) { 91 ref_ret = ref_func_(src_ptr, src_stride, xoffset, yoffset, ref_ptr, 92 ref_stride, second_pred_ptr, msk_ptr, msk_stride, 93 invert_mask, &ref_sse); 94 API_REGISTER_STATE_CHECK( 95 opt_ret = opt_func_(src_ptr, src_stride, xoffset, yoffset, 96 ref_ptr, ref_stride, second_pred_ptr, msk_ptr, 97 msk_stride, invert_mask, &opt_sse)); 98 99 if (opt_ret != ref_ret || opt_sse != ref_sse) { 100 err_count++; 101 if (first_failure == -1) first_failure = i; 102 } 103 } 104 } 105 } 106 } 107 108 EXPECT_EQ(0, err_count) 109 << "Error: Masked Sub Pixel Variance Test OperationCheck," 110 << "C output doesn't match SSSE3 output. " 111 << "First failed at test case " << first_failure; 112 } 113 114 TEST_P(MaskedSubPixelVarianceTest, ExtremeValues) { 115 unsigned int ref_ret, opt_ret; 116 unsigned int ref_sse, opt_sse; 117 ACMRandom rnd(ACMRandom::DeterministicSeed()); 118 DECLARE_ALIGNED(16, uint8_t, src_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)]); 119 DECLARE_ALIGNED(16, uint8_t, ref_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)]); 120 DECLARE_ALIGNED(16, uint8_t, 121 second_pred_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)]); 122 DECLARE_ALIGNED(16, uint8_t, msk_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)]); 123 int first_failure_x = -1; 124 int first_failure_y = -1; 125 int err_count = 0; 126 int first_failure = -1; 127 int src_stride = (MAX_SB_SIZE + 16); 128 int ref_stride = (MAX_SB_SIZE + 16); 129 int msk_stride = (MAX_SB_SIZE + 16); 130 131 for (int xoffset = 0; xoffset < BIL_SUBPEL_SHIFTS; xoffset++) { 132 for (int yoffset = 0; yoffset < BIL_SUBPEL_SHIFTS; yoffset++) { 133 for (int i = 0; i < 16; ++i) { 134 memset(src_ptr, (i & 0x1) ? 255 : 0, 135 (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)); 136 memset(ref_ptr, (i & 0x2) ? 255 : 0, 137 (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)); 138 memset(second_pred_ptr, (i & 0x4) ? 255 : 0, 139 (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)); 140 memset(msk_ptr, (i & 0x8) ? 64 : 0, 141 (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 16)); 142 143 for (int invert_mask = 0; invert_mask < 2; ++invert_mask) { 144 ref_ret = ref_func_(src_ptr, src_stride, xoffset, yoffset, ref_ptr, 145 ref_stride, second_pred_ptr, msk_ptr, msk_stride, 146 invert_mask, &ref_sse); 147 API_REGISTER_STATE_CHECK( 148 opt_ret = opt_func_(src_ptr, src_stride, xoffset, yoffset, 149 ref_ptr, ref_stride, second_pred_ptr, msk_ptr, 150 msk_stride, invert_mask, &opt_sse)); 151 152 if (opt_ret != ref_ret || opt_sse != ref_sse) { 153 err_count++; 154 if (first_failure == -1) { 155 first_failure = i; 156 first_failure_x = xoffset; 157 first_failure_y = yoffset; 158 } 159 } 160 } 161 } 162 } 163 } 164 165 EXPECT_EQ(0, err_count) << "Error: Masked Variance Test ExtremeValues," 166 << "C output doesn't match SSSE3 output. " 167 << "First failed at test case " << first_failure 168 << " x_offset = " << first_failure_x 169 << " y_offset = " << first_failure_y; 170 } 171 172 #if CONFIG_AV1_HIGHBITDEPTH 173 using HighbdMaskedSubPixelVarianceParam = 174 std::tuple<MaskedSubPixelVarianceFunc, MaskedSubPixelVarianceFunc, 175 aom_bit_depth_t>; 176 177 class HighbdMaskedSubPixelVarianceTest 178 : public ::testing::TestWithParam<HighbdMaskedSubPixelVarianceParam> { 179 public: 180 ~HighbdMaskedSubPixelVarianceTest() override = default; 181 void SetUp() override { 182 opt_func_ = GET_PARAM(0); 183 ref_func_ = GET_PARAM(1); 184 bit_depth_ = GET_PARAM(2); 185 } 186 187 protected: 188 MaskedSubPixelVarianceFunc opt_func_; 189 MaskedSubPixelVarianceFunc ref_func_; 190 aom_bit_depth_t bit_depth_; 191 }; 192 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(HighbdMaskedSubPixelVarianceTest); 193 194 TEST_P(HighbdMaskedSubPixelVarianceTest, OperationCheck) { 195 unsigned int ref_ret, opt_ret; 196 unsigned int ref_sse, opt_sse; 197 ACMRandom rnd(ACMRandom::DeterministicSeed()); 198 DECLARE_ALIGNED(16, uint16_t, src_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)]); 199 DECLARE_ALIGNED(16, uint16_t, ref_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)]); 200 DECLARE_ALIGNED(16, uint16_t, 201 second_pred_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)]); 202 DECLARE_ALIGNED(16, uint8_t, msk_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)]); 203 uint8_t *src8_ptr = CONVERT_TO_BYTEPTR(src_ptr); 204 uint8_t *ref8_ptr = CONVERT_TO_BYTEPTR(ref_ptr); 205 uint8_t *second_pred8_ptr = CONVERT_TO_BYTEPTR(second_pred_ptr); 206 int err_count = 0; 207 int first_failure = -1; 208 int first_failure_x = -1; 209 int first_failure_y = -1; 210 int src_stride = (MAX_SB_SIZE + 8); 211 int ref_stride = (MAX_SB_SIZE + 8); 212 int msk_stride = (MAX_SB_SIZE + 8); 213 int xoffset, yoffset; 214 215 for (int i = 0; i < number_of_iterations; ++i) { 216 for (int j = 0; j < (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8); j++) { 217 src_ptr[j] = rnd.Rand16() & ((1 << bit_depth_) - 1); 218 ref_ptr[j] = rnd.Rand16() & ((1 << bit_depth_) - 1); 219 second_pred_ptr[j] = rnd.Rand16() & ((1 << bit_depth_) - 1); 220 msk_ptr[j] = rnd(65); 221 } 222 for (xoffset = 0; xoffset < BIL_SUBPEL_SHIFTS; xoffset++) { 223 for (yoffset = 0; yoffset < BIL_SUBPEL_SHIFTS; yoffset++) { 224 for (int invert_mask = 0; invert_mask < 2; ++invert_mask) { 225 ref_ret = ref_func_(src8_ptr, src_stride, xoffset, yoffset, ref8_ptr, 226 ref_stride, second_pred8_ptr, msk_ptr, msk_stride, 227 invert_mask, &ref_sse); 228 API_REGISTER_STATE_CHECK( 229 opt_ret = opt_func_(src8_ptr, src_stride, xoffset, yoffset, 230 ref8_ptr, ref_stride, second_pred8_ptr, 231 msk_ptr, msk_stride, invert_mask, &opt_sse)); 232 233 if (opt_ret != ref_ret || opt_sse != ref_sse) { 234 err_count++; 235 if (first_failure == -1) { 236 first_failure = i; 237 first_failure_x = xoffset; 238 first_failure_y = yoffset; 239 } 240 } 241 } 242 } 243 } 244 } 245 246 EXPECT_EQ(0, err_count) 247 << "Error: Masked Sub Pixel Variance Test OperationCheck," 248 << "C output doesn't match SSSE3 output. " 249 << "First failed at test case " << first_failure 250 << " x_offset = " << first_failure_x << " y_offset = " << first_failure_y; 251 } 252 253 TEST_P(HighbdMaskedSubPixelVarianceTest, ExtremeValues) { 254 unsigned int ref_ret, opt_ret; 255 unsigned int ref_sse, opt_sse; 256 ACMRandom rnd(ACMRandom::DeterministicSeed()); 257 DECLARE_ALIGNED(16, uint16_t, src_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)]); 258 DECLARE_ALIGNED(16, uint16_t, ref_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)]); 259 DECLARE_ALIGNED(16, uint8_t, msk_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)]); 260 DECLARE_ALIGNED(16, uint16_t, 261 second_pred_ptr[(MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)]); 262 uint8_t *src8_ptr = CONVERT_TO_BYTEPTR(src_ptr); 263 uint8_t *ref8_ptr = CONVERT_TO_BYTEPTR(ref_ptr); 264 uint8_t *second_pred8_ptr = CONVERT_TO_BYTEPTR(second_pred_ptr); 265 int first_failure_x = -1; 266 int first_failure_y = -1; 267 int err_count = 0; 268 int first_failure = -1; 269 int src_stride = (MAX_SB_SIZE + 8); 270 int ref_stride = (MAX_SB_SIZE + 8); 271 int msk_stride = (MAX_SB_SIZE + 8); 272 273 for (int xoffset = 0; xoffset < BIL_SUBPEL_SHIFTS; xoffset++) { 274 for (int yoffset = 0; yoffset < BIL_SUBPEL_SHIFTS; yoffset++) { 275 for (int i = 0; i < 16; ++i) { 276 aom_memset16(src_ptr, (i & 0x1) ? ((1 << bit_depth_) - 1) : 0, 277 (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)); 278 aom_memset16(ref_ptr, (i & 0x2) ? ((1 << bit_depth_) - 1) : 0, 279 (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)); 280 aom_memset16(second_pred_ptr, (i & 0x4) ? ((1 << bit_depth_) - 1) : 0, 281 (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)); 282 memset(msk_ptr, (i & 0x8) ? 64 : 0, 283 (MAX_SB_SIZE + 1) * (MAX_SB_SIZE + 8)); 284 285 for (int invert_mask = 0; invert_mask < 2; ++invert_mask) { 286 ref_ret = ref_func_(src8_ptr, src_stride, xoffset, yoffset, ref8_ptr, 287 ref_stride, second_pred8_ptr, msk_ptr, msk_stride, 288 invert_mask, &ref_sse); 289 API_REGISTER_STATE_CHECK( 290 opt_ret = opt_func_(src8_ptr, src_stride, xoffset, yoffset, 291 ref8_ptr, ref_stride, second_pred8_ptr, 292 msk_ptr, msk_stride, invert_mask, &opt_sse)); 293 294 if (opt_ret != ref_ret || opt_sse != ref_sse) { 295 err_count++; 296 if (first_failure == -1) { 297 first_failure = i; 298 first_failure_x = xoffset; 299 first_failure_y = yoffset; 300 } 301 } 302 } 303 } 304 } 305 } 306 307 EXPECT_EQ(0, err_count) << "Error: Masked Variance Test ExtremeValues," 308 << "C output doesn't match SSSE3 output. " 309 << "First failed at test case " << first_failure 310 << " x_offset = " << first_failure_x 311 << " y_offset = " << first_failure_y; 312 } 313 #endif // CONFIG_AV1_HIGHBITDEPTH 314 315 using std::make_tuple; 316 317 #if HAVE_SSSE3 318 319 const MaskedSubPixelVarianceParam sub_pel_var_test[] = { 320 make_tuple(&aom_masked_sub_pixel_variance128x128_ssse3, 321 &aom_masked_sub_pixel_variance128x128_c), 322 make_tuple(&aom_masked_sub_pixel_variance128x64_ssse3, 323 &aom_masked_sub_pixel_variance128x64_c), 324 make_tuple(&aom_masked_sub_pixel_variance64x128_ssse3, 325 &aom_masked_sub_pixel_variance64x128_c), 326 make_tuple(&aom_masked_sub_pixel_variance64x64_ssse3, 327 &aom_masked_sub_pixel_variance64x64_c), 328 make_tuple(&aom_masked_sub_pixel_variance64x32_ssse3, 329 &aom_masked_sub_pixel_variance64x32_c), 330 make_tuple(&aom_masked_sub_pixel_variance32x64_ssse3, 331 &aom_masked_sub_pixel_variance32x64_c), 332 make_tuple(&aom_masked_sub_pixel_variance32x32_ssse3, 333 &aom_masked_sub_pixel_variance32x32_c), 334 make_tuple(&aom_masked_sub_pixel_variance32x16_ssse3, 335 &aom_masked_sub_pixel_variance32x16_c), 336 make_tuple(&aom_masked_sub_pixel_variance16x32_ssse3, 337 &aom_masked_sub_pixel_variance16x32_c), 338 make_tuple(&aom_masked_sub_pixel_variance16x16_ssse3, 339 &aom_masked_sub_pixel_variance16x16_c), 340 make_tuple(&aom_masked_sub_pixel_variance16x8_ssse3, 341 &aom_masked_sub_pixel_variance16x8_c), 342 make_tuple(&aom_masked_sub_pixel_variance8x16_ssse3, 343 &aom_masked_sub_pixel_variance8x16_c), 344 make_tuple(&aom_masked_sub_pixel_variance8x8_ssse3, 345 &aom_masked_sub_pixel_variance8x8_c), 346 make_tuple(&aom_masked_sub_pixel_variance8x4_ssse3, 347 &aom_masked_sub_pixel_variance8x4_c), 348 make_tuple(&aom_masked_sub_pixel_variance4x8_ssse3, 349 &aom_masked_sub_pixel_variance4x8_c), 350 make_tuple(&aom_masked_sub_pixel_variance4x4_ssse3, 351 &aom_masked_sub_pixel_variance4x4_c), 352 #if !CONFIG_REALTIME_ONLY 353 make_tuple(&aom_masked_sub_pixel_variance64x16_ssse3, 354 &aom_masked_sub_pixel_variance64x16_c), 355 make_tuple(&aom_masked_sub_pixel_variance16x64_ssse3, 356 &aom_masked_sub_pixel_variance16x64_c), 357 make_tuple(&aom_masked_sub_pixel_variance32x8_ssse3, 358 &aom_masked_sub_pixel_variance32x8_c), 359 make_tuple(&aom_masked_sub_pixel_variance8x32_ssse3, 360 &aom_masked_sub_pixel_variance8x32_c), 361 make_tuple(&aom_masked_sub_pixel_variance16x4_ssse3, 362 &aom_masked_sub_pixel_variance16x4_c), 363 make_tuple(&aom_masked_sub_pixel_variance4x16_ssse3, 364 &aom_masked_sub_pixel_variance4x16_c), 365 #endif 366 }; 367 368 INSTANTIATE_TEST_SUITE_P(SSSE3_C_COMPARE, MaskedSubPixelVarianceTest, 369 ::testing::ValuesIn(sub_pel_var_test)); 370 371 #if CONFIG_AV1_HIGHBITDEPTH 372 const HighbdMaskedSubPixelVarianceParam hbd_sub_pel_var_test[] = { 373 make_tuple(&aom_highbd_8_masked_sub_pixel_variance128x128_ssse3, 374 &aom_highbd_8_masked_sub_pixel_variance128x128_c, AOM_BITS_8), 375 make_tuple(&aom_highbd_8_masked_sub_pixel_variance128x64_ssse3, 376 &aom_highbd_8_masked_sub_pixel_variance128x64_c, AOM_BITS_8), 377 make_tuple(&aom_highbd_8_masked_sub_pixel_variance64x128_ssse3, 378 &aom_highbd_8_masked_sub_pixel_variance64x128_c, AOM_BITS_8), 379 make_tuple(&aom_highbd_8_masked_sub_pixel_variance64x64_ssse3, 380 &aom_highbd_8_masked_sub_pixel_variance64x64_c, AOM_BITS_8), 381 make_tuple(&aom_highbd_8_masked_sub_pixel_variance64x32_ssse3, 382 &aom_highbd_8_masked_sub_pixel_variance64x32_c, AOM_BITS_8), 383 make_tuple(&aom_highbd_8_masked_sub_pixel_variance32x64_ssse3, 384 &aom_highbd_8_masked_sub_pixel_variance32x64_c, AOM_BITS_8), 385 make_tuple(&aom_highbd_8_masked_sub_pixel_variance32x32_ssse3, 386 &aom_highbd_8_masked_sub_pixel_variance32x32_c, AOM_BITS_8), 387 make_tuple(&aom_highbd_8_masked_sub_pixel_variance32x16_ssse3, 388 &aom_highbd_8_masked_sub_pixel_variance32x16_c, AOM_BITS_8), 389 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x32_ssse3, 390 &aom_highbd_8_masked_sub_pixel_variance16x32_c, AOM_BITS_8), 391 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x16_ssse3, 392 &aom_highbd_8_masked_sub_pixel_variance16x16_c, AOM_BITS_8), 393 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x8_ssse3, 394 &aom_highbd_8_masked_sub_pixel_variance16x8_c, AOM_BITS_8), 395 make_tuple(&aom_highbd_8_masked_sub_pixel_variance8x16_ssse3, 396 &aom_highbd_8_masked_sub_pixel_variance8x16_c, AOM_BITS_8), 397 make_tuple(&aom_highbd_8_masked_sub_pixel_variance8x8_ssse3, 398 &aom_highbd_8_masked_sub_pixel_variance8x8_c, AOM_BITS_8), 399 make_tuple(&aom_highbd_8_masked_sub_pixel_variance8x4_ssse3, 400 &aom_highbd_8_masked_sub_pixel_variance8x4_c, AOM_BITS_8), 401 make_tuple(&aom_highbd_8_masked_sub_pixel_variance4x8_ssse3, 402 &aom_highbd_8_masked_sub_pixel_variance4x8_c, AOM_BITS_8), 403 make_tuple(&aom_highbd_8_masked_sub_pixel_variance4x4_ssse3, 404 &aom_highbd_8_masked_sub_pixel_variance4x4_c, AOM_BITS_8), 405 make_tuple(&aom_highbd_10_masked_sub_pixel_variance128x128_ssse3, 406 &aom_highbd_10_masked_sub_pixel_variance128x128_c, AOM_BITS_10), 407 make_tuple(&aom_highbd_10_masked_sub_pixel_variance128x64_ssse3, 408 &aom_highbd_10_masked_sub_pixel_variance128x64_c, AOM_BITS_10), 409 make_tuple(&aom_highbd_10_masked_sub_pixel_variance64x128_ssse3, 410 &aom_highbd_10_masked_sub_pixel_variance64x128_c, AOM_BITS_10), 411 make_tuple(&aom_highbd_10_masked_sub_pixel_variance64x64_ssse3, 412 &aom_highbd_10_masked_sub_pixel_variance64x64_c, AOM_BITS_10), 413 make_tuple(&aom_highbd_10_masked_sub_pixel_variance64x32_ssse3, 414 &aom_highbd_10_masked_sub_pixel_variance64x32_c, AOM_BITS_10), 415 make_tuple(&aom_highbd_10_masked_sub_pixel_variance32x64_ssse3, 416 &aom_highbd_10_masked_sub_pixel_variance32x64_c, AOM_BITS_10), 417 make_tuple(&aom_highbd_10_masked_sub_pixel_variance32x32_ssse3, 418 &aom_highbd_10_masked_sub_pixel_variance32x32_c, AOM_BITS_10), 419 make_tuple(&aom_highbd_10_masked_sub_pixel_variance32x16_ssse3, 420 &aom_highbd_10_masked_sub_pixel_variance32x16_c, AOM_BITS_10), 421 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x32_ssse3, 422 &aom_highbd_10_masked_sub_pixel_variance16x32_c, AOM_BITS_10), 423 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x16_ssse3, 424 &aom_highbd_10_masked_sub_pixel_variance16x16_c, AOM_BITS_10), 425 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x8_ssse3, 426 &aom_highbd_10_masked_sub_pixel_variance16x8_c, AOM_BITS_10), 427 make_tuple(&aom_highbd_10_masked_sub_pixel_variance8x16_ssse3, 428 &aom_highbd_10_masked_sub_pixel_variance8x16_c, AOM_BITS_10), 429 make_tuple(&aom_highbd_10_masked_sub_pixel_variance8x8_ssse3, 430 &aom_highbd_10_masked_sub_pixel_variance8x8_c, AOM_BITS_10), 431 make_tuple(&aom_highbd_10_masked_sub_pixel_variance8x4_ssse3, 432 &aom_highbd_10_masked_sub_pixel_variance8x4_c, AOM_BITS_10), 433 make_tuple(&aom_highbd_10_masked_sub_pixel_variance4x8_ssse3, 434 &aom_highbd_10_masked_sub_pixel_variance4x8_c, AOM_BITS_10), 435 make_tuple(&aom_highbd_10_masked_sub_pixel_variance4x4_ssse3, 436 &aom_highbd_10_masked_sub_pixel_variance4x4_c, AOM_BITS_10), 437 make_tuple(&aom_highbd_12_masked_sub_pixel_variance128x128_ssse3, 438 &aom_highbd_12_masked_sub_pixel_variance128x128_c, AOM_BITS_12), 439 make_tuple(&aom_highbd_12_masked_sub_pixel_variance128x64_ssse3, 440 &aom_highbd_12_masked_sub_pixel_variance128x64_c, AOM_BITS_12), 441 make_tuple(&aom_highbd_12_masked_sub_pixel_variance64x128_ssse3, 442 &aom_highbd_12_masked_sub_pixel_variance64x128_c, AOM_BITS_12), 443 make_tuple(&aom_highbd_12_masked_sub_pixel_variance64x64_ssse3, 444 &aom_highbd_12_masked_sub_pixel_variance64x64_c, AOM_BITS_12), 445 make_tuple(&aom_highbd_12_masked_sub_pixel_variance64x32_ssse3, 446 &aom_highbd_12_masked_sub_pixel_variance64x32_c, AOM_BITS_12), 447 make_tuple(&aom_highbd_12_masked_sub_pixel_variance32x64_ssse3, 448 &aom_highbd_12_masked_sub_pixel_variance32x64_c, AOM_BITS_12), 449 make_tuple(&aom_highbd_12_masked_sub_pixel_variance32x32_ssse3, 450 &aom_highbd_12_masked_sub_pixel_variance32x32_c, AOM_BITS_12), 451 make_tuple(&aom_highbd_12_masked_sub_pixel_variance32x16_ssse3, 452 &aom_highbd_12_masked_sub_pixel_variance32x16_c, AOM_BITS_12), 453 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x32_ssse3, 454 &aom_highbd_12_masked_sub_pixel_variance16x32_c, AOM_BITS_12), 455 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x16_ssse3, 456 &aom_highbd_12_masked_sub_pixel_variance16x16_c, AOM_BITS_12), 457 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x8_ssse3, 458 &aom_highbd_12_masked_sub_pixel_variance16x8_c, AOM_BITS_12), 459 make_tuple(&aom_highbd_12_masked_sub_pixel_variance8x16_ssse3, 460 &aom_highbd_12_masked_sub_pixel_variance8x16_c, AOM_BITS_12), 461 make_tuple(&aom_highbd_12_masked_sub_pixel_variance8x8_ssse3, 462 &aom_highbd_12_masked_sub_pixel_variance8x8_c, AOM_BITS_12), 463 make_tuple(&aom_highbd_12_masked_sub_pixel_variance8x4_ssse3, 464 &aom_highbd_12_masked_sub_pixel_variance8x4_c, AOM_BITS_12), 465 make_tuple(&aom_highbd_12_masked_sub_pixel_variance4x8_ssse3, 466 &aom_highbd_12_masked_sub_pixel_variance4x8_c, AOM_BITS_12), 467 make_tuple(&aom_highbd_12_masked_sub_pixel_variance4x4_ssse3, 468 &aom_highbd_12_masked_sub_pixel_variance4x4_c, AOM_BITS_12), 469 #if !CONFIG_REALTIME_ONLY 470 make_tuple(&aom_highbd_8_masked_sub_pixel_variance64x16_ssse3, 471 &aom_highbd_8_masked_sub_pixel_variance64x16_c, AOM_BITS_8), 472 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x64_ssse3, 473 &aom_highbd_8_masked_sub_pixel_variance16x64_c, AOM_BITS_8), 474 make_tuple(&aom_highbd_8_masked_sub_pixel_variance32x8_ssse3, 475 &aom_highbd_8_masked_sub_pixel_variance32x8_c, AOM_BITS_8), 476 make_tuple(&aom_highbd_8_masked_sub_pixel_variance8x32_ssse3, 477 &aom_highbd_8_masked_sub_pixel_variance8x32_c, AOM_BITS_8), 478 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x4_ssse3, 479 &aom_highbd_8_masked_sub_pixel_variance16x4_c, AOM_BITS_8), 480 make_tuple(&aom_highbd_8_masked_sub_pixel_variance4x16_ssse3, 481 &aom_highbd_8_masked_sub_pixel_variance4x16_c, AOM_BITS_8), 482 make_tuple(&aom_highbd_10_masked_sub_pixel_variance64x16_ssse3, 483 &aom_highbd_10_masked_sub_pixel_variance64x16_c, AOM_BITS_10), 484 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x64_ssse3, 485 &aom_highbd_10_masked_sub_pixel_variance16x64_c, AOM_BITS_10), 486 make_tuple(&aom_highbd_10_masked_sub_pixel_variance32x8_ssse3, 487 &aom_highbd_10_masked_sub_pixel_variance32x8_c, AOM_BITS_10), 488 make_tuple(&aom_highbd_10_masked_sub_pixel_variance8x32_ssse3, 489 &aom_highbd_10_masked_sub_pixel_variance8x32_c, AOM_BITS_10), 490 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x4_ssse3, 491 &aom_highbd_10_masked_sub_pixel_variance16x4_c, AOM_BITS_10), 492 make_tuple(&aom_highbd_10_masked_sub_pixel_variance4x16_ssse3, 493 &aom_highbd_10_masked_sub_pixel_variance4x16_c, AOM_BITS_10), 494 make_tuple(&aom_highbd_12_masked_sub_pixel_variance64x16_ssse3, 495 &aom_highbd_12_masked_sub_pixel_variance64x16_c, AOM_BITS_12), 496 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x64_ssse3, 497 &aom_highbd_12_masked_sub_pixel_variance16x64_c, AOM_BITS_12), 498 make_tuple(&aom_highbd_12_masked_sub_pixel_variance32x8_ssse3, 499 &aom_highbd_12_masked_sub_pixel_variance32x8_c, AOM_BITS_12), 500 make_tuple(&aom_highbd_12_masked_sub_pixel_variance8x32_ssse3, 501 &aom_highbd_12_masked_sub_pixel_variance8x32_c, AOM_BITS_12), 502 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x4_ssse3, 503 &aom_highbd_12_masked_sub_pixel_variance16x4_c, AOM_BITS_12), 504 make_tuple(&aom_highbd_12_masked_sub_pixel_variance4x16_ssse3, 505 &aom_highbd_12_masked_sub_pixel_variance4x16_c, AOM_BITS_12), 506 #endif 507 }; 508 509 INSTANTIATE_TEST_SUITE_P(SSSE3_C_COMPARE, HighbdMaskedSubPixelVarianceTest, 510 ::testing::ValuesIn(hbd_sub_pel_var_test)); 511 #endif // CONFIG_AV1_HIGHBITDEPTH 512 #endif // HAVE_SSSE3 513 514 #if HAVE_NEON 515 516 const MaskedSubPixelVarianceParam sub_pel_var_test[] = { 517 make_tuple(&aom_masked_sub_pixel_variance128x128_neon, 518 &aom_masked_sub_pixel_variance128x128_c), 519 make_tuple(&aom_masked_sub_pixel_variance128x64_neon, 520 &aom_masked_sub_pixel_variance128x64_c), 521 make_tuple(&aom_masked_sub_pixel_variance64x128_neon, 522 &aom_masked_sub_pixel_variance64x128_c), 523 make_tuple(&aom_masked_sub_pixel_variance64x64_neon, 524 &aom_masked_sub_pixel_variance64x64_c), 525 make_tuple(&aom_masked_sub_pixel_variance64x32_neon, 526 &aom_masked_sub_pixel_variance64x32_c), 527 make_tuple(&aom_masked_sub_pixel_variance32x64_neon, 528 &aom_masked_sub_pixel_variance32x64_c), 529 make_tuple(&aom_masked_sub_pixel_variance32x32_neon, 530 &aom_masked_sub_pixel_variance32x32_c), 531 make_tuple(&aom_masked_sub_pixel_variance32x16_neon, 532 &aom_masked_sub_pixel_variance32x16_c), 533 make_tuple(&aom_masked_sub_pixel_variance16x32_neon, 534 &aom_masked_sub_pixel_variance16x32_c), 535 make_tuple(&aom_masked_sub_pixel_variance16x16_neon, 536 &aom_masked_sub_pixel_variance16x16_c), 537 make_tuple(&aom_masked_sub_pixel_variance16x8_neon, 538 &aom_masked_sub_pixel_variance16x8_c), 539 make_tuple(&aom_masked_sub_pixel_variance8x16_neon, 540 &aom_masked_sub_pixel_variance8x16_c), 541 make_tuple(&aom_masked_sub_pixel_variance8x8_neon, 542 &aom_masked_sub_pixel_variance8x8_c), 543 make_tuple(&aom_masked_sub_pixel_variance8x4_neon, 544 &aom_masked_sub_pixel_variance8x4_c), 545 make_tuple(&aom_masked_sub_pixel_variance4x8_neon, 546 &aom_masked_sub_pixel_variance4x8_c), 547 make_tuple(&aom_masked_sub_pixel_variance4x4_neon, 548 &aom_masked_sub_pixel_variance4x4_c), 549 #if !CONFIG_REALTIME_ONLY 550 make_tuple(&aom_masked_sub_pixel_variance64x16_neon, 551 &aom_masked_sub_pixel_variance64x16_c), 552 make_tuple(&aom_masked_sub_pixel_variance16x64_neon, 553 &aom_masked_sub_pixel_variance16x64_c), 554 make_tuple(&aom_masked_sub_pixel_variance32x8_neon, 555 &aom_masked_sub_pixel_variance32x8_c), 556 make_tuple(&aom_masked_sub_pixel_variance8x32_neon, 557 &aom_masked_sub_pixel_variance8x32_c), 558 make_tuple(&aom_masked_sub_pixel_variance16x4_neon, 559 &aom_masked_sub_pixel_variance16x4_c), 560 make_tuple(&aom_masked_sub_pixel_variance4x16_neon, 561 &aom_masked_sub_pixel_variance4x16_c), 562 #endif 563 }; 564 565 INSTANTIATE_TEST_SUITE_P(NEON_C_COMPARE, MaskedSubPixelVarianceTest, 566 ::testing::ValuesIn(sub_pel_var_test)); 567 568 #if CONFIG_AV1_HIGHBITDEPTH 569 const HighbdMaskedSubPixelVarianceParam hbd_sub_pel_var_test_neon[] = { 570 make_tuple(&aom_highbd_8_masked_sub_pixel_variance128x128_neon, 571 &aom_highbd_8_masked_sub_pixel_variance128x128_c, AOM_BITS_8), 572 make_tuple(&aom_highbd_8_masked_sub_pixel_variance128x64_neon, 573 &aom_highbd_8_masked_sub_pixel_variance128x64_c, AOM_BITS_8), 574 make_tuple(&aom_highbd_8_masked_sub_pixel_variance64x128_neon, 575 &aom_highbd_8_masked_sub_pixel_variance64x128_c, AOM_BITS_8), 576 make_tuple(&aom_highbd_8_masked_sub_pixel_variance64x64_neon, 577 &aom_highbd_8_masked_sub_pixel_variance64x64_c, AOM_BITS_8), 578 make_tuple(&aom_highbd_8_masked_sub_pixel_variance64x32_neon, 579 &aom_highbd_8_masked_sub_pixel_variance64x32_c, AOM_BITS_8), 580 make_tuple(&aom_highbd_8_masked_sub_pixel_variance32x64_neon, 581 &aom_highbd_8_masked_sub_pixel_variance32x64_c, AOM_BITS_8), 582 make_tuple(&aom_highbd_8_masked_sub_pixel_variance32x32_neon, 583 &aom_highbd_8_masked_sub_pixel_variance32x32_c, AOM_BITS_8), 584 make_tuple(&aom_highbd_8_masked_sub_pixel_variance32x16_neon, 585 &aom_highbd_8_masked_sub_pixel_variance32x16_c, AOM_BITS_8), 586 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x32_neon, 587 &aom_highbd_8_masked_sub_pixel_variance16x32_c, AOM_BITS_8), 588 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x16_neon, 589 &aom_highbd_8_masked_sub_pixel_variance16x16_c, AOM_BITS_8), 590 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x8_neon, 591 &aom_highbd_8_masked_sub_pixel_variance16x8_c, AOM_BITS_8), 592 make_tuple(&aom_highbd_8_masked_sub_pixel_variance8x16_neon, 593 &aom_highbd_8_masked_sub_pixel_variance8x16_c, AOM_BITS_8), 594 make_tuple(&aom_highbd_8_masked_sub_pixel_variance8x8_neon, 595 &aom_highbd_8_masked_sub_pixel_variance8x8_c, AOM_BITS_8), 596 make_tuple(&aom_highbd_8_masked_sub_pixel_variance8x4_neon, 597 &aom_highbd_8_masked_sub_pixel_variance8x4_c, AOM_BITS_8), 598 make_tuple(&aom_highbd_8_masked_sub_pixel_variance4x8_neon, 599 &aom_highbd_8_masked_sub_pixel_variance4x8_c, AOM_BITS_8), 600 make_tuple(&aom_highbd_8_masked_sub_pixel_variance4x4_neon, 601 &aom_highbd_8_masked_sub_pixel_variance4x4_c, AOM_BITS_8), 602 make_tuple(&aom_highbd_10_masked_sub_pixel_variance128x128_neon, 603 &aom_highbd_10_masked_sub_pixel_variance128x128_c, AOM_BITS_10), 604 make_tuple(&aom_highbd_10_masked_sub_pixel_variance128x64_neon, 605 &aom_highbd_10_masked_sub_pixel_variance128x64_c, AOM_BITS_10), 606 make_tuple(&aom_highbd_10_masked_sub_pixel_variance64x128_neon, 607 &aom_highbd_10_masked_sub_pixel_variance64x128_c, AOM_BITS_10), 608 make_tuple(&aom_highbd_10_masked_sub_pixel_variance64x64_neon, 609 &aom_highbd_10_masked_sub_pixel_variance64x64_c, AOM_BITS_10), 610 make_tuple(&aom_highbd_10_masked_sub_pixel_variance64x32_neon, 611 &aom_highbd_10_masked_sub_pixel_variance64x32_c, AOM_BITS_10), 612 make_tuple(&aom_highbd_10_masked_sub_pixel_variance32x64_neon, 613 &aom_highbd_10_masked_sub_pixel_variance32x64_c, AOM_BITS_10), 614 make_tuple(&aom_highbd_10_masked_sub_pixel_variance32x32_neon, 615 &aom_highbd_10_masked_sub_pixel_variance32x32_c, AOM_BITS_10), 616 make_tuple(&aom_highbd_10_masked_sub_pixel_variance32x16_neon, 617 &aom_highbd_10_masked_sub_pixel_variance32x16_c, AOM_BITS_10), 618 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x32_neon, 619 &aom_highbd_10_masked_sub_pixel_variance16x32_c, AOM_BITS_10), 620 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x16_neon, 621 &aom_highbd_10_masked_sub_pixel_variance16x16_c, AOM_BITS_10), 622 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x8_neon, 623 &aom_highbd_10_masked_sub_pixel_variance16x8_c, AOM_BITS_10), 624 make_tuple(&aom_highbd_10_masked_sub_pixel_variance8x16_neon, 625 &aom_highbd_10_masked_sub_pixel_variance8x16_c, AOM_BITS_10), 626 make_tuple(&aom_highbd_10_masked_sub_pixel_variance8x8_neon, 627 &aom_highbd_10_masked_sub_pixel_variance8x8_c, AOM_BITS_10), 628 make_tuple(&aom_highbd_10_masked_sub_pixel_variance8x4_neon, 629 &aom_highbd_10_masked_sub_pixel_variance8x4_c, AOM_BITS_10), 630 make_tuple(&aom_highbd_10_masked_sub_pixel_variance4x8_neon, 631 &aom_highbd_10_masked_sub_pixel_variance4x8_c, AOM_BITS_10), 632 make_tuple(&aom_highbd_10_masked_sub_pixel_variance4x4_neon, 633 &aom_highbd_10_masked_sub_pixel_variance4x4_c, AOM_BITS_10), 634 make_tuple(&aom_highbd_12_masked_sub_pixel_variance128x128_neon, 635 &aom_highbd_12_masked_sub_pixel_variance128x128_c, AOM_BITS_12), 636 make_tuple(&aom_highbd_12_masked_sub_pixel_variance128x64_neon, 637 &aom_highbd_12_masked_sub_pixel_variance128x64_c, AOM_BITS_12), 638 make_tuple(&aom_highbd_12_masked_sub_pixel_variance64x128_neon, 639 &aom_highbd_12_masked_sub_pixel_variance64x128_c, AOM_BITS_12), 640 make_tuple(&aom_highbd_12_masked_sub_pixel_variance64x64_neon, 641 &aom_highbd_12_masked_sub_pixel_variance64x64_c, AOM_BITS_12), 642 make_tuple(&aom_highbd_12_masked_sub_pixel_variance64x32_neon, 643 &aom_highbd_12_masked_sub_pixel_variance64x32_c, AOM_BITS_12), 644 make_tuple(&aom_highbd_12_masked_sub_pixel_variance32x64_neon, 645 &aom_highbd_12_masked_sub_pixel_variance32x64_c, AOM_BITS_12), 646 make_tuple(&aom_highbd_12_masked_sub_pixel_variance32x32_neon, 647 &aom_highbd_12_masked_sub_pixel_variance32x32_c, AOM_BITS_12), 648 make_tuple(&aom_highbd_12_masked_sub_pixel_variance32x16_neon, 649 &aom_highbd_12_masked_sub_pixel_variance32x16_c, AOM_BITS_12), 650 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x32_neon, 651 &aom_highbd_12_masked_sub_pixel_variance16x32_c, AOM_BITS_12), 652 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x16_neon, 653 &aom_highbd_12_masked_sub_pixel_variance16x16_c, AOM_BITS_12), 654 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x8_neon, 655 &aom_highbd_12_masked_sub_pixel_variance16x8_c, AOM_BITS_12), 656 make_tuple(&aom_highbd_12_masked_sub_pixel_variance8x16_neon, 657 &aom_highbd_12_masked_sub_pixel_variance8x16_c, AOM_BITS_12), 658 make_tuple(&aom_highbd_12_masked_sub_pixel_variance8x8_neon, 659 &aom_highbd_12_masked_sub_pixel_variance8x8_c, AOM_BITS_12), 660 make_tuple(&aom_highbd_12_masked_sub_pixel_variance8x4_neon, 661 &aom_highbd_12_masked_sub_pixel_variance8x4_c, AOM_BITS_12), 662 make_tuple(&aom_highbd_12_masked_sub_pixel_variance4x8_neon, 663 &aom_highbd_12_masked_sub_pixel_variance4x8_c, AOM_BITS_12), 664 make_tuple(&aom_highbd_12_masked_sub_pixel_variance4x4_neon, 665 &aom_highbd_12_masked_sub_pixel_variance4x4_c, AOM_BITS_12), 666 #if !CONFIG_REALTIME_ONLY 667 make_tuple(&aom_highbd_8_masked_sub_pixel_variance64x16_neon, 668 &aom_highbd_8_masked_sub_pixel_variance64x16_c, AOM_BITS_8), 669 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x64_neon, 670 &aom_highbd_8_masked_sub_pixel_variance16x64_c, AOM_BITS_8), 671 make_tuple(&aom_highbd_8_masked_sub_pixel_variance32x8_neon, 672 &aom_highbd_8_masked_sub_pixel_variance32x8_c, AOM_BITS_8), 673 make_tuple(&aom_highbd_8_masked_sub_pixel_variance8x32_neon, 674 &aom_highbd_8_masked_sub_pixel_variance8x32_c, AOM_BITS_8), 675 make_tuple(&aom_highbd_8_masked_sub_pixel_variance16x4_neon, 676 &aom_highbd_8_masked_sub_pixel_variance16x4_c, AOM_BITS_8), 677 make_tuple(&aom_highbd_8_masked_sub_pixel_variance4x16_neon, 678 &aom_highbd_8_masked_sub_pixel_variance4x16_c, AOM_BITS_8), 679 make_tuple(&aom_highbd_10_masked_sub_pixel_variance64x16_neon, 680 &aom_highbd_10_masked_sub_pixel_variance64x16_c, AOM_BITS_10), 681 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x64_neon, 682 &aom_highbd_10_masked_sub_pixel_variance16x64_c, AOM_BITS_10), 683 make_tuple(&aom_highbd_10_masked_sub_pixel_variance32x8_neon, 684 &aom_highbd_10_masked_sub_pixel_variance32x8_c, AOM_BITS_10), 685 make_tuple(&aom_highbd_10_masked_sub_pixel_variance8x32_neon, 686 &aom_highbd_10_masked_sub_pixel_variance8x32_c, AOM_BITS_10), 687 make_tuple(&aom_highbd_10_masked_sub_pixel_variance16x4_neon, 688 &aom_highbd_10_masked_sub_pixel_variance16x4_c, AOM_BITS_10), 689 make_tuple(&aom_highbd_10_masked_sub_pixel_variance4x16_neon, 690 &aom_highbd_10_masked_sub_pixel_variance4x16_c, AOM_BITS_10), 691 make_tuple(&aom_highbd_12_masked_sub_pixel_variance64x16_neon, 692 &aom_highbd_12_masked_sub_pixel_variance64x16_c, AOM_BITS_12), 693 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x64_neon, 694 &aom_highbd_12_masked_sub_pixel_variance16x64_c, AOM_BITS_12), 695 make_tuple(&aom_highbd_12_masked_sub_pixel_variance32x8_neon, 696 &aom_highbd_12_masked_sub_pixel_variance32x8_c, AOM_BITS_12), 697 make_tuple(&aom_highbd_12_masked_sub_pixel_variance8x32_neon, 698 &aom_highbd_12_masked_sub_pixel_variance8x32_c, AOM_BITS_12), 699 make_tuple(&aom_highbd_12_masked_sub_pixel_variance16x4_neon, 700 &aom_highbd_12_masked_sub_pixel_variance16x4_c, AOM_BITS_12), 701 make_tuple(&aom_highbd_12_masked_sub_pixel_variance4x16_neon, 702 &aom_highbd_12_masked_sub_pixel_variance4x16_c, AOM_BITS_12), 703 #endif 704 }; 705 706 INSTANTIATE_TEST_SUITE_P(NEON_C_COMPARE, HighbdMaskedSubPixelVarianceTest, 707 ::testing::ValuesIn(hbd_sub_pel_var_test_neon)); 708 709 #endif // CONFIG_AV1_HIGHBITDEPTH 710 711 #endif // HAVE_NEON 712 } // namespace