1*fb1b10abSAndroid Build Coastguard Worker /*
2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
3*fb1b10abSAndroid Build Coastguard Worker *
4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license
5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source
6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found
7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may
8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree.
9*fb1b10abSAndroid Build Coastguard Worker */
10*fb1b10abSAndroid Build Coastguard Worker // Test and time VPX intra-predictor functions
11*fb1b10abSAndroid Build Coastguard Worker
12*fb1b10abSAndroid Build Coastguard Worker #include <stdio.h>
13*fb1b10abSAndroid Build Coastguard Worker #include <string.h>
14*fb1b10abSAndroid Build Coastguard Worker
15*fb1b10abSAndroid Build Coastguard Worker #include "gtest/gtest.h"
16*fb1b10abSAndroid Build Coastguard Worker
17*fb1b10abSAndroid Build Coastguard Worker #include "./vpx_config.h"
18*fb1b10abSAndroid Build Coastguard Worker #include "./vpx_dsp_rtcd.h"
19*fb1b10abSAndroid Build Coastguard Worker #include "test/acm_random.h"
20*fb1b10abSAndroid Build Coastguard Worker #include "test/clear_system_state.h"
21*fb1b10abSAndroid Build Coastguard Worker #include "test/init_vpx_test.h"
22*fb1b10abSAndroid Build Coastguard Worker #include "test/md5_helper.h"
23*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_integer.h"
24*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/mem.h"
25*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/vpx_timer.h"
26*fb1b10abSAndroid Build Coastguard Worker
27*fb1b10abSAndroid Build Coastguard Worker // -----------------------------------------------------------------------------
28*fb1b10abSAndroid Build Coastguard Worker
29*fb1b10abSAndroid Build Coastguard Worker namespace {
30*fb1b10abSAndroid Build Coastguard Worker
31*fb1b10abSAndroid Build Coastguard Worker typedef void (*VpxPredFunc)(uint8_t *dst, ptrdiff_t y_stride,
32*fb1b10abSAndroid Build Coastguard Worker const uint8_t *above, const uint8_t *left);
33*fb1b10abSAndroid Build Coastguard Worker
34*fb1b10abSAndroid Build Coastguard Worker const int kBPS = 32;
35*fb1b10abSAndroid Build Coastguard Worker const int kTotalPixels = 32 * kBPS;
36*fb1b10abSAndroid Build Coastguard Worker const int kNumVp9IntraPredFuncs = 13;
37*fb1b10abSAndroid Build Coastguard Worker const char *kVp9IntraPredNames[kNumVp9IntraPredFuncs] = {
38*fb1b10abSAndroid Build Coastguard Worker "DC_PRED", "DC_LEFT_PRED", "DC_TOP_PRED", "DC_128_PRED", "V_PRED",
39*fb1b10abSAndroid Build Coastguard Worker "H_PRED", "D45_PRED", "D135_PRED", "D117_PRED", "D153_PRED",
40*fb1b10abSAndroid Build Coastguard Worker "D207_PRED", "D63_PRED", "TM_PRED"
41*fb1b10abSAndroid Build Coastguard Worker };
42*fb1b10abSAndroid Build Coastguard Worker
43*fb1b10abSAndroid Build Coastguard Worker template <typename Pixel>
44*fb1b10abSAndroid Build Coastguard Worker struct IntraPredTestMem {
Init__anonf82f82e50111::IntraPredTestMem45*fb1b10abSAndroid Build Coastguard Worker void Init(int block_size, int bd) {
46*fb1b10abSAndroid Build Coastguard Worker libvpx_test::ACMRandom rnd(libvpx_test::ACMRandom::DeterministicSeed());
47*fb1b10abSAndroid Build Coastguard Worker Pixel *const above = above_mem + 16;
48*fb1b10abSAndroid Build Coastguard Worker const int mask = (1 << bd) - 1;
49*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < kTotalPixels; ++i) ref_src[i] = rnd.Rand16() & mask;
50*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < kBPS; ++i) left[i] = rnd.Rand16() & mask;
51*fb1b10abSAndroid Build Coastguard Worker for (int i = -1; i < kBPS; ++i) above[i] = rnd.Rand16() & mask;
52*fb1b10abSAndroid Build Coastguard Worker
53*fb1b10abSAndroid Build Coastguard Worker // d45/d63 require the top row to be extended.
54*fb1b10abSAndroid Build Coastguard Worker ASSERT_LE(block_size, kBPS);
55*fb1b10abSAndroid Build Coastguard Worker for (int i = block_size; i < 2 * block_size; ++i) {
56*fb1b10abSAndroid Build Coastguard Worker above[i] = above[block_size - 1];
57*fb1b10abSAndroid Build Coastguard Worker }
58*fb1b10abSAndroid Build Coastguard Worker }
59*fb1b10abSAndroid Build Coastguard Worker
60*fb1b10abSAndroid Build Coastguard Worker DECLARE_ALIGNED(16, Pixel, src[kTotalPixels]);
61*fb1b10abSAndroid Build Coastguard Worker DECLARE_ALIGNED(16, Pixel, ref_src[kTotalPixels]);
62*fb1b10abSAndroid Build Coastguard Worker DECLARE_ALIGNED(16, Pixel, left[kBPS]);
63*fb1b10abSAndroid Build Coastguard Worker DECLARE_ALIGNED(16, Pixel, above_mem[2 * kBPS + 16]);
64*fb1b10abSAndroid Build Coastguard Worker };
65*fb1b10abSAndroid Build Coastguard Worker
66*fb1b10abSAndroid Build Coastguard Worker typedef IntraPredTestMem<uint8_t> Vp9IntraPredTestMem;
67*fb1b10abSAndroid Build Coastguard Worker
CheckMd5Signature(const char name[],const char * const signatures[],const void * data,size_t data_size,int elapsed_time,int idx)68*fb1b10abSAndroid Build Coastguard Worker void CheckMd5Signature(const char name[], const char *const signatures[],
69*fb1b10abSAndroid Build Coastguard Worker const void *data, size_t data_size, int elapsed_time,
70*fb1b10abSAndroid Build Coastguard Worker int idx) {
71*fb1b10abSAndroid Build Coastguard Worker libvpx_test::MD5 md5;
72*fb1b10abSAndroid Build Coastguard Worker md5.Add(reinterpret_cast<const uint8_t *>(data), data_size);
73*fb1b10abSAndroid Build Coastguard Worker printf("Mode %s[%12s]: %5d ms MD5: %s\n", name, kVp9IntraPredNames[idx],
74*fb1b10abSAndroid Build Coastguard Worker elapsed_time, md5.Get());
75*fb1b10abSAndroid Build Coastguard Worker EXPECT_STREQ(signatures[idx], md5.Get());
76*fb1b10abSAndroid Build Coastguard Worker }
77*fb1b10abSAndroid Build Coastguard Worker
TestIntraPred(const char name[],VpxPredFunc const * pred_funcs,const char * const signatures[],int block_size)78*fb1b10abSAndroid Build Coastguard Worker void TestIntraPred(const char name[], VpxPredFunc const *pred_funcs,
79*fb1b10abSAndroid Build Coastguard Worker const char *const signatures[], int block_size) {
80*fb1b10abSAndroid Build Coastguard Worker const int kNumTests = static_cast<int>(
81*fb1b10abSAndroid Build Coastguard Worker 2.e10 / (block_size * block_size * kNumVp9IntraPredFuncs));
82*fb1b10abSAndroid Build Coastguard Worker Vp9IntraPredTestMem intra_pred_test_mem;
83*fb1b10abSAndroid Build Coastguard Worker const uint8_t *const above = intra_pred_test_mem.above_mem + 16;
84*fb1b10abSAndroid Build Coastguard Worker
85*fb1b10abSAndroid Build Coastguard Worker intra_pred_test_mem.Init(block_size, 8);
86*fb1b10abSAndroid Build Coastguard Worker
87*fb1b10abSAndroid Build Coastguard Worker for (int k = 0; k < kNumVp9IntraPredFuncs; ++k) {
88*fb1b10abSAndroid Build Coastguard Worker if (pred_funcs[k] == nullptr) continue;
89*fb1b10abSAndroid Build Coastguard Worker memcpy(intra_pred_test_mem.src, intra_pred_test_mem.ref_src,
90*fb1b10abSAndroid Build Coastguard Worker sizeof(intra_pred_test_mem.src));
91*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer timer;
92*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer_start(&timer);
93*fb1b10abSAndroid Build Coastguard Worker for (int num_tests = 0; num_tests < kNumTests; ++num_tests) {
94*fb1b10abSAndroid Build Coastguard Worker pred_funcs[k](intra_pred_test_mem.src, kBPS, above,
95*fb1b10abSAndroid Build Coastguard Worker intra_pred_test_mem.left);
96*fb1b10abSAndroid Build Coastguard Worker }
97*fb1b10abSAndroid Build Coastguard Worker libvpx_test::ClearSystemState();
98*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer_mark(&timer);
99*fb1b10abSAndroid Build Coastguard Worker const int elapsed_time =
100*fb1b10abSAndroid Build Coastguard Worker static_cast<int>(vpx_usec_timer_elapsed(&timer) / 1000);
101*fb1b10abSAndroid Build Coastguard Worker CheckMd5Signature(name, signatures, intra_pred_test_mem.src,
102*fb1b10abSAndroid Build Coastguard Worker sizeof(intra_pred_test_mem.src), elapsed_time, k);
103*fb1b10abSAndroid Build Coastguard Worker }
104*fb1b10abSAndroid Build Coastguard Worker }
105*fb1b10abSAndroid Build Coastguard Worker
TestIntraPred4(VpxPredFunc const * pred_funcs)106*fb1b10abSAndroid Build Coastguard Worker void TestIntraPred4(VpxPredFunc const *pred_funcs) {
107*fb1b10abSAndroid Build Coastguard Worker static const char *const kSignatures[kNumVp9IntraPredFuncs] = {
108*fb1b10abSAndroid Build Coastguard Worker "e7ed7353c3383fff942e500e9bfe82fe", "2a4a26fcc6ce005eadc08354d196c8a9",
109*fb1b10abSAndroid Build Coastguard Worker "269d92eff86f315d9c38fe7640d85b15", "ae2960eea9f71ee3dabe08b282ec1773",
110*fb1b10abSAndroid Build Coastguard Worker "6c1abcc44e90148998b51acd11144e9c", "f7bb3186e1ef8a2b326037ff898cad8e",
111*fb1b10abSAndroid Build Coastguard Worker "364c1f3fb2f445f935aec2a70a67eaa4", "141624072a4a56773f68fadbdd07c4a7",
112*fb1b10abSAndroid Build Coastguard Worker "7be49b08687a5f24df3a2c612fca3876", "459bb5d9fd5b238348179c9a22108cd6",
113*fb1b10abSAndroid Build Coastguard Worker "73edb8831bf1bdfce21ae8eaa43b1234", "2e2457f2009c701a355a8b25eb74fcda",
114*fb1b10abSAndroid Build Coastguard Worker "52ae4e8bdbe41494c1f43051d4dd7f0b"
115*fb1b10abSAndroid Build Coastguard Worker };
116*fb1b10abSAndroid Build Coastguard Worker TestIntraPred("Intra4", pred_funcs, kSignatures, 4);
117*fb1b10abSAndroid Build Coastguard Worker }
118*fb1b10abSAndroid Build Coastguard Worker
TestIntraPred8(VpxPredFunc const * pred_funcs)119*fb1b10abSAndroid Build Coastguard Worker void TestIntraPred8(VpxPredFunc const *pred_funcs) {
120*fb1b10abSAndroid Build Coastguard Worker static const char *const kSignatures[kNumVp9IntraPredFuncs] = {
121*fb1b10abSAndroid Build Coastguard Worker "d8bbae5d6547cfc17e4f5f44c8730e88", "373bab6d931868d41a601d9d88ce9ac3",
122*fb1b10abSAndroid Build Coastguard Worker "6fdd5ff4ff79656c14747598ca9e3706", "d9661c2811d6a73674f40ffb2b841847",
123*fb1b10abSAndroid Build Coastguard Worker "7c722d10b19ccff0b8c171868e747385", "f81dd986eb2b50f750d3a7da716b7e27",
124*fb1b10abSAndroid Build Coastguard Worker "d500f2c8fc78f46a4c74e4dcf51f14fb", "0e3523f9cab2142dd37fd07ec0760bce",
125*fb1b10abSAndroid Build Coastguard Worker "79ac4efe907f0a0f1885d43066cfedee", "19ecf2432ac305057de3b6578474eec6",
126*fb1b10abSAndroid Build Coastguard Worker "4f985b61acc6dd5d2d2585fa89ea2e2d", "f1bb25a9060dd262f405f15a38f5f674",
127*fb1b10abSAndroid Build Coastguard Worker "209ea00801584829e9a0f7be7d4a74ba"
128*fb1b10abSAndroid Build Coastguard Worker };
129*fb1b10abSAndroid Build Coastguard Worker TestIntraPred("Intra8", pred_funcs, kSignatures, 8);
130*fb1b10abSAndroid Build Coastguard Worker }
131*fb1b10abSAndroid Build Coastguard Worker
TestIntraPred16(VpxPredFunc const * pred_funcs)132*fb1b10abSAndroid Build Coastguard Worker void TestIntraPred16(VpxPredFunc const *pred_funcs) {
133*fb1b10abSAndroid Build Coastguard Worker static const char *const kSignatures[kNumVp9IntraPredFuncs] = {
134*fb1b10abSAndroid Build Coastguard Worker "50971c07ce26977d30298538fffec619", "527a6b9e0dc5b21b98cf276305432bef",
135*fb1b10abSAndroid Build Coastguard Worker "7eff2868f80ebc2c43a4f367281d80f7", "67cd60512b54964ef6aff1bd4816d922",
136*fb1b10abSAndroid Build Coastguard Worker "48371c87dc95c08a33b2048f89cf6468", "b0acf2872ee411d7530af6d2625a7084",
137*fb1b10abSAndroid Build Coastguard Worker "f32aafed4d8d3776ed58bcb6188756d5", "dae208f3dca583529cff49b73f7c4183",
138*fb1b10abSAndroid Build Coastguard Worker "7af66a2f4c8e0b4908e40f047e60c47c", "125e3ab6ab9bc961f183ec366a7afa88",
139*fb1b10abSAndroid Build Coastguard Worker "6b90f25b23983c35386b9fd704427622", "f8d6b11d710edc136a7c62c917435f93",
140*fb1b10abSAndroid Build Coastguard Worker "ed308f18614a362917f411c218aee532"
141*fb1b10abSAndroid Build Coastguard Worker };
142*fb1b10abSAndroid Build Coastguard Worker TestIntraPred("Intra16", pred_funcs, kSignatures, 16);
143*fb1b10abSAndroid Build Coastguard Worker }
144*fb1b10abSAndroid Build Coastguard Worker
TestIntraPred32(VpxPredFunc const * pred_funcs)145*fb1b10abSAndroid Build Coastguard Worker void TestIntraPred32(VpxPredFunc const *pred_funcs) {
146*fb1b10abSAndroid Build Coastguard Worker static const char *const kSignatures[kNumVp9IntraPredFuncs] = {
147*fb1b10abSAndroid Build Coastguard Worker "a0a618c900e65ae521ccc8af789729f2", "985aaa7c72b4a6c2fb431d32100cf13a",
148*fb1b10abSAndroid Build Coastguard Worker "10662d09febc3ca13ee4e700120daeb5", "b3b01379ba08916ef6b1b35f7d9ad51c",
149*fb1b10abSAndroid Build Coastguard Worker "9f4261755795af97e34679c333ec7004", "bc2c9da91ad97ef0d1610fb0a9041657",
150*fb1b10abSAndroid Build Coastguard Worker "75c79b1362ad18abfcdb1aa0aacfc21d", "4039bb7da0f6860090d3c57b5c85468f",
151*fb1b10abSAndroid Build Coastguard Worker "b29fff7b61804e68383e3a609b33da58", "e1aa5e49067fd8dba66c2eb8d07b7a89",
152*fb1b10abSAndroid Build Coastguard Worker "4e042822909c1c06d3b10a88281df1eb", "72eb9d9e0e67c93f4c66b70348e9fef7",
153*fb1b10abSAndroid Build Coastguard Worker "a22d102bcb51ca798aac12ca4ae8f2e8"
154*fb1b10abSAndroid Build Coastguard Worker };
155*fb1b10abSAndroid Build Coastguard Worker TestIntraPred("Intra32", pred_funcs, kSignatures, 32);
156*fb1b10abSAndroid Build Coastguard Worker }
157*fb1b10abSAndroid Build Coastguard Worker
158*fb1b10abSAndroid Build Coastguard Worker } // namespace
159*fb1b10abSAndroid Build Coastguard Worker
160*fb1b10abSAndroid Build Coastguard Worker // Defines a test case for |arch| (e.g., C, SSE2, ...) passing the predictors
161*fb1b10abSAndroid Build Coastguard Worker // to |test_func|. The test name is 'arch.test_func', e.g., C.TestIntraPred4.
162*fb1b10abSAndroid Build Coastguard Worker #define INTRA_PRED_TEST(arch, test_func, dc, dc_left, dc_top, dc_128, v, h, \
163*fb1b10abSAndroid Build Coastguard Worker d45, d135, d117, d153, d207, d63, tm) \
164*fb1b10abSAndroid Build Coastguard Worker TEST(arch, test_func) { \
165*fb1b10abSAndroid Build Coastguard Worker static const VpxPredFunc vpx_intra_pred[] = { \
166*fb1b10abSAndroid Build Coastguard Worker dc, dc_left, dc_top, dc_128, v, h, d45, d135, d117, d153, d207, d63, tm \
167*fb1b10abSAndroid Build Coastguard Worker }; \
168*fb1b10abSAndroid Build Coastguard Worker test_func(vpx_intra_pred); \
169*fb1b10abSAndroid Build Coastguard Worker }
170*fb1b10abSAndroid Build Coastguard Worker
171*fb1b10abSAndroid Build Coastguard Worker // -----------------------------------------------------------------------------
172*fb1b10abSAndroid Build Coastguard Worker
173*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(C, TestIntraPred4, vpx_dc_predictor_4x4_c,
174*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_4x4_c, vpx_dc_top_predictor_4x4_c,
175*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_4x4_c, vpx_v_predictor_4x4_c,
176*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_4x4_c, vpx_d45_predictor_4x4_c,
177*fb1b10abSAndroid Build Coastguard Worker vpx_d135_predictor_4x4_c, vpx_d117_predictor_4x4_c,
178*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_4x4_c, vpx_d207_predictor_4x4_c,
179*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_4x4_c, vpx_tm_predictor_4x4_c)
180*fb1b10abSAndroid Build Coastguard Worker
181*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(C, TestIntraPred8, vpx_dc_predictor_8x8_c,
182*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_8x8_c, vpx_dc_top_predictor_8x8_c,
183*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_8x8_c, vpx_v_predictor_8x8_c,
184*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_8x8_c, vpx_d45_predictor_8x8_c,
185*fb1b10abSAndroid Build Coastguard Worker vpx_d135_predictor_8x8_c, vpx_d117_predictor_8x8_c,
186*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_8x8_c, vpx_d207_predictor_8x8_c,
187*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_8x8_c, vpx_tm_predictor_8x8_c)
188*fb1b10abSAndroid Build Coastguard Worker
189*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(C, TestIntraPred16, vpx_dc_predictor_16x16_c,
190*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_16x16_c, vpx_dc_top_predictor_16x16_c,
191*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_16x16_c, vpx_v_predictor_16x16_c,
192*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_16x16_c, vpx_d45_predictor_16x16_c,
193*fb1b10abSAndroid Build Coastguard Worker vpx_d135_predictor_16x16_c, vpx_d117_predictor_16x16_c,
194*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_16x16_c, vpx_d207_predictor_16x16_c,
195*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_16x16_c, vpx_tm_predictor_16x16_c)
196*fb1b10abSAndroid Build Coastguard Worker
197*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(C, TestIntraPred32, vpx_dc_predictor_32x32_c,
198*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_32x32_c, vpx_dc_top_predictor_32x32_c,
199*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_32x32_c, vpx_v_predictor_32x32_c,
200*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_32x32_c, vpx_d45_predictor_32x32_c,
201*fb1b10abSAndroid Build Coastguard Worker vpx_d135_predictor_32x32_c, vpx_d117_predictor_32x32_c,
202*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_32x32_c, vpx_d207_predictor_32x32_c,
203*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_32x32_c, vpx_tm_predictor_32x32_c)
204*fb1b10abSAndroid Build Coastguard Worker
205*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SSE2
206*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(SSE2, TestIntraPred4, vpx_dc_predictor_4x4_sse2,
207*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_4x4_sse2, vpx_dc_top_predictor_4x4_sse2,
208*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_4x4_sse2, vpx_v_predictor_4x4_sse2,
209*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_4x4_sse2, vpx_d45_predictor_4x4_sse2, nullptr,
210*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_d207_predictor_4x4_sse2, nullptr,
211*fb1b10abSAndroid Build Coastguard Worker vpx_tm_predictor_4x4_sse2)
212*fb1b10abSAndroid Build Coastguard Worker
213*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(SSE2, TestIntraPred8, vpx_dc_predictor_8x8_sse2,
214*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_8x8_sse2, vpx_dc_top_predictor_8x8_sse2,
215*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_8x8_sse2, vpx_v_predictor_8x8_sse2,
216*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_8x8_sse2, vpx_d45_predictor_8x8_sse2, nullptr,
217*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr, vpx_tm_predictor_8x8_sse2)
218*fb1b10abSAndroid Build Coastguard Worker
219*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(SSE2, TestIntraPred16, vpx_dc_predictor_16x16_sse2,
220*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_16x16_sse2,
221*fb1b10abSAndroid Build Coastguard Worker vpx_dc_top_predictor_16x16_sse2,
222*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_16x16_sse2, vpx_v_predictor_16x16_sse2,
223*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_16x16_sse2, nullptr, nullptr, nullptr, nullptr,
224*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_tm_predictor_16x16_sse2)
225*fb1b10abSAndroid Build Coastguard Worker
226*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(SSE2, TestIntraPred32, vpx_dc_predictor_32x32_sse2,
227*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_32x32_sse2,
228*fb1b10abSAndroid Build Coastguard Worker vpx_dc_top_predictor_32x32_sse2,
229*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_32x32_sse2, vpx_v_predictor_32x32_sse2,
230*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_32x32_sse2, nullptr, nullptr, nullptr, nullptr,
231*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_tm_predictor_32x32_sse2)
232*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SSE2
233*fb1b10abSAndroid Build Coastguard Worker
234*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SSSE3
235*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(SSSE3, TestIntraPred4, nullptr, nullptr, nullptr, nullptr,
236*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr, nullptr,
237*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_4x4_ssse3, nullptr,
238*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_4x4_ssse3, nullptr)
239*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(SSSE3, TestIntraPred8, nullptr, nullptr, nullptr, nullptr,
240*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr, nullptr,
241*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_8x8_ssse3, vpx_d207_predictor_8x8_ssse3,
242*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_8x8_ssse3, nullptr)
243*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(SSSE3, TestIntraPred16, nullptr, nullptr, nullptr, nullptr,
244*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_d45_predictor_16x16_ssse3, nullptr,
245*fb1b10abSAndroid Build Coastguard Worker nullptr, vpx_d153_predictor_16x16_ssse3,
246*fb1b10abSAndroid Build Coastguard Worker vpx_d207_predictor_16x16_ssse3, vpx_d63_predictor_16x16_ssse3,
247*fb1b10abSAndroid Build Coastguard Worker nullptr)
248*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(SSSE3, TestIntraPred32, nullptr, nullptr, nullptr, nullptr,
249*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_d45_predictor_32x32_ssse3, nullptr,
250*fb1b10abSAndroid Build Coastguard Worker nullptr, vpx_d153_predictor_32x32_ssse3,
251*fb1b10abSAndroid Build Coastguard Worker vpx_d207_predictor_32x32_ssse3, vpx_d63_predictor_32x32_ssse3,
252*fb1b10abSAndroid Build Coastguard Worker nullptr)
253*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SSSE3
254*fb1b10abSAndroid Build Coastguard Worker
255*fb1b10abSAndroid Build Coastguard Worker #if HAVE_DSPR2
256*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(DSPR2, TestIntraPred4, vpx_dc_predictor_4x4_dspr2, nullptr,
257*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, vpx_h_predictor_4x4_dspr2, nullptr,
258*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr, nullptr,
259*fb1b10abSAndroid Build Coastguard Worker vpx_tm_predictor_4x4_dspr2)
260*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(DSPR2, TestIntraPred8, vpx_dc_predictor_8x8_dspr2, nullptr,
261*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, vpx_h_predictor_8x8_dspr2, nullptr,
262*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr, nullptr,
263*fb1b10abSAndroid Build Coastguard Worker vpx_tm_predictor_8x8_c)
264*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(DSPR2, TestIntraPred16, vpx_dc_predictor_16x16_dspr2, nullptr,
265*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, vpx_h_predictor_16x16_dspr2, nullptr,
266*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr, nullptr, nullptr)
267*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_DSPR2
268*fb1b10abSAndroid Build Coastguard Worker
269*fb1b10abSAndroid Build Coastguard Worker #if HAVE_NEON
270*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(NEON, TestIntraPred4, vpx_dc_predictor_4x4_neon,
271*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_4x4_neon, vpx_dc_top_predictor_4x4_neon,
272*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_4x4_neon, vpx_v_predictor_4x4_neon,
273*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_4x4_neon, vpx_d45_predictor_4x4_neon,
274*fb1b10abSAndroid Build Coastguard Worker vpx_d135_predictor_4x4_neon, vpx_d117_predictor_4x4_neon,
275*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_4x4_neon, vpx_d207_predictor_4x4_neon,
276*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_4x4_neon, vpx_tm_predictor_4x4_neon)
277*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(NEON, TestIntraPred8, vpx_dc_predictor_8x8_neon,
278*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_8x8_neon, vpx_dc_top_predictor_8x8_neon,
279*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_8x8_neon, vpx_v_predictor_8x8_neon,
280*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_8x8_neon, vpx_d45_predictor_8x8_neon,
281*fb1b10abSAndroid Build Coastguard Worker vpx_d135_predictor_8x8_neon, vpx_d117_predictor_8x8_neon,
282*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_8x8_neon, vpx_d207_predictor_8x8_neon,
283*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_8x8_neon, vpx_tm_predictor_8x8_neon)
284*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(NEON, TestIntraPred16, vpx_dc_predictor_16x16_neon,
285*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_16x16_neon,
286*fb1b10abSAndroid Build Coastguard Worker vpx_dc_top_predictor_16x16_neon,
287*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_16x16_neon, vpx_v_predictor_16x16_neon,
288*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_16x16_neon, vpx_d45_predictor_16x16_neon,
289*fb1b10abSAndroid Build Coastguard Worker vpx_d135_predictor_16x16_neon, vpx_d117_predictor_16x16_neon,
290*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_16x16_neon, vpx_d207_predictor_16x16_neon,
291*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_16x16_neon, vpx_tm_predictor_16x16_neon)
292*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(NEON, TestIntraPred32, vpx_dc_predictor_32x32_neon,
293*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_32x32_neon,
294*fb1b10abSAndroid Build Coastguard Worker vpx_dc_top_predictor_32x32_neon,
295*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_32x32_neon, vpx_v_predictor_32x32_neon,
296*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_32x32_neon, vpx_d45_predictor_32x32_neon,
297*fb1b10abSAndroid Build Coastguard Worker vpx_d135_predictor_32x32_neon, vpx_d117_predictor_32x32_neon,
298*fb1b10abSAndroid Build Coastguard Worker vpx_d153_predictor_32x32_neon, vpx_d207_predictor_32x32_neon,
299*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_32x32_neon, vpx_tm_predictor_32x32_neon)
300*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_NEON
301*fb1b10abSAndroid Build Coastguard Worker
302*fb1b10abSAndroid Build Coastguard Worker #if HAVE_MSA
303*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(MSA, TestIntraPred4, vpx_dc_predictor_4x4_msa,
304*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_4x4_msa, vpx_dc_top_predictor_4x4_msa,
305*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_4x4_msa, vpx_v_predictor_4x4_msa,
306*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_4x4_msa, nullptr, nullptr, nullptr, nullptr,
307*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_tm_predictor_4x4_msa)
308*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(MSA, TestIntraPred8, vpx_dc_predictor_8x8_msa,
309*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_8x8_msa, vpx_dc_top_predictor_8x8_msa,
310*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_8x8_msa, vpx_v_predictor_8x8_msa,
311*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_8x8_msa, nullptr, nullptr, nullptr, nullptr,
312*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_tm_predictor_8x8_msa)
313*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(MSA, TestIntraPred16, vpx_dc_predictor_16x16_msa,
314*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_16x16_msa, vpx_dc_top_predictor_16x16_msa,
315*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_16x16_msa, vpx_v_predictor_16x16_msa,
316*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_16x16_msa, nullptr, nullptr, nullptr, nullptr,
317*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_tm_predictor_16x16_msa)
318*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(MSA, TestIntraPred32, vpx_dc_predictor_32x32_msa,
319*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_32x32_msa, vpx_dc_top_predictor_32x32_msa,
320*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_32x32_msa, vpx_v_predictor_32x32_msa,
321*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_32x32_msa, nullptr, nullptr, nullptr, nullptr,
322*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_tm_predictor_32x32_msa)
323*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_MSA
324*fb1b10abSAndroid Build Coastguard Worker
325*fb1b10abSAndroid Build Coastguard Worker #if HAVE_VSX
326*fb1b10abSAndroid Build Coastguard Worker // TODO(crbug.com/webm/1522): Fix test failures.
327*fb1b10abSAndroid Build Coastguard Worker #if 0
328*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(VSX, TestIntraPred4, nullptr, nullptr, nullptr, nullptr,
329*fb1b10abSAndroid Build Coastguard Worker nullptr, vpx_h_predictor_4x4_vsx, nullptr, nullptr, nullptr,
330*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, vpx_tm_predictor_4x4_vsx)
331*fb1b10abSAndroid Build Coastguard Worker
332*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(VSX, TestIntraPred8, vpx_dc_predictor_8x8_vsx, nullptr, nullptr,
333*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_h_predictor_8x8_vsx,
334*fb1b10abSAndroid Build Coastguard Worker vpx_d45_predictor_8x8_vsx, nullptr, nullptr, nullptr, nullptr,
335*fb1b10abSAndroid Build Coastguard Worker vpx_d63_predictor_8x8_vsx, vpx_tm_predictor_8x8_vsx)
336*fb1b10abSAndroid Build Coastguard Worker #endif
337*fb1b10abSAndroid Build Coastguard Worker
338*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(VSX, TestIntraPred16, vpx_dc_predictor_16x16_vsx,
339*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_16x16_vsx, vpx_dc_top_predictor_16x16_vsx,
340*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_16x16_vsx, vpx_v_predictor_16x16_vsx,
341*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_16x16_vsx, vpx_d45_predictor_16x16_vsx, nullptr,
342*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, vpx_d63_predictor_16x16_vsx,
343*fb1b10abSAndroid Build Coastguard Worker vpx_tm_predictor_16x16_vsx)
344*fb1b10abSAndroid Build Coastguard Worker
345*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(VSX, TestIntraPred32, vpx_dc_predictor_32x32_vsx,
346*fb1b10abSAndroid Build Coastguard Worker vpx_dc_left_predictor_32x32_vsx, vpx_dc_top_predictor_32x32_vsx,
347*fb1b10abSAndroid Build Coastguard Worker vpx_dc_128_predictor_32x32_vsx, vpx_v_predictor_32x32_vsx,
348*fb1b10abSAndroid Build Coastguard Worker vpx_h_predictor_32x32_vsx, vpx_d45_predictor_32x32_vsx, nullptr,
349*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, vpx_d63_predictor_32x32_vsx,
350*fb1b10abSAndroid Build Coastguard Worker vpx_tm_predictor_32x32_vsx)
351*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_VSX
352*fb1b10abSAndroid Build Coastguard Worker
353*fb1b10abSAndroid Build Coastguard Worker #if HAVE_LSX
354*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(LSX, TestIntraPred8, vpx_dc_predictor_8x8_lsx, nullptr, nullptr,
355*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
356*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr)
357*fb1b10abSAndroid Build Coastguard Worker INTRA_PRED_TEST(LSX, TestIntraPred16, vpx_dc_predictor_16x16_lsx, nullptr,
358*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
359*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr)
360*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_LSX
361*fb1b10abSAndroid Build Coastguard Worker
362*fb1b10abSAndroid Build Coastguard Worker // -----------------------------------------------------------------------------
363*fb1b10abSAndroid Build Coastguard Worker
364*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
365*fb1b10abSAndroid Build Coastguard Worker namespace {
366*fb1b10abSAndroid Build Coastguard Worker
367*fb1b10abSAndroid Build Coastguard Worker typedef void (*VpxHighbdPredFunc)(uint16_t *dst, ptrdiff_t y_stride,
368*fb1b10abSAndroid Build Coastguard Worker const uint16_t *above, const uint16_t *left,
369*fb1b10abSAndroid Build Coastguard Worker int bd);
370*fb1b10abSAndroid Build Coastguard Worker
371*fb1b10abSAndroid Build Coastguard Worker typedef IntraPredTestMem<uint16_t> Vp9HighbdIntraPredTestMem;
372*fb1b10abSAndroid Build Coastguard Worker
TestHighbdIntraPred(const char name[],VpxHighbdPredFunc const * pred_funcs,const char * const signatures[],int block_size)373*fb1b10abSAndroid Build Coastguard Worker void TestHighbdIntraPred(const char name[], VpxHighbdPredFunc const *pred_funcs,
374*fb1b10abSAndroid Build Coastguard Worker const char *const signatures[], int block_size) {
375*fb1b10abSAndroid Build Coastguard Worker const int kNumTests = static_cast<int>(
376*fb1b10abSAndroid Build Coastguard Worker 2.e10 / (block_size * block_size * kNumVp9IntraPredFuncs));
377*fb1b10abSAndroid Build Coastguard Worker Vp9HighbdIntraPredTestMem intra_pred_test_mem;
378*fb1b10abSAndroid Build Coastguard Worker const uint16_t *const above = intra_pred_test_mem.above_mem + 16;
379*fb1b10abSAndroid Build Coastguard Worker
380*fb1b10abSAndroid Build Coastguard Worker intra_pred_test_mem.Init(block_size, 12);
381*fb1b10abSAndroid Build Coastguard Worker
382*fb1b10abSAndroid Build Coastguard Worker for (int k = 0; k < kNumVp9IntraPredFuncs; ++k) {
383*fb1b10abSAndroid Build Coastguard Worker if (pred_funcs[k] == nullptr) continue;
384*fb1b10abSAndroid Build Coastguard Worker memcpy(intra_pred_test_mem.src, intra_pred_test_mem.ref_src,
385*fb1b10abSAndroid Build Coastguard Worker sizeof(intra_pred_test_mem.src));
386*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer timer;
387*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer_start(&timer);
388*fb1b10abSAndroid Build Coastguard Worker for (int num_tests = 0; num_tests < kNumTests; ++num_tests) {
389*fb1b10abSAndroid Build Coastguard Worker pred_funcs[k](intra_pred_test_mem.src, kBPS, above,
390*fb1b10abSAndroid Build Coastguard Worker intra_pred_test_mem.left, 12);
391*fb1b10abSAndroid Build Coastguard Worker }
392*fb1b10abSAndroid Build Coastguard Worker libvpx_test::ClearSystemState();
393*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer_mark(&timer);
394*fb1b10abSAndroid Build Coastguard Worker const int elapsed_time =
395*fb1b10abSAndroid Build Coastguard Worker static_cast<int>(vpx_usec_timer_elapsed(&timer) / 1000);
396*fb1b10abSAndroid Build Coastguard Worker CheckMd5Signature(name, signatures, intra_pred_test_mem.src,
397*fb1b10abSAndroid Build Coastguard Worker sizeof(intra_pred_test_mem.src), elapsed_time, k);
398*fb1b10abSAndroid Build Coastguard Worker }
399*fb1b10abSAndroid Build Coastguard Worker }
400*fb1b10abSAndroid Build Coastguard Worker
TestHighbdIntraPred4(VpxHighbdPredFunc const * pred_funcs)401*fb1b10abSAndroid Build Coastguard Worker void TestHighbdIntraPred4(VpxHighbdPredFunc const *pred_funcs) {
402*fb1b10abSAndroid Build Coastguard Worker static const char *const kSignatures[kNumVp9IntraPredFuncs] = {
403*fb1b10abSAndroid Build Coastguard Worker "11f74af6c5737df472f3275cbde062fa", "51bea056b6447c93f6eb8f6b7e8f6f71",
404*fb1b10abSAndroid Build Coastguard Worker "27e97f946766331795886f4de04c5594", "53ab15974b049111fb596c5168ec7e3f",
405*fb1b10abSAndroid Build Coastguard Worker "f0b640bb176fbe4584cf3d32a9b0320a", "729783ca909e03afd4b47111c80d967b",
406*fb1b10abSAndroid Build Coastguard Worker "fbf1c30793d9f32812e4d9f905d53530", "293fc903254a33754133314c6cdba81f",
407*fb1b10abSAndroid Build Coastguard Worker "f8074d704233e73dfd35b458c6092374", "aa6363d08544a1ec4da33d7a0be5640d",
408*fb1b10abSAndroid Build Coastguard Worker "462abcfdfa3d087bb33c9a88f2aec491", "863eab65d22550dd44a2397277c1ec71",
409*fb1b10abSAndroid Build Coastguard Worker "23d61df1574d0fa308f9731811047c4b"
410*fb1b10abSAndroid Build Coastguard Worker };
411*fb1b10abSAndroid Build Coastguard Worker TestHighbdIntraPred("Intra4", pred_funcs, kSignatures, 4);
412*fb1b10abSAndroid Build Coastguard Worker }
413*fb1b10abSAndroid Build Coastguard Worker
TestHighbdIntraPred8(VpxHighbdPredFunc const * pred_funcs)414*fb1b10abSAndroid Build Coastguard Worker void TestHighbdIntraPred8(VpxHighbdPredFunc const *pred_funcs) {
415*fb1b10abSAndroid Build Coastguard Worker static const char *const kSignatures[kNumVp9IntraPredFuncs] = {
416*fb1b10abSAndroid Build Coastguard Worker "03da8829fe94663047fd108c5fcaa71d", "ecdb37b8120a2d3a4c706b016bd1bfd7",
417*fb1b10abSAndroid Build Coastguard Worker "1d4543ed8d2b9368cb96898095fe8a75", "f791c9a67b913cbd82d9da8ecede30e2",
418*fb1b10abSAndroid Build Coastguard Worker "065c70646f4dbaff913282f55a45a441", "51f87123616662ef7c35691497dfd0ba",
419*fb1b10abSAndroid Build Coastguard Worker "2a5b0131ef4716f098ee65e6df01e3dd", "9ffe186a6bc7db95275f1bbddd6f7aba",
420*fb1b10abSAndroid Build Coastguard Worker "a3258a2eae2e2bd55cb8f71351b22998", "8d909f0a2066e39b3216092c6289ece4",
421*fb1b10abSAndroid Build Coastguard Worker "d183abb30b9f24c886a0517e991b22c7", "702a42fe4c7d665dc561b2aeeb60f311",
422*fb1b10abSAndroid Build Coastguard Worker "7b5dbbbe7ae3a4ac2948731600bde5d6"
423*fb1b10abSAndroid Build Coastguard Worker };
424*fb1b10abSAndroid Build Coastguard Worker TestHighbdIntraPred("Intra8", pred_funcs, kSignatures, 8);
425*fb1b10abSAndroid Build Coastguard Worker }
426*fb1b10abSAndroid Build Coastguard Worker
TestHighbdIntraPred16(VpxHighbdPredFunc const * pred_funcs)427*fb1b10abSAndroid Build Coastguard Worker void TestHighbdIntraPred16(VpxHighbdPredFunc const *pred_funcs) {
428*fb1b10abSAndroid Build Coastguard Worker static const char *const kSignatures[kNumVp9IntraPredFuncs] = {
429*fb1b10abSAndroid Build Coastguard Worker "e33cb3f56a878e2fddb1b2fc51cdd275", "c7bff6f04b6052c8ab335d726dbbd52d",
430*fb1b10abSAndroid Build Coastguard Worker "d0b0b47b654a9bcc5c6008110a44589b", "78f5da7b10b2b9ab39f114a33b6254e9",
431*fb1b10abSAndroid Build Coastguard Worker "c78e31d23831abb40d6271a318fdd6f3", "90d1347f4ec9198a0320daecb6ff90b8",
432*fb1b10abSAndroid Build Coastguard Worker "d2c623746cbb64a0c9e29c10f2c57041", "cf28bd387b81ad3e5f1a1c779a4b70a0",
433*fb1b10abSAndroid Build Coastguard Worker "24c304330431ddeaf630f6ce94af2eac", "91a329798036bf64e8e00a87b131b8b1",
434*fb1b10abSAndroid Build Coastguard Worker "d39111f22885307f920796a42084c872", "e2e702f7250ece98dd8f3f2854c31eeb",
435*fb1b10abSAndroid Build Coastguard Worker "e2fb05b01eb8b88549e85641d8ce5b59"
436*fb1b10abSAndroid Build Coastguard Worker };
437*fb1b10abSAndroid Build Coastguard Worker TestHighbdIntraPred("Intra16", pred_funcs, kSignatures, 16);
438*fb1b10abSAndroid Build Coastguard Worker }
439*fb1b10abSAndroid Build Coastguard Worker
TestHighbdIntraPred32(VpxHighbdPredFunc const * pred_funcs)440*fb1b10abSAndroid Build Coastguard Worker void TestHighbdIntraPred32(VpxHighbdPredFunc const *pred_funcs) {
441*fb1b10abSAndroid Build Coastguard Worker static const char *const kSignatures[kNumVp9IntraPredFuncs] = {
442*fb1b10abSAndroid Build Coastguard Worker "a3e8056ba7e36628cce4917cd956fedd", "cc7d3024fe8748b512407edee045377e",
443*fb1b10abSAndroid Build Coastguard Worker "2aab0a0f330a1d3e19b8ecb8f06387a3", "a547bc3fb7b06910bf3973122a426661",
444*fb1b10abSAndroid Build Coastguard Worker "26f712514da95042f93d6e8dc8e431dc", "bb08c6e16177081daa3d936538dbc2e3",
445*fb1b10abSAndroid Build Coastguard Worker "8f031af3e2650e89620d8d2c3a843d8b", "42867c8553285e94ee8e4df7abafbda8",
446*fb1b10abSAndroid Build Coastguard Worker "6496bdee96100667833f546e1be3d640", "2ebfa25bf981377e682e580208504300",
447*fb1b10abSAndroid Build Coastguard Worker "3e8ae52fd1f607f348aa4cb436c71ab7", "3d4efe797ca82193613696753ea624c4",
448*fb1b10abSAndroid Build Coastguard Worker "cb8aab6d372278f3131e8d99efde02d9"
449*fb1b10abSAndroid Build Coastguard Worker };
450*fb1b10abSAndroid Build Coastguard Worker TestHighbdIntraPred("Intra32", pred_funcs, kSignatures, 32);
451*fb1b10abSAndroid Build Coastguard Worker }
452*fb1b10abSAndroid Build Coastguard Worker
453*fb1b10abSAndroid Build Coastguard Worker } // namespace
454*fb1b10abSAndroid Build Coastguard Worker
455*fb1b10abSAndroid Build Coastguard Worker // Defines a test case for |arch| (e.g., C, SSE2, ...) passing the predictors
456*fb1b10abSAndroid Build Coastguard Worker // to |test_func|. The test name is 'arch.test_func', e.g., C.TestIntraPred4.
457*fb1b10abSAndroid Build Coastguard Worker #define HIGHBD_INTRA_PRED_TEST(arch, test_func, dc, dc_left, dc_top, dc_128, \
458*fb1b10abSAndroid Build Coastguard Worker v, h, d45, d135, d117, d153, d207, d63, tm) \
459*fb1b10abSAndroid Build Coastguard Worker TEST(arch, test_func) { \
460*fb1b10abSAndroid Build Coastguard Worker static const VpxHighbdPredFunc vpx_intra_pred[] = { \
461*fb1b10abSAndroid Build Coastguard Worker dc, dc_left, dc_top, dc_128, v, h, d45, d135, d117, d153, d207, d63, tm \
462*fb1b10abSAndroid Build Coastguard Worker }; \
463*fb1b10abSAndroid Build Coastguard Worker test_func(vpx_intra_pred); \
464*fb1b10abSAndroid Build Coastguard Worker }
465*fb1b10abSAndroid Build Coastguard Worker
466*fb1b10abSAndroid Build Coastguard Worker // -----------------------------------------------------------------------------
467*fb1b10abSAndroid Build Coastguard Worker
HIGHBD_INTRA_PRED_TEST(C,TestHighbdIntraPred4,vpx_highbd_dc_predictor_4x4_c,vpx_highbd_dc_left_predictor_4x4_c,vpx_highbd_dc_top_predictor_4x4_c,vpx_highbd_dc_128_predictor_4x4_c,vpx_highbd_v_predictor_4x4_c,vpx_highbd_h_predictor_4x4_c,vpx_highbd_d45_predictor_4x4_c,vpx_highbd_d135_predictor_4x4_c,vpx_highbd_d117_predictor_4x4_c,vpx_highbd_d153_predictor_4x4_c,vpx_highbd_d207_predictor_4x4_c,vpx_highbd_d63_predictor_4x4_c,vpx_highbd_tm_predictor_4x4_c)468*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
469*fb1b10abSAndroid Build Coastguard Worker C, TestHighbdIntraPred4, vpx_highbd_dc_predictor_4x4_c,
470*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_4x4_c, vpx_highbd_dc_top_predictor_4x4_c,
471*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_4x4_c, vpx_highbd_v_predictor_4x4_c,
472*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_4x4_c, vpx_highbd_d45_predictor_4x4_c,
473*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_4x4_c, vpx_highbd_d117_predictor_4x4_c,
474*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_4x4_c, vpx_highbd_d207_predictor_4x4_c,
475*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_4x4_c, vpx_highbd_tm_predictor_4x4_c)
476*fb1b10abSAndroid Build Coastguard Worker
477*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
478*fb1b10abSAndroid Build Coastguard Worker C, TestHighbdIntraPred8, vpx_highbd_dc_predictor_8x8_c,
479*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_8x8_c, vpx_highbd_dc_top_predictor_8x8_c,
480*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_8x8_c, vpx_highbd_v_predictor_8x8_c,
481*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_8x8_c, vpx_highbd_d45_predictor_8x8_c,
482*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_8x8_c, vpx_highbd_d117_predictor_8x8_c,
483*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_8x8_c, vpx_highbd_d207_predictor_8x8_c,
484*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_8x8_c, vpx_highbd_tm_predictor_8x8_c)
485*fb1b10abSAndroid Build Coastguard Worker
486*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
487*fb1b10abSAndroid Build Coastguard Worker C, TestHighbdIntraPred16, vpx_highbd_dc_predictor_16x16_c,
488*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_16x16_c, vpx_highbd_dc_top_predictor_16x16_c,
489*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_16x16_c, vpx_highbd_v_predictor_16x16_c,
490*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_16x16_c, vpx_highbd_d45_predictor_16x16_c,
491*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_16x16_c, vpx_highbd_d117_predictor_16x16_c,
492*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_16x16_c, vpx_highbd_d207_predictor_16x16_c,
493*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_16x16_c, vpx_highbd_tm_predictor_16x16_c)
494*fb1b10abSAndroid Build Coastguard Worker
495*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
496*fb1b10abSAndroid Build Coastguard Worker C, TestHighbdIntraPred32, vpx_highbd_dc_predictor_32x32_c,
497*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_32x32_c, vpx_highbd_dc_top_predictor_32x32_c,
498*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_32x32_c, vpx_highbd_v_predictor_32x32_c,
499*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_32x32_c, vpx_highbd_d45_predictor_32x32_c,
500*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_32x32_c, vpx_highbd_d117_predictor_32x32_c,
501*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_32x32_c, vpx_highbd_d207_predictor_32x32_c,
502*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_32x32_c, vpx_highbd_tm_predictor_32x32_c)
503*fb1b10abSAndroid Build Coastguard Worker
504*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SSE2
505*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
506*fb1b10abSAndroid Build Coastguard Worker SSE2, TestHighbdIntraPred4, vpx_highbd_dc_predictor_4x4_sse2,
507*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_4x4_sse2, vpx_highbd_dc_top_predictor_4x4_sse2,
508*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_4x4_sse2, vpx_highbd_v_predictor_4x4_sse2,
509*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_4x4_sse2, nullptr,
510*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_4x4_sse2, vpx_highbd_d117_predictor_4x4_sse2,
511*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_4x4_sse2, vpx_highbd_d207_predictor_4x4_sse2,
512*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_4x4_sse2, vpx_highbd_tm_predictor_4x4_c)
513*fb1b10abSAndroid Build Coastguard Worker
514*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
515*fb1b10abSAndroid Build Coastguard Worker SSE2, TestHighbdIntraPred8, vpx_highbd_dc_predictor_8x8_sse2,
516*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_8x8_sse2, vpx_highbd_dc_top_predictor_8x8_sse2,
517*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_8x8_sse2, vpx_highbd_v_predictor_8x8_sse2,
518*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_8x8_sse2, nullptr, nullptr, nullptr, nullptr,
519*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, vpx_highbd_tm_predictor_8x8_sse2)
520*fb1b10abSAndroid Build Coastguard Worker
521*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(SSE2, TestHighbdIntraPred16,
522*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_predictor_16x16_sse2,
523*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_16x16_sse2,
524*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_top_predictor_16x16_sse2,
525*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_16x16_sse2,
526*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_v_predictor_16x16_sse2,
527*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_16x16_sse2, nullptr, nullptr,
528*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr,
529*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_tm_predictor_16x16_sse2)
530*fb1b10abSAndroid Build Coastguard Worker
531*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(SSE2, TestHighbdIntraPred32,
532*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_predictor_32x32_sse2,
533*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_32x32_sse2,
534*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_top_predictor_32x32_sse2,
535*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_32x32_sse2,
536*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_v_predictor_32x32_sse2,
537*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_32x32_sse2, nullptr, nullptr,
538*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr,
539*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_tm_predictor_32x32_sse2)
540*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SSE2
541*fb1b10abSAndroid Build Coastguard Worker
542*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SSSE3
543*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(SSSE3, TestHighbdIntraPred4, nullptr, nullptr, nullptr,
544*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr,
545*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d45_predictor_4x4_ssse3, nullptr, nullptr,
546*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr, nullptr)
547*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(SSSE3, TestHighbdIntraPred8, nullptr, nullptr, nullptr,
548*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr,
549*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d45_predictor_8x8_ssse3,
550*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_8x8_ssse3,
551*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d117_predictor_8x8_ssse3,
552*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_8x8_ssse3,
553*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d207_predictor_8x8_ssse3,
554*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_8x8_ssse3, nullptr)
555*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(SSSE3, TestHighbdIntraPred16, nullptr, nullptr, nullptr,
556*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr,
557*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d45_predictor_16x16_ssse3,
558*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_16x16_ssse3,
559*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d117_predictor_16x16_ssse3,
560*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_16x16_ssse3,
561*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d207_predictor_16x16_ssse3,
562*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_16x16_ssse3, nullptr)
563*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(SSSE3, TestHighbdIntraPred32, nullptr, nullptr, nullptr,
564*fb1b10abSAndroid Build Coastguard Worker nullptr, nullptr, nullptr,
565*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d45_predictor_32x32_ssse3,
566*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_32x32_ssse3,
567*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d117_predictor_32x32_ssse3,
568*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_32x32_ssse3,
569*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d207_predictor_32x32_ssse3,
570*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_32x32_ssse3, nullptr)
571*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SSSE3
572*fb1b10abSAndroid Build Coastguard Worker
573*fb1b10abSAndroid Build Coastguard Worker #if HAVE_NEON
574*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
575*fb1b10abSAndroid Build Coastguard Worker NEON, TestHighbdIntraPred4, vpx_highbd_dc_predictor_4x4_neon,
576*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_4x4_neon, vpx_highbd_dc_top_predictor_4x4_neon,
577*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_4x4_neon, vpx_highbd_v_predictor_4x4_neon,
578*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_4x4_neon, vpx_highbd_d45_predictor_4x4_neon,
579*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_4x4_neon, vpx_highbd_d117_predictor_4x4_neon,
580*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_4x4_neon, vpx_highbd_d207_predictor_4x4_neon,
581*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_4x4_neon, vpx_highbd_tm_predictor_4x4_neon)
582*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
583*fb1b10abSAndroid Build Coastguard Worker NEON, TestHighbdIntraPred8, vpx_highbd_dc_predictor_8x8_neon,
584*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_8x8_neon, vpx_highbd_dc_top_predictor_8x8_neon,
585*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_8x8_neon, vpx_highbd_v_predictor_8x8_neon,
586*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_8x8_neon, vpx_highbd_d45_predictor_8x8_neon,
587*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_8x8_neon, vpx_highbd_d117_predictor_8x8_neon,
588*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_8x8_neon, vpx_highbd_d207_predictor_8x8_neon,
589*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_8x8_neon, vpx_highbd_tm_predictor_8x8_neon)
590*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
591*fb1b10abSAndroid Build Coastguard Worker NEON, TestHighbdIntraPred16, vpx_highbd_dc_predictor_16x16_neon,
592*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_16x16_neon,
593*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_top_predictor_16x16_neon,
594*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_16x16_neon, vpx_highbd_v_predictor_16x16_neon,
595*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_16x16_neon, vpx_highbd_d45_predictor_16x16_neon,
596*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_16x16_neon, vpx_highbd_d117_predictor_16x16_neon,
597*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_16x16_neon, vpx_highbd_d207_predictor_16x16_neon,
598*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_16x16_neon, vpx_highbd_tm_predictor_16x16_neon)
599*fb1b10abSAndroid Build Coastguard Worker HIGHBD_INTRA_PRED_TEST(
600*fb1b10abSAndroid Build Coastguard Worker NEON, TestHighbdIntraPred32, vpx_highbd_dc_predictor_32x32_neon,
601*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_left_predictor_32x32_neon,
602*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_top_predictor_32x32_neon,
603*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_dc_128_predictor_32x32_neon, vpx_highbd_v_predictor_32x32_neon,
604*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_h_predictor_32x32_neon, vpx_highbd_d45_predictor_32x32_neon,
605*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d135_predictor_32x32_neon, vpx_highbd_d117_predictor_32x32_neon,
606*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d153_predictor_32x32_neon, vpx_highbd_d207_predictor_32x32_neon,
607*fb1b10abSAndroid Build Coastguard Worker vpx_highbd_d63_predictor_32x32_neon, vpx_highbd_tm_predictor_32x32_neon)
608*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_NEON
609*fb1b10abSAndroid Build Coastguard Worker
610*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
611*fb1b10abSAndroid Build Coastguard Worker
612*fb1b10abSAndroid Build Coastguard Worker int main(int argc, char **argv) {
613*fb1b10abSAndroid Build Coastguard Worker ::testing::InitGoogleTest(&argc, argv);
614*fb1b10abSAndroid Build Coastguard Worker ::libvpx_test::init_vpx_test();
615*fb1b10abSAndroid Build Coastguard Worker return RUN_ALL_TESTS();
616*fb1b10abSAndroid Build Coastguard Worker }
617