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