vp9_intrapred_test.cc 59 KB

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