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