tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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