Home | History | Annotate | Download | only in test
      1 /*
      2  *  Copyright (c) 2014 The WebM project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #include <string>
     12 
     13 #include "third_party/googletest/src/include/gtest/gtest.h"
     14 
     15 #include "./vpx_config.h"
     16 #include "./vpx_dsp_rtcd.h"
     17 #include "test/acm_random.h"
     18 #include "test/clear_system_state.h"
     19 #include "test/register_state_check.h"
     20 #include "test/util.h"
     21 #include "vp9/common/vp9_blockd.h"
     22 #include "vp9/common/vp9_pred_common.h"
     23 #include "vpx_mem/vpx_mem.h"
     24 
     25 namespace {
     26 
     27 using libvpx_test::ACMRandom;
     28 
     29 const int count_test_block = 100000;
     30 
     31 typedef void (*IntraPredFunc)(uint8_t *dst, ptrdiff_t stride,
     32                               const uint8_t *above, const uint8_t *left);
     33 
     34 struct IntraPredParam {
     35   IntraPredParam(IntraPredFunc pred = NULL, IntraPredFunc ref = NULL,
     36                  int block_size_value = 0, int bit_depth_value = 0)
     37       : pred_fn(pred), ref_fn(ref), block_size(block_size_value),
     38         bit_depth(bit_depth_value) {}
     39 
     40   IntraPredFunc pred_fn;
     41   IntraPredFunc ref_fn;
     42   int block_size;
     43   int bit_depth;
     44 };
     45 
     46 template <typename Pixel, typename PredParam>
     47 class IntraPredTest : public ::testing::TestWithParam<PredParam> {
     48  public:
     49   void RunTest(Pixel *left_col, Pixel *above_data, Pixel *dst, Pixel *ref_dst) {
     50     ACMRandom rnd(ACMRandom::DeterministicSeed());
     51     const int block_size = params_.block_size;
     52     above_row_ = above_data + 16;
     53     left_col_ = left_col;
     54     dst_ = dst;
     55     ref_dst_ = ref_dst;
     56     int error_count = 0;
     57     for (int i = 0; i < count_test_block; ++i) {
     58       // Fill edges with random data, try first with saturated values.
     59       for (int x = -1; x < block_size; x++) {
     60         if (i == 0) {
     61           above_row_[x] = mask_;
     62         } else {
     63           above_row_[x] = rnd.Rand16() & mask_;
     64         }
     65       }
     66       for (int x = block_size; x < 2 * block_size; x++) {
     67         above_row_[x] = above_row_[block_size - 1];
     68       }
     69       for (int y = 0; y < block_size; y++) {
     70         if (i == 0) {
     71           left_col_[y] = mask_;
     72         } else {
     73           left_col_[y] = rnd.Rand16() & mask_;
     74         }
     75       }
     76       Predict();
     77       CheckPrediction(i, &error_count);
     78     }
     79     ASSERT_EQ(0, error_count);
     80   }
     81 
     82  protected:
     83   virtual void SetUp() {
     84     params_ = this->GetParam();
     85     stride_ = params_.block_size * 3;
     86     mask_ = (1 << params_.bit_depth) - 1;
     87   }
     88 
     89   void Predict();
     90 
     91   void CheckPrediction(int test_case_number, int *error_count) const {
     92     // For each pixel ensure that the calculated value is the same as reference.
     93     const int block_size = params_.block_size;
     94     for (int y = 0; y < block_size; y++) {
     95       for (int x = 0; x < block_size; x++) {
     96         *error_count += ref_dst_[x + y * stride_] != dst_[x + y * stride_];
     97         if (*error_count == 1) {
     98           ASSERT_EQ(ref_dst_[x + y * stride_], dst_[x + y * stride_])
     99               << " Failed on Test Case Number " << test_case_number;
    100         }
    101       }
    102     }
    103   }
    104 
    105   Pixel *above_row_;
    106   Pixel *left_col_;
    107   Pixel *dst_;
    108   Pixel *ref_dst_;
    109   ptrdiff_t stride_;
    110   int mask_;
    111 
    112   PredParam params_;
    113 };
    114 
    115 template <>
    116 void IntraPredTest<uint8_t, IntraPredParam>::Predict() {
    117   params_.ref_fn(ref_dst_, stride_, above_row_, left_col_);
    118   ASM_REGISTER_STATE_CHECK(
    119       params_.pred_fn(dst_, stride_, above_row_, left_col_));
    120 }
    121 
    122 typedef IntraPredTest<uint8_t, IntraPredParam> VP9IntraPredTest;
    123 
    124 TEST_P(VP9IntraPredTest, IntraPredTests) {
    125   // max block size is 32
    126   DECLARE_ALIGNED(16, uint8_t, left_col[2 * 32]);
    127   DECLARE_ALIGNED(16, uint8_t, above_data[2 * 32 + 32]);
    128   DECLARE_ALIGNED(16, uint8_t, dst[3 * 32 * 32]);
    129   DECLARE_ALIGNED(16, uint8_t, ref_dst[3 * 32 * 32]);
    130   RunTest(left_col, above_data, dst, ref_dst);
    131 }
    132 
    133 #if HAVE_SSE2
    134 INSTANTIATE_TEST_CASE_P(
    135     SSE2, VP9IntraPredTest,
    136     ::testing::Values(
    137         IntraPredParam(&vpx_d45_predictor_4x4_sse2, &vpx_d45_predictor_4x4_c, 4,
    138                        8),
    139         IntraPredParam(&vpx_d45_predictor_8x8_sse2, &vpx_d45_predictor_8x8_c, 8,
    140                        8),
    141         IntraPredParam(&vpx_d207_predictor_4x4_sse2, &vpx_d207_predictor_4x4_c,
    142                        4, 8),
    143         IntraPredParam(&vpx_dc_128_predictor_4x4_sse2,
    144                        &vpx_dc_128_predictor_4x4_c, 4, 8),
    145         IntraPredParam(&vpx_dc_128_predictor_8x8_sse2,
    146                        &vpx_dc_128_predictor_8x8_c, 8, 8),
    147         IntraPredParam(&vpx_dc_128_predictor_16x16_sse2,
    148                        &vpx_dc_128_predictor_16x16_c, 16, 8),
    149         IntraPredParam(&vpx_dc_128_predictor_32x32_sse2,
    150                        &vpx_dc_128_predictor_32x32_c, 32, 8),
    151         IntraPredParam(&vpx_dc_left_predictor_4x4_sse2,
    152                        &vpx_dc_left_predictor_4x4_c, 4, 8),
    153         IntraPredParam(&vpx_dc_left_predictor_8x8_sse2,
    154                        &vpx_dc_left_predictor_8x8_c, 8, 8),
    155         IntraPredParam(&vpx_dc_left_predictor_16x16_sse2,
    156                        &vpx_dc_left_predictor_16x16_c, 16, 8),
    157         IntraPredParam(&vpx_dc_left_predictor_32x32_sse2,
    158                        &vpx_dc_left_predictor_32x32_c, 32, 8),
    159         IntraPredParam(&vpx_dc_predictor_4x4_sse2, &vpx_dc_predictor_4x4_c, 4,
    160                        8),
    161         IntraPredParam(&vpx_dc_predictor_8x8_sse2, &vpx_dc_predictor_8x8_c, 8,
    162                        8),
    163         IntraPredParam(&vpx_dc_predictor_16x16_sse2, &vpx_dc_predictor_16x16_c,
    164                        16, 8),
    165         IntraPredParam(&vpx_dc_predictor_32x32_sse2, &vpx_dc_predictor_32x32_c,
    166                        32, 8),
    167         IntraPredParam(&vpx_dc_top_predictor_4x4_sse2,
    168                        &vpx_dc_top_predictor_4x4_c, 4, 8),
    169         IntraPredParam(&vpx_dc_top_predictor_8x8_sse2,
    170                        &vpx_dc_top_predictor_8x8_c, 8, 8),
    171         IntraPredParam(&vpx_dc_top_predictor_16x16_sse2,
    172                        &vpx_dc_top_predictor_16x16_c, 16, 8),
    173         IntraPredParam(&vpx_dc_top_predictor_32x32_sse2,
    174                        &vpx_dc_top_predictor_32x32_c, 32, 8),
    175         IntraPredParam(&vpx_h_predictor_4x4_sse2, &vpx_h_predictor_4x4_c, 4, 8),
    176         IntraPredParam(&vpx_h_predictor_8x8_sse2, &vpx_h_predictor_8x8_c, 8, 8),
    177         IntraPredParam(&vpx_h_predictor_16x16_sse2, &vpx_h_predictor_16x16_c,
    178                        16, 8),
    179         IntraPredParam(&vpx_h_predictor_32x32_sse2, &vpx_h_predictor_32x32_c,
    180                        32, 8),
    181         IntraPredParam(&vpx_tm_predictor_4x4_sse2, &vpx_tm_predictor_4x4_c, 4,
    182                        8),
    183         IntraPredParam(&vpx_tm_predictor_8x8_sse2, &vpx_tm_predictor_8x8_c, 8,
    184                        8),
    185         IntraPredParam(&vpx_tm_predictor_16x16_sse2, &vpx_tm_predictor_16x16_c,
    186                        16, 8),
    187         IntraPredParam(&vpx_tm_predictor_32x32_sse2, &vpx_tm_predictor_32x32_c,
    188                        32, 8),
    189         IntraPredParam(&vpx_v_predictor_4x4_sse2, &vpx_v_predictor_4x4_c, 4, 8),
    190         IntraPredParam(&vpx_v_predictor_8x8_sse2, &vpx_v_predictor_8x8_c, 8, 8),
    191         IntraPredParam(&vpx_v_predictor_16x16_sse2, &vpx_v_predictor_16x16_c,
    192                        16, 8),
    193         IntraPredParam(&vpx_v_predictor_32x32_sse2, &vpx_v_predictor_32x32_c,
    194                        32, 8)));
    195 #endif  // HAVE_SSE2
    196 
    197 #if HAVE_SSSE3
    198 INSTANTIATE_TEST_CASE_P(
    199     SSSE3, VP9IntraPredTest,
    200     ::testing::Values(IntraPredParam(&vpx_d45_predictor_16x16_ssse3,
    201                                      &vpx_d45_predictor_16x16_c, 16, 8),
    202                       IntraPredParam(&vpx_d45_predictor_32x32_ssse3,
    203                                      &vpx_d45_predictor_32x32_c, 32, 8),
    204                       IntraPredParam(&vpx_d63_predictor_4x4_ssse3,
    205                                      &vpx_d63_predictor_4x4_c, 4, 8),
    206                       IntraPredParam(&vpx_d63_predictor_8x8_ssse3,
    207                                      &vpx_d63_predictor_8x8_c, 8, 8),
    208                       IntraPredParam(&vpx_d63_predictor_16x16_ssse3,
    209                                      &vpx_d63_predictor_16x16_c, 16, 8),
    210                       IntraPredParam(&vpx_d63_predictor_32x32_ssse3,
    211                                      &vpx_d63_predictor_32x32_c, 32, 8),
    212                       IntraPredParam(&vpx_d153_predictor_4x4_ssse3,
    213                                      &vpx_d153_predictor_4x4_c, 4, 8),
    214                       IntraPredParam(&vpx_d153_predictor_8x8_ssse3,
    215                                      &vpx_d153_predictor_8x8_c, 8, 8),
    216                       IntraPredParam(&vpx_d153_predictor_16x16_ssse3,
    217                                      &vpx_d153_predictor_16x16_c, 16, 8),
    218                       IntraPredParam(&vpx_d153_predictor_32x32_ssse3,
    219                                      &vpx_d153_predictor_32x32_c, 32, 8),
    220                       IntraPredParam(&vpx_d207_predictor_8x8_ssse3,
    221                                      &vpx_d207_predictor_8x8_c, 8, 8),
    222                       IntraPredParam(&vpx_d207_predictor_16x16_ssse3,
    223                                      &vpx_d207_predictor_16x16_c, 16, 8),
    224                       IntraPredParam(&vpx_d207_predictor_32x32_ssse3,
    225                                      &vpx_d207_predictor_32x32_c, 32, 8)));
    226 #endif  // HAVE_SSSE3
    227 
    228 #if HAVE_NEON
    229 INSTANTIATE_TEST_CASE_P(
    230     NEON, VP9IntraPredTest,
    231     ::testing::Values(
    232         IntraPredParam(&vpx_d45_predictor_4x4_neon, &vpx_d45_predictor_4x4_c, 4,
    233                        8),
    234         IntraPredParam(&vpx_d45_predictor_8x8_neon, &vpx_d45_predictor_8x8_c, 8,
    235                        8),
    236         IntraPredParam(&vpx_d45_predictor_16x16_neon,
    237                        &vpx_d45_predictor_16x16_c, 16, 8),
    238         IntraPredParam(&vpx_d45_predictor_32x32_neon,
    239                        &vpx_d45_predictor_32x32_c, 32, 8),
    240         IntraPredParam(&vpx_d135_predictor_4x4_neon, &vpx_d135_predictor_4x4_c,
    241                        4, 8),
    242         IntraPredParam(&vpx_d135_predictor_8x8_neon, &vpx_d135_predictor_8x8_c,
    243                        8, 8),
    244         IntraPredParam(&vpx_d135_predictor_16x16_neon,
    245                        &vpx_d135_predictor_16x16_c, 16, 8),
    246         IntraPredParam(&vpx_d135_predictor_32x32_neon,
    247                        &vpx_d135_predictor_32x32_c, 32, 8),
    248         IntraPredParam(&vpx_dc_128_predictor_4x4_neon,
    249                        &vpx_dc_128_predictor_4x4_c, 4, 8),
    250         IntraPredParam(&vpx_dc_128_predictor_8x8_neon,
    251                        &vpx_dc_128_predictor_8x8_c, 8, 8),
    252         IntraPredParam(&vpx_dc_128_predictor_16x16_neon,
    253                        &vpx_dc_128_predictor_16x16_c, 16, 8),
    254         IntraPredParam(&vpx_dc_128_predictor_32x32_neon,
    255                        &vpx_dc_128_predictor_32x32_c, 32, 8),
    256         IntraPredParam(&vpx_dc_left_predictor_4x4_neon,
    257                        &vpx_dc_left_predictor_4x4_c, 4, 8),
    258         IntraPredParam(&vpx_dc_left_predictor_8x8_neon,
    259                        &vpx_dc_left_predictor_8x8_c, 8, 8),
    260         IntraPredParam(&vpx_dc_left_predictor_16x16_neon,
    261                        &vpx_dc_left_predictor_16x16_c, 16, 8),
    262         IntraPredParam(&vpx_dc_left_predictor_32x32_neon,
    263                        &vpx_dc_left_predictor_32x32_c, 32, 8),
    264         IntraPredParam(&vpx_dc_predictor_4x4_neon, &vpx_dc_predictor_4x4_c, 4,
    265                        8),
    266         IntraPredParam(&vpx_dc_predictor_8x8_neon, &vpx_dc_predictor_8x8_c, 8,
    267                        8),
    268         IntraPredParam(&vpx_dc_predictor_16x16_neon, &vpx_dc_predictor_16x16_c,
    269                        16, 8),
    270         IntraPredParam(&vpx_dc_predictor_32x32_neon, &vpx_dc_predictor_32x32_c,
    271                        32, 8),
    272         IntraPredParam(&vpx_dc_top_predictor_4x4_neon,
    273                        &vpx_dc_top_predictor_4x4_c, 4, 8),
    274         IntraPredParam(&vpx_dc_top_predictor_8x8_neon,
    275                        &vpx_dc_top_predictor_8x8_c, 8, 8),
    276         IntraPredParam(&vpx_dc_top_predictor_16x16_neon,
    277                        &vpx_dc_top_predictor_16x16_c, 16, 8),
    278         IntraPredParam(&vpx_dc_top_predictor_32x32_neon,
    279                        &vpx_dc_top_predictor_32x32_c, 32, 8),
    280         IntraPredParam(&vpx_h_predictor_4x4_neon, &vpx_h_predictor_4x4_c, 4, 8),
    281         IntraPredParam(&vpx_h_predictor_8x8_neon, &vpx_h_predictor_8x8_c, 8, 8),
    282         IntraPredParam(&vpx_h_predictor_16x16_neon, &vpx_h_predictor_16x16_c,
    283                        16, 8),
    284         IntraPredParam(&vpx_h_predictor_32x32_neon, &vpx_h_predictor_32x32_c,
    285                        32, 8),
    286         IntraPredParam(&vpx_tm_predictor_4x4_neon, &vpx_tm_predictor_4x4_c, 4,
    287                        8),
    288         IntraPredParam(&vpx_tm_predictor_8x8_neon, &vpx_tm_predictor_8x8_c, 8,
    289                        8),
    290         IntraPredParam(&vpx_tm_predictor_16x16_neon, &vpx_tm_predictor_16x16_c,
    291                        16, 8),
    292         IntraPredParam(&vpx_tm_predictor_32x32_neon, &vpx_tm_predictor_32x32_c,
    293                        32, 8),
    294         IntraPredParam(&vpx_v_predictor_4x4_neon, &vpx_v_predictor_4x4_c, 4, 8),
    295         IntraPredParam(&vpx_v_predictor_8x8_neon, &vpx_v_predictor_8x8_c, 8, 8),
    296         IntraPredParam(&vpx_v_predictor_16x16_neon, &vpx_v_predictor_16x16_c,
    297                        16, 8),
    298         IntraPredParam(&vpx_v_predictor_32x32_neon, &vpx_v_predictor_32x32_c,
    299                        32, 8)));
    300 #endif  // HAVE_NEON
    301 
    302 #if HAVE_DSPR2
    303 INSTANTIATE_TEST_CASE_P(
    304     DSPR2, VP9IntraPredTest,
    305     ::testing::Values(IntraPredParam(&vpx_dc_predictor_4x4_dspr2,
    306                                      &vpx_dc_predictor_4x4_c, 4, 8),
    307                       IntraPredParam(&vpx_dc_predictor_8x8_dspr2,
    308                                      &vpx_dc_predictor_8x8_c, 8, 8),
    309                       IntraPredParam(&vpx_dc_predictor_16x16_dspr2,
    310                                      &vpx_dc_predictor_16x16_c, 16, 8),
    311                       IntraPredParam(&vpx_h_predictor_4x4_dspr2,
    312                                      &vpx_h_predictor_4x4_c, 4, 8),
    313                       IntraPredParam(&vpx_h_predictor_8x8_dspr2,
    314                                      &vpx_h_predictor_8x8_c, 8, 8),
    315                       IntraPredParam(&vpx_h_predictor_16x16_dspr2,
    316                                      &vpx_h_predictor_16x16_c, 16, 8),
    317                       IntraPredParam(&vpx_tm_predictor_4x4_dspr2,
    318                                      &vpx_tm_predictor_4x4_c, 4, 8),
    319                       IntraPredParam(&vpx_tm_predictor_8x8_dspr2,
    320                                      &vpx_tm_predictor_8x8_c, 8, 8)));
    321 #endif  // HAVE_DSPR2
    322 
    323 #if HAVE_MSA
    324 INSTANTIATE_TEST_CASE_P(
    325     MSA, VP9IntraPredTest,
    326     ::testing::Values(
    327         IntraPredParam(&vpx_dc_128_predictor_4x4_msa,
    328                        &vpx_dc_128_predictor_4x4_c, 4, 8),
    329         IntraPredParam(&vpx_dc_128_predictor_8x8_msa,
    330                        &vpx_dc_128_predictor_8x8_c, 8, 8),
    331         IntraPredParam(&vpx_dc_128_predictor_16x16_msa,
    332                        &vpx_dc_128_predictor_16x16_c, 16, 8),
    333         IntraPredParam(&vpx_dc_128_predictor_32x32_msa,
    334                        &vpx_dc_128_predictor_32x32_c, 32, 8),
    335         IntraPredParam(&vpx_dc_left_predictor_4x4_msa,
    336                        &vpx_dc_left_predictor_4x4_c, 4, 8),
    337         IntraPredParam(&vpx_dc_left_predictor_8x8_msa,
    338                        &vpx_dc_left_predictor_8x8_c, 8, 8),
    339         IntraPredParam(&vpx_dc_left_predictor_16x16_msa,
    340                        &vpx_dc_left_predictor_16x16_c, 16, 8),
    341         IntraPredParam(&vpx_dc_left_predictor_32x32_msa,
    342                        &vpx_dc_left_predictor_32x32_c, 32, 8),
    343         IntraPredParam(&vpx_dc_predictor_4x4_msa, &vpx_dc_predictor_4x4_c, 4,
    344                        8),
    345         IntraPredParam(&vpx_dc_predictor_8x8_msa, &vpx_dc_predictor_8x8_c, 8,
    346                        8),
    347         IntraPredParam(&vpx_dc_predictor_16x16_msa, &vpx_dc_predictor_16x16_c,
    348                        16, 8),
    349         IntraPredParam(&vpx_dc_predictor_32x32_msa, &vpx_dc_predictor_32x32_c,
    350                        32, 8),
    351         IntraPredParam(&vpx_dc_top_predictor_4x4_msa,
    352                        &vpx_dc_top_predictor_4x4_c, 4, 8),
    353         IntraPredParam(&vpx_dc_top_predictor_8x8_msa,
    354                        &vpx_dc_top_predictor_8x8_c, 8, 8),
    355         IntraPredParam(&vpx_dc_top_predictor_16x16_msa,
    356                        &vpx_dc_top_predictor_16x16_c, 16, 8),
    357         IntraPredParam(&vpx_dc_top_predictor_32x32_msa,
    358                        &vpx_dc_top_predictor_32x32_c, 32, 8),
    359         IntraPredParam(&vpx_h_predictor_4x4_msa, &vpx_h_predictor_4x4_c, 4, 8),
    360         IntraPredParam(&vpx_h_predictor_8x8_msa, &vpx_h_predictor_8x8_c, 8, 8),
    361         IntraPredParam(&vpx_h_predictor_16x16_msa, &vpx_h_predictor_16x16_c, 16,
    362                        8),
    363         IntraPredParam(&vpx_h_predictor_32x32_msa, &vpx_h_predictor_32x32_c, 32,
    364                        8),
    365         IntraPredParam(&vpx_tm_predictor_4x4_msa, &vpx_tm_predictor_4x4_c, 4,
    366                        8),
    367         IntraPredParam(&vpx_tm_predictor_8x8_msa, &vpx_tm_predictor_8x8_c, 8,
    368                        8),
    369         IntraPredParam(&vpx_tm_predictor_16x16_msa, &vpx_tm_predictor_16x16_c,
    370                        16, 8),
    371         IntraPredParam(&vpx_tm_predictor_32x32_msa, &vpx_tm_predictor_32x32_c,
    372                        32, 8),
    373         IntraPredParam(&vpx_v_predictor_4x4_msa, &vpx_v_predictor_4x4_c, 4, 8),
    374         IntraPredParam(&vpx_v_predictor_8x8_msa, &vpx_v_predictor_8x8_c, 8, 8),
    375         IntraPredParam(&vpx_v_predictor_16x16_msa, &vpx_v_predictor_16x16_c, 16,
    376                        8),
    377         IntraPredParam(&vpx_v_predictor_32x32_msa, &vpx_v_predictor_32x32_c, 32,
    378                        8)));
    379 #endif  // HAVE_MSA
    380 
    381 #if HAVE_VSX
    382 INSTANTIATE_TEST_CASE_P(
    383     VSX, VP9IntraPredTest,
    384     ::testing::Values(
    385         IntraPredParam(&vpx_d45_predictor_8x8_vsx, &vpx_d45_predictor_8x8_c, 8,
    386                        8),
    387         IntraPredParam(&vpx_d45_predictor_16x16_vsx, &vpx_d45_predictor_16x16_c,
    388                        16, 8),
    389         IntraPredParam(&vpx_d45_predictor_32x32_vsx, &vpx_d45_predictor_32x32_c,
    390                        32, 8),
    391         IntraPredParam(&vpx_d63_predictor_8x8_vsx, &vpx_d63_predictor_8x8_c, 8,
    392                        8),
    393         IntraPredParam(&vpx_d63_predictor_16x16_vsx, &vpx_d63_predictor_16x16_c,
    394                        16, 8),
    395         IntraPredParam(&vpx_d63_predictor_32x32_vsx, &vpx_d63_predictor_32x32_c,
    396                        32, 8),
    397         IntraPredParam(&vpx_dc_128_predictor_16x16_vsx,
    398                        &vpx_dc_128_predictor_16x16_c, 16, 8),
    399         IntraPredParam(&vpx_dc_128_predictor_32x32_vsx,
    400                        &vpx_dc_128_predictor_32x32_c, 32, 8),
    401         IntraPredParam(&vpx_dc_left_predictor_16x16_vsx,
    402                        &vpx_dc_left_predictor_16x16_c, 16, 8),
    403         IntraPredParam(&vpx_dc_left_predictor_32x32_vsx,
    404                        &vpx_dc_left_predictor_32x32_c, 32, 8),
    405         IntraPredParam(&vpx_dc_predictor_8x8_vsx, &vpx_dc_predictor_8x8_c, 8,
    406                        8),
    407         IntraPredParam(&vpx_dc_predictor_16x16_vsx, &vpx_dc_predictor_16x16_c,
    408                        16, 8),
    409         IntraPredParam(&vpx_dc_predictor_32x32_vsx, &vpx_dc_predictor_32x32_c,
    410                        32, 8),
    411         IntraPredParam(&vpx_dc_top_predictor_16x16_vsx,
    412                        &vpx_dc_top_predictor_16x16_c, 16, 8),
    413         IntraPredParam(&vpx_dc_top_predictor_32x32_vsx,
    414                        &vpx_dc_top_predictor_32x32_c, 32, 8),
    415         IntraPredParam(&vpx_h_predictor_4x4_vsx, &vpx_h_predictor_4x4_c, 4, 8),
    416         IntraPredParam(&vpx_h_predictor_8x8_vsx, &vpx_h_predictor_8x8_c, 8, 8),
    417         IntraPredParam(&vpx_h_predictor_16x16_vsx, &vpx_h_predictor_16x16_c, 16,
    418                        8),
    419         IntraPredParam(&vpx_h_predictor_32x32_vsx, &vpx_h_predictor_32x32_c, 32,
    420                        8),
    421         IntraPredParam(&vpx_tm_predictor_4x4_vsx, &vpx_tm_predictor_4x4_c, 4,
    422                        8),
    423         IntraPredParam(&vpx_tm_predictor_8x8_vsx, &vpx_tm_predictor_8x8_c, 8,
    424                        8),
    425         IntraPredParam(&vpx_tm_predictor_16x16_vsx, &vpx_tm_predictor_16x16_c,
    426                        16, 8),
    427         IntraPredParam(&vpx_tm_predictor_32x32_vsx, &vpx_tm_predictor_32x32_c,
    428                        32, 8),
    429         IntraPredParam(&vpx_v_predictor_16x16_vsx, &vpx_v_predictor_16x16_c, 16,
    430                        8),
    431         IntraPredParam(&vpx_v_predictor_32x32_vsx, &vpx_v_predictor_32x32_c, 32,
    432                        8)));
    433 #endif  // HAVE_VSX
    434 
    435 #if CONFIG_VP9_HIGHBITDEPTH
    436 typedef void (*HighbdIntraPred)(uint16_t *dst, ptrdiff_t stride,
    437                                 const uint16_t *above, const uint16_t *left,
    438                                 int bps);
    439 struct HighbdIntraPredParam {
    440   HighbdIntraPredParam(HighbdIntraPred pred = NULL, HighbdIntraPred ref = NULL,
    441                        int block_size_value = 0, int bit_depth_value = 0)
    442       : pred_fn(pred), ref_fn(ref), block_size(block_size_value),
    443         bit_depth(bit_depth_value) {}
    444 
    445   HighbdIntraPred pred_fn;
    446   HighbdIntraPred ref_fn;
    447   int block_size;
    448   int bit_depth;
    449 };
    450 
    451 template <>
    452 void IntraPredTest<uint16_t, HighbdIntraPredParam>::Predict() {
    453   const int bit_depth = params_.bit_depth;
    454   params_.ref_fn(ref_dst_, stride_, above_row_, left_col_, bit_depth);
    455   ASM_REGISTER_STATE_CHECK(
    456       params_.pred_fn(dst_, stride_, above_row_, left_col_, bit_depth));
    457 }
    458 
    459 typedef IntraPredTest<uint16_t, HighbdIntraPredParam> VP9HighbdIntraPredTest;
    460 
    461 TEST_P(VP9HighbdIntraPredTest, HighbdIntraPredTests) {
    462   // max block size is 32
    463   DECLARE_ALIGNED(16, uint16_t, left_col[2 * 32]);
    464   DECLARE_ALIGNED(16, uint16_t, above_data[2 * 32 + 32]);
    465   DECLARE_ALIGNED(16, uint16_t, dst[3 * 32 * 32]);
    466   DECLARE_ALIGNED(16, uint16_t, ref_dst[3 * 32 * 32]);
    467   RunTest(left_col, above_data, dst, ref_dst);
    468 }
    469 
    470 #if HAVE_SSSE3
    471 INSTANTIATE_TEST_CASE_P(
    472     SSSE3_TO_C_8, VP9HighbdIntraPredTest,
    473     ::testing::Values(
    474         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_ssse3,
    475                              &vpx_highbd_d45_predictor_4x4_c, 4, 8),
    476         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_ssse3,
    477                              &vpx_highbd_d45_predictor_8x8_c, 8, 8),
    478         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_ssse3,
    479                              &vpx_highbd_d45_predictor_16x16_c, 16, 8),
    480         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_ssse3,
    481                              &vpx_highbd_d45_predictor_32x32_c, 32, 8),
    482         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_ssse3,
    483                              &vpx_highbd_d63_predictor_8x8_c, 8, 8),
    484         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_ssse3,
    485                              &vpx_highbd_d63_predictor_16x16_c, 16, 8),
    486         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_c,
    487                              &vpx_highbd_d63_predictor_32x32_ssse3, 32, 8),
    488         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_ssse3,
    489                              &vpx_highbd_d117_predictor_8x8_c, 8, 8),
    490         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_ssse3,
    491                              &vpx_highbd_d117_predictor_16x16_c, 16, 8),
    492         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_c,
    493                              &vpx_highbd_d117_predictor_32x32_ssse3, 32, 8),
    494         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_ssse3,
    495                              &vpx_highbd_d135_predictor_8x8_c, 8, 8),
    496         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_ssse3,
    497                              &vpx_highbd_d135_predictor_16x16_c, 16, 8),
    498         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_ssse3,
    499                              &vpx_highbd_d135_predictor_32x32_c, 32, 8),
    500         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_ssse3,
    501                              &vpx_highbd_d153_predictor_8x8_c, 8, 8),
    502         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_ssse3,
    503                              &vpx_highbd_d153_predictor_16x16_c, 16, 8),
    504         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_ssse3,
    505                              &vpx_highbd_d153_predictor_32x32_c, 32, 8),
    506         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3,
    507                              &vpx_highbd_d207_predictor_8x8_c, 8, 8),
    508         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3,
    509                              &vpx_highbd_d207_predictor_16x16_c, 16, 8),
    510         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3,
    511                              &vpx_highbd_d207_predictor_32x32_c, 32, 8)));
    512 
    513 INSTANTIATE_TEST_CASE_P(
    514     SSSE3_TO_C_10, VP9HighbdIntraPredTest,
    515     ::testing::Values(
    516         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_ssse3,
    517                              &vpx_highbd_d45_predictor_4x4_c, 4, 10),
    518         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_ssse3,
    519                              &vpx_highbd_d45_predictor_8x8_c, 8, 10),
    520         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_ssse3,
    521                              &vpx_highbd_d45_predictor_16x16_c, 16, 10),
    522         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_ssse3,
    523                              &vpx_highbd_d45_predictor_32x32_c, 32, 10),
    524         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_ssse3,
    525                              &vpx_highbd_d63_predictor_8x8_c, 8, 10),
    526         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_ssse3,
    527                              &vpx_highbd_d63_predictor_16x16_c, 16, 10),
    528         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_c,
    529                              &vpx_highbd_d63_predictor_32x32_ssse3, 32, 10),
    530         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_ssse3,
    531                              &vpx_highbd_d117_predictor_8x8_c, 8, 10),
    532         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_ssse3,
    533                              &vpx_highbd_d117_predictor_16x16_c, 16, 10),
    534         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_c,
    535                              &vpx_highbd_d117_predictor_32x32_ssse3, 32, 10),
    536         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_ssse3,
    537                              &vpx_highbd_d135_predictor_8x8_c, 8, 10),
    538         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_ssse3,
    539                              &vpx_highbd_d135_predictor_16x16_c, 16, 10),
    540         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_ssse3,
    541                              &vpx_highbd_d135_predictor_32x32_c, 32, 10),
    542         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_ssse3,
    543                              &vpx_highbd_d153_predictor_8x8_c, 8, 10),
    544         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_ssse3,
    545                              &vpx_highbd_d153_predictor_16x16_c, 16, 10),
    546         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_ssse3,
    547                              &vpx_highbd_d153_predictor_32x32_c, 32, 10),
    548         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3,
    549                              &vpx_highbd_d207_predictor_8x8_c, 8, 10),
    550         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3,
    551                              &vpx_highbd_d207_predictor_16x16_c, 16, 10),
    552         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3,
    553                              &vpx_highbd_d207_predictor_32x32_c, 32, 10)));
    554 
    555 INSTANTIATE_TEST_CASE_P(
    556     SSSE3_TO_C_12, VP9HighbdIntraPredTest,
    557     ::testing::Values(
    558         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_ssse3,
    559                              &vpx_highbd_d45_predictor_4x4_c, 4, 12),
    560         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_ssse3,
    561                              &vpx_highbd_d45_predictor_8x8_c, 8, 12),
    562         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_ssse3,
    563                              &vpx_highbd_d45_predictor_16x16_c, 16, 12),
    564         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_ssse3,
    565                              &vpx_highbd_d45_predictor_32x32_c, 32, 12),
    566         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_ssse3,
    567                              &vpx_highbd_d63_predictor_8x8_c, 8, 12),
    568         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_ssse3,
    569                              &vpx_highbd_d63_predictor_16x16_c, 16, 12),
    570         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_c,
    571                              &vpx_highbd_d63_predictor_32x32_ssse3, 32, 12),
    572         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_ssse3,
    573                              &vpx_highbd_d117_predictor_8x8_c, 8, 12),
    574         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_ssse3,
    575                              &vpx_highbd_d117_predictor_16x16_c, 16, 12),
    576         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_c,
    577                              &vpx_highbd_d117_predictor_32x32_ssse3, 32, 12),
    578         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_ssse3,
    579                              &vpx_highbd_d135_predictor_8x8_c, 8, 12),
    580         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_ssse3,
    581                              &vpx_highbd_d135_predictor_16x16_c, 16, 12),
    582         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_ssse3,
    583                              &vpx_highbd_d135_predictor_32x32_c, 32, 12),
    584         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_ssse3,
    585                              &vpx_highbd_d153_predictor_8x8_c, 8, 12),
    586         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_ssse3,
    587                              &vpx_highbd_d153_predictor_16x16_c, 16, 12),
    588         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_ssse3,
    589                              &vpx_highbd_d153_predictor_32x32_c, 32, 12),
    590         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3,
    591                              &vpx_highbd_d207_predictor_8x8_c, 8, 12),
    592         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3,
    593                              &vpx_highbd_d207_predictor_16x16_c, 16, 12),
    594         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3,
    595                              &vpx_highbd_d207_predictor_32x32_c, 32, 12)));
    596 #endif  // HAVE_SSSE3
    597 
    598 #if HAVE_SSE2
    599 INSTANTIATE_TEST_CASE_P(
    600     SSE2_TO_C_8, VP9HighbdIntraPredTest,
    601     ::testing::Values(
    602         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_sse2,
    603                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 8),
    604         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_sse2,
    605                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 8),
    606         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_sse2,
    607                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 8),
    608         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2,
    609                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 8),
    610         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_sse2,
    611                              &vpx_highbd_d63_predictor_4x4_c, 4, 8),
    612         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_sse2,
    613                              &vpx_highbd_d117_predictor_4x4_c, 4, 8),
    614         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_sse2,
    615                              &vpx_highbd_d135_predictor_4x4_c, 4, 8),
    616         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_sse2,
    617                              &vpx_highbd_d153_predictor_4x4_c, 4, 8),
    618         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2,
    619                              &vpx_highbd_d207_predictor_4x4_c, 4, 8),
    620         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2,
    621                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 8),
    622         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2,
    623                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 8),
    624         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_sse2,
    625                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 8),
    626         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_sse2,
    627                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 8),
    628         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_sse2,
    629                              &vpx_highbd_dc_predictor_4x4_c, 4, 8),
    630         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_sse2,
    631                              &vpx_highbd_dc_predictor_8x8_c, 8, 8),
    632         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_sse2,
    633                              &vpx_highbd_dc_predictor_16x16_c, 16, 8),
    634         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_sse2,
    635                              &vpx_highbd_dc_predictor_32x32_c, 32, 8),
    636         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_sse2,
    637                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 8),
    638         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_sse2,
    639                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 8),
    640         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_sse2,
    641                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 8),
    642         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_sse2,
    643                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 8),
    644         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_sse2,
    645                              &vpx_highbd_tm_predictor_4x4_c, 4, 8),
    646         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_sse2,
    647                              &vpx_highbd_tm_predictor_8x8_c, 8, 8),
    648         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_sse2,
    649                              &vpx_highbd_tm_predictor_16x16_c, 16, 8),
    650         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_sse2,
    651                              &vpx_highbd_tm_predictor_32x32_c, 32, 8),
    652         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_sse2,
    653                              &vpx_highbd_h_predictor_4x4_c, 4, 8),
    654         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_sse2,
    655                              &vpx_highbd_h_predictor_8x8_c, 8, 8),
    656         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_sse2,
    657                              &vpx_highbd_h_predictor_16x16_c, 16, 8),
    658         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_sse2,
    659                              &vpx_highbd_h_predictor_32x32_c, 32, 8),
    660         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_sse2,
    661                              &vpx_highbd_v_predictor_4x4_c, 4, 8),
    662         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_sse2,
    663                              &vpx_highbd_v_predictor_8x8_c, 8, 8),
    664         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_sse2,
    665                              &vpx_highbd_v_predictor_16x16_c, 16, 8),
    666         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_sse2,
    667                              &vpx_highbd_v_predictor_32x32_c, 32, 8)));
    668 
    669 INSTANTIATE_TEST_CASE_P(
    670     SSE2_TO_C_10, VP9HighbdIntraPredTest,
    671     ::testing::Values(
    672         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_sse2,
    673                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 10),
    674         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_sse2,
    675                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 10),
    676         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_sse2,
    677                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 10),
    678         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2,
    679                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 10),
    680         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_sse2,
    681                              &vpx_highbd_d63_predictor_4x4_c, 4, 10),
    682         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_sse2,
    683                              &vpx_highbd_d117_predictor_4x4_c, 4, 10),
    684         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_sse2,
    685                              &vpx_highbd_d135_predictor_4x4_c, 4, 10),
    686         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_sse2,
    687                              &vpx_highbd_d153_predictor_4x4_c, 4, 10),
    688         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2,
    689                              &vpx_highbd_d207_predictor_4x4_c, 4, 10),
    690         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2,
    691                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 10),
    692         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2,
    693                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 10),
    694         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_sse2,
    695                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 10),
    696         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_sse2,
    697                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 10),
    698         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_sse2,
    699                              &vpx_highbd_dc_predictor_4x4_c, 4, 10),
    700         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_sse2,
    701                              &vpx_highbd_dc_predictor_8x8_c, 8, 10),
    702         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_sse2,
    703                              &vpx_highbd_dc_predictor_16x16_c, 16, 10),
    704         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_sse2,
    705                              &vpx_highbd_dc_predictor_32x32_c, 32, 10),
    706         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_sse2,
    707                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 10),
    708         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_sse2,
    709                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 10),
    710         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_sse2,
    711                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 10),
    712         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_sse2,
    713                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 10),
    714         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_sse2,
    715                              &vpx_highbd_tm_predictor_4x4_c, 4, 10),
    716         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_sse2,
    717                              &vpx_highbd_tm_predictor_8x8_c, 8, 10),
    718         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_sse2,
    719                              &vpx_highbd_tm_predictor_16x16_c, 16, 10),
    720         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_sse2,
    721                              &vpx_highbd_tm_predictor_32x32_c, 32, 10),
    722         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_sse2,
    723                              &vpx_highbd_h_predictor_4x4_c, 4, 10),
    724         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_sse2,
    725                              &vpx_highbd_h_predictor_8x8_c, 8, 10),
    726         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_sse2,
    727                              &vpx_highbd_h_predictor_16x16_c, 16, 10),
    728         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_sse2,
    729                              &vpx_highbd_h_predictor_32x32_c, 32, 10),
    730         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_sse2,
    731                              &vpx_highbd_v_predictor_4x4_c, 4, 10),
    732         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_sse2,
    733                              &vpx_highbd_v_predictor_8x8_c, 8, 10),
    734         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_sse2,
    735                              &vpx_highbd_v_predictor_16x16_c, 16, 10),
    736         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_sse2,
    737                              &vpx_highbd_v_predictor_32x32_c, 32, 10)));
    738 
    739 INSTANTIATE_TEST_CASE_P(
    740     SSE2_TO_C_12, VP9HighbdIntraPredTest,
    741     ::testing::Values(
    742         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_sse2,
    743                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 12),
    744         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_sse2,
    745                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 12),
    746         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_sse2,
    747                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 12),
    748         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2,
    749                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 12),
    750         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_sse2,
    751                              &vpx_highbd_d63_predictor_4x4_c, 4, 12),
    752         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_sse2,
    753                              &vpx_highbd_d117_predictor_4x4_c, 4, 12),
    754         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_sse2,
    755                              &vpx_highbd_d135_predictor_4x4_c, 4, 12),
    756         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_sse2,
    757                              &vpx_highbd_d153_predictor_4x4_c, 4, 12),
    758         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2,
    759                              &vpx_highbd_d207_predictor_4x4_c, 4, 12),
    760         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2,
    761                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 12),
    762         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2,
    763                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 12),
    764         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_sse2,
    765                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 12),
    766         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_sse2,
    767                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 12),
    768         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_sse2,
    769                              &vpx_highbd_dc_predictor_4x4_c, 4, 12),
    770         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_sse2,
    771                              &vpx_highbd_dc_predictor_8x8_c, 8, 12),
    772         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_sse2,
    773                              &vpx_highbd_dc_predictor_16x16_c, 16, 12),
    774         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_sse2,
    775                              &vpx_highbd_dc_predictor_32x32_c, 32, 12),
    776         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_sse2,
    777                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 12),
    778         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_sse2,
    779                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 12),
    780         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_sse2,
    781                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 12),
    782         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_sse2,
    783                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 12),
    784         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_sse2,
    785                              &vpx_highbd_tm_predictor_4x4_c, 4, 12),
    786         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_sse2,
    787                              &vpx_highbd_tm_predictor_8x8_c, 8, 12),
    788         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_sse2,
    789                              &vpx_highbd_tm_predictor_16x16_c, 16, 12),
    790         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_sse2,
    791                              &vpx_highbd_tm_predictor_32x32_c, 32, 12),
    792         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_sse2,
    793                              &vpx_highbd_h_predictor_4x4_c, 4, 12),
    794         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_sse2,
    795                              &vpx_highbd_h_predictor_8x8_c, 8, 12),
    796         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_sse2,
    797                              &vpx_highbd_h_predictor_16x16_c, 16, 12),
    798         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_sse2,
    799                              &vpx_highbd_h_predictor_32x32_c, 32, 12),
    800         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_sse2,
    801                              &vpx_highbd_v_predictor_4x4_c, 4, 12),
    802         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_sse2,
    803                              &vpx_highbd_v_predictor_8x8_c, 8, 12),
    804         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_sse2,
    805                              &vpx_highbd_v_predictor_16x16_c, 16, 12),
    806         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_sse2,
    807                              &vpx_highbd_v_predictor_32x32_c, 32, 12)));
    808 #endif  // HAVE_SSE2
    809 
    810 #if HAVE_NEON
    811 INSTANTIATE_TEST_CASE_P(
    812     NEON_TO_C_8, VP9HighbdIntraPredTest,
    813     ::testing::Values(
    814         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_neon,
    815                              &vpx_highbd_d45_predictor_4x4_c, 4, 8),
    816         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_neon,
    817                              &vpx_highbd_d45_predictor_8x8_c, 8, 8),
    818         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_neon,
    819                              &vpx_highbd_d45_predictor_16x16_c, 16, 8),
    820         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_neon,
    821                              &vpx_highbd_d45_predictor_32x32_c, 32, 8),
    822         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_neon,
    823                              &vpx_highbd_d135_predictor_4x4_c, 4, 8),
    824         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_neon,
    825                              &vpx_highbd_d135_predictor_8x8_c, 8, 8),
    826         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_neon,
    827                              &vpx_highbd_d135_predictor_16x16_c, 16, 8),
    828         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_neon,
    829                              &vpx_highbd_d135_predictor_32x32_c, 32, 8),
    830         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_neon,
    831                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 8),
    832         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_neon,
    833                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 8),
    834         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_neon,
    835                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 8),
    836         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_neon,
    837                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 8),
    838         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_neon,
    839                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 8),
    840         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_neon,
    841                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 8),
    842         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_neon,
    843                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 8),
    844         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_neon,
    845                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 8),
    846         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_neon,
    847                              &vpx_highbd_dc_predictor_4x4_c, 4, 8),
    848         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_neon,
    849                              &vpx_highbd_dc_predictor_8x8_c, 8, 8),
    850         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_neon,
    851                              &vpx_highbd_dc_predictor_16x16_c, 16, 8),
    852         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_neon,
    853                              &vpx_highbd_dc_predictor_32x32_c, 32, 8),
    854         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_neon,
    855                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 8),
    856         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_neon,
    857                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 8),
    858         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_neon,
    859                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 8),
    860         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_neon,
    861                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 8),
    862         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_neon,
    863                              &vpx_highbd_h_predictor_4x4_c, 4, 8),
    864         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_neon,
    865                              &vpx_highbd_h_predictor_8x8_c, 8, 8),
    866         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_neon,
    867                              &vpx_highbd_h_predictor_16x16_c, 16, 8),
    868         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_neon,
    869                              &vpx_highbd_h_predictor_32x32_c, 32, 8),
    870         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_neon,
    871                              &vpx_highbd_tm_predictor_4x4_c, 4, 8),
    872         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_neon,
    873                              &vpx_highbd_tm_predictor_8x8_c, 8, 8),
    874         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_neon,
    875                              &vpx_highbd_tm_predictor_16x16_c, 16, 8),
    876         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_neon,
    877                              &vpx_highbd_tm_predictor_32x32_c, 32, 8),
    878         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_neon,
    879                              &vpx_highbd_v_predictor_4x4_c, 4, 8),
    880         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_neon,
    881                              &vpx_highbd_v_predictor_8x8_c, 8, 8),
    882         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_neon,
    883                              &vpx_highbd_v_predictor_16x16_c, 16, 8),
    884         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_neon,
    885                              &vpx_highbd_v_predictor_32x32_c, 32, 8)));
    886 
    887 INSTANTIATE_TEST_CASE_P(
    888     NEON_TO_C_10, VP9HighbdIntraPredTest,
    889     ::testing::Values(
    890         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_neon,
    891                              &vpx_highbd_d45_predictor_4x4_c, 4, 10),
    892         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_neon,
    893                              &vpx_highbd_d45_predictor_8x8_c, 8, 10),
    894         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_neon,
    895                              &vpx_highbd_d45_predictor_16x16_c, 16, 10),
    896         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_neon,
    897                              &vpx_highbd_d45_predictor_32x32_c, 32, 10),
    898         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_neon,
    899                              &vpx_highbd_d135_predictor_4x4_c, 4, 10),
    900         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_neon,
    901                              &vpx_highbd_d135_predictor_8x8_c, 8, 10),
    902         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_neon,
    903                              &vpx_highbd_d135_predictor_16x16_c, 16, 10),
    904         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_neon,
    905                              &vpx_highbd_d135_predictor_32x32_c, 32, 10),
    906         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_neon,
    907                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 10),
    908         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_neon,
    909                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 10),
    910         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_neon,
    911                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 10),
    912         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_neon,
    913                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 10),
    914         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_neon,
    915                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 10),
    916         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_neon,
    917                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 10),
    918         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_neon,
    919                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 10),
    920         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_neon,
    921                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 10),
    922         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_neon,
    923                              &vpx_highbd_dc_predictor_4x4_c, 4, 10),
    924         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_neon,
    925                              &vpx_highbd_dc_predictor_8x8_c, 8, 10),
    926         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_neon,
    927                              &vpx_highbd_dc_predictor_16x16_c, 16, 10),
    928         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_neon,
    929                              &vpx_highbd_dc_predictor_32x32_c, 32, 10),
    930         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_neon,
    931                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 10),
    932         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_neon,
    933                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 10),
    934         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_neon,
    935                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 10),
    936         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_neon,
    937                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 10),
    938         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_neon,
    939                              &vpx_highbd_h_predictor_4x4_c, 4, 10),
    940         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_neon,
    941                              &vpx_highbd_h_predictor_8x8_c, 8, 10),
    942         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_neon,
    943                              &vpx_highbd_h_predictor_16x16_c, 16, 10),
    944         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_neon,
    945                              &vpx_highbd_h_predictor_32x32_c, 32, 10),
    946         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_neon,
    947                              &vpx_highbd_tm_predictor_4x4_c, 4, 10),
    948         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_neon,
    949                              &vpx_highbd_tm_predictor_8x8_c, 8, 10),
    950         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_neon,
    951                              &vpx_highbd_tm_predictor_16x16_c, 16, 10),
    952         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_neon,
    953                              &vpx_highbd_tm_predictor_32x32_c, 32, 10),
    954         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_neon,
    955                              &vpx_highbd_v_predictor_4x4_c, 4, 10),
    956         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_neon,
    957                              &vpx_highbd_v_predictor_8x8_c, 8, 10),
    958         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_neon,
    959                              &vpx_highbd_v_predictor_16x16_c, 16, 10),
    960         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_neon,
    961                              &vpx_highbd_v_predictor_32x32_c, 32, 10)));
    962 
    963 INSTANTIATE_TEST_CASE_P(
    964     NEON_TO_C_12, VP9HighbdIntraPredTest,
    965     ::testing::Values(
    966         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_neon,
    967                              &vpx_highbd_d45_predictor_4x4_c, 4, 12),
    968         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_neon,
    969                              &vpx_highbd_d45_predictor_8x8_c, 8, 12),
    970         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_neon,
    971                              &vpx_highbd_d45_predictor_16x16_c, 16, 12),
    972         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_neon,
    973                              &vpx_highbd_d45_predictor_32x32_c, 32, 12),
    974         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_neon,
    975                              &vpx_highbd_d135_predictor_4x4_c, 4, 12),
    976         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_neon,
    977                              &vpx_highbd_d135_predictor_8x8_c, 8, 12),
    978         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_neon,
    979                              &vpx_highbd_d135_predictor_16x16_c, 16, 12),
    980         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_neon,
    981                              &vpx_highbd_d135_predictor_32x32_c, 32, 12),
    982         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_neon,
    983                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 12),
    984         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_neon,
    985                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 12),
    986         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_neon,
    987                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 12),
    988         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_neon,
    989                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 12),
    990         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_neon,
    991                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 12),
    992         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_neon,
    993                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 12),
    994         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_neon,
    995                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 12),
    996         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_neon,
    997                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 12),
    998         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_neon,
    999                              &vpx_highbd_dc_predictor_4x4_c, 4, 12),
   1000         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_neon,
   1001                              &vpx_highbd_dc_predictor_8x8_c, 8, 12),
   1002         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_neon,
   1003                              &vpx_highbd_dc_predictor_16x16_c, 16, 12),
   1004         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_neon,
   1005                              &vpx_highbd_dc_predictor_32x32_c, 32, 12),
   1006         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_neon,
   1007                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 12),
   1008         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_neon,
   1009                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 12),
   1010         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_neon,
   1011                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 12),
   1012         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_neon,
   1013                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 12),
   1014         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_neon,
   1015                              &vpx_highbd_h_predictor_4x4_c, 4, 12),
   1016         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_neon,
   1017                              &vpx_highbd_h_predictor_8x8_c, 8, 12),
   1018         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_neon,
   1019                              &vpx_highbd_h_predictor_16x16_c, 16, 12),
   1020         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_neon,
   1021                              &vpx_highbd_h_predictor_32x32_c, 32, 12),
   1022         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_neon,
   1023                              &vpx_highbd_tm_predictor_4x4_c, 4, 12),
   1024         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_neon,
   1025                              &vpx_highbd_tm_predictor_8x8_c, 8, 12),
   1026         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_neon,
   1027                              &vpx_highbd_tm_predictor_16x16_c, 16, 12),
   1028         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_neon,
   1029                              &vpx_highbd_tm_predictor_32x32_c, 32, 12),
   1030         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_neon,
   1031                              &vpx_highbd_v_predictor_4x4_c, 4, 12),
   1032         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_neon,
   1033                              &vpx_highbd_v_predictor_8x8_c, 8, 12),
   1034         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_neon,
   1035                              &vpx_highbd_v_predictor_16x16_c, 16, 12),
   1036         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_neon,
   1037                              &vpx_highbd_v_predictor_32x32_c, 32, 12)));
   1038 #endif  // HAVE_NEON
   1039 
   1040 #endif  // CONFIG_VP9_HIGHBITDEPTH
   1041 }  // namespace
   1042