2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
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.
13 #include "third_party/googletest/src/include/gtest/gtest.h"
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"
27 using libvpx_test::ACMRandom;
29 const int count_test_block = 100000;
31 typedef void (*IntraPredFunc)(uint8_t *dst, ptrdiff_t stride,
32 const uint8_t *above, const uint8_t *left);
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) {}
40 IntraPredFunc pred_fn;
46 template <typename Pixel, typename PredParam>
47 class IntraPredTest : public ::testing::TestWithParam<PredParam> {
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;
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++) {
61 above_row_[x] = mask_;
63 above_row_[x] = rnd.Rand16() & mask_;
66 for (int x = block_size; x < 2 * block_size; x++) {
67 above_row_[x] = above_row_[block_size - 1];
69 for (int y = 0; y < block_size; y++) {
73 left_col_[y] = rnd.Rand16() & mask_;
77 CheckPrediction(i, &error_count);
79 ASSERT_EQ(0, error_count);
83 virtual void SetUp() {
84 params_ = this->GetParam();
85 stride_ = params_.block_size * 3;
86 mask_ = (1 << params_.bit_depth) - 1;
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;
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_));
122 typedef IntraPredTest<uint8_t, IntraPredParam> VP9IntraPredTest;
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);
133 // Instantiate a token test to avoid -Wuninitialized warnings when none of the
134 // other tests are enabled.
135 INSTANTIATE_TEST_CASE_P(
137 ::testing::Values(IntraPredParam(&vpx_d45_predictor_4x4_c,
138 &vpx_d45_predictor_4x4_c, 4, 8)));
140 INSTANTIATE_TEST_CASE_P(
141 SSE2, VP9IntraPredTest,
143 IntraPredParam(&vpx_d45_predictor_4x4_sse2, &vpx_d45_predictor_4x4_c, 4,
145 IntraPredParam(&vpx_d45_predictor_8x8_sse2, &vpx_d45_predictor_8x8_c, 8,
147 IntraPredParam(&vpx_d207_predictor_4x4_sse2, &vpx_d207_predictor_4x4_c,
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,
167 IntraPredParam(&vpx_dc_predictor_8x8_sse2, &vpx_dc_predictor_8x8_c, 8,
169 IntraPredParam(&vpx_dc_predictor_16x16_sse2, &vpx_dc_predictor_16x16_c,
171 IntraPredParam(&vpx_dc_predictor_32x32_sse2, &vpx_dc_predictor_32x32_c,
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,
185 IntraPredParam(&vpx_h_predictor_32x32_sse2, &vpx_h_predictor_32x32_c,
187 IntraPredParam(&vpx_tm_predictor_4x4_sse2, &vpx_tm_predictor_4x4_c, 4,
189 IntraPredParam(&vpx_tm_predictor_8x8_sse2, &vpx_tm_predictor_8x8_c, 8,
191 IntraPredParam(&vpx_tm_predictor_16x16_sse2, &vpx_tm_predictor_16x16_c,
193 IntraPredParam(&vpx_tm_predictor_32x32_sse2, &vpx_tm_predictor_32x32_c,
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,
199 IntraPredParam(&vpx_v_predictor_32x32_sse2, &vpx_v_predictor_32x32_c,
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)));
235 INSTANTIATE_TEST_CASE_P(
236 NEON, VP9IntraPredTest,
238 IntraPredParam(&vpx_d45_predictor_4x4_neon, &vpx_d45_predictor_4x4_c, 4,
240 IntraPredParam(&vpx_d45_predictor_8x8_neon, &vpx_d45_predictor_8x8_c, 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,
248 IntraPredParam(&vpx_d135_predictor_8x8_neon, &vpx_d135_predictor_8x8_c,
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,
272 IntraPredParam(&vpx_dc_predictor_8x8_neon, &vpx_dc_predictor_8x8_c, 8,
274 IntraPredParam(&vpx_dc_predictor_16x16_neon, &vpx_dc_predictor_16x16_c,
276 IntraPredParam(&vpx_dc_predictor_32x32_neon, &vpx_dc_predictor_32x32_c,
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,
290 IntraPredParam(&vpx_h_predictor_32x32_neon, &vpx_h_predictor_32x32_c,
292 IntraPredParam(&vpx_tm_predictor_4x4_neon, &vpx_tm_predictor_4x4_c, 4,
294 IntraPredParam(&vpx_tm_predictor_8x8_neon, &vpx_tm_predictor_8x8_c, 8,
296 IntraPredParam(&vpx_tm_predictor_16x16_neon, &vpx_tm_predictor_16x16_c,
298 IntraPredParam(&vpx_tm_predictor_32x32_neon, &vpx_tm_predictor_32x32_c,
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,
304 IntraPredParam(&vpx_v_predictor_32x32_neon, &vpx_v_predictor_32x32_c,
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)));
330 INSTANTIATE_TEST_CASE_P(
331 MSA, VP9IntraPredTest,
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,
351 IntraPredParam(&vpx_dc_predictor_8x8_msa, &vpx_dc_predictor_8x8_c, 8,
353 IntraPredParam(&vpx_dc_predictor_16x16_msa, &vpx_dc_predictor_16x16_c,
355 IntraPredParam(&vpx_dc_predictor_32x32_msa, &vpx_dc_predictor_32x32_c,
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,
369 IntraPredParam(&vpx_h_predictor_32x32_msa, &vpx_h_predictor_32x32_c, 32,
371 IntraPredParam(&vpx_tm_predictor_4x4_msa, &vpx_tm_predictor_4x4_c, 4,
373 IntraPredParam(&vpx_tm_predictor_8x8_msa, &vpx_tm_predictor_8x8_c, 8,
375 IntraPredParam(&vpx_tm_predictor_16x16_msa, &vpx_tm_predictor_16x16_c,
377 IntraPredParam(&vpx_tm_predictor_32x32_msa, &vpx_tm_predictor_32x32_c,
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,
383 IntraPredParam(&vpx_v_predictor_32x32_msa, &vpx_v_predictor_32x32_c, 32,
388 INSTANTIATE_TEST_CASE_P(
389 VSX, VP9IntraPredTest,
391 IntraPredParam(&vpx_d45_predictor_8x8_vsx, &vpx_d45_predictor_8x8_c, 8,
393 IntraPredParam(&vpx_d45_predictor_16x16_vsx, &vpx_d45_predictor_16x16_c,
395 IntraPredParam(&vpx_d45_predictor_32x32_vsx, &vpx_d45_predictor_32x32_c,
397 IntraPredParam(&vpx_d63_predictor_8x8_vsx, &vpx_d63_predictor_8x8_c, 8,
399 IntraPredParam(&vpx_d63_predictor_16x16_vsx, &vpx_d63_predictor_16x16_c,
401 IntraPredParam(&vpx_d63_predictor_32x32_vsx, &vpx_d63_predictor_32x32_c,
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,
413 IntraPredParam(&vpx_dc_predictor_16x16_vsx, &vpx_dc_predictor_16x16_c,
415 IntraPredParam(&vpx_dc_predictor_32x32_vsx, &vpx_dc_predictor_32x32_c,
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,
425 IntraPredParam(&vpx_h_predictor_32x32_vsx, &vpx_h_predictor_32x32_c, 32,
427 IntraPredParam(&vpx_tm_predictor_4x4_vsx, &vpx_tm_predictor_4x4_c, 4,
429 IntraPredParam(&vpx_tm_predictor_8x8_vsx, &vpx_tm_predictor_8x8_c, 8,
431 IntraPredParam(&vpx_tm_predictor_16x16_vsx, &vpx_tm_predictor_16x16_c,
433 IntraPredParam(&vpx_tm_predictor_32x32_vsx, &vpx_tm_predictor_32x32_c,
435 IntraPredParam(&vpx_v_predictor_16x16_vsx, &vpx_v_predictor_16x16_c, 16,
437 IntraPredParam(&vpx_v_predictor_32x32_vsx, &vpx_v_predictor_32x32_c, 32,
441 #if CONFIG_VP9_HIGHBITDEPTH
442 typedef void (*HighbdIntraPred)(uint16_t *dst, ptrdiff_t stride,
443 const uint16_t *above, const uint16_t *left,
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) {}
451 HighbdIntraPred pred_fn;
452 HighbdIntraPred ref_fn;
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));
465 typedef IntraPredTest<uint16_t, HighbdIntraPredParam> VP9HighbdIntraPredTest;
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);
477 INSTANTIATE_TEST_CASE_P(
478 SSSE3_TO_C_8, VP9HighbdIntraPredTest,
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)));
519 INSTANTIATE_TEST_CASE_P(
520 SSSE3_TO_C_10, VP9HighbdIntraPredTest,
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)));
561 INSTANTIATE_TEST_CASE_P(
562 SSSE3_TO_C_12, VP9HighbdIntraPredTest,
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)));
605 INSTANTIATE_TEST_CASE_P(
606 SSE2_TO_C_8, VP9HighbdIntraPredTest,
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)));
675 INSTANTIATE_TEST_CASE_P(
676 SSE2_TO_C_10, VP9HighbdIntraPredTest,
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)));
745 INSTANTIATE_TEST_CASE_P(
746 SSE2_TO_C_12, VP9HighbdIntraPredTest,
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)));
817 INSTANTIATE_TEST_CASE_P(
818 NEON_TO_C_8, VP9HighbdIntraPredTest,
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)));
893 INSTANTIATE_TEST_CASE_P(
894 NEON_TO_C_10, VP9HighbdIntraPredTest,
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)));
969 INSTANTIATE_TEST_CASE_P(
970 NEON_TO_C_12, VP9HighbdIntraPredTest,
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)));
1046 #endif // CONFIG_VP9_HIGHBITDEPTH