xref: /aosp_15_r20/external/libvpx/test/vp9_intrapred_test.cc (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
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 "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 {
IntraPredParam__anon5fd91a740111::IntraPredParam35   IntraPredParam(IntraPredFunc pred = nullptr, IntraPredFunc ref = nullptr,
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:
RunTest(Pixel * left_col,Pixel * above_data,Pixel * dst,Pixel * ref_dst)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       // TODO(webm:1797): Some of the optimised predictor implementations rely
59       // on the trailing half of the above_row_ being a copy of the final
60       // element, however relying on this in some cases can cause the MD5 tests
61       // to fail. We have fixed all of these cases for Neon, so fill the whole
62       // of above_row_ randomly.
63 #if HAVE_NEON
64       // Fill edges with random data, try first with saturated values.
65       for (int x = -1; x < 2 * block_size; x++) {
66         if (i == 0) {
67           above_row_[x] = mask_;
68         } else {
69           above_row_[x] = rnd.Rand16() & mask_;
70         }
71       }
72 #else
73       // Fill edges with random data, try first with saturated values.
74       for (int x = -1; x < block_size; x++) {
75         if (i == 0) {
76           above_row_[x] = mask_;
77         } else {
78           above_row_[x] = rnd.Rand16() & mask_;
79         }
80       }
81       for (int x = block_size; x < 2 * block_size; x++) {
82         above_row_[x] = above_row_[block_size - 1];
83       }
84 #endif
85       for (int y = 0; y < block_size; y++) {
86         if (i == 0) {
87           left_col_[y] = mask_;
88         } else {
89           left_col_[y] = rnd.Rand16() & mask_;
90         }
91       }
92       Predict();
93       CheckPrediction(i, &error_count);
94     }
95     ASSERT_EQ(0, error_count);
96   }
97 
98  protected:
SetUp()99   void SetUp() override {
100     params_ = this->GetParam();
101     stride_ = params_.block_size * 3;
102     mask_ = (1 << params_.bit_depth) - 1;
103   }
104 
105   void Predict();
106 
CheckPrediction(int test_case_number,int * error_count) const107   void CheckPrediction(int test_case_number, int *error_count) const {
108     // For each pixel ensure that the calculated value is the same as reference.
109     const int block_size = params_.block_size;
110     for (int y = 0; y < block_size; y++) {
111       for (int x = 0; x < block_size; x++) {
112         *error_count += ref_dst_[x + y * stride_] != dst_[x + y * stride_];
113         if (*error_count == 1) {
114           ASSERT_EQ(ref_dst_[x + y * stride_], dst_[x + y * stride_])
115               << " Failed on Test Case Number " << test_case_number;
116         }
117       }
118     }
119   }
120 
121   Pixel *above_row_;
122   Pixel *left_col_;
123   Pixel *dst_;
124   Pixel *ref_dst_;
125   ptrdiff_t stride_;
126   int mask_;
127 
128   PredParam params_;
129 };
130 
131 template <>
Predict()132 void IntraPredTest<uint8_t, IntraPredParam>::Predict() {
133   params_.ref_fn(ref_dst_, stride_, above_row_, left_col_);
134   ASM_REGISTER_STATE_CHECK(
135       params_.pred_fn(dst_, stride_, above_row_, left_col_));
136 }
137 
138 typedef IntraPredTest<uint8_t, IntraPredParam> VP9IntraPredTest;
139 
TEST_P(VP9IntraPredTest,IntraPredTests)140 TEST_P(VP9IntraPredTest, IntraPredTests) {
141   // max block size is 32
142   DECLARE_ALIGNED(16, uint8_t, left_col[2 * 32]);
143   DECLARE_ALIGNED(16, uint8_t, above_data[2 * 32 + 32]);
144   DECLARE_ALIGNED(16, uint8_t, dst[3 * 32 * 32]);
145   DECLARE_ALIGNED(16, uint8_t, ref_dst[3 * 32 * 32]);
146   RunTest(left_col, above_data, dst, ref_dst);
147 }
148 
149 // Instantiate a token test to avoid -Wuninitialized warnings when none of the
150 // other tests are enabled.
151 INSTANTIATE_TEST_SUITE_P(
152     C, VP9IntraPredTest,
153     ::testing::Values(IntraPredParam(&vpx_d45_predictor_4x4_c,
154                                      &vpx_d45_predictor_4x4_c, 4, 8)));
155 #if HAVE_SSE2
156 INSTANTIATE_TEST_SUITE_P(
157     SSE2, VP9IntraPredTest,
158     ::testing::Values(
159         IntraPredParam(&vpx_d45_predictor_4x4_sse2, &vpx_d45_predictor_4x4_c, 4,
160                        8),
161         IntraPredParam(&vpx_d45_predictor_8x8_sse2, &vpx_d45_predictor_8x8_c, 8,
162                        8),
163         IntraPredParam(&vpx_d207_predictor_4x4_sse2, &vpx_d207_predictor_4x4_c,
164                        4, 8),
165         IntraPredParam(&vpx_dc_128_predictor_4x4_sse2,
166                        &vpx_dc_128_predictor_4x4_c, 4, 8),
167         IntraPredParam(&vpx_dc_128_predictor_8x8_sse2,
168                        &vpx_dc_128_predictor_8x8_c, 8, 8),
169         IntraPredParam(&vpx_dc_128_predictor_16x16_sse2,
170                        &vpx_dc_128_predictor_16x16_c, 16, 8),
171         IntraPredParam(&vpx_dc_128_predictor_32x32_sse2,
172                        &vpx_dc_128_predictor_32x32_c, 32, 8),
173         IntraPredParam(&vpx_dc_left_predictor_4x4_sse2,
174                        &vpx_dc_left_predictor_4x4_c, 4, 8),
175         IntraPredParam(&vpx_dc_left_predictor_8x8_sse2,
176                        &vpx_dc_left_predictor_8x8_c, 8, 8),
177         IntraPredParam(&vpx_dc_left_predictor_16x16_sse2,
178                        &vpx_dc_left_predictor_16x16_c, 16, 8),
179         IntraPredParam(&vpx_dc_left_predictor_32x32_sse2,
180                        &vpx_dc_left_predictor_32x32_c, 32, 8),
181         IntraPredParam(&vpx_dc_predictor_4x4_sse2, &vpx_dc_predictor_4x4_c, 4,
182                        8),
183         IntraPredParam(&vpx_dc_predictor_8x8_sse2, &vpx_dc_predictor_8x8_c, 8,
184                        8),
185         IntraPredParam(&vpx_dc_predictor_16x16_sse2, &vpx_dc_predictor_16x16_c,
186                        16, 8),
187         IntraPredParam(&vpx_dc_predictor_32x32_sse2, &vpx_dc_predictor_32x32_c,
188                        32, 8),
189         IntraPredParam(&vpx_dc_top_predictor_4x4_sse2,
190                        &vpx_dc_top_predictor_4x4_c, 4, 8),
191         IntraPredParam(&vpx_dc_top_predictor_8x8_sse2,
192                        &vpx_dc_top_predictor_8x8_c, 8, 8),
193         IntraPredParam(&vpx_dc_top_predictor_16x16_sse2,
194                        &vpx_dc_top_predictor_16x16_c, 16, 8),
195         IntraPredParam(&vpx_dc_top_predictor_32x32_sse2,
196                        &vpx_dc_top_predictor_32x32_c, 32, 8),
197         IntraPredParam(&vpx_h_predictor_4x4_sse2, &vpx_h_predictor_4x4_c, 4, 8),
198         IntraPredParam(&vpx_h_predictor_8x8_sse2, &vpx_h_predictor_8x8_c, 8, 8),
199         IntraPredParam(&vpx_h_predictor_16x16_sse2, &vpx_h_predictor_16x16_c,
200                        16, 8),
201         IntraPredParam(&vpx_h_predictor_32x32_sse2, &vpx_h_predictor_32x32_c,
202                        32, 8),
203         IntraPredParam(&vpx_tm_predictor_4x4_sse2, &vpx_tm_predictor_4x4_c, 4,
204                        8),
205         IntraPredParam(&vpx_tm_predictor_8x8_sse2, &vpx_tm_predictor_8x8_c, 8,
206                        8),
207         IntraPredParam(&vpx_tm_predictor_16x16_sse2, &vpx_tm_predictor_16x16_c,
208                        16, 8),
209         IntraPredParam(&vpx_tm_predictor_32x32_sse2, &vpx_tm_predictor_32x32_c,
210                        32, 8),
211         IntraPredParam(&vpx_v_predictor_4x4_sse2, &vpx_v_predictor_4x4_c, 4, 8),
212         IntraPredParam(&vpx_v_predictor_8x8_sse2, &vpx_v_predictor_8x8_c, 8, 8),
213         IntraPredParam(&vpx_v_predictor_16x16_sse2, &vpx_v_predictor_16x16_c,
214                        16, 8),
215         IntraPredParam(&vpx_v_predictor_32x32_sse2, &vpx_v_predictor_32x32_c,
216                        32, 8)));
217 #endif  // HAVE_SSE2
218 
219 #if HAVE_SSSE3
220 INSTANTIATE_TEST_SUITE_P(
221     SSSE3, VP9IntraPredTest,
222     ::testing::Values(IntraPredParam(&vpx_d45_predictor_16x16_ssse3,
223                                      &vpx_d45_predictor_16x16_c, 16, 8),
224                       IntraPredParam(&vpx_d45_predictor_32x32_ssse3,
225                                      &vpx_d45_predictor_32x32_c, 32, 8),
226                       IntraPredParam(&vpx_d63_predictor_4x4_ssse3,
227                                      &vpx_d63_predictor_4x4_c, 4, 8),
228                       IntraPredParam(&vpx_d63_predictor_8x8_ssse3,
229                                      &vpx_d63_predictor_8x8_c, 8, 8),
230                       IntraPredParam(&vpx_d63_predictor_16x16_ssse3,
231                                      &vpx_d63_predictor_16x16_c, 16, 8),
232                       IntraPredParam(&vpx_d63_predictor_32x32_ssse3,
233                                      &vpx_d63_predictor_32x32_c, 32, 8),
234                       IntraPredParam(&vpx_d153_predictor_4x4_ssse3,
235                                      &vpx_d153_predictor_4x4_c, 4, 8),
236                       IntraPredParam(&vpx_d153_predictor_8x8_ssse3,
237                                      &vpx_d153_predictor_8x8_c, 8, 8),
238                       IntraPredParam(&vpx_d153_predictor_16x16_ssse3,
239                                      &vpx_d153_predictor_16x16_c, 16, 8),
240                       IntraPredParam(&vpx_d153_predictor_32x32_ssse3,
241                                      &vpx_d153_predictor_32x32_c, 32, 8),
242                       IntraPredParam(&vpx_d207_predictor_8x8_ssse3,
243                                      &vpx_d207_predictor_8x8_c, 8, 8),
244                       IntraPredParam(&vpx_d207_predictor_16x16_ssse3,
245                                      &vpx_d207_predictor_16x16_c, 16, 8),
246                       IntraPredParam(&vpx_d207_predictor_32x32_ssse3,
247                                      &vpx_d207_predictor_32x32_c, 32, 8)));
248 #endif  // HAVE_SSSE3
249 
250 #if HAVE_NEON
251 INSTANTIATE_TEST_SUITE_P(
252     NEON, VP9IntraPredTest,
253     ::testing::Values(
254         IntraPredParam(&vpx_d45_predictor_4x4_neon, &vpx_d45_predictor_4x4_c, 4,
255                        8),
256         IntraPredParam(&vpx_d45_predictor_8x8_neon, &vpx_d45_predictor_8x8_c, 8,
257                        8),
258         IntraPredParam(&vpx_d45_predictor_16x16_neon,
259                        &vpx_d45_predictor_16x16_c, 16, 8),
260         IntraPredParam(&vpx_d45_predictor_32x32_neon,
261                        &vpx_d45_predictor_32x32_c, 32, 8),
262         IntraPredParam(&vpx_d63_predictor_4x4_neon, &vpx_d63_predictor_4x4_c, 4,
263                        8),
264         IntraPredParam(&vpx_d63_predictor_8x8_neon, &vpx_d63_predictor_8x8_c, 8,
265                        8),
266         IntraPredParam(&vpx_d63_predictor_16x16_neon,
267                        &vpx_d63_predictor_16x16_c, 16, 8),
268         IntraPredParam(&vpx_d63_predictor_32x32_neon,
269                        &vpx_d63_predictor_32x32_c, 32, 8),
270         IntraPredParam(&vpx_d117_predictor_4x4_neon, &vpx_d117_predictor_4x4_c,
271                        4, 8),
272         IntraPredParam(&vpx_d117_predictor_8x8_neon, &vpx_d117_predictor_8x8_c,
273                        8, 8),
274         IntraPredParam(&vpx_d117_predictor_16x16_neon,
275                        &vpx_d117_predictor_16x16_c, 16, 8),
276         IntraPredParam(&vpx_d117_predictor_32x32_neon,
277                        &vpx_d117_predictor_32x32_c, 32, 8),
278         IntraPredParam(&vpx_d135_predictor_4x4_neon, &vpx_d135_predictor_4x4_c,
279                        4, 8),
280         IntraPredParam(&vpx_d135_predictor_8x8_neon, &vpx_d135_predictor_8x8_c,
281                        8, 8),
282         IntraPredParam(&vpx_d135_predictor_16x16_neon,
283                        &vpx_d135_predictor_16x16_c, 16, 8),
284         IntraPredParam(&vpx_d135_predictor_32x32_neon,
285                        &vpx_d135_predictor_32x32_c, 32, 8),
286         IntraPredParam(&vpx_d153_predictor_4x4_neon, &vpx_d153_predictor_4x4_c,
287                        4, 8),
288         IntraPredParam(&vpx_d153_predictor_8x8_neon, &vpx_d153_predictor_8x8_c,
289                        8, 8),
290         IntraPredParam(&vpx_d153_predictor_16x16_neon,
291                        &vpx_d153_predictor_16x16_c, 16, 8),
292         IntraPredParam(&vpx_d153_predictor_32x32_neon,
293                        &vpx_d153_predictor_32x32_c, 32, 8),
294         IntraPredParam(&vpx_d207_predictor_4x4_neon, &vpx_d207_predictor_4x4_c,
295                        4, 8),
296         IntraPredParam(&vpx_d207_predictor_8x8_neon, &vpx_d207_predictor_8x8_c,
297                        8, 8),
298         IntraPredParam(&vpx_d207_predictor_16x16_neon,
299                        &vpx_d207_predictor_16x16_c, 16, 8),
300         IntraPredParam(&vpx_d207_predictor_32x32_neon,
301                        &vpx_d207_predictor_32x32_c, 32, 8),
302         IntraPredParam(&vpx_dc_128_predictor_4x4_neon,
303                        &vpx_dc_128_predictor_4x4_c, 4, 8),
304         IntraPredParam(&vpx_dc_128_predictor_8x8_neon,
305                        &vpx_dc_128_predictor_8x8_c, 8, 8),
306         IntraPredParam(&vpx_dc_128_predictor_16x16_neon,
307                        &vpx_dc_128_predictor_16x16_c, 16, 8),
308         IntraPredParam(&vpx_dc_128_predictor_32x32_neon,
309                        &vpx_dc_128_predictor_32x32_c, 32, 8),
310         IntraPredParam(&vpx_dc_left_predictor_4x4_neon,
311                        &vpx_dc_left_predictor_4x4_c, 4, 8),
312         IntraPredParam(&vpx_dc_left_predictor_8x8_neon,
313                        &vpx_dc_left_predictor_8x8_c, 8, 8),
314         IntraPredParam(&vpx_dc_left_predictor_16x16_neon,
315                        &vpx_dc_left_predictor_16x16_c, 16, 8),
316         IntraPredParam(&vpx_dc_left_predictor_32x32_neon,
317                        &vpx_dc_left_predictor_32x32_c, 32, 8),
318         IntraPredParam(&vpx_dc_predictor_4x4_neon, &vpx_dc_predictor_4x4_c, 4,
319                        8),
320         IntraPredParam(&vpx_dc_predictor_8x8_neon, &vpx_dc_predictor_8x8_c, 8,
321                        8),
322         IntraPredParam(&vpx_dc_predictor_16x16_neon, &vpx_dc_predictor_16x16_c,
323                        16, 8),
324         IntraPredParam(&vpx_dc_predictor_32x32_neon, &vpx_dc_predictor_32x32_c,
325                        32, 8),
326         IntraPredParam(&vpx_dc_top_predictor_4x4_neon,
327                        &vpx_dc_top_predictor_4x4_c, 4, 8),
328         IntraPredParam(&vpx_dc_top_predictor_8x8_neon,
329                        &vpx_dc_top_predictor_8x8_c, 8, 8),
330         IntraPredParam(&vpx_dc_top_predictor_16x16_neon,
331                        &vpx_dc_top_predictor_16x16_c, 16, 8),
332         IntraPredParam(&vpx_dc_top_predictor_32x32_neon,
333                        &vpx_dc_top_predictor_32x32_c, 32, 8),
334         IntraPredParam(&vpx_h_predictor_4x4_neon, &vpx_h_predictor_4x4_c, 4, 8),
335         IntraPredParam(&vpx_h_predictor_8x8_neon, &vpx_h_predictor_8x8_c, 8, 8),
336         IntraPredParam(&vpx_h_predictor_16x16_neon, &vpx_h_predictor_16x16_c,
337                        16, 8),
338         IntraPredParam(&vpx_h_predictor_32x32_neon, &vpx_h_predictor_32x32_c,
339                        32, 8),
340         IntraPredParam(&vpx_tm_predictor_4x4_neon, &vpx_tm_predictor_4x4_c, 4,
341                        8),
342         IntraPredParam(&vpx_tm_predictor_8x8_neon, &vpx_tm_predictor_8x8_c, 8,
343                        8),
344         IntraPredParam(&vpx_tm_predictor_16x16_neon, &vpx_tm_predictor_16x16_c,
345                        16, 8),
346         IntraPredParam(&vpx_tm_predictor_32x32_neon, &vpx_tm_predictor_32x32_c,
347                        32, 8),
348         IntraPredParam(&vpx_v_predictor_4x4_neon, &vpx_v_predictor_4x4_c, 4, 8),
349         IntraPredParam(&vpx_v_predictor_8x8_neon, &vpx_v_predictor_8x8_c, 8, 8),
350         IntraPredParam(&vpx_v_predictor_16x16_neon, &vpx_v_predictor_16x16_c,
351                        16, 8),
352         IntraPredParam(&vpx_v_predictor_32x32_neon, &vpx_v_predictor_32x32_c,
353                        32, 8)));
354 #endif  // HAVE_NEON
355 
356 #if HAVE_DSPR2
357 INSTANTIATE_TEST_SUITE_P(
358     DSPR2, VP9IntraPredTest,
359     ::testing::Values(IntraPredParam(&vpx_dc_predictor_4x4_dspr2,
360                                      &vpx_dc_predictor_4x4_c, 4, 8),
361                       IntraPredParam(&vpx_dc_predictor_8x8_dspr2,
362                                      &vpx_dc_predictor_8x8_c, 8, 8),
363                       IntraPredParam(&vpx_dc_predictor_16x16_dspr2,
364                                      &vpx_dc_predictor_16x16_c, 16, 8),
365                       IntraPredParam(&vpx_h_predictor_4x4_dspr2,
366                                      &vpx_h_predictor_4x4_c, 4, 8),
367                       IntraPredParam(&vpx_h_predictor_8x8_dspr2,
368                                      &vpx_h_predictor_8x8_c, 8, 8),
369                       IntraPredParam(&vpx_h_predictor_16x16_dspr2,
370                                      &vpx_h_predictor_16x16_c, 16, 8),
371                       IntraPredParam(&vpx_tm_predictor_4x4_dspr2,
372                                      &vpx_tm_predictor_4x4_c, 4, 8),
373                       IntraPredParam(&vpx_tm_predictor_8x8_dspr2,
374                                      &vpx_tm_predictor_8x8_c, 8, 8)));
375 #endif  // HAVE_DSPR2
376 
377 #if HAVE_MSA
378 INSTANTIATE_TEST_SUITE_P(
379     MSA, VP9IntraPredTest,
380     ::testing::Values(
381         IntraPredParam(&vpx_dc_128_predictor_4x4_msa,
382                        &vpx_dc_128_predictor_4x4_c, 4, 8),
383         IntraPredParam(&vpx_dc_128_predictor_8x8_msa,
384                        &vpx_dc_128_predictor_8x8_c, 8, 8),
385         IntraPredParam(&vpx_dc_128_predictor_16x16_msa,
386                        &vpx_dc_128_predictor_16x16_c, 16, 8),
387         IntraPredParam(&vpx_dc_128_predictor_32x32_msa,
388                        &vpx_dc_128_predictor_32x32_c, 32, 8),
389         IntraPredParam(&vpx_dc_left_predictor_4x4_msa,
390                        &vpx_dc_left_predictor_4x4_c, 4, 8),
391         IntraPredParam(&vpx_dc_left_predictor_8x8_msa,
392                        &vpx_dc_left_predictor_8x8_c, 8, 8),
393         IntraPredParam(&vpx_dc_left_predictor_16x16_msa,
394                        &vpx_dc_left_predictor_16x16_c, 16, 8),
395         IntraPredParam(&vpx_dc_left_predictor_32x32_msa,
396                        &vpx_dc_left_predictor_32x32_c, 32, 8),
397         IntraPredParam(&vpx_dc_predictor_4x4_msa, &vpx_dc_predictor_4x4_c, 4,
398                        8),
399         IntraPredParam(&vpx_dc_predictor_8x8_msa, &vpx_dc_predictor_8x8_c, 8,
400                        8),
401         IntraPredParam(&vpx_dc_predictor_16x16_msa, &vpx_dc_predictor_16x16_c,
402                        16, 8),
403         IntraPredParam(&vpx_dc_predictor_32x32_msa, &vpx_dc_predictor_32x32_c,
404                        32, 8),
405         IntraPredParam(&vpx_dc_top_predictor_4x4_msa,
406                        &vpx_dc_top_predictor_4x4_c, 4, 8),
407         IntraPredParam(&vpx_dc_top_predictor_8x8_msa,
408                        &vpx_dc_top_predictor_8x8_c, 8, 8),
409         IntraPredParam(&vpx_dc_top_predictor_16x16_msa,
410                        &vpx_dc_top_predictor_16x16_c, 16, 8),
411         IntraPredParam(&vpx_dc_top_predictor_32x32_msa,
412                        &vpx_dc_top_predictor_32x32_c, 32, 8),
413         IntraPredParam(&vpx_h_predictor_4x4_msa, &vpx_h_predictor_4x4_c, 4, 8),
414         IntraPredParam(&vpx_h_predictor_8x8_msa, &vpx_h_predictor_8x8_c, 8, 8),
415         IntraPredParam(&vpx_h_predictor_16x16_msa, &vpx_h_predictor_16x16_c, 16,
416                        8),
417         IntraPredParam(&vpx_h_predictor_32x32_msa, &vpx_h_predictor_32x32_c, 32,
418                        8),
419         IntraPredParam(&vpx_tm_predictor_4x4_msa, &vpx_tm_predictor_4x4_c, 4,
420                        8),
421         IntraPredParam(&vpx_tm_predictor_8x8_msa, &vpx_tm_predictor_8x8_c, 8,
422                        8),
423         IntraPredParam(&vpx_tm_predictor_16x16_msa, &vpx_tm_predictor_16x16_c,
424                        16, 8),
425         IntraPredParam(&vpx_tm_predictor_32x32_msa, &vpx_tm_predictor_32x32_c,
426                        32, 8),
427         IntraPredParam(&vpx_v_predictor_4x4_msa, &vpx_v_predictor_4x4_c, 4, 8),
428         IntraPredParam(&vpx_v_predictor_8x8_msa, &vpx_v_predictor_8x8_c, 8, 8),
429         IntraPredParam(&vpx_v_predictor_16x16_msa, &vpx_v_predictor_16x16_c, 16,
430                        8),
431         IntraPredParam(&vpx_v_predictor_32x32_msa, &vpx_v_predictor_32x32_c, 32,
432                        8)));
433 #endif  // HAVE_MSA
434 
435 // TODO(crbug.com/webm/1522): Fix test failures.
436 #if 0
437         IntraPredParam(&vpx_d45_predictor_8x8_vsx, &vpx_d45_predictor_8x8_c, 8,
438                        8),
439         IntraPredParam(&vpx_d63_predictor_8x8_vsx, &vpx_d63_predictor_8x8_c, 8,
440                        8),
441         IntraPredParam(&vpx_dc_predictor_8x8_vsx, &vpx_dc_predictor_8x8_c, 8,
442                        8),
443         IntraPredParam(&vpx_h_predictor_4x4_vsx, &vpx_h_predictor_4x4_c, 4, 8),
444         IntraPredParam(&vpx_h_predictor_8x8_vsx, &vpx_h_predictor_8x8_c, 8, 8),
445         IntraPredParam(&vpx_tm_predictor_4x4_vsx, &vpx_tm_predictor_4x4_c, 4,
446                        8),
447         IntraPredParam(&vpx_tm_predictor_8x8_vsx, &vpx_tm_predictor_8x8_c, 8,
448                        8),
449 #endif
450 
451 #if HAVE_VSX
452 INSTANTIATE_TEST_SUITE_P(
453     VSX, VP9IntraPredTest,
454     ::testing::Values(IntraPredParam(&vpx_d45_predictor_16x16_vsx,
455                                      &vpx_d45_predictor_16x16_c, 16, 8),
456                       IntraPredParam(&vpx_d45_predictor_32x32_vsx,
457                                      &vpx_d45_predictor_32x32_c, 32, 8),
458                       IntraPredParam(&vpx_d63_predictor_16x16_vsx,
459                                      &vpx_d63_predictor_16x16_c, 16, 8),
460                       IntraPredParam(&vpx_d63_predictor_32x32_vsx,
461                                      &vpx_d63_predictor_32x32_c, 32, 8),
462                       IntraPredParam(&vpx_dc_128_predictor_16x16_vsx,
463                                      &vpx_dc_128_predictor_16x16_c, 16, 8),
464                       IntraPredParam(&vpx_dc_128_predictor_32x32_vsx,
465                                      &vpx_dc_128_predictor_32x32_c, 32, 8),
466                       IntraPredParam(&vpx_dc_left_predictor_16x16_vsx,
467                                      &vpx_dc_left_predictor_16x16_c, 16, 8),
468                       IntraPredParam(&vpx_dc_left_predictor_32x32_vsx,
469                                      &vpx_dc_left_predictor_32x32_c, 32, 8),
470                       IntraPredParam(&vpx_dc_predictor_16x16_vsx,
471                                      &vpx_dc_predictor_16x16_c, 16, 8),
472                       IntraPredParam(&vpx_dc_predictor_32x32_vsx,
473                                      &vpx_dc_predictor_32x32_c, 32, 8),
474                       IntraPredParam(&vpx_dc_top_predictor_16x16_vsx,
475                                      &vpx_dc_top_predictor_16x16_c, 16, 8),
476                       IntraPredParam(&vpx_dc_top_predictor_32x32_vsx,
477                                      &vpx_dc_top_predictor_32x32_c, 32, 8),
478                       IntraPredParam(&vpx_h_predictor_16x16_vsx,
479                                      &vpx_h_predictor_16x16_c, 16, 8),
480                       IntraPredParam(&vpx_h_predictor_32x32_vsx,
481                                      &vpx_h_predictor_32x32_c, 32, 8),
482                       IntraPredParam(&vpx_tm_predictor_16x16_vsx,
483                                      &vpx_tm_predictor_16x16_c, 16, 8),
484                       IntraPredParam(&vpx_tm_predictor_32x32_vsx,
485                                      &vpx_tm_predictor_32x32_c, 32, 8),
486                       IntraPredParam(&vpx_v_predictor_16x16_vsx,
487                                      &vpx_v_predictor_16x16_c, 16, 8),
488                       IntraPredParam(&vpx_v_predictor_32x32_vsx,
489                                      &vpx_v_predictor_32x32_c, 32, 8)));
490 #endif  // HAVE_VSX
491 
492 #if HAVE_LSX
493 INSTANTIATE_TEST_SUITE_P(
494     LSX, VP9IntraPredTest,
495     ::testing::Values(IntraPredParam(&vpx_dc_predictor_8x8_lsx,
496                                      &vpx_dc_predictor_8x8_c, 8, 8),
497                       IntraPredParam(&vpx_dc_predictor_16x16_lsx,
498                                      &vpx_dc_predictor_16x16_c, 16, 8)));
499 #endif  // HAVE_LSX
500 
501 #if CONFIG_VP9_HIGHBITDEPTH
502 typedef void (*HighbdIntraPred)(uint16_t *dst, ptrdiff_t stride,
503                                 const uint16_t *above, const uint16_t *left,
504                                 int bps);
505 struct HighbdIntraPredParam {
HighbdIntraPredParam__anon5fd91a740111::HighbdIntraPredParam506   HighbdIntraPredParam(HighbdIntraPred pred = nullptr,
507                        HighbdIntraPred ref = nullptr, int block_size_value = 0,
508                        int bit_depth_value = 0)
509       : pred_fn(pred), ref_fn(ref), block_size(block_size_value),
510         bit_depth(bit_depth_value) {}
511 
512   HighbdIntraPred pred_fn;
513   HighbdIntraPred ref_fn;
514   int block_size;
515   int bit_depth;
516 };
517 
518 #if HAVE_SSSE3 || HAVE_NEON || HAVE_SSE2
519 template <>
Predict()520 void IntraPredTest<uint16_t, HighbdIntraPredParam>::Predict() {
521   const int bit_depth = params_.bit_depth;
522   params_.ref_fn(ref_dst_, stride_, above_row_, left_col_, bit_depth);
523   ASM_REGISTER_STATE_CHECK(
524       params_.pred_fn(dst_, stride_, above_row_, left_col_, bit_depth));
525 }
526 
527 typedef IntraPredTest<uint16_t, HighbdIntraPredParam> VP9HighbdIntraPredTest;
528 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(VP9HighbdIntraPredTest);
529 
TEST_P(VP9HighbdIntraPredTest,HighbdIntraPredTests)530 TEST_P(VP9HighbdIntraPredTest, HighbdIntraPredTests) {
531   // max block size is 32
532   DECLARE_ALIGNED(16, uint16_t, left_col[2 * 32]);
533   DECLARE_ALIGNED(16, uint16_t, above_data[2 * 32 + 32]);
534   DECLARE_ALIGNED(16, uint16_t, dst[3 * 32 * 32]);
535   DECLARE_ALIGNED(16, uint16_t, ref_dst[3 * 32 * 32]);
536   RunTest(left_col, above_data, dst, ref_dst);
537 }
538 #endif
539 
540 #if HAVE_SSSE3
541 INSTANTIATE_TEST_SUITE_P(
542     SSSE3_TO_C_8, VP9HighbdIntraPredTest,
543     ::testing::Values(
544         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_ssse3,
545                              &vpx_highbd_d45_predictor_4x4_c, 4, 8),
546         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_ssse3,
547                              &vpx_highbd_d45_predictor_8x8_c, 8, 8),
548         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_ssse3,
549                              &vpx_highbd_d45_predictor_16x16_c, 16, 8),
550         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_ssse3,
551                              &vpx_highbd_d45_predictor_32x32_c, 32, 8),
552         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_ssse3,
553                              &vpx_highbd_d63_predictor_8x8_c, 8, 8),
554         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_ssse3,
555                              &vpx_highbd_d63_predictor_16x16_c, 16, 8),
556         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_c,
557                              &vpx_highbd_d63_predictor_32x32_ssse3, 32, 8),
558         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_ssse3,
559                              &vpx_highbd_d117_predictor_8x8_c, 8, 8),
560         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_ssse3,
561                              &vpx_highbd_d117_predictor_16x16_c, 16, 8),
562         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_c,
563                              &vpx_highbd_d117_predictor_32x32_ssse3, 32, 8),
564         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_ssse3,
565                              &vpx_highbd_d135_predictor_8x8_c, 8, 8),
566         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_ssse3,
567                              &vpx_highbd_d135_predictor_16x16_c, 16, 8),
568         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_ssse3,
569                              &vpx_highbd_d135_predictor_32x32_c, 32, 8),
570         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_ssse3,
571                              &vpx_highbd_d153_predictor_8x8_c, 8, 8),
572         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_ssse3,
573                              &vpx_highbd_d153_predictor_16x16_c, 16, 8),
574         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_ssse3,
575                              &vpx_highbd_d153_predictor_32x32_c, 32, 8),
576         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3,
577                              &vpx_highbd_d207_predictor_8x8_c, 8, 8),
578         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3,
579                              &vpx_highbd_d207_predictor_16x16_c, 16, 8),
580         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3,
581                              &vpx_highbd_d207_predictor_32x32_c, 32, 8)));
582 
583 INSTANTIATE_TEST_SUITE_P(
584     SSSE3_TO_C_10, VP9HighbdIntraPredTest,
585     ::testing::Values(
586         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_ssse3,
587                              &vpx_highbd_d45_predictor_4x4_c, 4, 10),
588         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_ssse3,
589                              &vpx_highbd_d45_predictor_8x8_c, 8, 10),
590         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_ssse3,
591                              &vpx_highbd_d45_predictor_16x16_c, 16, 10),
592         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_ssse3,
593                              &vpx_highbd_d45_predictor_32x32_c, 32, 10),
594         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_ssse3,
595                              &vpx_highbd_d63_predictor_8x8_c, 8, 10),
596         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_ssse3,
597                              &vpx_highbd_d63_predictor_16x16_c, 16, 10),
598         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_c,
599                              &vpx_highbd_d63_predictor_32x32_ssse3, 32, 10),
600         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_ssse3,
601                              &vpx_highbd_d117_predictor_8x8_c, 8, 10),
602         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_ssse3,
603                              &vpx_highbd_d117_predictor_16x16_c, 16, 10),
604         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_c,
605                              &vpx_highbd_d117_predictor_32x32_ssse3, 32, 10),
606         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_ssse3,
607                              &vpx_highbd_d135_predictor_8x8_c, 8, 10),
608         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_ssse3,
609                              &vpx_highbd_d135_predictor_16x16_c, 16, 10),
610         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_ssse3,
611                              &vpx_highbd_d135_predictor_32x32_c, 32, 10),
612         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_ssse3,
613                              &vpx_highbd_d153_predictor_8x8_c, 8, 10),
614         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_ssse3,
615                              &vpx_highbd_d153_predictor_16x16_c, 16, 10),
616         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_ssse3,
617                              &vpx_highbd_d153_predictor_32x32_c, 32, 10),
618         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3,
619                              &vpx_highbd_d207_predictor_8x8_c, 8, 10),
620         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3,
621                              &vpx_highbd_d207_predictor_16x16_c, 16, 10),
622         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3,
623                              &vpx_highbd_d207_predictor_32x32_c, 32, 10)));
624 
625 INSTANTIATE_TEST_SUITE_P(
626     SSSE3_TO_C_12, VP9HighbdIntraPredTest,
627     ::testing::Values(
628         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_ssse3,
629                              &vpx_highbd_d45_predictor_4x4_c, 4, 12),
630         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_ssse3,
631                              &vpx_highbd_d45_predictor_8x8_c, 8, 12),
632         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_ssse3,
633                              &vpx_highbd_d45_predictor_16x16_c, 16, 12),
634         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_ssse3,
635                              &vpx_highbd_d45_predictor_32x32_c, 32, 12),
636         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_ssse3,
637                              &vpx_highbd_d63_predictor_8x8_c, 8, 12),
638         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_ssse3,
639                              &vpx_highbd_d63_predictor_16x16_c, 16, 12),
640         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_c,
641                              &vpx_highbd_d63_predictor_32x32_ssse3, 32, 12),
642         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_ssse3,
643                              &vpx_highbd_d117_predictor_8x8_c, 8, 12),
644         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_ssse3,
645                              &vpx_highbd_d117_predictor_16x16_c, 16, 12),
646         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_c,
647                              &vpx_highbd_d117_predictor_32x32_ssse3, 32, 12),
648         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_ssse3,
649                              &vpx_highbd_d135_predictor_8x8_c, 8, 12),
650         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_ssse3,
651                              &vpx_highbd_d135_predictor_16x16_c, 16, 12),
652         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_ssse3,
653                              &vpx_highbd_d135_predictor_32x32_c, 32, 12),
654         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_ssse3,
655                              &vpx_highbd_d153_predictor_8x8_c, 8, 12),
656         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_ssse3,
657                              &vpx_highbd_d153_predictor_16x16_c, 16, 12),
658         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_ssse3,
659                              &vpx_highbd_d153_predictor_32x32_c, 32, 12),
660         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3,
661                              &vpx_highbd_d207_predictor_8x8_c, 8, 12),
662         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3,
663                              &vpx_highbd_d207_predictor_16x16_c, 16, 12),
664         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3,
665                              &vpx_highbd_d207_predictor_32x32_c, 32, 12)));
666 #endif  // HAVE_SSSE3
667 
668 #if HAVE_SSE2
669 INSTANTIATE_TEST_SUITE_P(
670     SSE2_TO_C_8, VP9HighbdIntraPredTest,
671     ::testing::Values(
672         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_sse2,
673                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 8),
674         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_sse2,
675                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 8),
676         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_sse2,
677                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 8),
678         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2,
679                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 8),
680         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_sse2,
681                              &vpx_highbd_d63_predictor_4x4_c, 4, 8),
682         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_sse2,
683                              &vpx_highbd_d117_predictor_4x4_c, 4, 8),
684         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_sse2,
685                              &vpx_highbd_d135_predictor_4x4_c, 4, 8),
686         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_sse2,
687                              &vpx_highbd_d153_predictor_4x4_c, 4, 8),
688         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2,
689                              &vpx_highbd_d207_predictor_4x4_c, 4, 8),
690         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2,
691                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 8),
692         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2,
693                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 8),
694         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_sse2,
695                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 8),
696         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_sse2,
697                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 8),
698         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_sse2,
699                              &vpx_highbd_dc_predictor_4x4_c, 4, 8),
700         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_sse2,
701                              &vpx_highbd_dc_predictor_8x8_c, 8, 8),
702         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_sse2,
703                              &vpx_highbd_dc_predictor_16x16_c, 16, 8),
704         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_sse2,
705                              &vpx_highbd_dc_predictor_32x32_c, 32, 8),
706         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_sse2,
707                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 8),
708         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_sse2,
709                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 8),
710         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_sse2,
711                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 8),
712         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_sse2,
713                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 8),
714         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_sse2,
715                              &vpx_highbd_tm_predictor_4x4_c, 4, 8),
716         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_sse2,
717                              &vpx_highbd_tm_predictor_8x8_c, 8, 8),
718         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_sse2,
719                              &vpx_highbd_tm_predictor_16x16_c, 16, 8),
720         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_sse2,
721                              &vpx_highbd_tm_predictor_32x32_c, 32, 8),
722         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_sse2,
723                              &vpx_highbd_h_predictor_4x4_c, 4, 8),
724         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_sse2,
725                              &vpx_highbd_h_predictor_8x8_c, 8, 8),
726         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_sse2,
727                              &vpx_highbd_h_predictor_16x16_c, 16, 8),
728         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_sse2,
729                              &vpx_highbd_h_predictor_32x32_c, 32, 8),
730         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_sse2,
731                              &vpx_highbd_v_predictor_4x4_c, 4, 8),
732         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_sse2,
733                              &vpx_highbd_v_predictor_8x8_c, 8, 8),
734         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_sse2,
735                              &vpx_highbd_v_predictor_16x16_c, 16, 8),
736         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_sse2,
737                              &vpx_highbd_v_predictor_32x32_c, 32, 8)));
738 
739 INSTANTIATE_TEST_SUITE_P(
740     SSE2_TO_C_10, VP9HighbdIntraPredTest,
741     ::testing::Values(
742         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_sse2,
743                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 10),
744         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_sse2,
745                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 10),
746         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_sse2,
747                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 10),
748         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2,
749                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 10),
750         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_sse2,
751                              &vpx_highbd_d63_predictor_4x4_c, 4, 10),
752         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_sse2,
753                              &vpx_highbd_d117_predictor_4x4_c, 4, 10),
754         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_sse2,
755                              &vpx_highbd_d135_predictor_4x4_c, 4, 10),
756         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_sse2,
757                              &vpx_highbd_d153_predictor_4x4_c, 4, 10),
758         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2,
759                              &vpx_highbd_d207_predictor_4x4_c, 4, 10),
760         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2,
761                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 10),
762         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2,
763                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 10),
764         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_sse2,
765                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 10),
766         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_sse2,
767                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 10),
768         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_sse2,
769                              &vpx_highbd_dc_predictor_4x4_c, 4, 10),
770         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_sse2,
771                              &vpx_highbd_dc_predictor_8x8_c, 8, 10),
772         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_sse2,
773                              &vpx_highbd_dc_predictor_16x16_c, 16, 10),
774         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_sse2,
775                              &vpx_highbd_dc_predictor_32x32_c, 32, 10),
776         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_sse2,
777                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 10),
778         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_sse2,
779                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 10),
780         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_sse2,
781                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 10),
782         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_sse2,
783                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 10),
784         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_sse2,
785                              &vpx_highbd_tm_predictor_4x4_c, 4, 10),
786         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_sse2,
787                              &vpx_highbd_tm_predictor_8x8_c, 8, 10),
788         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_sse2,
789                              &vpx_highbd_tm_predictor_16x16_c, 16, 10),
790         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_sse2,
791                              &vpx_highbd_tm_predictor_32x32_c, 32, 10),
792         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_sse2,
793                              &vpx_highbd_h_predictor_4x4_c, 4, 10),
794         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_sse2,
795                              &vpx_highbd_h_predictor_8x8_c, 8, 10),
796         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_sse2,
797                              &vpx_highbd_h_predictor_16x16_c, 16, 10),
798         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_sse2,
799                              &vpx_highbd_h_predictor_32x32_c, 32, 10),
800         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_sse2,
801                              &vpx_highbd_v_predictor_4x4_c, 4, 10),
802         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_sse2,
803                              &vpx_highbd_v_predictor_8x8_c, 8, 10),
804         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_sse2,
805                              &vpx_highbd_v_predictor_16x16_c, 16, 10),
806         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_sse2,
807                              &vpx_highbd_v_predictor_32x32_c, 32, 10)));
808 
809 INSTANTIATE_TEST_SUITE_P(
810     SSE2_TO_C_12, VP9HighbdIntraPredTest,
811     ::testing::Values(
812         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_sse2,
813                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 12),
814         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_sse2,
815                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 12),
816         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_sse2,
817                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 12),
818         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2,
819                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 12),
820         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_sse2,
821                              &vpx_highbd_d63_predictor_4x4_c, 4, 12),
822         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_sse2,
823                              &vpx_highbd_d117_predictor_4x4_c, 4, 12),
824         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_sse2,
825                              &vpx_highbd_d135_predictor_4x4_c, 4, 12),
826         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_sse2,
827                              &vpx_highbd_d153_predictor_4x4_c, 4, 12),
828         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2,
829                              &vpx_highbd_d207_predictor_4x4_c, 4, 12),
830         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2,
831                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 12),
832         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2,
833                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 12),
834         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_sse2,
835                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 12),
836         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_sse2,
837                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 12),
838         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_sse2,
839                              &vpx_highbd_dc_predictor_4x4_c, 4, 12),
840         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_sse2,
841                              &vpx_highbd_dc_predictor_8x8_c, 8, 12),
842         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_sse2,
843                              &vpx_highbd_dc_predictor_16x16_c, 16, 12),
844         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_sse2,
845                              &vpx_highbd_dc_predictor_32x32_c, 32, 12),
846         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_sse2,
847                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 12),
848         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_sse2,
849                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 12),
850         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_sse2,
851                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 12),
852         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_sse2,
853                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 12),
854         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_sse2,
855                              &vpx_highbd_tm_predictor_4x4_c, 4, 12),
856         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_sse2,
857                              &vpx_highbd_tm_predictor_8x8_c, 8, 12),
858         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_sse2,
859                              &vpx_highbd_tm_predictor_16x16_c, 16, 12),
860         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_sse2,
861                              &vpx_highbd_tm_predictor_32x32_c, 32, 12),
862         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_sse2,
863                              &vpx_highbd_h_predictor_4x4_c, 4, 12),
864         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_sse2,
865                              &vpx_highbd_h_predictor_8x8_c, 8, 12),
866         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_sse2,
867                              &vpx_highbd_h_predictor_16x16_c, 16, 12),
868         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_sse2,
869                              &vpx_highbd_h_predictor_32x32_c, 32, 12),
870         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_sse2,
871                              &vpx_highbd_v_predictor_4x4_c, 4, 12),
872         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_sse2,
873                              &vpx_highbd_v_predictor_8x8_c, 8, 12),
874         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_sse2,
875                              &vpx_highbd_v_predictor_16x16_c, 16, 12),
876         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_sse2,
877                              &vpx_highbd_v_predictor_32x32_c, 32, 12)));
878 #endif  // HAVE_SSE2
879 
880 #if HAVE_NEON
881 INSTANTIATE_TEST_SUITE_P(
882     NEON_TO_C_8, VP9HighbdIntraPredTest,
883     ::testing::Values(
884         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_neon,
885                              &vpx_highbd_d45_predictor_4x4_c, 4, 8),
886         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_neon,
887                              &vpx_highbd_d45_predictor_8x8_c, 8, 8),
888         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_neon,
889                              &vpx_highbd_d45_predictor_16x16_c, 16, 8),
890         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_neon,
891                              &vpx_highbd_d45_predictor_32x32_c, 32, 8),
892         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_neon,
893                              &vpx_highbd_d63_predictor_4x4_c, 4, 8),
894         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_neon,
895                              &vpx_highbd_d63_predictor_8x8_c, 8, 8),
896         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_neon,
897                              &vpx_highbd_d63_predictor_16x16_c, 16, 8),
898         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_neon,
899                              &vpx_highbd_d63_predictor_32x32_c, 32, 8),
900         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_neon,
901                              &vpx_highbd_d117_predictor_4x4_c, 4, 8),
902         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_neon,
903                              &vpx_highbd_d117_predictor_8x8_c, 8, 8),
904         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_neon,
905                              &vpx_highbd_d117_predictor_16x16_c, 16, 8),
906         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_neon,
907                              &vpx_highbd_d117_predictor_32x32_c, 32, 8),
908         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_neon,
909                              &vpx_highbd_d135_predictor_4x4_c, 4, 8),
910         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_neon,
911                              &vpx_highbd_d135_predictor_8x8_c, 8, 8),
912         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_neon,
913                              &vpx_highbd_d135_predictor_16x16_c, 16, 8),
914         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_neon,
915                              &vpx_highbd_d135_predictor_32x32_c, 32, 8),
916         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_neon,
917                              &vpx_highbd_d153_predictor_4x4_c, 4, 8),
918         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_neon,
919                              &vpx_highbd_d153_predictor_8x8_c, 8, 8),
920         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_neon,
921                              &vpx_highbd_d153_predictor_16x16_c, 16, 8),
922         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_neon,
923                              &vpx_highbd_d153_predictor_32x32_c, 32, 8),
924         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_neon,
925                              &vpx_highbd_d207_predictor_4x4_c, 4, 8),
926         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_neon,
927                              &vpx_highbd_d207_predictor_8x8_c, 8, 8),
928         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_neon,
929                              &vpx_highbd_d207_predictor_16x16_c, 16, 8),
930         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_neon,
931                              &vpx_highbd_d207_predictor_32x32_c, 32, 8),
932         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_neon,
933                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 8),
934         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_neon,
935                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 8),
936         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_neon,
937                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 8),
938         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_neon,
939                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 8),
940         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_neon,
941                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 8),
942         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_neon,
943                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 8),
944         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_neon,
945                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 8),
946         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_neon,
947                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 8),
948         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_neon,
949                              &vpx_highbd_dc_predictor_4x4_c, 4, 8),
950         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_neon,
951                              &vpx_highbd_dc_predictor_8x8_c, 8, 8),
952         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_neon,
953                              &vpx_highbd_dc_predictor_16x16_c, 16, 8),
954         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_neon,
955                              &vpx_highbd_dc_predictor_32x32_c, 32, 8),
956         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_neon,
957                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 8),
958         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_neon,
959                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 8),
960         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_neon,
961                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 8),
962         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_neon,
963                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 8),
964         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_neon,
965                              &vpx_highbd_h_predictor_4x4_c, 4, 8),
966         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_neon,
967                              &vpx_highbd_h_predictor_8x8_c, 8, 8),
968         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_neon,
969                              &vpx_highbd_h_predictor_16x16_c, 16, 8),
970         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_neon,
971                              &vpx_highbd_h_predictor_32x32_c, 32, 8),
972         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_neon,
973                              &vpx_highbd_tm_predictor_4x4_c, 4, 8),
974         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_neon,
975                              &vpx_highbd_tm_predictor_8x8_c, 8, 8),
976         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_neon,
977                              &vpx_highbd_tm_predictor_16x16_c, 16, 8),
978         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_neon,
979                              &vpx_highbd_tm_predictor_32x32_c, 32, 8),
980         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_neon,
981                              &vpx_highbd_v_predictor_4x4_c, 4, 8),
982         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_neon,
983                              &vpx_highbd_v_predictor_8x8_c, 8, 8),
984         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_neon,
985                              &vpx_highbd_v_predictor_16x16_c, 16, 8),
986         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_neon,
987                              &vpx_highbd_v_predictor_32x32_c, 32, 8)));
988 
989 INSTANTIATE_TEST_SUITE_P(
990     NEON_TO_C_10, VP9HighbdIntraPredTest,
991     ::testing::Values(
992         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_neon,
993                              &vpx_highbd_d45_predictor_4x4_c, 4, 10),
994         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_neon,
995                              &vpx_highbd_d45_predictor_8x8_c, 8, 10),
996         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_neon,
997                              &vpx_highbd_d45_predictor_16x16_c, 16, 10),
998         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_neon,
999                              &vpx_highbd_d45_predictor_32x32_c, 32, 10),
1000         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_neon,
1001                              &vpx_highbd_d63_predictor_4x4_c, 4, 10),
1002         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_neon,
1003                              &vpx_highbd_d63_predictor_8x8_c, 8, 10),
1004         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_neon,
1005                              &vpx_highbd_d63_predictor_16x16_c, 16, 10),
1006         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_neon,
1007                              &vpx_highbd_d63_predictor_32x32_c, 32, 10),
1008         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_neon,
1009                              &vpx_highbd_d117_predictor_4x4_c, 4, 10),
1010         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_neon,
1011                              &vpx_highbd_d117_predictor_8x8_c, 8, 10),
1012         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_neon,
1013                              &vpx_highbd_d117_predictor_16x16_c, 16, 10),
1014         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_neon,
1015                              &vpx_highbd_d117_predictor_32x32_c, 32, 10),
1016         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_neon,
1017                              &vpx_highbd_d135_predictor_4x4_c, 4, 10),
1018         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_neon,
1019                              &vpx_highbd_d135_predictor_8x8_c, 8, 10),
1020         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_neon,
1021                              &vpx_highbd_d135_predictor_16x16_c, 16, 10),
1022         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_neon,
1023                              &vpx_highbd_d135_predictor_32x32_c, 32, 10),
1024         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_neon,
1025                              &vpx_highbd_d153_predictor_4x4_c, 4, 10),
1026         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_neon,
1027                              &vpx_highbd_d153_predictor_8x8_c, 8, 10),
1028         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_neon,
1029                              &vpx_highbd_d153_predictor_16x16_c, 16, 10),
1030         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_neon,
1031                              &vpx_highbd_d153_predictor_32x32_c, 32, 10),
1032         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_neon,
1033                              &vpx_highbd_d207_predictor_4x4_c, 4, 10),
1034         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_neon,
1035                              &vpx_highbd_d207_predictor_8x8_c, 8, 10),
1036         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_neon,
1037                              &vpx_highbd_d207_predictor_16x16_c, 16, 10),
1038         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_neon,
1039                              &vpx_highbd_d207_predictor_32x32_c, 32, 10),
1040         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_neon,
1041                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 10),
1042         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_neon,
1043                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 10),
1044         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_neon,
1045                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 10),
1046         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_neon,
1047                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 10),
1048         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_neon,
1049                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 10),
1050         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_neon,
1051                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 10),
1052         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_neon,
1053                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 10),
1054         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_neon,
1055                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 10),
1056         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_neon,
1057                              &vpx_highbd_dc_predictor_4x4_c, 4, 10),
1058         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_neon,
1059                              &vpx_highbd_dc_predictor_8x8_c, 8, 10),
1060         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_neon,
1061                              &vpx_highbd_dc_predictor_16x16_c, 16, 10),
1062         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_neon,
1063                              &vpx_highbd_dc_predictor_32x32_c, 32, 10),
1064         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_neon,
1065                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 10),
1066         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_neon,
1067                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 10),
1068         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_neon,
1069                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 10),
1070         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_neon,
1071                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 10),
1072         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_neon,
1073                              &vpx_highbd_h_predictor_4x4_c, 4, 10),
1074         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_neon,
1075                              &vpx_highbd_h_predictor_8x8_c, 8, 10),
1076         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_neon,
1077                              &vpx_highbd_h_predictor_16x16_c, 16, 10),
1078         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_neon,
1079                              &vpx_highbd_h_predictor_32x32_c, 32, 10),
1080         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_neon,
1081                              &vpx_highbd_tm_predictor_4x4_c, 4, 10),
1082         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_neon,
1083                              &vpx_highbd_tm_predictor_8x8_c, 8, 10),
1084         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_neon,
1085                              &vpx_highbd_tm_predictor_16x16_c, 16, 10),
1086         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_neon,
1087                              &vpx_highbd_tm_predictor_32x32_c, 32, 10),
1088         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_neon,
1089                              &vpx_highbd_v_predictor_4x4_c, 4, 10),
1090         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_neon,
1091                              &vpx_highbd_v_predictor_8x8_c, 8, 10),
1092         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_neon,
1093                              &vpx_highbd_v_predictor_16x16_c, 16, 10),
1094         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_neon,
1095                              &vpx_highbd_v_predictor_32x32_c, 32, 10)));
1096 
1097 INSTANTIATE_TEST_SUITE_P(
1098     NEON_TO_C_12, VP9HighbdIntraPredTest,
1099     ::testing::Values(
1100         HighbdIntraPredParam(&vpx_highbd_d45_predictor_4x4_neon,
1101                              &vpx_highbd_d45_predictor_4x4_c, 4, 12),
1102         HighbdIntraPredParam(&vpx_highbd_d45_predictor_8x8_neon,
1103                              &vpx_highbd_d45_predictor_8x8_c, 8, 12),
1104         HighbdIntraPredParam(&vpx_highbd_d45_predictor_16x16_neon,
1105                              &vpx_highbd_d45_predictor_16x16_c, 16, 12),
1106         HighbdIntraPredParam(&vpx_highbd_d45_predictor_32x32_neon,
1107                              &vpx_highbd_d45_predictor_32x32_c, 32, 12),
1108         HighbdIntraPredParam(&vpx_highbd_d63_predictor_4x4_neon,
1109                              &vpx_highbd_d63_predictor_4x4_c, 4, 12),
1110         HighbdIntraPredParam(&vpx_highbd_d63_predictor_8x8_neon,
1111                              &vpx_highbd_d63_predictor_8x8_c, 8, 12),
1112         HighbdIntraPredParam(&vpx_highbd_d63_predictor_16x16_neon,
1113                              &vpx_highbd_d63_predictor_16x16_c, 16, 12),
1114         HighbdIntraPredParam(&vpx_highbd_d63_predictor_32x32_neon,
1115                              &vpx_highbd_d63_predictor_32x32_c, 32, 12),
1116         HighbdIntraPredParam(&vpx_highbd_d117_predictor_4x4_neon,
1117                              &vpx_highbd_d117_predictor_4x4_c, 4, 10),
1118         HighbdIntraPredParam(&vpx_highbd_d117_predictor_8x8_neon,
1119                              &vpx_highbd_d117_predictor_8x8_c, 8, 10),
1120         HighbdIntraPredParam(&vpx_highbd_d117_predictor_16x16_neon,
1121                              &vpx_highbd_d117_predictor_16x16_c, 16, 10),
1122         HighbdIntraPredParam(&vpx_highbd_d117_predictor_32x32_neon,
1123                              &vpx_highbd_d117_predictor_32x32_c, 32, 10),
1124         HighbdIntraPredParam(&vpx_highbd_d135_predictor_4x4_neon,
1125                              &vpx_highbd_d135_predictor_4x4_c, 4, 12),
1126         HighbdIntraPredParam(&vpx_highbd_d135_predictor_8x8_neon,
1127                              &vpx_highbd_d135_predictor_8x8_c, 8, 12),
1128         HighbdIntraPredParam(&vpx_highbd_d135_predictor_16x16_neon,
1129                              &vpx_highbd_d135_predictor_16x16_c, 16, 12),
1130         HighbdIntraPredParam(&vpx_highbd_d135_predictor_32x32_neon,
1131                              &vpx_highbd_d135_predictor_32x32_c, 32, 12),
1132         HighbdIntraPredParam(&vpx_highbd_d153_predictor_4x4_neon,
1133                              &vpx_highbd_d153_predictor_4x4_c, 4, 12),
1134         HighbdIntraPredParam(&vpx_highbd_d153_predictor_8x8_neon,
1135                              &vpx_highbd_d153_predictor_8x8_c, 8, 12),
1136         HighbdIntraPredParam(&vpx_highbd_d153_predictor_16x16_neon,
1137                              &vpx_highbd_d153_predictor_16x16_c, 16, 12),
1138         HighbdIntraPredParam(&vpx_highbd_d153_predictor_32x32_neon,
1139                              &vpx_highbd_d153_predictor_32x32_c, 32, 12),
1140         HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_neon,
1141                              &vpx_highbd_d207_predictor_4x4_c, 4, 12),
1142         HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_neon,
1143                              &vpx_highbd_d207_predictor_8x8_c, 8, 12),
1144         HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_neon,
1145                              &vpx_highbd_d207_predictor_16x16_c, 16, 12),
1146         HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_neon,
1147                              &vpx_highbd_d207_predictor_32x32_c, 32, 12),
1148         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_4x4_neon,
1149                              &vpx_highbd_dc_128_predictor_4x4_c, 4, 12),
1150         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_8x8_neon,
1151                              &vpx_highbd_dc_128_predictor_8x8_c, 8, 12),
1152         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_16x16_neon,
1153                              &vpx_highbd_dc_128_predictor_16x16_c, 16, 12),
1154         HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_neon,
1155                              &vpx_highbd_dc_128_predictor_32x32_c, 32, 12),
1156         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_neon,
1157                              &vpx_highbd_dc_left_predictor_4x4_c, 4, 12),
1158         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_neon,
1159                              &vpx_highbd_dc_left_predictor_8x8_c, 8, 12),
1160         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_16x16_neon,
1161                              &vpx_highbd_dc_left_predictor_16x16_c, 16, 12),
1162         HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_32x32_neon,
1163                              &vpx_highbd_dc_left_predictor_32x32_c, 32, 12),
1164         HighbdIntraPredParam(&vpx_highbd_dc_predictor_4x4_neon,
1165                              &vpx_highbd_dc_predictor_4x4_c, 4, 12),
1166         HighbdIntraPredParam(&vpx_highbd_dc_predictor_8x8_neon,
1167                              &vpx_highbd_dc_predictor_8x8_c, 8, 12),
1168         HighbdIntraPredParam(&vpx_highbd_dc_predictor_16x16_neon,
1169                              &vpx_highbd_dc_predictor_16x16_c, 16, 12),
1170         HighbdIntraPredParam(&vpx_highbd_dc_predictor_32x32_neon,
1171                              &vpx_highbd_dc_predictor_32x32_c, 32, 12),
1172         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_4x4_neon,
1173                              &vpx_highbd_dc_top_predictor_4x4_c, 4, 12),
1174         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_8x8_neon,
1175                              &vpx_highbd_dc_top_predictor_8x8_c, 8, 12),
1176         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_16x16_neon,
1177                              &vpx_highbd_dc_top_predictor_16x16_c, 16, 12),
1178         HighbdIntraPredParam(&vpx_highbd_dc_top_predictor_32x32_neon,
1179                              &vpx_highbd_dc_top_predictor_32x32_c, 32, 12),
1180         HighbdIntraPredParam(&vpx_highbd_h_predictor_4x4_neon,
1181                              &vpx_highbd_h_predictor_4x4_c, 4, 12),
1182         HighbdIntraPredParam(&vpx_highbd_h_predictor_8x8_neon,
1183                              &vpx_highbd_h_predictor_8x8_c, 8, 12),
1184         HighbdIntraPredParam(&vpx_highbd_h_predictor_16x16_neon,
1185                              &vpx_highbd_h_predictor_16x16_c, 16, 12),
1186         HighbdIntraPredParam(&vpx_highbd_h_predictor_32x32_neon,
1187                              &vpx_highbd_h_predictor_32x32_c, 32, 12),
1188         HighbdIntraPredParam(&vpx_highbd_tm_predictor_4x4_neon,
1189                              &vpx_highbd_tm_predictor_4x4_c, 4, 12),
1190         HighbdIntraPredParam(&vpx_highbd_tm_predictor_8x8_neon,
1191                              &vpx_highbd_tm_predictor_8x8_c, 8, 12),
1192         HighbdIntraPredParam(&vpx_highbd_tm_predictor_16x16_neon,
1193                              &vpx_highbd_tm_predictor_16x16_c, 16, 12),
1194         HighbdIntraPredParam(&vpx_highbd_tm_predictor_32x32_neon,
1195                              &vpx_highbd_tm_predictor_32x32_c, 32, 12),
1196         HighbdIntraPredParam(&vpx_highbd_v_predictor_4x4_neon,
1197                              &vpx_highbd_v_predictor_4x4_c, 4, 12),
1198         HighbdIntraPredParam(&vpx_highbd_v_predictor_8x8_neon,
1199                              &vpx_highbd_v_predictor_8x8_c, 8, 12),
1200         HighbdIntraPredParam(&vpx_highbd_v_predictor_16x16_neon,
1201                              &vpx_highbd_v_predictor_16x16_c, 16, 12),
1202         HighbdIntraPredParam(&vpx_highbd_v_predictor_32x32_neon,
1203                              &vpx_highbd_v_predictor_32x32_c, 32, 12)));
1204 #endif  // HAVE_NEON
1205 
1206 #endif  // CONFIG_VP9_HIGHBITDEPTH
1207 }  // namespace
1208