1*fb1b10abSAndroid Build Coastguard Worker /*
2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2012 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
11*fb1b10abSAndroid Build Coastguard Worker #include <cstdlib>
12*fb1b10abSAndroid Build Coastguard Worker #include <new>
13*fb1b10abSAndroid Build Coastguard Worker
14*fb1b10abSAndroid Build Coastguard Worker #include "gtest/gtest.h"
15*fb1b10abSAndroid Build Coastguard Worker
16*fb1b10abSAndroid Build Coastguard Worker #include "./vpx_config.h"
17*fb1b10abSAndroid Build Coastguard Worker #include "./vpx_dsp_rtcd.h"
18*fb1b10abSAndroid Build Coastguard Worker #include "test/acm_random.h"
19*fb1b10abSAndroid Build Coastguard Worker #include "test/clear_system_state.h"
20*fb1b10abSAndroid Build Coastguard Worker #include "test/register_state_check.h"
21*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_codec.h"
22*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_integer.h"
23*fb1b10abSAndroid Build Coastguard Worker #include "vpx_dsp/variance.h"
24*fb1b10abSAndroid Build Coastguard Worker #include "vpx_mem/vpx_mem.h"
25*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/mem.h"
26*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/vpx_timer.h"
27*fb1b10abSAndroid Build Coastguard Worker
28*fb1b10abSAndroid Build Coastguard Worker namespace {
29*fb1b10abSAndroid Build Coastguard Worker
30*fb1b10abSAndroid Build Coastguard Worker typedef unsigned int (*Get4x4SseFunc)(const uint8_t *a, int a_stride,
31*fb1b10abSAndroid Build Coastguard Worker const uint8_t *b, int b_stride);
32*fb1b10abSAndroid Build Coastguard Worker typedef void (*GetVarianceFunc)(const uint8_t *src_ptr, int src_stride,
33*fb1b10abSAndroid Build Coastguard Worker const uint8_t *ref_ptr, int ref_stride,
34*fb1b10abSAndroid Build Coastguard Worker uint32_t *sse, int *sum);
35*fb1b10abSAndroid Build Coastguard Worker typedef unsigned int (*SumOfSquaresFunction)(const int16_t *src);
36*fb1b10abSAndroid Build Coastguard Worker
37*fb1b10abSAndroid Build Coastguard Worker using libvpx_test::ACMRandom;
38*fb1b10abSAndroid Build Coastguard Worker
39*fb1b10abSAndroid Build Coastguard Worker // Truncate high bit depth results by downshifting (with rounding) by:
40*fb1b10abSAndroid Build Coastguard Worker // 2 * (bit_depth - 8) for sse
41*fb1b10abSAndroid Build Coastguard Worker // (bit_depth - 8) for se
RoundHighBitDepth(int bit_depth,int64_t * se,uint64_t * sse)42*fb1b10abSAndroid Build Coastguard Worker static void RoundHighBitDepth(int bit_depth, int64_t *se, uint64_t *sse) {
43*fb1b10abSAndroid Build Coastguard Worker switch (bit_depth) {
44*fb1b10abSAndroid Build Coastguard Worker case VPX_BITS_12:
45*fb1b10abSAndroid Build Coastguard Worker *sse = (*sse + 128) >> 8;
46*fb1b10abSAndroid Build Coastguard Worker *se = (*se + 8) >> 4;
47*fb1b10abSAndroid Build Coastguard Worker break;
48*fb1b10abSAndroid Build Coastguard Worker case VPX_BITS_10:
49*fb1b10abSAndroid Build Coastguard Worker *sse = (*sse + 8) >> 4;
50*fb1b10abSAndroid Build Coastguard Worker *se = (*se + 2) >> 2;
51*fb1b10abSAndroid Build Coastguard Worker break;
52*fb1b10abSAndroid Build Coastguard Worker case VPX_BITS_8:
53*fb1b10abSAndroid Build Coastguard Worker default: break;
54*fb1b10abSAndroid Build Coastguard Worker }
55*fb1b10abSAndroid Build Coastguard Worker }
56*fb1b10abSAndroid Build Coastguard Worker
mb_ss_ref(const int16_t * src)57*fb1b10abSAndroid Build Coastguard Worker static unsigned int mb_ss_ref(const int16_t *src) {
58*fb1b10abSAndroid Build Coastguard Worker unsigned int res = 0;
59*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 256; ++i) {
60*fb1b10abSAndroid Build Coastguard Worker res += src[i] * src[i];
61*fb1b10abSAndroid Build Coastguard Worker }
62*fb1b10abSAndroid Build Coastguard Worker return res;
63*fb1b10abSAndroid Build Coastguard Worker }
64*fb1b10abSAndroid Build Coastguard Worker
65*fb1b10abSAndroid Build Coastguard Worker /* Note:
66*fb1b10abSAndroid Build Coastguard Worker * Our codebase calculates the "diff" value in the variance algorithm by
67*fb1b10abSAndroid Build Coastguard Worker * (src - ref).
68*fb1b10abSAndroid Build Coastguard Worker */
variance(const uint8_t * src,int src_stride,const uint8_t * ref,int ref_stride,int w,int h,bool use_high_bit_depth_,uint64_t * sse,int64_t * se,vpx_bit_depth_t bit_depth)69*fb1b10abSAndroid Build Coastguard Worker static void variance(const uint8_t *src, int src_stride, const uint8_t *ref,
70*fb1b10abSAndroid Build Coastguard Worker int ref_stride, int w, int h, bool use_high_bit_depth_,
71*fb1b10abSAndroid Build Coastguard Worker uint64_t *sse, int64_t *se, vpx_bit_depth_t bit_depth) {
72*fb1b10abSAndroid Build Coastguard Worker int64_t se_long = 0;
73*fb1b10abSAndroid Build Coastguard Worker uint64_t sse_long = 0;
74*fb1b10abSAndroid Build Coastguard Worker
75*fb1b10abSAndroid Build Coastguard Worker for (int y = 0; y < h; y++) {
76*fb1b10abSAndroid Build Coastguard Worker for (int x = 0; x < w; x++) {
77*fb1b10abSAndroid Build Coastguard Worker int diff = 0;
78*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth_) {
79*fb1b10abSAndroid Build Coastguard Worker diff = src[y * src_stride + x] - ref[y * ref_stride + x];
80*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
81*fb1b10abSAndroid Build Coastguard Worker } else {
82*fb1b10abSAndroid Build Coastguard Worker diff = CONVERT_TO_SHORTPTR(src)[y * src_stride + x] -
83*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(ref)[y * ref_stride + x];
84*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
85*fb1b10abSAndroid Build Coastguard Worker }
86*fb1b10abSAndroid Build Coastguard Worker se_long += diff;
87*fb1b10abSAndroid Build Coastguard Worker sse_long += diff * diff;
88*fb1b10abSAndroid Build Coastguard Worker }
89*fb1b10abSAndroid Build Coastguard Worker }
90*fb1b10abSAndroid Build Coastguard Worker
91*fb1b10abSAndroid Build Coastguard Worker RoundHighBitDepth(bit_depth, &se_long, &sse_long);
92*fb1b10abSAndroid Build Coastguard Worker
93*fb1b10abSAndroid Build Coastguard Worker *sse = sse_long;
94*fb1b10abSAndroid Build Coastguard Worker *se = se_long;
95*fb1b10abSAndroid Build Coastguard Worker }
96*fb1b10abSAndroid Build Coastguard Worker
get_variance_ref(const uint8_t * src,int src_stride,const uint8_t * ref,int ref_stride,int l2w,int l2h,bool use_high_bit_depth_,uint32_t * sse,int * se,vpx_bit_depth_t bit_depth)97*fb1b10abSAndroid Build Coastguard Worker static void get_variance_ref(const uint8_t *src, int src_stride,
98*fb1b10abSAndroid Build Coastguard Worker const uint8_t *ref, int ref_stride, int l2w,
99*fb1b10abSAndroid Build Coastguard Worker int l2h, bool use_high_bit_depth_, uint32_t *sse,
100*fb1b10abSAndroid Build Coastguard Worker int *se, vpx_bit_depth_t bit_depth) {
101*fb1b10abSAndroid Build Coastguard Worker const int w = 1 << l2w;
102*fb1b10abSAndroid Build Coastguard Worker const int h = 1 << l2h;
103*fb1b10abSAndroid Build Coastguard Worker int64_t se_long = 0;
104*fb1b10abSAndroid Build Coastguard Worker uint64_t sse_long = 0;
105*fb1b10abSAndroid Build Coastguard Worker
106*fb1b10abSAndroid Build Coastguard Worker variance(src, src_stride, ref, ref_stride, w, h, use_high_bit_depth_,
107*fb1b10abSAndroid Build Coastguard Worker &sse_long, &se_long, bit_depth);
108*fb1b10abSAndroid Build Coastguard Worker
109*fb1b10abSAndroid Build Coastguard Worker *sse = static_cast<uint32_t>(sse_long);
110*fb1b10abSAndroid Build Coastguard Worker *se = static_cast<int>(se_long);
111*fb1b10abSAndroid Build Coastguard Worker }
112*fb1b10abSAndroid Build Coastguard Worker
variance_ref(const uint8_t * src,const uint8_t * ref,int l2w,int l2h,int src_stride,int ref_stride,uint32_t * sse_ptr,bool use_high_bit_depth_,vpx_bit_depth_t bit_depth)113*fb1b10abSAndroid Build Coastguard Worker static uint32_t variance_ref(const uint8_t *src, const uint8_t *ref, int l2w,
114*fb1b10abSAndroid Build Coastguard Worker int l2h, int src_stride, int ref_stride,
115*fb1b10abSAndroid Build Coastguard Worker uint32_t *sse_ptr, bool use_high_bit_depth_,
116*fb1b10abSAndroid Build Coastguard Worker vpx_bit_depth_t bit_depth) {
117*fb1b10abSAndroid Build Coastguard Worker const int w = 1 << l2w;
118*fb1b10abSAndroid Build Coastguard Worker const int h = 1 << l2h;
119*fb1b10abSAndroid Build Coastguard Worker int64_t se_long = 0;
120*fb1b10abSAndroid Build Coastguard Worker uint64_t sse_long = 0;
121*fb1b10abSAndroid Build Coastguard Worker
122*fb1b10abSAndroid Build Coastguard Worker variance(src, src_stride, ref, ref_stride, w, h, use_high_bit_depth_,
123*fb1b10abSAndroid Build Coastguard Worker &sse_long, &se_long, bit_depth);
124*fb1b10abSAndroid Build Coastguard Worker
125*fb1b10abSAndroid Build Coastguard Worker *sse_ptr = static_cast<uint32_t>(sse_long);
126*fb1b10abSAndroid Build Coastguard Worker return static_cast<uint32_t>(
127*fb1b10abSAndroid Build Coastguard Worker sse_long - ((static_cast<int64_t>(se_long) * se_long) >> (l2w + l2h)));
128*fb1b10abSAndroid Build Coastguard Worker }
129*fb1b10abSAndroid Build Coastguard Worker
130*fb1b10abSAndroid Build Coastguard Worker /* The subpel reference functions differ from the codec version in one aspect:
131*fb1b10abSAndroid Build Coastguard Worker * they calculate the bilinear factors directly instead of using a lookup table
132*fb1b10abSAndroid Build Coastguard Worker * and therefore upshift xoff and yoff by 1. Only every other calculated value
133*fb1b10abSAndroid Build Coastguard Worker * is used so the codec version shrinks the table to save space and maintain
134*fb1b10abSAndroid Build Coastguard Worker * compatibility with vp8.
135*fb1b10abSAndroid Build Coastguard Worker */
subpel_variance_ref(const uint8_t * ref,const uint8_t * src,int l2w,int l2h,int xoff,int yoff,uint32_t * sse_ptr,bool use_high_bit_depth_,vpx_bit_depth_t bit_depth)136*fb1b10abSAndroid Build Coastguard Worker static uint32_t subpel_variance_ref(const uint8_t *ref, const uint8_t *src,
137*fb1b10abSAndroid Build Coastguard Worker int l2w, int l2h, int xoff, int yoff,
138*fb1b10abSAndroid Build Coastguard Worker uint32_t *sse_ptr, bool use_high_bit_depth_,
139*fb1b10abSAndroid Build Coastguard Worker vpx_bit_depth_t bit_depth) {
140*fb1b10abSAndroid Build Coastguard Worker int64_t se = 0;
141*fb1b10abSAndroid Build Coastguard Worker uint64_t sse = 0;
142*fb1b10abSAndroid Build Coastguard Worker const int w = 1 << l2w;
143*fb1b10abSAndroid Build Coastguard Worker const int h = 1 << l2h;
144*fb1b10abSAndroid Build Coastguard Worker
145*fb1b10abSAndroid Build Coastguard Worker xoff <<= 1;
146*fb1b10abSAndroid Build Coastguard Worker yoff <<= 1;
147*fb1b10abSAndroid Build Coastguard Worker
148*fb1b10abSAndroid Build Coastguard Worker for (int y = 0; y < h; y++) {
149*fb1b10abSAndroid Build Coastguard Worker for (int x = 0; x < w; x++) {
150*fb1b10abSAndroid Build Coastguard Worker // Bilinear interpolation at a 16th pel step.
151*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth_) {
152*fb1b10abSAndroid Build Coastguard Worker const int a1 = ref[(w + 1) * (y + 0) + x + 0];
153*fb1b10abSAndroid Build Coastguard Worker const int a2 = ref[(w + 1) * (y + 0) + x + 1];
154*fb1b10abSAndroid Build Coastguard Worker const int b1 = ref[(w + 1) * (y + 1) + x + 0];
155*fb1b10abSAndroid Build Coastguard Worker const int b2 = ref[(w + 1) * (y + 1) + x + 1];
156*fb1b10abSAndroid Build Coastguard Worker const int a = a1 + (((a2 - a1) * xoff + 8) >> 4);
157*fb1b10abSAndroid Build Coastguard Worker const int b = b1 + (((b2 - b1) * xoff + 8) >> 4);
158*fb1b10abSAndroid Build Coastguard Worker const int r = a + (((b - a) * yoff + 8) >> 4);
159*fb1b10abSAndroid Build Coastguard Worker const int diff = r - src[w * y + x];
160*fb1b10abSAndroid Build Coastguard Worker se += diff;
161*fb1b10abSAndroid Build Coastguard Worker sse += diff * diff;
162*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
163*fb1b10abSAndroid Build Coastguard Worker } else {
164*fb1b10abSAndroid Build Coastguard Worker uint16_t *ref16 = CONVERT_TO_SHORTPTR(ref);
165*fb1b10abSAndroid Build Coastguard Worker uint16_t *src16 = CONVERT_TO_SHORTPTR(src);
166*fb1b10abSAndroid Build Coastguard Worker const int a1 = ref16[(w + 1) * (y + 0) + x + 0];
167*fb1b10abSAndroid Build Coastguard Worker const int a2 = ref16[(w + 1) * (y + 0) + x + 1];
168*fb1b10abSAndroid Build Coastguard Worker const int b1 = ref16[(w + 1) * (y + 1) + x + 0];
169*fb1b10abSAndroid Build Coastguard Worker const int b2 = ref16[(w + 1) * (y + 1) + x + 1];
170*fb1b10abSAndroid Build Coastguard Worker const int a = a1 + (((a2 - a1) * xoff + 8) >> 4);
171*fb1b10abSAndroid Build Coastguard Worker const int b = b1 + (((b2 - b1) * xoff + 8) >> 4);
172*fb1b10abSAndroid Build Coastguard Worker const int r = a + (((b - a) * yoff + 8) >> 4);
173*fb1b10abSAndroid Build Coastguard Worker const int diff = r - src16[w * y + x];
174*fb1b10abSAndroid Build Coastguard Worker se += diff;
175*fb1b10abSAndroid Build Coastguard Worker sse += diff * diff;
176*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
177*fb1b10abSAndroid Build Coastguard Worker }
178*fb1b10abSAndroid Build Coastguard Worker }
179*fb1b10abSAndroid Build Coastguard Worker }
180*fb1b10abSAndroid Build Coastguard Worker RoundHighBitDepth(bit_depth, &se, &sse);
181*fb1b10abSAndroid Build Coastguard Worker *sse_ptr = static_cast<uint32_t>(sse);
182*fb1b10abSAndroid Build Coastguard Worker return static_cast<uint32_t>(
183*fb1b10abSAndroid Build Coastguard Worker sse - ((static_cast<int64_t>(se) * se) >> (l2w + l2h)));
184*fb1b10abSAndroid Build Coastguard Worker }
185*fb1b10abSAndroid Build Coastguard Worker
subpel_avg_variance_ref(const uint8_t * ref,const uint8_t * src,const uint8_t * second_pred,int l2w,int l2h,int xoff,int yoff,uint32_t * sse_ptr,bool use_high_bit_depth,vpx_bit_depth_t bit_depth)186*fb1b10abSAndroid Build Coastguard Worker static uint32_t subpel_avg_variance_ref(const uint8_t *ref, const uint8_t *src,
187*fb1b10abSAndroid Build Coastguard Worker const uint8_t *second_pred, int l2w,
188*fb1b10abSAndroid Build Coastguard Worker int l2h, int xoff, int yoff,
189*fb1b10abSAndroid Build Coastguard Worker uint32_t *sse_ptr,
190*fb1b10abSAndroid Build Coastguard Worker bool use_high_bit_depth,
191*fb1b10abSAndroid Build Coastguard Worker vpx_bit_depth_t bit_depth) {
192*fb1b10abSAndroid Build Coastguard Worker int64_t se = 0;
193*fb1b10abSAndroid Build Coastguard Worker uint64_t sse = 0;
194*fb1b10abSAndroid Build Coastguard Worker const int w = 1 << l2w;
195*fb1b10abSAndroid Build Coastguard Worker const int h = 1 << l2h;
196*fb1b10abSAndroid Build Coastguard Worker
197*fb1b10abSAndroid Build Coastguard Worker xoff <<= 1;
198*fb1b10abSAndroid Build Coastguard Worker yoff <<= 1;
199*fb1b10abSAndroid Build Coastguard Worker
200*fb1b10abSAndroid Build Coastguard Worker for (int y = 0; y < h; y++) {
201*fb1b10abSAndroid Build Coastguard Worker for (int x = 0; x < w; x++) {
202*fb1b10abSAndroid Build Coastguard Worker // bilinear interpolation at a 16th pel step
203*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth) {
204*fb1b10abSAndroid Build Coastguard Worker const int a1 = ref[(w + 1) * (y + 0) + x + 0];
205*fb1b10abSAndroid Build Coastguard Worker const int a2 = ref[(w + 1) * (y + 0) + x + 1];
206*fb1b10abSAndroid Build Coastguard Worker const int b1 = ref[(w + 1) * (y + 1) + x + 0];
207*fb1b10abSAndroid Build Coastguard Worker const int b2 = ref[(w + 1) * (y + 1) + x + 1];
208*fb1b10abSAndroid Build Coastguard Worker const int a = a1 + (((a2 - a1) * xoff + 8) >> 4);
209*fb1b10abSAndroid Build Coastguard Worker const int b = b1 + (((b2 - b1) * xoff + 8) >> 4);
210*fb1b10abSAndroid Build Coastguard Worker const int r = a + (((b - a) * yoff + 8) >> 4);
211*fb1b10abSAndroid Build Coastguard Worker const int diff =
212*fb1b10abSAndroid Build Coastguard Worker ((r + second_pred[w * y + x] + 1) >> 1) - src[w * y + x];
213*fb1b10abSAndroid Build Coastguard Worker se += diff;
214*fb1b10abSAndroid Build Coastguard Worker sse += diff * diff;
215*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
216*fb1b10abSAndroid Build Coastguard Worker } else {
217*fb1b10abSAndroid Build Coastguard Worker const uint16_t *ref16 = CONVERT_TO_SHORTPTR(ref);
218*fb1b10abSAndroid Build Coastguard Worker const uint16_t *src16 = CONVERT_TO_SHORTPTR(src);
219*fb1b10abSAndroid Build Coastguard Worker const uint16_t *sec16 = CONVERT_TO_SHORTPTR(second_pred);
220*fb1b10abSAndroid Build Coastguard Worker const int a1 = ref16[(w + 1) * (y + 0) + x + 0];
221*fb1b10abSAndroid Build Coastguard Worker const int a2 = ref16[(w + 1) * (y + 0) + x + 1];
222*fb1b10abSAndroid Build Coastguard Worker const int b1 = ref16[(w + 1) * (y + 1) + x + 0];
223*fb1b10abSAndroid Build Coastguard Worker const int b2 = ref16[(w + 1) * (y + 1) + x + 1];
224*fb1b10abSAndroid Build Coastguard Worker const int a = a1 + (((a2 - a1) * xoff + 8) >> 4);
225*fb1b10abSAndroid Build Coastguard Worker const int b = b1 + (((b2 - b1) * xoff + 8) >> 4);
226*fb1b10abSAndroid Build Coastguard Worker const int r = a + (((b - a) * yoff + 8) >> 4);
227*fb1b10abSAndroid Build Coastguard Worker const int diff = ((r + sec16[w * y + x] + 1) >> 1) - src16[w * y + x];
228*fb1b10abSAndroid Build Coastguard Worker se += diff;
229*fb1b10abSAndroid Build Coastguard Worker sse += diff * diff;
230*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
231*fb1b10abSAndroid Build Coastguard Worker }
232*fb1b10abSAndroid Build Coastguard Worker }
233*fb1b10abSAndroid Build Coastguard Worker }
234*fb1b10abSAndroid Build Coastguard Worker RoundHighBitDepth(bit_depth, &se, &sse);
235*fb1b10abSAndroid Build Coastguard Worker *sse_ptr = static_cast<uint32_t>(sse);
236*fb1b10abSAndroid Build Coastguard Worker return static_cast<uint32_t>(
237*fb1b10abSAndroid Build Coastguard Worker sse - ((static_cast<int64_t>(se) * se) >> (l2w + l2h)));
238*fb1b10abSAndroid Build Coastguard Worker }
239*fb1b10abSAndroid Build Coastguard Worker
240*fb1b10abSAndroid Build Coastguard Worker ////////////////////////////////////////////////////////////////////////////////
241*fb1b10abSAndroid Build Coastguard Worker
242*fb1b10abSAndroid Build Coastguard Worker class SumOfSquaresTest : public ::testing::TestWithParam<SumOfSquaresFunction> {
243*fb1b10abSAndroid Build Coastguard Worker public:
SumOfSquaresTest()244*fb1b10abSAndroid Build Coastguard Worker SumOfSquaresTest() : func_(GetParam()) {}
245*fb1b10abSAndroid Build Coastguard Worker
~SumOfSquaresTest()246*fb1b10abSAndroid Build Coastguard Worker ~SumOfSquaresTest() override { libvpx_test::ClearSystemState(); }
247*fb1b10abSAndroid Build Coastguard Worker
248*fb1b10abSAndroid Build Coastguard Worker protected:
249*fb1b10abSAndroid Build Coastguard Worker void ConstTest();
250*fb1b10abSAndroid Build Coastguard Worker void RefTest();
251*fb1b10abSAndroid Build Coastguard Worker
252*fb1b10abSAndroid Build Coastguard Worker SumOfSquaresFunction func_;
253*fb1b10abSAndroid Build Coastguard Worker ACMRandom rnd_;
254*fb1b10abSAndroid Build Coastguard Worker };
255*fb1b10abSAndroid Build Coastguard Worker
ConstTest()256*fb1b10abSAndroid Build Coastguard Worker void SumOfSquaresTest::ConstTest() {
257*fb1b10abSAndroid Build Coastguard Worker int16_t mem[256];
258*fb1b10abSAndroid Build Coastguard Worker unsigned int res;
259*fb1b10abSAndroid Build Coastguard Worker for (int v = 0; v < 256; ++v) {
260*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 256; ++i) {
261*fb1b10abSAndroid Build Coastguard Worker mem[i] = v;
262*fb1b10abSAndroid Build Coastguard Worker }
263*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(res = func_(mem));
264*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(256u * (v * v), res);
265*fb1b10abSAndroid Build Coastguard Worker }
266*fb1b10abSAndroid Build Coastguard Worker }
267*fb1b10abSAndroid Build Coastguard Worker
RefTest()268*fb1b10abSAndroid Build Coastguard Worker void SumOfSquaresTest::RefTest() {
269*fb1b10abSAndroid Build Coastguard Worker int16_t mem[256];
270*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 100; ++i) {
271*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < 256; ++j) {
272*fb1b10abSAndroid Build Coastguard Worker mem[j] = rnd_.Rand8() - rnd_.Rand8();
273*fb1b10abSAndroid Build Coastguard Worker }
274*fb1b10abSAndroid Build Coastguard Worker
275*fb1b10abSAndroid Build Coastguard Worker const unsigned int expected = mb_ss_ref(mem);
276*fb1b10abSAndroid Build Coastguard Worker unsigned int res;
277*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(res = func_(mem));
278*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(expected, res);
279*fb1b10abSAndroid Build Coastguard Worker }
280*fb1b10abSAndroid Build Coastguard Worker }
281*fb1b10abSAndroid Build Coastguard Worker
282*fb1b10abSAndroid Build Coastguard Worker ////////////////////////////////////////////////////////////////////////////////
283*fb1b10abSAndroid Build Coastguard Worker // Encapsulating struct to store the function to test along with
284*fb1b10abSAndroid Build Coastguard Worker // some testing context.
285*fb1b10abSAndroid Build Coastguard Worker // Can be used for MSE, SSE, Variance, etc.
286*fb1b10abSAndroid Build Coastguard Worker
287*fb1b10abSAndroid Build Coastguard Worker template <typename Func>
288*fb1b10abSAndroid Build Coastguard Worker struct TestParams {
TestParams__anon6a7131f60111::TestParams289*fb1b10abSAndroid Build Coastguard Worker TestParams(int log2w = 0, int log2h = 0, Func function = nullptr,
290*fb1b10abSAndroid Build Coastguard Worker int bit_depth_value = 0)
291*fb1b10abSAndroid Build Coastguard Worker : log2width(log2w), log2height(log2h), func(function) {
292*fb1b10abSAndroid Build Coastguard Worker use_high_bit_depth = (bit_depth_value > 0);
293*fb1b10abSAndroid Build Coastguard Worker if (use_high_bit_depth) {
294*fb1b10abSAndroid Build Coastguard Worker bit_depth = static_cast<vpx_bit_depth_t>(bit_depth_value);
295*fb1b10abSAndroid Build Coastguard Worker } else {
296*fb1b10abSAndroid Build Coastguard Worker bit_depth = VPX_BITS_8;
297*fb1b10abSAndroid Build Coastguard Worker }
298*fb1b10abSAndroid Build Coastguard Worker width = 1 << log2width;
299*fb1b10abSAndroid Build Coastguard Worker height = 1 << log2height;
300*fb1b10abSAndroid Build Coastguard Worker block_size = width * height;
301*fb1b10abSAndroid Build Coastguard Worker mask = (1u << bit_depth) - 1;
302*fb1b10abSAndroid Build Coastguard Worker }
303*fb1b10abSAndroid Build Coastguard Worker
304*fb1b10abSAndroid Build Coastguard Worker int log2width, log2height;
305*fb1b10abSAndroid Build Coastguard Worker int width, height;
306*fb1b10abSAndroid Build Coastguard Worker int block_size;
307*fb1b10abSAndroid Build Coastguard Worker Func func;
308*fb1b10abSAndroid Build Coastguard Worker vpx_bit_depth_t bit_depth;
309*fb1b10abSAndroid Build Coastguard Worker bool use_high_bit_depth;
310*fb1b10abSAndroid Build Coastguard Worker uint32_t mask;
311*fb1b10abSAndroid Build Coastguard Worker };
312*fb1b10abSAndroid Build Coastguard Worker
313*fb1b10abSAndroid Build Coastguard Worker template <typename Func>
operator <<(std::ostream & os,const TestParams<Func> & p)314*fb1b10abSAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &os, const TestParams<Func> &p) {
315*fb1b10abSAndroid Build Coastguard Worker return os << "log2width/height:" << p.log2width << "/" << p.log2height
316*fb1b10abSAndroid Build Coastguard Worker << " function:" << reinterpret_cast<const void *>(p.func)
317*fb1b10abSAndroid Build Coastguard Worker << " bit-depth:" << p.bit_depth;
318*fb1b10abSAndroid Build Coastguard Worker }
319*fb1b10abSAndroid Build Coastguard Worker
320*fb1b10abSAndroid Build Coastguard Worker // Main class for testing a function type
321*fb1b10abSAndroid Build Coastguard Worker template <typename FunctionType>
322*fb1b10abSAndroid Build Coastguard Worker class MainTestClass
323*fb1b10abSAndroid Build Coastguard Worker : public ::testing::TestWithParam<TestParams<FunctionType> > {
324*fb1b10abSAndroid Build Coastguard Worker public:
SetUp()325*fb1b10abSAndroid Build Coastguard Worker void SetUp() override {
326*fb1b10abSAndroid Build Coastguard Worker params_ = this->GetParam();
327*fb1b10abSAndroid Build Coastguard Worker
328*fb1b10abSAndroid Build Coastguard Worker rnd_.Reset(ACMRandom::DeterministicSeed());
329*fb1b10abSAndroid Build Coastguard Worker const size_t unit =
330*fb1b10abSAndroid Build Coastguard Worker use_high_bit_depth() ? sizeof(uint16_t) : sizeof(uint8_t);
331*fb1b10abSAndroid Build Coastguard Worker src_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size() * unit));
332*fb1b10abSAndroid Build Coastguard Worker ref_ = new uint8_t[block_size() * unit];
333*fb1b10abSAndroid Build Coastguard Worker ASSERT_NE(src_, nullptr);
334*fb1b10abSAndroid Build Coastguard Worker ASSERT_NE(ref_, nullptr);
335*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
336*fb1b10abSAndroid Build Coastguard Worker if (use_high_bit_depth()) {
337*fb1b10abSAndroid Build Coastguard Worker // TODO(skal): remove!
338*fb1b10abSAndroid Build Coastguard Worker src_ = CONVERT_TO_BYTEPTR(src_);
339*fb1b10abSAndroid Build Coastguard Worker ref_ = CONVERT_TO_BYTEPTR(ref_);
340*fb1b10abSAndroid Build Coastguard Worker }
341*fb1b10abSAndroid Build Coastguard Worker #endif
342*fb1b10abSAndroid Build Coastguard Worker }
343*fb1b10abSAndroid Build Coastguard Worker
TearDown()344*fb1b10abSAndroid Build Coastguard Worker void TearDown() override {
345*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
346*fb1b10abSAndroid Build Coastguard Worker if (use_high_bit_depth()) {
347*fb1b10abSAndroid Build Coastguard Worker // TODO(skal): remove!
348*fb1b10abSAndroid Build Coastguard Worker src_ = reinterpret_cast<uint8_t *>(CONVERT_TO_SHORTPTR(src_));
349*fb1b10abSAndroid Build Coastguard Worker ref_ = reinterpret_cast<uint8_t *>(CONVERT_TO_SHORTPTR(ref_));
350*fb1b10abSAndroid Build Coastguard Worker }
351*fb1b10abSAndroid Build Coastguard Worker #endif
352*fb1b10abSAndroid Build Coastguard Worker
353*fb1b10abSAndroid Build Coastguard Worker vpx_free(src_);
354*fb1b10abSAndroid Build Coastguard Worker delete[] ref_;
355*fb1b10abSAndroid Build Coastguard Worker src_ = nullptr;
356*fb1b10abSAndroid Build Coastguard Worker ref_ = nullptr;
357*fb1b10abSAndroid Build Coastguard Worker libvpx_test::ClearSystemState();
358*fb1b10abSAndroid Build Coastguard Worker }
359*fb1b10abSAndroid Build Coastguard Worker
360*fb1b10abSAndroid Build Coastguard Worker protected:
361*fb1b10abSAndroid Build Coastguard Worker // We could sub-class MainTestClass into dedicated class for Variance
362*fb1b10abSAndroid Build Coastguard Worker // and MSE/SSE, but it involves a lot of 'this->xxx' dereferencing
363*fb1b10abSAndroid Build Coastguard Worker // to access top class fields xxx. That's cumbersome, so for now we'll just
364*fb1b10abSAndroid Build Coastguard Worker // implement the testing methods here:
365*fb1b10abSAndroid Build Coastguard Worker
366*fb1b10abSAndroid Build Coastguard Worker // Variance tests
367*fb1b10abSAndroid Build Coastguard Worker void ZeroTest();
368*fb1b10abSAndroid Build Coastguard Worker void RefTest();
369*fb1b10abSAndroid Build Coastguard Worker void RefStrideTest();
370*fb1b10abSAndroid Build Coastguard Worker void OneQuarterTest();
371*fb1b10abSAndroid Build Coastguard Worker void SpeedTest();
372*fb1b10abSAndroid Build Coastguard Worker
373*fb1b10abSAndroid Build Coastguard Worker // GetVariance tests
374*fb1b10abSAndroid Build Coastguard Worker void RefTestGetVar();
375*fb1b10abSAndroid Build Coastguard Worker
376*fb1b10abSAndroid Build Coastguard Worker // MSE/SSE tests
377*fb1b10abSAndroid Build Coastguard Worker void RefTestMse();
378*fb1b10abSAndroid Build Coastguard Worker void RefTestSse();
379*fb1b10abSAndroid Build Coastguard Worker void MaxTestMse();
380*fb1b10abSAndroid Build Coastguard Worker void MaxTestSse();
381*fb1b10abSAndroid Build Coastguard Worker
382*fb1b10abSAndroid Build Coastguard Worker protected:
383*fb1b10abSAndroid Build Coastguard Worker ACMRandom rnd_;
384*fb1b10abSAndroid Build Coastguard Worker uint8_t *src_;
385*fb1b10abSAndroid Build Coastguard Worker uint8_t *ref_;
386*fb1b10abSAndroid Build Coastguard Worker TestParams<FunctionType> params_;
387*fb1b10abSAndroid Build Coastguard Worker
388*fb1b10abSAndroid Build Coastguard Worker // some relay helpers
use_high_bit_depth() const389*fb1b10abSAndroid Build Coastguard Worker bool use_high_bit_depth() const { return params_.use_high_bit_depth; }
byte_shift() const390*fb1b10abSAndroid Build Coastguard Worker int byte_shift() const { return params_.bit_depth - 8; }
block_size() const391*fb1b10abSAndroid Build Coastguard Worker int block_size() const { return params_.block_size; }
width() const392*fb1b10abSAndroid Build Coastguard Worker int width() const { return params_.width; }
height() const393*fb1b10abSAndroid Build Coastguard Worker int height() const { return params_.height; }
mask() const394*fb1b10abSAndroid Build Coastguard Worker uint32_t mask() const { return params_.mask; }
395*fb1b10abSAndroid Build Coastguard Worker };
396*fb1b10abSAndroid Build Coastguard Worker
397*fb1b10abSAndroid Build Coastguard Worker ////////////////////////////////////////////////////////////////////////////////
398*fb1b10abSAndroid Build Coastguard Worker // Tests related to variance.
399*fb1b10abSAndroid Build Coastguard Worker
400*fb1b10abSAndroid Build Coastguard Worker template <typename VarianceFunctionType>
ZeroTest()401*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<VarianceFunctionType>::ZeroTest() {
402*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i <= 255; ++i) {
403*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
404*fb1b10abSAndroid Build Coastguard Worker memset(src_, i, block_size());
405*fb1b10abSAndroid Build Coastguard Worker } else {
406*fb1b10abSAndroid Build Coastguard Worker uint16_t *const src16 = CONVERT_TO_SHORTPTR(src_);
407*fb1b10abSAndroid Build Coastguard Worker for (int k = 0; k < block_size(); ++k) src16[k] = i << byte_shift();
408*fb1b10abSAndroid Build Coastguard Worker }
409*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j <= 255; ++j) {
410*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
411*fb1b10abSAndroid Build Coastguard Worker memset(ref_, j, block_size());
412*fb1b10abSAndroid Build Coastguard Worker } else {
413*fb1b10abSAndroid Build Coastguard Worker uint16_t *const ref16 = CONVERT_TO_SHORTPTR(ref_);
414*fb1b10abSAndroid Build Coastguard Worker for (int k = 0; k < block_size(); ++k) ref16[k] = j << byte_shift();
415*fb1b10abSAndroid Build Coastguard Worker }
416*fb1b10abSAndroid Build Coastguard Worker unsigned int sse, var;
417*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(
418*fb1b10abSAndroid Build Coastguard Worker var = params_.func(src_, width(), ref_, width(), &sse));
419*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(0u, var) << "src values: " << i << " ref values: " << j;
420*fb1b10abSAndroid Build Coastguard Worker }
421*fb1b10abSAndroid Build Coastguard Worker }
422*fb1b10abSAndroid Build Coastguard Worker }
423*fb1b10abSAndroid Build Coastguard Worker
424*fb1b10abSAndroid Build Coastguard Worker template <typename VarianceFunctionType>
RefTest()425*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<VarianceFunctionType>::RefTest() {
426*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 10; ++i) {
427*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); j++) {
428*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
429*fb1b10abSAndroid Build Coastguard Worker src_[j] = rnd_.Rand8();
430*fb1b10abSAndroid Build Coastguard Worker ref_[j] = rnd_.Rand8();
431*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
432*fb1b10abSAndroid Build Coastguard Worker } else {
433*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(src_)[j] = rnd_.Rand16() & mask();
434*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(ref_)[j] = rnd_.Rand16() & mask();
435*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
436*fb1b10abSAndroid Build Coastguard Worker }
437*fb1b10abSAndroid Build Coastguard Worker }
438*fb1b10abSAndroid Build Coastguard Worker unsigned int sse1, sse2, var1, var2;
439*fb1b10abSAndroid Build Coastguard Worker const int stride = width();
440*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(
441*fb1b10abSAndroid Build Coastguard Worker var1 = params_.func(src_, stride, ref_, stride, &sse1));
442*fb1b10abSAndroid Build Coastguard Worker var2 =
443*fb1b10abSAndroid Build Coastguard Worker variance_ref(src_, ref_, params_.log2width, params_.log2height, stride,
444*fb1b10abSAndroid Build Coastguard Worker stride, &sse2, use_high_bit_depth(), params_.bit_depth);
445*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(sse1, sse2) << "Error at test index: " << i;
446*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(var1, var2) << "Error at test index: " << i;
447*fb1b10abSAndroid Build Coastguard Worker }
448*fb1b10abSAndroid Build Coastguard Worker }
449*fb1b10abSAndroid Build Coastguard Worker
450*fb1b10abSAndroid Build Coastguard Worker template <typename VarianceFunctionType>
RefStrideTest()451*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<VarianceFunctionType>::RefStrideTest() {
452*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 10; ++i) {
453*fb1b10abSAndroid Build Coastguard Worker const int ref_stride = (i & 1) * width();
454*fb1b10abSAndroid Build Coastguard Worker const int src_stride = ((i >> 1) & 1) * width();
455*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); j++) {
456*fb1b10abSAndroid Build Coastguard Worker const int ref_ind = (j / width()) * ref_stride + j % width();
457*fb1b10abSAndroid Build Coastguard Worker const int src_ind = (j / width()) * src_stride + j % width();
458*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
459*fb1b10abSAndroid Build Coastguard Worker src_[src_ind] = rnd_.Rand8();
460*fb1b10abSAndroid Build Coastguard Worker ref_[ref_ind] = rnd_.Rand8();
461*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
462*fb1b10abSAndroid Build Coastguard Worker } else {
463*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(src_)[src_ind] = rnd_.Rand16() & mask();
464*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(ref_)[ref_ind] = rnd_.Rand16() & mask();
465*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
466*fb1b10abSAndroid Build Coastguard Worker }
467*fb1b10abSAndroid Build Coastguard Worker }
468*fb1b10abSAndroid Build Coastguard Worker unsigned int sse1, sse2;
469*fb1b10abSAndroid Build Coastguard Worker unsigned int var1, var2;
470*fb1b10abSAndroid Build Coastguard Worker
471*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(
472*fb1b10abSAndroid Build Coastguard Worker var1 = params_.func(src_, src_stride, ref_, ref_stride, &sse1));
473*fb1b10abSAndroid Build Coastguard Worker var2 = variance_ref(src_, ref_, params_.log2width, params_.log2height,
474*fb1b10abSAndroid Build Coastguard Worker src_stride, ref_stride, &sse2, use_high_bit_depth(),
475*fb1b10abSAndroid Build Coastguard Worker params_.bit_depth);
476*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(sse1, sse2) << "Error at test index: " << i;
477*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(var1, var2) << "Error at test index: " << i;
478*fb1b10abSAndroid Build Coastguard Worker }
479*fb1b10abSAndroid Build Coastguard Worker }
480*fb1b10abSAndroid Build Coastguard Worker
481*fb1b10abSAndroid Build Coastguard Worker template <typename VarianceFunctionType>
OneQuarterTest()482*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<VarianceFunctionType>::OneQuarterTest() {
483*fb1b10abSAndroid Build Coastguard Worker const int half = block_size() / 2;
484*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
485*fb1b10abSAndroid Build Coastguard Worker memset(src_, 255, block_size());
486*fb1b10abSAndroid Build Coastguard Worker memset(ref_, 255, half);
487*fb1b10abSAndroid Build Coastguard Worker memset(ref_ + half, 0, half);
488*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
489*fb1b10abSAndroid Build Coastguard Worker } else {
490*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(src_), 255 << byte_shift(), block_size());
491*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(ref_), 255 << byte_shift(), half);
492*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(ref_) + half, 0, half);
493*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
494*fb1b10abSAndroid Build Coastguard Worker }
495*fb1b10abSAndroid Build Coastguard Worker unsigned int sse, var, expected;
496*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(
497*fb1b10abSAndroid Build Coastguard Worker var = params_.func(src_, width(), ref_, width(), &sse));
498*fb1b10abSAndroid Build Coastguard Worker expected = block_size() * 255 * 255 / 4;
499*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(expected, var);
500*fb1b10abSAndroid Build Coastguard Worker }
501*fb1b10abSAndroid Build Coastguard Worker
502*fb1b10abSAndroid Build Coastguard Worker template <typename VarianceFunctionType>
SpeedTest()503*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<VarianceFunctionType>::SpeedTest() {
504*fb1b10abSAndroid Build Coastguard Worker const int half = block_size() / 2;
505*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
506*fb1b10abSAndroid Build Coastguard Worker memset(src_, 255, block_size());
507*fb1b10abSAndroid Build Coastguard Worker memset(ref_, 255, half);
508*fb1b10abSAndroid Build Coastguard Worker memset(ref_ + half, 0, half);
509*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
510*fb1b10abSAndroid Build Coastguard Worker } else {
511*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(src_), 255 << byte_shift(), block_size());
512*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(ref_), 255 << byte_shift(), half);
513*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(ref_) + half, 0, half);
514*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
515*fb1b10abSAndroid Build Coastguard Worker }
516*fb1b10abSAndroid Build Coastguard Worker unsigned int sse;
517*fb1b10abSAndroid Build Coastguard Worker
518*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer timer;
519*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer_start(&timer);
520*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < (1 << 30) / block_size(); ++i) {
521*fb1b10abSAndroid Build Coastguard Worker const uint32_t variance = params_.func(src_, width(), ref_, width(), &sse);
522*fb1b10abSAndroid Build Coastguard Worker // Ignore return value.
523*fb1b10abSAndroid Build Coastguard Worker (void)variance;
524*fb1b10abSAndroid Build Coastguard Worker }
525*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer_mark(&timer);
526*fb1b10abSAndroid Build Coastguard Worker const int elapsed_time = static_cast<int>(vpx_usec_timer_elapsed(&timer));
527*fb1b10abSAndroid Build Coastguard Worker printf("Variance %dx%d %dbpp time: %5d ms\n", width(), height(),
528*fb1b10abSAndroid Build Coastguard Worker params_.bit_depth, elapsed_time / 1000);
529*fb1b10abSAndroid Build Coastguard Worker }
530*fb1b10abSAndroid Build Coastguard Worker
531*fb1b10abSAndroid Build Coastguard Worker ////////////////////////////////////////////////////////////////////////////////
532*fb1b10abSAndroid Build Coastguard Worker // Tests related to GetVariance.
533*fb1b10abSAndroid Build Coastguard Worker template <typename GetVarianceFunctionType>
RefTestGetVar()534*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<GetVarianceFunctionType>::RefTestGetVar() {
535*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 10; ++i) {
536*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); j++) {
537*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
538*fb1b10abSAndroid Build Coastguard Worker src_[j] = rnd_.Rand8();
539*fb1b10abSAndroid Build Coastguard Worker ref_[j] = rnd_.Rand8();
540*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
541*fb1b10abSAndroid Build Coastguard Worker } else {
542*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(src_)[j] = rnd_.Rand16() & mask();
543*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(ref_)[j] = rnd_.Rand16() & mask();
544*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
545*fb1b10abSAndroid Build Coastguard Worker }
546*fb1b10abSAndroid Build Coastguard Worker }
547*fb1b10abSAndroid Build Coastguard Worker unsigned int sse1, sse2;
548*fb1b10abSAndroid Build Coastguard Worker int sum1, sum2;
549*fb1b10abSAndroid Build Coastguard Worker const int stride = width();
550*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(
551*fb1b10abSAndroid Build Coastguard Worker params_.func(src_, stride, ref_, stride, &sse1, &sum1));
552*fb1b10abSAndroid Build Coastguard Worker get_variance_ref(src_, stride, ref_, stride, params_.log2width,
553*fb1b10abSAndroid Build Coastguard Worker params_.log2height, use_high_bit_depth(), &sse2, &sum2,
554*fb1b10abSAndroid Build Coastguard Worker params_.bit_depth);
555*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(sse1, sse2) << "Error at test index: " << i;
556*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(sum1, sum2) << "Error at test index: " << i;
557*fb1b10abSAndroid Build Coastguard Worker }
558*fb1b10abSAndroid Build Coastguard Worker }
559*fb1b10abSAndroid Build Coastguard Worker
560*fb1b10abSAndroid Build Coastguard Worker ////////////////////////////////////////////////////////////////////////////////
561*fb1b10abSAndroid Build Coastguard Worker // Tests related to MSE / SSE.
562*fb1b10abSAndroid Build Coastguard Worker
563*fb1b10abSAndroid Build Coastguard Worker template <typename FunctionType>
RefTestMse()564*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<FunctionType>::RefTestMse() {
565*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 10; ++i) {
566*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); ++j) {
567*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
568*fb1b10abSAndroid Build Coastguard Worker src_[j] = rnd_.Rand8();
569*fb1b10abSAndroid Build Coastguard Worker ref_[j] = rnd_.Rand8();
570*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
571*fb1b10abSAndroid Build Coastguard Worker } else {
572*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(src_)[j] = rnd_.Rand16() & mask();
573*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(ref_)[j] = rnd_.Rand16() & mask();
574*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
575*fb1b10abSAndroid Build Coastguard Worker }
576*fb1b10abSAndroid Build Coastguard Worker }
577*fb1b10abSAndroid Build Coastguard Worker unsigned int sse1, sse2;
578*fb1b10abSAndroid Build Coastguard Worker const int stride = width();
579*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(params_.func(src_, stride, ref_, stride, &sse1));
580*fb1b10abSAndroid Build Coastguard Worker variance_ref(src_, ref_, params_.log2width, params_.log2height, stride,
581*fb1b10abSAndroid Build Coastguard Worker stride, &sse2, use_high_bit_depth(), params_.bit_depth);
582*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(sse1, sse2);
583*fb1b10abSAndroid Build Coastguard Worker }
584*fb1b10abSAndroid Build Coastguard Worker }
585*fb1b10abSAndroid Build Coastguard Worker
586*fb1b10abSAndroid Build Coastguard Worker template <typename FunctionType>
RefTestSse()587*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<FunctionType>::RefTestSse() {
588*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 10; ++i) {
589*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); ++j) {
590*fb1b10abSAndroid Build Coastguard Worker src_[j] = rnd_.Rand8();
591*fb1b10abSAndroid Build Coastguard Worker ref_[j] = rnd_.Rand8();
592*fb1b10abSAndroid Build Coastguard Worker }
593*fb1b10abSAndroid Build Coastguard Worker unsigned int sse2;
594*fb1b10abSAndroid Build Coastguard Worker unsigned int var1;
595*fb1b10abSAndroid Build Coastguard Worker const int stride = width();
596*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(var1 = params_.func(src_, stride, ref_, stride));
597*fb1b10abSAndroid Build Coastguard Worker variance_ref(src_, ref_, params_.log2width, params_.log2height, stride,
598*fb1b10abSAndroid Build Coastguard Worker stride, &sse2, false, VPX_BITS_8);
599*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(var1, sse2);
600*fb1b10abSAndroid Build Coastguard Worker }
601*fb1b10abSAndroid Build Coastguard Worker }
602*fb1b10abSAndroid Build Coastguard Worker
603*fb1b10abSAndroid Build Coastguard Worker template <typename FunctionType>
MaxTestMse()604*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<FunctionType>::MaxTestMse() {
605*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
606*fb1b10abSAndroid Build Coastguard Worker memset(src_, 255, block_size());
607*fb1b10abSAndroid Build Coastguard Worker memset(ref_, 0, block_size());
608*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
609*fb1b10abSAndroid Build Coastguard Worker } else {
610*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(src_), 255 << byte_shift(), block_size());
611*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(ref_), 0, block_size());
612*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
613*fb1b10abSAndroid Build Coastguard Worker }
614*fb1b10abSAndroid Build Coastguard Worker unsigned int sse;
615*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(params_.func(src_, width(), ref_, width(), &sse));
616*fb1b10abSAndroid Build Coastguard Worker const unsigned int expected = block_size() * 255 * 255;
617*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(expected, sse);
618*fb1b10abSAndroid Build Coastguard Worker }
619*fb1b10abSAndroid Build Coastguard Worker
620*fb1b10abSAndroid Build Coastguard Worker template <typename FunctionType>
MaxTestSse()621*fb1b10abSAndroid Build Coastguard Worker void MainTestClass<FunctionType>::MaxTestSse() {
622*fb1b10abSAndroid Build Coastguard Worker memset(src_, 255, block_size());
623*fb1b10abSAndroid Build Coastguard Worker memset(ref_, 0, block_size());
624*fb1b10abSAndroid Build Coastguard Worker unsigned int var;
625*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(var = params_.func(src_, width(), ref_, width()));
626*fb1b10abSAndroid Build Coastguard Worker const unsigned int expected = block_size() * 255 * 255;
627*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(expected, var);
628*fb1b10abSAndroid Build Coastguard Worker }
629*fb1b10abSAndroid Build Coastguard Worker
630*fb1b10abSAndroid Build Coastguard Worker ////////////////////////////////////////////////////////////////////////////////
631*fb1b10abSAndroid Build Coastguard Worker
632*fb1b10abSAndroid Build Coastguard Worker template <typename FunctionType>
633*fb1b10abSAndroid Build Coastguard Worker class SubpelVarianceTest
634*fb1b10abSAndroid Build Coastguard Worker : public ::testing::TestWithParam<TestParams<FunctionType> > {
635*fb1b10abSAndroid Build Coastguard Worker public:
SetUp()636*fb1b10abSAndroid Build Coastguard Worker void SetUp() override {
637*fb1b10abSAndroid Build Coastguard Worker params_ = this->GetParam();
638*fb1b10abSAndroid Build Coastguard Worker
639*fb1b10abSAndroid Build Coastguard Worker rnd_.Reset(ACMRandom::DeterministicSeed());
640*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
641*fb1b10abSAndroid Build Coastguard Worker src_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size()));
642*fb1b10abSAndroid Build Coastguard Worker sec_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size()));
643*fb1b10abSAndroid Build Coastguard Worker ref_ = reinterpret_cast<uint8_t *>(
644*fb1b10abSAndroid Build Coastguard Worker vpx_malloc(block_size() + width() + height() + 1));
645*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
646*fb1b10abSAndroid Build Coastguard Worker } else {
647*fb1b10abSAndroid Build Coastguard Worker src_ = CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(
648*fb1b10abSAndroid Build Coastguard Worker vpx_memalign(16, block_size() * sizeof(uint16_t))));
649*fb1b10abSAndroid Build Coastguard Worker sec_ = CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(
650*fb1b10abSAndroid Build Coastguard Worker vpx_memalign(16, block_size() * sizeof(uint16_t))));
651*fb1b10abSAndroid Build Coastguard Worker ref_ = CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(vpx_malloc(
652*fb1b10abSAndroid Build Coastguard Worker (block_size() + width() + height() + 1) * sizeof(uint16_t))));
653*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
654*fb1b10abSAndroid Build Coastguard Worker }
655*fb1b10abSAndroid Build Coastguard Worker ASSERT_NE(src_, nullptr);
656*fb1b10abSAndroid Build Coastguard Worker ASSERT_NE(sec_, nullptr);
657*fb1b10abSAndroid Build Coastguard Worker ASSERT_NE(ref_, nullptr);
658*fb1b10abSAndroid Build Coastguard Worker }
659*fb1b10abSAndroid Build Coastguard Worker
TearDown()660*fb1b10abSAndroid Build Coastguard Worker void TearDown() override {
661*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
662*fb1b10abSAndroid Build Coastguard Worker vpx_free(src_);
663*fb1b10abSAndroid Build Coastguard Worker vpx_free(sec_);
664*fb1b10abSAndroid Build Coastguard Worker vpx_free(ref_);
665*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
666*fb1b10abSAndroid Build Coastguard Worker } else {
667*fb1b10abSAndroid Build Coastguard Worker vpx_free(CONVERT_TO_SHORTPTR(src_));
668*fb1b10abSAndroid Build Coastguard Worker vpx_free(CONVERT_TO_SHORTPTR(ref_));
669*fb1b10abSAndroid Build Coastguard Worker vpx_free(CONVERT_TO_SHORTPTR(sec_));
670*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
671*fb1b10abSAndroid Build Coastguard Worker }
672*fb1b10abSAndroid Build Coastguard Worker libvpx_test::ClearSystemState();
673*fb1b10abSAndroid Build Coastguard Worker }
674*fb1b10abSAndroid Build Coastguard Worker
675*fb1b10abSAndroid Build Coastguard Worker protected:
676*fb1b10abSAndroid Build Coastguard Worker void RefTest();
677*fb1b10abSAndroid Build Coastguard Worker void ExtremeRefTest();
678*fb1b10abSAndroid Build Coastguard Worker void SpeedTest();
679*fb1b10abSAndroid Build Coastguard Worker
680*fb1b10abSAndroid Build Coastguard Worker ACMRandom rnd_;
681*fb1b10abSAndroid Build Coastguard Worker uint8_t *src_;
682*fb1b10abSAndroid Build Coastguard Worker uint8_t *ref_;
683*fb1b10abSAndroid Build Coastguard Worker uint8_t *sec_;
684*fb1b10abSAndroid Build Coastguard Worker TestParams<FunctionType> params_;
685*fb1b10abSAndroid Build Coastguard Worker
686*fb1b10abSAndroid Build Coastguard Worker // some relay helpers
use_high_bit_depth() const687*fb1b10abSAndroid Build Coastguard Worker bool use_high_bit_depth() const { return params_.use_high_bit_depth; }
byte_shift() const688*fb1b10abSAndroid Build Coastguard Worker int byte_shift() const { return params_.bit_depth - 8; }
block_size() const689*fb1b10abSAndroid Build Coastguard Worker int block_size() const { return params_.block_size; }
width() const690*fb1b10abSAndroid Build Coastguard Worker int width() const { return params_.width; }
height() const691*fb1b10abSAndroid Build Coastguard Worker int height() const { return params_.height; }
mask() const692*fb1b10abSAndroid Build Coastguard Worker uint32_t mask() const { return params_.mask; }
693*fb1b10abSAndroid Build Coastguard Worker };
694*fb1b10abSAndroid Build Coastguard Worker
695*fb1b10abSAndroid Build Coastguard Worker template <typename SubpelVarianceFunctionType>
RefTest()696*fb1b10abSAndroid Build Coastguard Worker void SubpelVarianceTest<SubpelVarianceFunctionType>::RefTest() {
697*fb1b10abSAndroid Build Coastguard Worker for (int x = 0; x < 8; ++x) {
698*fb1b10abSAndroid Build Coastguard Worker for (int y = 0; y < 8; ++y) {
699*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
700*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); j++) {
701*fb1b10abSAndroid Build Coastguard Worker src_[j] = rnd_.Rand8();
702*fb1b10abSAndroid Build Coastguard Worker }
703*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size() + width() + height() + 1; j++) {
704*fb1b10abSAndroid Build Coastguard Worker ref_[j] = rnd_.Rand8();
705*fb1b10abSAndroid Build Coastguard Worker }
706*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
707*fb1b10abSAndroid Build Coastguard Worker } else {
708*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); j++) {
709*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(src_)[j] = rnd_.Rand16() & mask();
710*fb1b10abSAndroid Build Coastguard Worker }
711*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size() + width() + height() + 1; j++) {
712*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(ref_)[j] = rnd_.Rand16() & mask();
713*fb1b10abSAndroid Build Coastguard Worker }
714*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
715*fb1b10abSAndroid Build Coastguard Worker }
716*fb1b10abSAndroid Build Coastguard Worker unsigned int sse1, sse2;
717*fb1b10abSAndroid Build Coastguard Worker unsigned int var1;
718*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(
719*fb1b10abSAndroid Build Coastguard Worker var1 = params_.func(ref_, width() + 1, x, y, src_, width(), &sse1));
720*fb1b10abSAndroid Build Coastguard Worker const unsigned int var2 = subpel_variance_ref(
721*fb1b10abSAndroid Build Coastguard Worker ref_, src_, params_.log2width, params_.log2height, x, y, &sse2,
722*fb1b10abSAndroid Build Coastguard Worker use_high_bit_depth(), params_.bit_depth);
723*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(sse1, sse2) << "at position " << x << ", " << y;
724*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(var1, var2) << "at position " << x << ", " << y;
725*fb1b10abSAndroid Build Coastguard Worker }
726*fb1b10abSAndroid Build Coastguard Worker }
727*fb1b10abSAndroid Build Coastguard Worker }
728*fb1b10abSAndroid Build Coastguard Worker
729*fb1b10abSAndroid Build Coastguard Worker template <typename SubpelVarianceFunctionType>
ExtremeRefTest()730*fb1b10abSAndroid Build Coastguard Worker void SubpelVarianceTest<SubpelVarianceFunctionType>::ExtremeRefTest() {
731*fb1b10abSAndroid Build Coastguard Worker // Compare against reference.
732*fb1b10abSAndroid Build Coastguard Worker // Src: Set the first half of values to 0, the second half to the maximum.
733*fb1b10abSAndroid Build Coastguard Worker // Ref: Set the first half of values to the maximum, the second half to 0.
734*fb1b10abSAndroid Build Coastguard Worker for (int x = 0; x < 8; ++x) {
735*fb1b10abSAndroid Build Coastguard Worker for (int y = 0; y < 8; ++y) {
736*fb1b10abSAndroid Build Coastguard Worker const int half = block_size() / 2;
737*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
738*fb1b10abSAndroid Build Coastguard Worker memset(src_, 0, half);
739*fb1b10abSAndroid Build Coastguard Worker memset(src_ + half, 255, half);
740*fb1b10abSAndroid Build Coastguard Worker memset(ref_, 255, half);
741*fb1b10abSAndroid Build Coastguard Worker memset(ref_ + half, 0, half + width() + height() + 1);
742*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
743*fb1b10abSAndroid Build Coastguard Worker } else {
744*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(src_), mask(), half);
745*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(src_) + half, 0, half);
746*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(ref_), 0, half);
747*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(ref_) + half, mask(),
748*fb1b10abSAndroid Build Coastguard Worker half + width() + height() + 1);
749*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
750*fb1b10abSAndroid Build Coastguard Worker }
751*fb1b10abSAndroid Build Coastguard Worker unsigned int sse1, sse2;
752*fb1b10abSAndroid Build Coastguard Worker unsigned int var1;
753*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(
754*fb1b10abSAndroid Build Coastguard Worker var1 = params_.func(ref_, width() + 1, x, y, src_, width(), &sse1));
755*fb1b10abSAndroid Build Coastguard Worker const unsigned int var2 = subpel_variance_ref(
756*fb1b10abSAndroid Build Coastguard Worker ref_, src_, params_.log2width, params_.log2height, x, y, &sse2,
757*fb1b10abSAndroid Build Coastguard Worker use_high_bit_depth(), params_.bit_depth);
758*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(sse1, sse2) << "for xoffset " << x << " and yoffset " << y;
759*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(var1, var2) << "for xoffset " << x << " and yoffset " << y;
760*fb1b10abSAndroid Build Coastguard Worker }
761*fb1b10abSAndroid Build Coastguard Worker }
762*fb1b10abSAndroid Build Coastguard Worker }
763*fb1b10abSAndroid Build Coastguard Worker
764*fb1b10abSAndroid Build Coastguard Worker template <typename SubpelVarianceFunctionType>
SpeedTest()765*fb1b10abSAndroid Build Coastguard Worker void SubpelVarianceTest<SubpelVarianceFunctionType>::SpeedTest() {
766*fb1b10abSAndroid Build Coastguard Worker // The only interesting points are 0, 4, and anything else. To make the loops
767*fb1b10abSAndroid Build Coastguard Worker // simple we will use 0, 2 and 4.
768*fb1b10abSAndroid Build Coastguard Worker for (int x = 0; x <= 4; x += 2) {
769*fb1b10abSAndroid Build Coastguard Worker for (int y = 0; y <= 4; y += 2) {
770*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
771*fb1b10abSAndroid Build Coastguard Worker memset(src_, 25, block_size());
772*fb1b10abSAndroid Build Coastguard Worker memset(ref_, 50, block_size());
773*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
774*fb1b10abSAndroid Build Coastguard Worker } else {
775*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(src_), 25, block_size());
776*fb1b10abSAndroid Build Coastguard Worker vpx_memset16(CONVERT_TO_SHORTPTR(ref_), 50, block_size());
777*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
778*fb1b10abSAndroid Build Coastguard Worker }
779*fb1b10abSAndroid Build Coastguard Worker unsigned int sse;
780*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer timer;
781*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer_start(&timer);
782*fb1b10abSAndroid Build Coastguard Worker for (int i = 0; i < 1000000000 / block_size(); ++i) {
783*fb1b10abSAndroid Build Coastguard Worker const uint32_t variance =
784*fb1b10abSAndroid Build Coastguard Worker params_.func(ref_, width() + 1, x, y, src_, width(), &sse);
785*fb1b10abSAndroid Build Coastguard Worker (void)variance;
786*fb1b10abSAndroid Build Coastguard Worker }
787*fb1b10abSAndroid Build Coastguard Worker vpx_usec_timer_mark(&timer);
788*fb1b10abSAndroid Build Coastguard Worker const int elapsed_time = static_cast<int>(vpx_usec_timer_elapsed(&timer));
789*fb1b10abSAndroid Build Coastguard Worker printf("SubpelVariance %dx%d xoffset: %d yoffset: %d time: %5d ms\n",
790*fb1b10abSAndroid Build Coastguard Worker width(), height(), x, y, elapsed_time / 1000);
791*fb1b10abSAndroid Build Coastguard Worker }
792*fb1b10abSAndroid Build Coastguard Worker }
793*fb1b10abSAndroid Build Coastguard Worker }
794*fb1b10abSAndroid Build Coastguard Worker
795*fb1b10abSAndroid Build Coastguard Worker template <>
RefTest()796*fb1b10abSAndroid Build Coastguard Worker void SubpelVarianceTest<vpx_subp_avg_variance_fn_t>::RefTest() {
797*fb1b10abSAndroid Build Coastguard Worker for (int x = 0; x < 8; ++x) {
798*fb1b10abSAndroid Build Coastguard Worker for (int y = 0; y < 8; ++y) {
799*fb1b10abSAndroid Build Coastguard Worker if (!use_high_bit_depth()) {
800*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); j++) {
801*fb1b10abSAndroid Build Coastguard Worker src_[j] = rnd_.Rand8();
802*fb1b10abSAndroid Build Coastguard Worker sec_[j] = rnd_.Rand8();
803*fb1b10abSAndroid Build Coastguard Worker }
804*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size() + width() + height() + 1; j++) {
805*fb1b10abSAndroid Build Coastguard Worker ref_[j] = rnd_.Rand8();
806*fb1b10abSAndroid Build Coastguard Worker }
807*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
808*fb1b10abSAndroid Build Coastguard Worker } else {
809*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size(); j++) {
810*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(src_)[j] = rnd_.Rand16() & mask();
811*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(sec_)[j] = rnd_.Rand16() & mask();
812*fb1b10abSAndroid Build Coastguard Worker }
813*fb1b10abSAndroid Build Coastguard Worker for (int j = 0; j < block_size() + width() + height() + 1; j++) {
814*fb1b10abSAndroid Build Coastguard Worker CONVERT_TO_SHORTPTR(ref_)[j] = rnd_.Rand16() & mask();
815*fb1b10abSAndroid Build Coastguard Worker }
816*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
817*fb1b10abSAndroid Build Coastguard Worker }
818*fb1b10abSAndroid Build Coastguard Worker uint32_t sse1, sse2;
819*fb1b10abSAndroid Build Coastguard Worker uint32_t var1, var2;
820*fb1b10abSAndroid Build Coastguard Worker ASM_REGISTER_STATE_CHECK(var1 = params_.func(ref_, width() + 1, x, y,
821*fb1b10abSAndroid Build Coastguard Worker src_, width(), &sse1, sec_));
822*fb1b10abSAndroid Build Coastguard Worker var2 = subpel_avg_variance_ref(ref_, src_, sec_, params_.log2width,
823*fb1b10abSAndroid Build Coastguard Worker params_.log2height, x, y, &sse2,
824*fb1b10abSAndroid Build Coastguard Worker use_high_bit_depth(), params_.bit_depth);
825*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(sse1, sse2) << "at position " << x << ", " << y;
826*fb1b10abSAndroid Build Coastguard Worker EXPECT_EQ(var1, var2) << "at position " << x << ", " << y;
827*fb1b10abSAndroid Build Coastguard Worker }
828*fb1b10abSAndroid Build Coastguard Worker }
829*fb1b10abSAndroid Build Coastguard Worker }
830*fb1b10abSAndroid Build Coastguard Worker
831*fb1b10abSAndroid Build Coastguard Worker typedef MainTestClass<Get4x4SseFunc> VpxSseTest;
832*fb1b10abSAndroid Build Coastguard Worker typedef MainTestClass<vpx_variance_fn_t> VpxMseTest;
833*fb1b10abSAndroid Build Coastguard Worker typedef MainTestClass<vpx_variance_fn_t> VpxVarianceTest;
834*fb1b10abSAndroid Build Coastguard Worker typedef MainTestClass<GetVarianceFunc> VpxGetVarianceTest;
835*fb1b10abSAndroid Build Coastguard Worker typedef SubpelVarianceTest<vpx_subpixvariance_fn_t> VpxSubpelVarianceTest;
836*fb1b10abSAndroid Build Coastguard Worker typedef SubpelVarianceTest<vpx_subp_avg_variance_fn_t> VpxSubpelAvgVarianceTest;
837*fb1b10abSAndroid Build Coastguard Worker
TEST_P(VpxSseTest,RefSse)838*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxSseTest, RefSse) { RefTestSse(); }
TEST_P(VpxSseTest,MaxSse)839*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxSseTest, MaxSse) { MaxTestSse(); }
TEST_P(VpxMseTest,RefMse)840*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxMseTest, RefMse) { RefTestMse(); }
TEST_P(VpxMseTest,MaxMse)841*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxMseTest, MaxMse) { MaxTestMse(); }
TEST_P(VpxMseTest,DISABLED_Speed)842*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxMseTest, DISABLED_Speed) { SpeedTest(); }
TEST_P(VpxVarianceTest,Zero)843*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxVarianceTest, Zero) { ZeroTest(); }
TEST_P(VpxVarianceTest,Ref)844*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxVarianceTest, Ref) { RefTest(); }
TEST_P(VpxVarianceTest,RefStride)845*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxVarianceTest, RefStride) { RefStrideTest(); }
TEST_P(VpxVarianceTest,OneQuarter)846*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxVarianceTest, OneQuarter) { OneQuarterTest(); }
TEST_P(VpxVarianceTest,DISABLED_Speed)847*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxVarianceTest, DISABLED_Speed) { SpeedTest(); }
TEST_P(VpxGetVarianceTest,RefGetVar)848*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxGetVarianceTest, RefGetVar) { RefTestGetVar(); }
TEST_P(SumOfSquaresTest,Const)849*fb1b10abSAndroid Build Coastguard Worker TEST_P(SumOfSquaresTest, Const) { ConstTest(); }
TEST_P(SumOfSquaresTest,Ref)850*fb1b10abSAndroid Build Coastguard Worker TEST_P(SumOfSquaresTest, Ref) { RefTest(); }
TEST_P(VpxSubpelVarianceTest,Ref)851*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxSubpelVarianceTest, Ref) { RefTest(); }
TEST_P(VpxSubpelVarianceTest,ExtremeRef)852*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxSubpelVarianceTest, ExtremeRef) { ExtremeRefTest(); }
TEST_P(VpxSubpelVarianceTest,DISABLED_Speed)853*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxSubpelVarianceTest, DISABLED_Speed) { SpeedTest(); }
TEST_P(VpxSubpelAvgVarianceTest,Ref)854*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxSubpelAvgVarianceTest, Ref) { RefTest(); }
855*fb1b10abSAndroid Build Coastguard Worker
856*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(C, SumOfSquaresTest,
857*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(vpx_get_mb_ss_c));
858*fb1b10abSAndroid Build Coastguard Worker
859*fb1b10abSAndroid Build Coastguard Worker typedef TestParams<Get4x4SseFunc> SseParams;
860*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(C, VpxSseTest,
861*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(SseParams(2, 2,
862*fb1b10abSAndroid Build Coastguard Worker &vpx_get4x4sse_cs_c)));
863*fb1b10abSAndroid Build Coastguard Worker
864*fb1b10abSAndroid Build Coastguard Worker typedef TestParams<vpx_variance_fn_t> MseParams;
865*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(C, VpxMseTest,
866*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_c),
867*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_mse16x8_c),
868*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_mse8x16_c),
869*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_mse8x8_c)));
870*fb1b10abSAndroid Build Coastguard Worker
871*fb1b10abSAndroid Build Coastguard Worker typedef TestParams<vpx_variance_fn_t> VarianceParams;
872*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
873*fb1b10abSAndroid Build Coastguard Worker C, VpxVarianceTest,
874*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_c),
875*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_variance64x32_c),
876*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_variance32x64_c),
877*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_c),
878*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_variance32x16_c),
879*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_variance16x32_c),
880*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_c),
881*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_variance16x8_c),
882*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_variance8x16_c),
883*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_c),
884*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_variance8x4_c),
885*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_variance4x8_c),
886*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_variance4x4_c)));
887*fb1b10abSAndroid Build Coastguard Worker
888*fb1b10abSAndroid Build Coastguard Worker typedef TestParams<GetVarianceFunc> GetVarianceParams;
889*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
890*fb1b10abSAndroid Build Coastguard Worker C, VpxGetVarianceTest,
891*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(GetVarianceParams(4, 4, &vpx_get16x16var_c),
892*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_c),
893*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_c),
894*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_c),
895*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_c),
896*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_c)));
897*fb1b10abSAndroid Build Coastguard Worker
898*fb1b10abSAndroid Build Coastguard Worker typedef TestParams<vpx_subpixvariance_fn_t> SubpelVarianceParams;
899*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
900*fb1b10abSAndroid Build Coastguard Worker C, VpxSubpelVarianceTest,
901*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
902*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_sub_pixel_variance64x64_c, 0),
903*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_sub_pixel_variance64x32_c, 0),
904*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_sub_pixel_variance32x64_c, 0),
905*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_sub_pixel_variance32x32_c, 0),
906*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_sub_pixel_variance32x16_c, 0),
907*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_sub_pixel_variance16x32_c, 0),
908*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_sub_pixel_variance16x16_c, 0),
909*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_sub_pixel_variance16x8_c, 0),
910*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_sub_pixel_variance8x16_c, 0),
911*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_sub_pixel_variance8x8_c, 0),
912*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_sub_pixel_variance8x4_c, 0),
913*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_sub_pixel_variance4x8_c, 0),
914*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_sub_pixel_variance4x4_c, 0)));
915*fb1b10abSAndroid Build Coastguard Worker
916*fb1b10abSAndroid Build Coastguard Worker typedef TestParams<vpx_subp_avg_variance_fn_t> SubpelAvgVarianceParams;
917*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
918*fb1b10abSAndroid Build Coastguard Worker C, VpxSubpelAvgVarianceTest,
919*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
920*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6, &vpx_sub_pixel_avg_variance64x64_c, 0),
921*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5, &vpx_sub_pixel_avg_variance64x32_c, 0),
922*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6, &vpx_sub_pixel_avg_variance32x64_c, 0),
923*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5, &vpx_sub_pixel_avg_variance32x32_c, 0),
924*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4, &vpx_sub_pixel_avg_variance32x16_c, 0),
925*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5, &vpx_sub_pixel_avg_variance16x32_c, 0),
926*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4, &vpx_sub_pixel_avg_variance16x16_c, 0),
927*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3, &vpx_sub_pixel_avg_variance16x8_c, 0),
928*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4, &vpx_sub_pixel_avg_variance8x16_c, 0),
929*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3, &vpx_sub_pixel_avg_variance8x8_c, 0),
930*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2, &vpx_sub_pixel_avg_variance8x4_c, 0),
931*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3, &vpx_sub_pixel_avg_variance4x8_c, 0),
932*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2, &vpx_sub_pixel_avg_variance4x4_c, 0)));
933*fb1b10abSAndroid Build Coastguard Worker
934*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
935*fb1b10abSAndroid Build Coastguard Worker typedef MainTestClass<vpx_variance_fn_t> VpxHBDVarianceTest;
936*fb1b10abSAndroid Build Coastguard Worker typedef MainTestClass<GetVarianceFunc> VpxHBDGetVarianceTest;
937*fb1b10abSAndroid Build Coastguard Worker typedef SubpelVarianceTest<vpx_subpixvariance_fn_t> VpxHBDSubpelVarianceTest;
938*fb1b10abSAndroid Build Coastguard Worker typedef SubpelVarianceTest<vpx_subp_avg_variance_fn_t>
939*fb1b10abSAndroid Build Coastguard Worker VpxHBDSubpelAvgVarianceTest;
940*fb1b10abSAndroid Build Coastguard Worker
TEST_P(VpxHBDVarianceTest,Zero)941*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDVarianceTest, Zero) { ZeroTest(); }
TEST_P(VpxHBDVarianceTest,Ref)942*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDVarianceTest, Ref) { RefTest(); }
TEST_P(VpxHBDVarianceTest,RefStride)943*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDVarianceTest, RefStride) { RefStrideTest(); }
TEST_P(VpxHBDVarianceTest,OneQuarter)944*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDVarianceTest, OneQuarter) { OneQuarterTest(); }
TEST_P(VpxHBDVarianceTest,DISABLED_Speed)945*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDVarianceTest, DISABLED_Speed) { SpeedTest(); }
TEST_P(VpxHBDGetVarianceTest,RefGetVar)946*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDGetVarianceTest, RefGetVar) { RefTestGetVar(); }
TEST_P(VpxHBDSubpelVarianceTest,Ref)947*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDSubpelVarianceTest, Ref) { RefTest(); }
TEST_P(VpxHBDSubpelVarianceTest,ExtremeRef)948*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDSubpelVarianceTest, ExtremeRef) { ExtremeRefTest(); }
TEST_P(VpxHBDSubpelAvgVarianceTest,Ref)949*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDSubpelAvgVarianceTest, Ref) { RefTest(); }
950*fb1b10abSAndroid Build Coastguard Worker
951*fb1b10abSAndroid Build Coastguard Worker typedef MainTestClass<vpx_variance_fn_t> VpxHBDMseTest;
TEST_P(VpxHBDMseTest,RefMse)952*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDMseTest, RefMse) { RefTestMse(); }
TEST_P(VpxHBDMseTest,MaxMse)953*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDMseTest, MaxMse) { MaxTestMse(); }
TEST_P(VpxHBDMseTest,DISABLED_Speed)954*fb1b10abSAndroid Build Coastguard Worker TEST_P(VpxHBDMseTest, DISABLED_Speed) { SpeedTest(); }
955*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
956*fb1b10abSAndroid Build Coastguard Worker C, VpxHBDMseTest,
957*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_highbd_12_mse16x16_c, VPX_BITS_12),
958*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_12_mse16x8_c, VPX_BITS_12),
959*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_12_mse8x16_c, VPX_BITS_12),
960*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_12_mse8x8_c, VPX_BITS_12),
961*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_10_mse16x16_c, VPX_BITS_10),
962*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_10_mse16x8_c, VPX_BITS_10),
963*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_10_mse8x16_c, VPX_BITS_10),
964*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_10_mse8x8_c, VPX_BITS_10),
965*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_8_mse16x16_c, VPX_BITS_8),
966*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_8_mse16x8_c, VPX_BITS_8),
967*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_8_mse8x16_c, VPX_BITS_8),
968*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_8_mse8x8_c, VPX_BITS_8)));
969*fb1b10abSAndroid Build Coastguard Worker
970*fb1b10abSAndroid Build Coastguard Worker GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(VpxHBDMseTest);
971*fb1b10abSAndroid Build Coastguard Worker
972*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
973*fb1b10abSAndroid Build Coastguard Worker C, VpxHBDVarianceTest,
974*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_highbd_12_variance64x64_c, 12),
975*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_12_variance64x32_c, 12),
976*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_12_variance32x64_c, 12),
977*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_12_variance32x32_c, 12),
978*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_12_variance32x16_c, 12),
979*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_12_variance16x32_c, 12),
980*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_12_variance16x16_c, 12),
981*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_12_variance16x8_c, 12),
982*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_12_variance8x16_c, 12),
983*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_12_variance8x8_c, 12),
984*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_12_variance8x4_c, 12),
985*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_12_variance4x8_c, 12),
986*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_12_variance4x4_c, 12),
987*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_10_variance64x64_c, 10),
988*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_10_variance64x32_c, 10),
989*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_10_variance32x64_c, 10),
990*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_10_variance32x32_c, 10),
991*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_10_variance32x16_c, 10),
992*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_10_variance16x32_c, 10),
993*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_10_variance16x16_c, 10),
994*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_10_variance16x8_c, 10),
995*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_10_variance8x16_c, 10),
996*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_10_variance8x8_c, 10),
997*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_10_variance8x4_c, 10),
998*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_10_variance4x8_c, 10),
999*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_10_variance4x4_c, 10),
1000*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_8_variance64x64_c, 8),
1001*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_8_variance64x32_c, 8),
1002*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_8_variance32x64_c, 8),
1003*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_8_variance32x32_c, 8),
1004*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_8_variance32x16_c, 8),
1005*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_8_variance16x32_c, 8),
1006*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_8_variance16x16_c, 8),
1007*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_8_variance16x8_c, 8),
1008*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_8_variance8x16_c, 8),
1009*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_8_variance8x8_c, 8),
1010*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_8_variance8x4_c, 8),
1011*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_8_variance4x8_c, 8),
1012*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_8_variance4x4_c, 8)));
1013*fb1b10abSAndroid Build Coastguard Worker
1014*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1015*fb1b10abSAndroid Build Coastguard Worker C, VpxHBDGetVarianceTest,
1016*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(GetVarianceParams(4, 4, &vpx_highbd_12_get16x16var_c, 12),
1017*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_12_get8x8var_c, 12),
1018*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_10_get16x16var_c, 10),
1019*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_10_get8x8var_c, 10),
1020*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_8_get16x16var_c, 8),
1021*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_8_get8x8var_c, 8)));
1022*fb1b10abSAndroid Build Coastguard Worker
1023*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1024*fb1b10abSAndroid Build Coastguard Worker C, VpxHBDSubpelVarianceTest,
1025*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1026*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_8_sub_pixel_variance64x64_c, 8),
1027*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_8_sub_pixel_variance64x32_c, 8),
1028*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_8_sub_pixel_variance32x64_c, 8),
1029*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_8_sub_pixel_variance32x32_c, 8),
1030*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_8_sub_pixel_variance32x16_c, 8),
1031*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_8_sub_pixel_variance16x32_c, 8),
1032*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_8_sub_pixel_variance16x16_c, 8),
1033*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_8_sub_pixel_variance16x8_c, 8),
1034*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_8_sub_pixel_variance8x16_c, 8),
1035*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_8_sub_pixel_variance8x8_c, 8),
1036*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_8_sub_pixel_variance8x4_c, 8),
1037*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_highbd_8_sub_pixel_variance4x8_c, 8),
1038*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_highbd_8_sub_pixel_variance4x4_c, 8),
1039*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_10_sub_pixel_variance64x64_c,
1040*fb1b10abSAndroid Build Coastguard Worker 10),
1041*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_10_sub_pixel_variance64x32_c,
1042*fb1b10abSAndroid Build Coastguard Worker 10),
1043*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_10_sub_pixel_variance32x64_c,
1044*fb1b10abSAndroid Build Coastguard Worker 10),
1045*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_10_sub_pixel_variance32x32_c,
1046*fb1b10abSAndroid Build Coastguard Worker 10),
1047*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_10_sub_pixel_variance32x16_c,
1048*fb1b10abSAndroid Build Coastguard Worker 10),
1049*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_10_sub_pixel_variance16x32_c,
1050*fb1b10abSAndroid Build Coastguard Worker 10),
1051*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_10_sub_pixel_variance16x16_c,
1052*fb1b10abSAndroid Build Coastguard Worker 10),
1053*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_10_sub_pixel_variance16x8_c, 10),
1054*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_10_sub_pixel_variance8x16_c, 10),
1055*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_10_sub_pixel_variance8x8_c, 10),
1056*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_10_sub_pixel_variance8x4_c, 10),
1057*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_highbd_10_sub_pixel_variance4x8_c, 10),
1058*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_highbd_10_sub_pixel_variance4x4_c, 10),
1059*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_12_sub_pixel_variance64x64_c,
1060*fb1b10abSAndroid Build Coastguard Worker 12),
1061*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_12_sub_pixel_variance64x32_c,
1062*fb1b10abSAndroid Build Coastguard Worker 12),
1063*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_12_sub_pixel_variance32x64_c,
1064*fb1b10abSAndroid Build Coastguard Worker 12),
1065*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_12_sub_pixel_variance32x32_c,
1066*fb1b10abSAndroid Build Coastguard Worker 12),
1067*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_12_sub_pixel_variance32x16_c,
1068*fb1b10abSAndroid Build Coastguard Worker 12),
1069*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_12_sub_pixel_variance16x32_c,
1070*fb1b10abSAndroid Build Coastguard Worker 12),
1071*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_12_sub_pixel_variance16x16_c,
1072*fb1b10abSAndroid Build Coastguard Worker 12),
1073*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_12_sub_pixel_variance16x8_c, 12),
1074*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_12_sub_pixel_variance8x16_c, 12),
1075*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_12_sub_pixel_variance8x8_c, 12),
1076*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_12_sub_pixel_variance8x4_c, 12),
1077*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_highbd_12_sub_pixel_variance4x8_c, 12),
1078*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_highbd_12_sub_pixel_variance4x4_c,
1079*fb1b10abSAndroid Build Coastguard Worker 12)));
1080*fb1b10abSAndroid Build Coastguard Worker
1081*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1082*fb1b10abSAndroid Build Coastguard Worker C, VpxHBDSubpelAvgVarianceTest,
1083*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1084*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1085*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance64x64_c, 8),
1086*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1087*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance64x32_c, 8),
1088*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1089*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x64_c, 8),
1090*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1091*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x32_c, 8),
1092*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1093*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x16_c, 8),
1094*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1095*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x32_c, 8),
1096*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1097*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x16_c, 8),
1098*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1099*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x8_c, 8),
1100*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1101*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance8x16_c, 8),
1102*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3, &vpx_highbd_8_sub_pixel_avg_variance8x8_c,
1103*fb1b10abSAndroid Build Coastguard Worker 8),
1104*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2, &vpx_highbd_8_sub_pixel_avg_variance8x4_c,
1105*fb1b10abSAndroid Build Coastguard Worker 8),
1106*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3, &vpx_highbd_8_sub_pixel_avg_variance4x8_c,
1107*fb1b10abSAndroid Build Coastguard Worker 8),
1108*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2, &vpx_highbd_8_sub_pixel_avg_variance4x4_c,
1109*fb1b10abSAndroid Build Coastguard Worker 8),
1110*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1111*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance64x64_c,
1112*fb1b10abSAndroid Build Coastguard Worker 10),
1113*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1114*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance64x32_c,
1115*fb1b10abSAndroid Build Coastguard Worker 10),
1116*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1117*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x64_c,
1118*fb1b10abSAndroid Build Coastguard Worker 10),
1119*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1120*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x32_c,
1121*fb1b10abSAndroid Build Coastguard Worker 10),
1122*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1123*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x16_c,
1124*fb1b10abSAndroid Build Coastguard Worker 10),
1125*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1126*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x32_c,
1127*fb1b10abSAndroid Build Coastguard Worker 10),
1128*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1129*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x16_c,
1130*fb1b10abSAndroid Build Coastguard Worker 10),
1131*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1132*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x8_c,
1133*fb1b10abSAndroid Build Coastguard Worker 10),
1134*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1135*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x16_c,
1136*fb1b10abSAndroid Build Coastguard Worker 10),
1137*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3,
1138*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x8_c, 10),
1139*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2,
1140*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x4_c, 10),
1141*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3,
1142*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance4x8_c, 10),
1143*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2,
1144*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance4x4_c, 10),
1145*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1146*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance64x64_c,
1147*fb1b10abSAndroid Build Coastguard Worker 12),
1148*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1149*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance64x32_c,
1150*fb1b10abSAndroid Build Coastguard Worker 12),
1151*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1152*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x64_c,
1153*fb1b10abSAndroid Build Coastguard Worker 12),
1154*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1155*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x32_c,
1156*fb1b10abSAndroid Build Coastguard Worker 12),
1157*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1158*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x16_c,
1159*fb1b10abSAndroid Build Coastguard Worker 12),
1160*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1161*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x32_c,
1162*fb1b10abSAndroid Build Coastguard Worker 12),
1163*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1164*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x16_c,
1165*fb1b10abSAndroid Build Coastguard Worker 12),
1166*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1167*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x8_c,
1168*fb1b10abSAndroid Build Coastguard Worker 12),
1169*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1170*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x16_c,
1171*fb1b10abSAndroid Build Coastguard Worker 12),
1172*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3,
1173*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x8_c, 12),
1174*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2,
1175*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x4_c, 12),
1176*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3,
1177*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance4x8_c, 12),
1178*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2,
1179*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance4x4_c,
1180*fb1b10abSAndroid Build Coastguard Worker 12)));
1181*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
1182*fb1b10abSAndroid Build Coastguard Worker
1183*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SSE2
1184*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(SSE2, SumOfSquaresTest,
1185*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(vpx_get_mb_ss_sse2));
1186*fb1b10abSAndroid Build Coastguard Worker
1187*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(SSE2, VpxMseTest,
1188*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_sse2),
1189*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_mse16x8_sse2),
1190*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_mse8x16_sse2),
1191*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_mse8x8_sse2)));
1192*fb1b10abSAndroid Build Coastguard Worker
1193*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1194*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxVarianceTest,
1195*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_sse2),
1196*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_variance64x32_sse2),
1197*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_variance32x64_sse2),
1198*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_sse2),
1199*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_variance32x16_sse2),
1200*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_variance16x32_sse2),
1201*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_sse2),
1202*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_variance16x8_sse2),
1203*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_variance8x16_sse2),
1204*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_sse2),
1205*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_variance8x4_sse2),
1206*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_variance4x8_sse2),
1207*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_variance4x4_sse2)));
1208*fb1b10abSAndroid Build Coastguard Worker
1209*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1210*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxGetVarianceTest,
1211*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(GetVarianceParams(4, 4, &vpx_get16x16var_sse2),
1212*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_sse2),
1213*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_sse2),
1214*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_sse2),
1215*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_sse2),
1216*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_sse2)));
1217*fb1b10abSAndroid Build Coastguard Worker
1218*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1219*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxSubpelVarianceTest,
1220*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1221*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_sub_pixel_variance64x64_sse2, 0),
1222*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_sub_pixel_variance64x32_sse2, 0),
1223*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_sub_pixel_variance32x64_sse2, 0),
1224*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_sub_pixel_variance32x32_sse2, 0),
1225*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_sub_pixel_variance32x16_sse2, 0),
1226*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_sub_pixel_variance16x32_sse2, 0),
1227*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_sub_pixel_variance16x16_sse2, 0),
1228*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_sub_pixel_variance16x8_sse2, 0),
1229*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_sub_pixel_variance8x16_sse2, 0),
1230*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_sub_pixel_variance8x8_sse2, 0),
1231*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_sub_pixel_variance8x4_sse2, 0),
1232*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_sub_pixel_variance4x8_sse2, 0),
1233*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_sub_pixel_variance4x4_sse2, 0)));
1234*fb1b10abSAndroid Build Coastguard Worker
1235*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1236*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxSubpelAvgVarianceTest,
1237*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1238*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6, &vpx_sub_pixel_avg_variance64x64_sse2, 0),
1239*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5, &vpx_sub_pixel_avg_variance64x32_sse2, 0),
1240*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6, &vpx_sub_pixel_avg_variance32x64_sse2, 0),
1241*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5, &vpx_sub_pixel_avg_variance32x32_sse2, 0),
1242*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4, &vpx_sub_pixel_avg_variance32x16_sse2, 0),
1243*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5, &vpx_sub_pixel_avg_variance16x32_sse2, 0),
1244*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4, &vpx_sub_pixel_avg_variance16x16_sse2, 0),
1245*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3, &vpx_sub_pixel_avg_variance16x8_sse2, 0),
1246*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4, &vpx_sub_pixel_avg_variance8x16_sse2, 0),
1247*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3, &vpx_sub_pixel_avg_variance8x8_sse2, 0),
1248*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2, &vpx_sub_pixel_avg_variance8x4_sse2, 0),
1249*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3, &vpx_sub_pixel_avg_variance4x8_sse2, 0),
1250*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2, &vpx_sub_pixel_avg_variance4x4_sse2, 0)));
1251*fb1b10abSAndroid Build Coastguard Worker
1252*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
1253*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1254*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxHBDMseTest,
1255*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1256*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_12_mse16x16_sse2, VPX_BITS_12),
1257*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_12_mse8x8_sse2, VPX_BITS_12),
1258*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_10_mse16x16_sse2, VPX_BITS_10),
1259*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_10_mse8x8_sse2, VPX_BITS_10),
1260*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_8_mse16x16_sse2, VPX_BITS_8),
1261*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_8_mse8x8_sse2, VPX_BITS_8)));
1262*fb1b10abSAndroid Build Coastguard Worker
1263*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1264*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxHBDVarianceTest,
1265*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1266*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_12_variance64x64_sse2, 12),
1267*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_12_variance64x32_sse2, 12),
1268*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_12_variance32x64_sse2, 12),
1269*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_12_variance32x32_sse2, 12),
1270*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_12_variance32x16_sse2, 12),
1271*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_12_variance16x32_sse2, 12),
1272*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_12_variance16x16_sse2, 12),
1273*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_12_variance16x8_sse2, 12),
1274*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_12_variance8x16_sse2, 12),
1275*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_12_variance8x8_sse2, 12),
1276*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_10_variance64x64_sse2, 10),
1277*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_10_variance64x32_sse2, 10),
1278*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_10_variance32x64_sse2, 10),
1279*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_10_variance32x32_sse2, 10),
1280*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_10_variance32x16_sse2, 10),
1281*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_10_variance16x32_sse2, 10),
1282*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_10_variance16x16_sse2, 10),
1283*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_10_variance16x8_sse2, 10),
1284*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_10_variance8x16_sse2, 10),
1285*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_10_variance8x8_sse2, 10),
1286*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_8_variance64x64_sse2, 8),
1287*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_8_variance64x32_sse2, 8),
1288*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_8_variance32x64_sse2, 8),
1289*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_8_variance32x32_sse2, 8),
1290*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_8_variance32x16_sse2, 8),
1291*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_8_variance16x32_sse2, 8),
1292*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_8_variance16x16_sse2, 8),
1293*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_8_variance16x8_sse2, 8),
1294*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_8_variance8x16_sse2, 8),
1295*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_8_variance8x8_sse2, 8)));
1296*fb1b10abSAndroid Build Coastguard Worker
1297*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1298*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxHBDGetVarianceTest,
1299*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1300*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_12_get16x16var_sse2, 12),
1301*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_12_get8x8var_sse2, 12),
1302*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_10_get16x16var_sse2, 10),
1303*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_10_get8x8var_sse2, 10),
1304*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_8_get16x16var_sse2, 8),
1305*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_8_get8x8var_sse2, 8)));
1306*fb1b10abSAndroid Build Coastguard Worker
1307*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1308*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxHBDSubpelVarianceTest,
1309*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1310*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_12_sub_pixel_variance64x64_sse2,
1311*fb1b10abSAndroid Build Coastguard Worker 12),
1312*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_12_sub_pixel_variance64x32_sse2,
1313*fb1b10abSAndroid Build Coastguard Worker 12),
1314*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_12_sub_pixel_variance32x64_sse2,
1315*fb1b10abSAndroid Build Coastguard Worker 12),
1316*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_12_sub_pixel_variance32x32_sse2,
1317*fb1b10abSAndroid Build Coastguard Worker 12),
1318*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_12_sub_pixel_variance32x16_sse2,
1319*fb1b10abSAndroid Build Coastguard Worker 12),
1320*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_12_sub_pixel_variance16x32_sse2,
1321*fb1b10abSAndroid Build Coastguard Worker 12),
1322*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_12_sub_pixel_variance16x16_sse2,
1323*fb1b10abSAndroid Build Coastguard Worker 12),
1324*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_12_sub_pixel_variance16x8_sse2,
1325*fb1b10abSAndroid Build Coastguard Worker 12),
1326*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_12_sub_pixel_variance8x16_sse2,
1327*fb1b10abSAndroid Build Coastguard Worker 12),
1328*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_12_sub_pixel_variance8x8_sse2,
1329*fb1b10abSAndroid Build Coastguard Worker 12),
1330*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_12_sub_pixel_variance8x4_sse2,
1331*fb1b10abSAndroid Build Coastguard Worker 12),
1332*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_10_sub_pixel_variance64x64_sse2,
1333*fb1b10abSAndroid Build Coastguard Worker 10),
1334*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_10_sub_pixel_variance64x32_sse2,
1335*fb1b10abSAndroid Build Coastguard Worker 10),
1336*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_10_sub_pixel_variance32x64_sse2,
1337*fb1b10abSAndroid Build Coastguard Worker 10),
1338*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_10_sub_pixel_variance32x32_sse2,
1339*fb1b10abSAndroid Build Coastguard Worker 10),
1340*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_10_sub_pixel_variance32x16_sse2,
1341*fb1b10abSAndroid Build Coastguard Worker 10),
1342*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_10_sub_pixel_variance16x32_sse2,
1343*fb1b10abSAndroid Build Coastguard Worker 10),
1344*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_10_sub_pixel_variance16x16_sse2,
1345*fb1b10abSAndroid Build Coastguard Worker 10),
1346*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_10_sub_pixel_variance16x8_sse2,
1347*fb1b10abSAndroid Build Coastguard Worker 10),
1348*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_10_sub_pixel_variance8x16_sse2,
1349*fb1b10abSAndroid Build Coastguard Worker 10),
1350*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_10_sub_pixel_variance8x8_sse2,
1351*fb1b10abSAndroid Build Coastguard Worker 10),
1352*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_10_sub_pixel_variance8x4_sse2,
1353*fb1b10abSAndroid Build Coastguard Worker 10),
1354*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_8_sub_pixel_variance64x64_sse2,
1355*fb1b10abSAndroid Build Coastguard Worker 8),
1356*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_8_sub_pixel_variance64x32_sse2,
1357*fb1b10abSAndroid Build Coastguard Worker 8),
1358*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_8_sub_pixel_variance32x64_sse2,
1359*fb1b10abSAndroid Build Coastguard Worker 8),
1360*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_8_sub_pixel_variance32x32_sse2,
1361*fb1b10abSAndroid Build Coastguard Worker 8),
1362*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_8_sub_pixel_variance32x16_sse2,
1363*fb1b10abSAndroid Build Coastguard Worker 8),
1364*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_8_sub_pixel_variance16x32_sse2,
1365*fb1b10abSAndroid Build Coastguard Worker 8),
1366*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_8_sub_pixel_variance16x16_sse2,
1367*fb1b10abSAndroid Build Coastguard Worker 8),
1368*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_8_sub_pixel_variance16x8_sse2,
1369*fb1b10abSAndroid Build Coastguard Worker 8),
1370*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_8_sub_pixel_variance8x16_sse2,
1371*fb1b10abSAndroid Build Coastguard Worker 8),
1372*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_8_sub_pixel_variance8x8_sse2, 8),
1373*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_8_sub_pixel_variance8x4_sse2,
1374*fb1b10abSAndroid Build Coastguard Worker 8)));
1375*fb1b10abSAndroid Build Coastguard Worker
1376*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1377*fb1b10abSAndroid Build Coastguard Worker SSE2, VpxHBDSubpelAvgVarianceTest,
1378*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1379*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1380*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance64x64_sse2,
1381*fb1b10abSAndroid Build Coastguard Worker 12),
1382*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1383*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance64x32_sse2,
1384*fb1b10abSAndroid Build Coastguard Worker 12),
1385*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1386*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x64_sse2,
1387*fb1b10abSAndroid Build Coastguard Worker 12),
1388*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1389*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x32_sse2,
1390*fb1b10abSAndroid Build Coastguard Worker 12),
1391*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1392*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x16_sse2,
1393*fb1b10abSAndroid Build Coastguard Worker 12),
1394*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1395*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x32_sse2,
1396*fb1b10abSAndroid Build Coastguard Worker 12),
1397*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1398*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x16_sse2,
1399*fb1b10abSAndroid Build Coastguard Worker 12),
1400*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1401*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x8_sse2,
1402*fb1b10abSAndroid Build Coastguard Worker 12),
1403*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1404*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x16_sse2,
1405*fb1b10abSAndroid Build Coastguard Worker 12),
1406*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3,
1407*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x8_sse2,
1408*fb1b10abSAndroid Build Coastguard Worker 12),
1409*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2,
1410*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x4_sse2,
1411*fb1b10abSAndroid Build Coastguard Worker 12),
1412*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1413*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance64x64_sse2,
1414*fb1b10abSAndroid Build Coastguard Worker 10),
1415*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1416*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance64x32_sse2,
1417*fb1b10abSAndroid Build Coastguard Worker 10),
1418*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1419*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x64_sse2,
1420*fb1b10abSAndroid Build Coastguard Worker 10),
1421*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1422*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x32_sse2,
1423*fb1b10abSAndroid Build Coastguard Worker 10),
1424*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1425*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x16_sse2,
1426*fb1b10abSAndroid Build Coastguard Worker 10),
1427*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1428*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x32_sse2,
1429*fb1b10abSAndroid Build Coastguard Worker 10),
1430*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1431*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x16_sse2,
1432*fb1b10abSAndroid Build Coastguard Worker 10),
1433*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1434*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x8_sse2,
1435*fb1b10abSAndroid Build Coastguard Worker 10),
1436*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1437*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x16_sse2,
1438*fb1b10abSAndroid Build Coastguard Worker 10),
1439*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3,
1440*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x8_sse2,
1441*fb1b10abSAndroid Build Coastguard Worker 10),
1442*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2,
1443*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x4_sse2,
1444*fb1b10abSAndroid Build Coastguard Worker 10),
1445*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1446*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance64x64_sse2,
1447*fb1b10abSAndroid Build Coastguard Worker 8),
1448*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1449*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance64x32_sse2,
1450*fb1b10abSAndroid Build Coastguard Worker 8),
1451*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1452*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x64_sse2,
1453*fb1b10abSAndroid Build Coastguard Worker 8),
1454*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1455*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x32_sse2,
1456*fb1b10abSAndroid Build Coastguard Worker 8),
1457*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1458*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x16_sse2,
1459*fb1b10abSAndroid Build Coastguard Worker 8),
1460*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1461*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x32_sse2,
1462*fb1b10abSAndroid Build Coastguard Worker 8),
1463*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1464*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x16_sse2,
1465*fb1b10abSAndroid Build Coastguard Worker 8),
1466*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1467*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x8_sse2,
1468*fb1b10abSAndroid Build Coastguard Worker 8),
1469*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1470*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance8x16_sse2,
1471*fb1b10abSAndroid Build Coastguard Worker 8),
1472*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3,
1473*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance8x8_sse2,
1474*fb1b10abSAndroid Build Coastguard Worker 8),
1475*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2,
1476*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance8x4_sse2,
1477*fb1b10abSAndroid Build Coastguard Worker 8)));
1478*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
1479*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SSE2
1480*fb1b10abSAndroid Build Coastguard Worker
1481*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SSSE3
1482*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1483*fb1b10abSAndroid Build Coastguard Worker SSSE3, VpxSubpelVarianceTest,
1484*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1485*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_sub_pixel_variance64x64_ssse3, 0),
1486*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_sub_pixel_variance64x32_ssse3, 0),
1487*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_sub_pixel_variance32x64_ssse3, 0),
1488*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_sub_pixel_variance32x32_ssse3, 0),
1489*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_sub_pixel_variance32x16_ssse3, 0),
1490*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_sub_pixel_variance16x32_ssse3, 0),
1491*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_sub_pixel_variance16x16_ssse3, 0),
1492*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_sub_pixel_variance16x8_ssse3, 0),
1493*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_sub_pixel_variance8x16_ssse3, 0),
1494*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_sub_pixel_variance8x8_ssse3, 0),
1495*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_sub_pixel_variance8x4_ssse3, 0),
1496*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_sub_pixel_variance4x8_ssse3, 0),
1497*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_sub_pixel_variance4x4_ssse3, 0)));
1498*fb1b10abSAndroid Build Coastguard Worker
1499*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1500*fb1b10abSAndroid Build Coastguard Worker SSSE3, VpxSubpelAvgVarianceTest,
1501*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1502*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6, &vpx_sub_pixel_avg_variance64x64_ssse3,
1503*fb1b10abSAndroid Build Coastguard Worker 0),
1504*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5, &vpx_sub_pixel_avg_variance64x32_ssse3,
1505*fb1b10abSAndroid Build Coastguard Worker 0),
1506*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6, &vpx_sub_pixel_avg_variance32x64_ssse3,
1507*fb1b10abSAndroid Build Coastguard Worker 0),
1508*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5, &vpx_sub_pixel_avg_variance32x32_ssse3,
1509*fb1b10abSAndroid Build Coastguard Worker 0),
1510*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4, &vpx_sub_pixel_avg_variance32x16_ssse3,
1511*fb1b10abSAndroid Build Coastguard Worker 0),
1512*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5, &vpx_sub_pixel_avg_variance16x32_ssse3,
1513*fb1b10abSAndroid Build Coastguard Worker 0),
1514*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4, &vpx_sub_pixel_avg_variance16x16_ssse3,
1515*fb1b10abSAndroid Build Coastguard Worker 0),
1516*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3, &vpx_sub_pixel_avg_variance16x8_ssse3, 0),
1517*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4, &vpx_sub_pixel_avg_variance8x16_ssse3, 0),
1518*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3, &vpx_sub_pixel_avg_variance8x8_ssse3, 0),
1519*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2, &vpx_sub_pixel_avg_variance8x4_ssse3, 0),
1520*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3, &vpx_sub_pixel_avg_variance4x8_ssse3, 0),
1521*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2, &vpx_sub_pixel_avg_variance4x4_ssse3,
1522*fb1b10abSAndroid Build Coastguard Worker 0)));
1523*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SSSE3
1524*fb1b10abSAndroid Build Coastguard Worker
1525*fb1b10abSAndroid Build Coastguard Worker #if HAVE_AVX2
1526*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(AVX2, VpxMseTest,
1527*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_avx2),
1528*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_mse16x8_avx2)));
1529*fb1b10abSAndroid Build Coastguard Worker
1530*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1531*fb1b10abSAndroid Build Coastguard Worker AVX2, VpxVarianceTest,
1532*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_avx2),
1533*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_variance64x32_avx2),
1534*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_variance32x64_avx2),
1535*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_avx2),
1536*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_variance32x16_avx2),
1537*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_variance16x32_avx2),
1538*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_avx2),
1539*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_variance16x8_avx2),
1540*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_variance8x16_avx2),
1541*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_avx2),
1542*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_variance8x4_avx2)));
1543*fb1b10abSAndroid Build Coastguard Worker
1544*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1545*fb1b10abSAndroid Build Coastguard Worker AVX2, VpxSubpelVarianceTest,
1546*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1547*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_sub_pixel_variance64x64_avx2, 0),
1548*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_sub_pixel_variance32x32_avx2, 0)));
1549*fb1b10abSAndroid Build Coastguard Worker
1550*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1551*fb1b10abSAndroid Build Coastguard Worker AVX2, VpxSubpelAvgVarianceTest,
1552*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1553*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6, &vpx_sub_pixel_avg_variance64x64_avx2, 0),
1554*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5, &vpx_sub_pixel_avg_variance32x32_avx2,
1555*fb1b10abSAndroid Build Coastguard Worker 0)));
1556*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_AVX2
1557*fb1b10abSAndroid Build Coastguard Worker
1558*fb1b10abSAndroid Build Coastguard Worker #if HAVE_NEON
1559*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(NEON, VpxSseTest,
1560*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(SseParams(2, 2,
1561*fb1b10abSAndroid Build Coastguard Worker &vpx_get4x4sse_cs_neon)));
1562*fb1b10abSAndroid Build Coastguard Worker
1563*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(NEON, VpxMseTest,
1564*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_neon),
1565*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_mse16x8_neon),
1566*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_mse8x16_neon),
1567*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_mse8x8_neon)));
1568*fb1b10abSAndroid Build Coastguard Worker
1569*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1570*fb1b10abSAndroid Build Coastguard Worker NEON, VpxVarianceTest,
1571*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_neon),
1572*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_variance64x32_neon),
1573*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_variance32x64_neon),
1574*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_neon),
1575*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_variance32x16_neon),
1576*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_variance16x32_neon),
1577*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_neon),
1578*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_variance16x8_neon),
1579*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_variance8x16_neon),
1580*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_neon),
1581*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_variance8x4_neon),
1582*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_variance4x8_neon),
1583*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_variance4x4_neon)));
1584*fb1b10abSAndroid Build Coastguard Worker
1585*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1586*fb1b10abSAndroid Build Coastguard Worker NEON, VpxGetVarianceTest,
1587*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(GetVarianceParams(4, 4, &vpx_get16x16var_neon),
1588*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_neon),
1589*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_neon),
1590*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_neon),
1591*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_neon),
1592*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_neon)));
1593*fb1b10abSAndroid Build Coastguard Worker
1594*fb1b10abSAndroid Build Coastguard Worker #if HAVE_NEON_DOTPROD
1595*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1596*fb1b10abSAndroid Build Coastguard Worker NEON_DOTPROD, VpxSseTest,
1597*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(SseParams(2, 2, &vpx_get4x4sse_cs_neon_dotprod)));
1598*fb1b10abSAndroid Build Coastguard Worker
1599*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1600*fb1b10abSAndroid Build Coastguard Worker NEON_DOTPROD, VpxMseTest,
1601*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_neon_dotprod),
1602*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_mse16x8_neon_dotprod),
1603*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_mse8x16_neon_dotprod),
1604*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_mse8x8_neon_dotprod)));
1605*fb1b10abSAndroid Build Coastguard Worker
1606*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1607*fb1b10abSAndroid Build Coastguard Worker NEON_DOTPROD, VpxVarianceTest,
1608*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_neon_dotprod),
1609*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_variance64x32_neon_dotprod),
1610*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_variance32x64_neon_dotprod),
1611*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_neon_dotprod),
1612*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_variance32x16_neon_dotprod),
1613*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_variance16x32_neon_dotprod),
1614*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_neon_dotprod),
1615*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_variance16x8_neon_dotprod),
1616*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_variance8x16_neon_dotprod),
1617*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_neon_dotprod),
1618*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_variance8x4_neon_dotprod),
1619*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_variance4x8_neon_dotprod),
1620*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_variance4x4_neon_dotprod)));
1621*fb1b10abSAndroid Build Coastguard Worker
1622*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1623*fb1b10abSAndroid Build Coastguard Worker NEON_DOTPROD, VpxGetVarianceTest,
1624*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(GetVarianceParams(4, 4, &vpx_get16x16var_neon_dotprod),
1625*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_neon_dotprod),
1626*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_neon_dotprod),
1627*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_neon_dotprod),
1628*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_neon_dotprod),
1629*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_neon_dotprod)));
1630*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_NEON_DOTPROD
1631*fb1b10abSAndroid Build Coastguard Worker
1632*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1633*fb1b10abSAndroid Build Coastguard Worker NEON, VpxSubpelVarianceTest,
1634*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1635*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_sub_pixel_variance64x64_neon, 0),
1636*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_sub_pixel_variance64x32_neon, 0),
1637*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_sub_pixel_variance32x64_neon, 0),
1638*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_sub_pixel_variance32x32_neon, 0),
1639*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_sub_pixel_variance32x16_neon, 0),
1640*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_sub_pixel_variance16x32_neon, 0),
1641*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_sub_pixel_variance16x16_neon, 0),
1642*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_sub_pixel_variance16x8_neon, 0),
1643*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_sub_pixel_variance8x16_neon, 0),
1644*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_sub_pixel_variance8x8_neon, 0),
1645*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_sub_pixel_variance8x4_neon, 0),
1646*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_sub_pixel_variance4x8_neon, 0),
1647*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_sub_pixel_variance4x4_neon, 0)));
1648*fb1b10abSAndroid Build Coastguard Worker
1649*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1650*fb1b10abSAndroid Build Coastguard Worker NEON, VpxSubpelAvgVarianceTest,
1651*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1652*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6, &vpx_sub_pixel_avg_variance64x64_neon, 0),
1653*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5, &vpx_sub_pixel_avg_variance64x32_neon, 0),
1654*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6, &vpx_sub_pixel_avg_variance32x64_neon, 0),
1655*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5, &vpx_sub_pixel_avg_variance32x32_neon, 0),
1656*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4, &vpx_sub_pixel_avg_variance32x16_neon, 0),
1657*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5, &vpx_sub_pixel_avg_variance16x32_neon, 0),
1658*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4, &vpx_sub_pixel_avg_variance16x16_neon, 0),
1659*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3, &vpx_sub_pixel_avg_variance16x8_neon, 0),
1660*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4, &vpx_sub_pixel_avg_variance8x16_neon, 0),
1661*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3, &vpx_sub_pixel_avg_variance8x8_neon, 0),
1662*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2, &vpx_sub_pixel_avg_variance8x4_neon, 0),
1663*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3, &vpx_sub_pixel_avg_variance4x8_neon, 0),
1664*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2, &vpx_sub_pixel_avg_variance4x4_neon, 0)));
1665*fb1b10abSAndroid Build Coastguard Worker
1666*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
1667*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1668*fb1b10abSAndroid Build Coastguard Worker NEON, VpxHBDMseTest,
1669*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1670*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_12_mse16x16_neon, VPX_BITS_12),
1671*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_12_mse16x8_neon, VPX_BITS_12),
1672*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_12_mse8x16_neon, VPX_BITS_12),
1673*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_12_mse8x8_neon, VPX_BITS_12),
1674*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_10_mse16x16_neon, VPX_BITS_10),
1675*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_10_mse16x8_neon, VPX_BITS_10),
1676*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_10_mse8x16_neon, VPX_BITS_10),
1677*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_10_mse8x8_neon, VPX_BITS_10),
1678*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_8_mse16x16_neon, VPX_BITS_8),
1679*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_8_mse16x8_neon, VPX_BITS_8),
1680*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_8_mse8x16_neon, VPX_BITS_8),
1681*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_8_mse8x8_neon, VPX_BITS_8)));
1682*fb1b10abSAndroid Build Coastguard Worker
1683*fb1b10abSAndroid Build Coastguard Worker #if HAVE_NEON_DOTPROD
1684*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1685*fb1b10abSAndroid Build Coastguard Worker NEON_DOTPROD, VpxHBDMseTest,
1686*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1687*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_8_mse16x16_neon_dotprod, VPX_BITS_8),
1688*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_8_mse16x8_neon_dotprod, VPX_BITS_8),
1689*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_8_mse8x16_neon_dotprod, VPX_BITS_8),
1690*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_8_mse8x8_neon_dotprod, VPX_BITS_8)));
1691*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_NEON_DOTPROD
1692*fb1b10abSAndroid Build Coastguard Worker
1693*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SVE
1694*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1695*fb1b10abSAndroid Build Coastguard Worker SVE, VpxHBDMseTest,
1696*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_highbd_12_mse16x16_sve, VPX_BITS_12),
1697*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_12_mse16x8_sve, VPX_BITS_12),
1698*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_12_mse8x16_sve, VPX_BITS_12),
1699*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_12_mse8x8_sve, VPX_BITS_12),
1700*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 4, &vpx_highbd_10_mse16x16_sve, VPX_BITS_10),
1701*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_highbd_10_mse16x8_sve, VPX_BITS_10),
1702*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_highbd_10_mse8x16_sve, VPX_BITS_10),
1703*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_highbd_10_mse8x8_sve, VPX_BITS_10)));
1704*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SVE
1705*fb1b10abSAndroid Build Coastguard Worker
1706*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1707*fb1b10abSAndroid Build Coastguard Worker NEON, VpxHBDVarianceTest,
1708*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1709*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_12_variance64x64_neon, 12),
1710*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_12_variance64x32_neon, 12),
1711*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_12_variance32x64_neon, 12),
1712*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_12_variance32x32_neon, 12),
1713*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_12_variance32x16_neon, 12),
1714*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_12_variance16x32_neon, 12),
1715*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_12_variance16x16_neon, 12),
1716*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_12_variance16x8_neon, 12),
1717*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_12_variance8x16_neon, 12),
1718*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_12_variance8x8_neon, 12),
1719*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_12_variance8x4_neon, 12),
1720*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_12_variance4x8_neon, 12),
1721*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_12_variance4x4_neon, 12),
1722*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_10_variance64x64_neon, 10),
1723*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_10_variance64x32_neon, 10),
1724*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_10_variance32x64_neon, 10),
1725*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_10_variance32x32_neon, 10),
1726*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_10_variance32x16_neon, 10),
1727*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_10_variance16x32_neon, 10),
1728*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_10_variance16x16_neon, 10),
1729*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_10_variance16x8_neon, 10),
1730*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_10_variance8x16_neon, 10),
1731*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_10_variance8x8_neon, 10),
1732*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_10_variance8x4_neon, 10),
1733*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_10_variance4x8_neon, 10),
1734*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_10_variance4x4_neon, 10),
1735*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_8_variance64x64_neon, 8),
1736*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_8_variance64x32_neon, 8),
1737*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_8_variance32x64_neon, 8),
1738*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_8_variance32x32_neon, 8),
1739*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_8_variance32x16_neon, 8),
1740*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_8_variance16x32_neon, 8),
1741*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_8_variance16x16_neon, 8),
1742*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_8_variance16x8_neon, 8),
1743*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_8_variance8x16_neon, 8),
1744*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_8_variance8x8_neon, 8),
1745*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_8_variance8x4_neon, 8),
1746*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_8_variance4x8_neon, 8),
1747*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_8_variance4x4_neon, 8)));
1748*fb1b10abSAndroid Build Coastguard Worker
1749*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1750*fb1b10abSAndroid Build Coastguard Worker NEON, VpxHBDGetVarianceTest,
1751*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1752*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_12_get16x16var_neon, 12),
1753*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_12_get8x8var_neon, 12),
1754*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_10_get16x16var_neon, 10),
1755*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_10_get8x8var_neon, 10),
1756*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_8_get16x16var_neon, 8),
1757*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_8_get8x8var_neon, 8)));
1758*fb1b10abSAndroid Build Coastguard Worker
1759*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SVE
1760*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1761*fb1b10abSAndroid Build Coastguard Worker SVE, VpxHBDGetVarianceTest,
1762*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1763*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_12_get16x16var_sve, 12),
1764*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_12_get8x8var_sve, 12),
1765*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_10_get16x16var_sve, 10),
1766*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_10_get8x8var_sve, 10),
1767*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_highbd_8_get16x16var_sve, 8),
1768*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_highbd_8_get8x8var_sve, 8)));
1769*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SVE
1770*fb1b10abSAndroid Build Coastguard Worker
1771*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1772*fb1b10abSAndroid Build Coastguard Worker NEON, VpxHBDSubpelVarianceTest,
1773*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1774*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_12_sub_pixel_variance64x64_neon,
1775*fb1b10abSAndroid Build Coastguard Worker 12),
1776*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_12_sub_pixel_variance64x32_neon,
1777*fb1b10abSAndroid Build Coastguard Worker 12),
1778*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_12_sub_pixel_variance32x64_neon,
1779*fb1b10abSAndroid Build Coastguard Worker 12),
1780*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_12_sub_pixel_variance32x32_neon,
1781*fb1b10abSAndroid Build Coastguard Worker 12),
1782*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_12_sub_pixel_variance32x16_neon,
1783*fb1b10abSAndroid Build Coastguard Worker 12),
1784*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_12_sub_pixel_variance16x32_neon,
1785*fb1b10abSAndroid Build Coastguard Worker 12),
1786*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_12_sub_pixel_variance16x16_neon,
1787*fb1b10abSAndroid Build Coastguard Worker 12),
1788*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_12_sub_pixel_variance16x8_neon,
1789*fb1b10abSAndroid Build Coastguard Worker 12),
1790*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_12_sub_pixel_variance8x16_neon,
1791*fb1b10abSAndroid Build Coastguard Worker 12),
1792*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_12_sub_pixel_variance8x8_neon,
1793*fb1b10abSAndroid Build Coastguard Worker 12),
1794*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_12_sub_pixel_variance8x4_neon,
1795*fb1b10abSAndroid Build Coastguard Worker 12),
1796*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_highbd_12_sub_pixel_variance4x8_neon,
1797*fb1b10abSAndroid Build Coastguard Worker 12),
1798*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_highbd_12_sub_pixel_variance4x4_neon,
1799*fb1b10abSAndroid Build Coastguard Worker 12),
1800*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_10_sub_pixel_variance64x64_neon,
1801*fb1b10abSAndroid Build Coastguard Worker 10),
1802*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_10_sub_pixel_variance64x32_neon,
1803*fb1b10abSAndroid Build Coastguard Worker 10),
1804*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_10_sub_pixel_variance32x64_neon,
1805*fb1b10abSAndroid Build Coastguard Worker 10),
1806*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_10_sub_pixel_variance32x32_neon,
1807*fb1b10abSAndroid Build Coastguard Worker 10),
1808*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_10_sub_pixel_variance32x16_neon,
1809*fb1b10abSAndroid Build Coastguard Worker 10),
1810*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_10_sub_pixel_variance16x32_neon,
1811*fb1b10abSAndroid Build Coastguard Worker 10),
1812*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_10_sub_pixel_variance16x16_neon,
1813*fb1b10abSAndroid Build Coastguard Worker 10),
1814*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_10_sub_pixel_variance16x8_neon,
1815*fb1b10abSAndroid Build Coastguard Worker 10),
1816*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_10_sub_pixel_variance8x16_neon,
1817*fb1b10abSAndroid Build Coastguard Worker 10),
1818*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_10_sub_pixel_variance8x8_neon,
1819*fb1b10abSAndroid Build Coastguard Worker 10),
1820*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_10_sub_pixel_variance8x4_neon,
1821*fb1b10abSAndroid Build Coastguard Worker 10),
1822*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_highbd_10_sub_pixel_variance4x8_neon,
1823*fb1b10abSAndroid Build Coastguard Worker 10),
1824*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_highbd_10_sub_pixel_variance4x4_neon,
1825*fb1b10abSAndroid Build Coastguard Worker 10),
1826*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_highbd_8_sub_pixel_variance64x64_neon,
1827*fb1b10abSAndroid Build Coastguard Worker 8),
1828*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_highbd_8_sub_pixel_variance64x32_neon,
1829*fb1b10abSAndroid Build Coastguard Worker 8),
1830*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_highbd_8_sub_pixel_variance32x64_neon,
1831*fb1b10abSAndroid Build Coastguard Worker 8),
1832*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_highbd_8_sub_pixel_variance32x32_neon,
1833*fb1b10abSAndroid Build Coastguard Worker 8),
1834*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_highbd_8_sub_pixel_variance32x16_neon,
1835*fb1b10abSAndroid Build Coastguard Worker 8),
1836*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_highbd_8_sub_pixel_variance16x32_neon,
1837*fb1b10abSAndroid Build Coastguard Worker 8),
1838*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_highbd_8_sub_pixel_variance16x16_neon,
1839*fb1b10abSAndroid Build Coastguard Worker 8),
1840*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_highbd_8_sub_pixel_variance16x8_neon,
1841*fb1b10abSAndroid Build Coastguard Worker 8),
1842*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_highbd_8_sub_pixel_variance8x16_neon,
1843*fb1b10abSAndroid Build Coastguard Worker 8),
1844*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_highbd_8_sub_pixel_variance8x8_neon, 8),
1845*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_highbd_8_sub_pixel_variance8x4_neon, 8),
1846*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_highbd_8_sub_pixel_variance4x8_neon, 8),
1847*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_highbd_8_sub_pixel_variance4x4_neon,
1848*fb1b10abSAndroid Build Coastguard Worker 8)));
1849*fb1b10abSAndroid Build Coastguard Worker
1850*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1851*fb1b10abSAndroid Build Coastguard Worker NEON, VpxHBDSubpelAvgVarianceTest,
1852*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1853*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1854*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance64x64_neon,
1855*fb1b10abSAndroid Build Coastguard Worker 12),
1856*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1857*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance64x32_neon,
1858*fb1b10abSAndroid Build Coastguard Worker 12),
1859*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1860*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x64_neon,
1861*fb1b10abSAndroid Build Coastguard Worker 12),
1862*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1863*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x32_neon,
1864*fb1b10abSAndroid Build Coastguard Worker 12),
1865*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1866*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance32x16_neon,
1867*fb1b10abSAndroid Build Coastguard Worker 12),
1868*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1869*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x32_neon,
1870*fb1b10abSAndroid Build Coastguard Worker 12),
1871*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1872*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x16_neon,
1873*fb1b10abSAndroid Build Coastguard Worker 12),
1874*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1875*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance16x8_neon,
1876*fb1b10abSAndroid Build Coastguard Worker 12),
1877*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1878*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x16_neon,
1879*fb1b10abSAndroid Build Coastguard Worker 12),
1880*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3,
1881*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x8_neon,
1882*fb1b10abSAndroid Build Coastguard Worker 12),
1883*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2,
1884*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance8x4_neon,
1885*fb1b10abSAndroid Build Coastguard Worker 12),
1886*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3,
1887*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance4x8_neon,
1888*fb1b10abSAndroid Build Coastguard Worker 12),
1889*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2,
1890*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_12_sub_pixel_avg_variance4x4_neon,
1891*fb1b10abSAndroid Build Coastguard Worker 12),
1892*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1893*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance64x64_neon,
1894*fb1b10abSAndroid Build Coastguard Worker 10),
1895*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1896*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance64x32_neon,
1897*fb1b10abSAndroid Build Coastguard Worker 10),
1898*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1899*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x64_neon,
1900*fb1b10abSAndroid Build Coastguard Worker 10),
1901*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1902*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x32_neon,
1903*fb1b10abSAndroid Build Coastguard Worker 10),
1904*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1905*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance32x16_neon,
1906*fb1b10abSAndroid Build Coastguard Worker 10),
1907*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1908*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x32_neon,
1909*fb1b10abSAndroid Build Coastguard Worker 10),
1910*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1911*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x16_neon,
1912*fb1b10abSAndroid Build Coastguard Worker 10),
1913*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1914*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance16x8_neon,
1915*fb1b10abSAndroid Build Coastguard Worker 10),
1916*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1917*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x16_neon,
1918*fb1b10abSAndroid Build Coastguard Worker 10),
1919*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3,
1920*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x8_neon,
1921*fb1b10abSAndroid Build Coastguard Worker 10),
1922*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2,
1923*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance8x4_neon,
1924*fb1b10abSAndroid Build Coastguard Worker 10),
1925*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3,
1926*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance4x8_neon,
1927*fb1b10abSAndroid Build Coastguard Worker 10),
1928*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2,
1929*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_10_sub_pixel_avg_variance4x4_neon,
1930*fb1b10abSAndroid Build Coastguard Worker 10),
1931*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6,
1932*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance64x64_neon,
1933*fb1b10abSAndroid Build Coastguard Worker 8),
1934*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5,
1935*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance64x32_neon,
1936*fb1b10abSAndroid Build Coastguard Worker 8),
1937*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6,
1938*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x64_neon,
1939*fb1b10abSAndroid Build Coastguard Worker 8),
1940*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5,
1941*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x32_neon,
1942*fb1b10abSAndroid Build Coastguard Worker 8),
1943*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4,
1944*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance32x16_neon,
1945*fb1b10abSAndroid Build Coastguard Worker 8),
1946*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5,
1947*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x32_neon,
1948*fb1b10abSAndroid Build Coastguard Worker 8),
1949*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4,
1950*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x16_neon,
1951*fb1b10abSAndroid Build Coastguard Worker 8),
1952*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3,
1953*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance16x8_neon,
1954*fb1b10abSAndroid Build Coastguard Worker 8),
1955*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4,
1956*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance8x16_neon,
1957*fb1b10abSAndroid Build Coastguard Worker 8),
1958*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3,
1959*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance8x8_neon,
1960*fb1b10abSAndroid Build Coastguard Worker 8),
1961*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2,
1962*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance8x4_neon,
1963*fb1b10abSAndroid Build Coastguard Worker 8),
1964*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3,
1965*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance4x8_neon,
1966*fb1b10abSAndroid Build Coastguard Worker 8),
1967*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2,
1968*fb1b10abSAndroid Build Coastguard Worker &vpx_highbd_8_sub_pixel_avg_variance4x4_neon,
1969*fb1b10abSAndroid Build Coastguard Worker 8)));
1970*fb1b10abSAndroid Build Coastguard Worker
1971*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
1972*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_NEON
1973*fb1b10abSAndroid Build Coastguard Worker
1974*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SVE
1975*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
1976*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
1977*fb1b10abSAndroid Build Coastguard Worker SVE, VpxHBDVarianceTest,
1978*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
1979*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_12_variance64x64_sve, 12),
1980*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_12_variance64x32_sve, 12),
1981*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_12_variance32x64_sve, 12),
1982*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_12_variance32x32_sve, 12),
1983*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_12_variance32x16_sve, 12),
1984*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_12_variance16x32_sve, 12),
1985*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_12_variance16x16_sve, 12),
1986*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_12_variance16x8_sve, 12),
1987*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_12_variance8x16_sve, 12),
1988*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_12_variance8x8_sve, 12),
1989*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_12_variance8x4_sve, 12),
1990*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_12_variance4x8_sve, 12),
1991*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_12_variance4x4_sve, 12),
1992*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_10_variance64x64_sve, 10),
1993*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_10_variance64x32_sve, 10),
1994*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_10_variance32x64_sve, 10),
1995*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_10_variance32x32_sve, 10),
1996*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_10_variance32x16_sve, 10),
1997*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_10_variance16x32_sve, 10),
1998*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_10_variance16x16_sve, 10),
1999*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_10_variance16x8_sve, 10),
2000*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_10_variance8x16_sve, 10),
2001*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_10_variance8x8_sve, 10),
2002*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_10_variance8x4_sve, 10),
2003*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_10_variance4x8_sve, 10),
2004*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_10_variance4x4_sve, 10),
2005*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 6, &vpx_highbd_8_variance64x64_sve, 8),
2006*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_highbd_8_variance64x32_sve, 8),
2007*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_highbd_8_variance32x64_sve, 8),
2008*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_highbd_8_variance32x32_sve, 8),
2009*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_highbd_8_variance32x16_sve, 8),
2010*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_highbd_8_variance16x32_sve, 8),
2011*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_highbd_8_variance16x16_sve, 8),
2012*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_highbd_8_variance16x8_sve, 8),
2013*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_highbd_8_variance8x16_sve, 8),
2014*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_highbd_8_variance8x8_sve, 8),
2015*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_highbd_8_variance8x4_sve, 8),
2016*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_highbd_8_variance4x8_sve, 8),
2017*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_highbd_8_variance4x4_sve, 8)));
2018*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9_HIGHBITDEPTH
2019*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_SVE
2020*fb1b10abSAndroid Build Coastguard Worker
2021*fb1b10abSAndroid Build Coastguard Worker #if HAVE_MSA
2022*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(MSA, SumOfSquaresTest,
2023*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(vpx_get_mb_ss_msa));
2024*fb1b10abSAndroid Build Coastguard Worker
2025*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(MSA, VpxSseTest,
2026*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(SseParams(2, 2,
2027*fb1b10abSAndroid Build Coastguard Worker &vpx_get4x4sse_cs_msa)));
2028*fb1b10abSAndroid Build Coastguard Worker
2029*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(MSA, VpxMseTest,
2030*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_msa),
2031*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_mse16x8_msa),
2032*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_mse8x16_msa),
2033*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_mse8x8_msa)));
2034*fb1b10abSAndroid Build Coastguard Worker
2035*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2036*fb1b10abSAndroid Build Coastguard Worker MSA, VpxVarianceTest,
2037*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_msa),
2038*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_variance64x32_msa),
2039*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_variance32x64_msa),
2040*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_msa),
2041*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_variance32x16_msa),
2042*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_variance16x32_msa),
2043*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_msa),
2044*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_variance16x8_msa),
2045*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_variance8x16_msa),
2046*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_msa),
2047*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_variance8x4_msa),
2048*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_variance4x8_msa),
2049*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_variance4x4_msa)));
2050*fb1b10abSAndroid Build Coastguard Worker
2051*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2052*fb1b10abSAndroid Build Coastguard Worker MSA, VpxGetVarianceTest,
2053*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(GetVarianceParams(4, 4, &vpx_get16x16var_msa),
2054*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_msa),
2055*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_msa),
2056*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_msa),
2057*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_msa),
2058*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_msa)));
2059*fb1b10abSAndroid Build Coastguard Worker
2060*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2061*fb1b10abSAndroid Build Coastguard Worker MSA, VpxSubpelVarianceTest,
2062*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
2063*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_sub_pixel_variance4x4_msa, 0),
2064*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_sub_pixel_variance4x8_msa, 0),
2065*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_sub_pixel_variance8x4_msa, 0),
2066*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_sub_pixel_variance8x8_msa, 0),
2067*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_sub_pixel_variance8x16_msa, 0),
2068*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_sub_pixel_variance16x8_msa, 0),
2069*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_sub_pixel_variance16x16_msa, 0),
2070*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_sub_pixel_variance16x32_msa, 0),
2071*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_sub_pixel_variance32x16_msa, 0),
2072*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_sub_pixel_variance32x32_msa, 0),
2073*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_sub_pixel_variance32x64_msa, 0),
2074*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_sub_pixel_variance64x32_msa, 0),
2075*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_sub_pixel_variance64x64_msa, 0)));
2076*fb1b10abSAndroid Build Coastguard Worker
2077*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2078*fb1b10abSAndroid Build Coastguard Worker MSA, VpxSubpelAvgVarianceTest,
2079*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
2080*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6, &vpx_sub_pixel_avg_variance64x64_msa, 0),
2081*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5, &vpx_sub_pixel_avg_variance64x32_msa, 0),
2082*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6, &vpx_sub_pixel_avg_variance32x64_msa, 0),
2083*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5, &vpx_sub_pixel_avg_variance32x32_msa, 0),
2084*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4, &vpx_sub_pixel_avg_variance32x16_msa, 0),
2085*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5, &vpx_sub_pixel_avg_variance16x32_msa, 0),
2086*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4, &vpx_sub_pixel_avg_variance16x16_msa, 0),
2087*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3, &vpx_sub_pixel_avg_variance16x8_msa, 0),
2088*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4, &vpx_sub_pixel_avg_variance8x16_msa, 0),
2089*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3, &vpx_sub_pixel_avg_variance8x8_msa, 0),
2090*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2, &vpx_sub_pixel_avg_variance8x4_msa, 0),
2091*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3, &vpx_sub_pixel_avg_variance4x8_msa, 0),
2092*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2, &vpx_sub_pixel_avg_variance4x4_msa, 0)));
2093*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_MSA
2094*fb1b10abSAndroid Build Coastguard Worker
2095*fb1b10abSAndroid Build Coastguard Worker #if HAVE_VSX
2096*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(VSX, SumOfSquaresTest,
2097*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(vpx_get_mb_ss_vsx));
2098*fb1b10abSAndroid Build Coastguard Worker
2099*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(VSX, VpxSseTest,
2100*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(SseParams(2, 2,
2101*fb1b10abSAndroid Build Coastguard Worker &vpx_get4x4sse_cs_vsx)));
2102*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(VSX, VpxMseTest,
2103*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_vsx),
2104*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_mse16x8_vsx),
2105*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_mse8x16_vsx),
2106*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_mse8x8_vsx)));
2107*fb1b10abSAndroid Build Coastguard Worker
2108*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2109*fb1b10abSAndroid Build Coastguard Worker VSX, VpxVarianceTest,
2110*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_vsx),
2111*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_variance64x32_vsx),
2112*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_variance32x64_vsx),
2113*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_vsx),
2114*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_variance32x16_vsx),
2115*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_variance16x32_vsx),
2116*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_vsx),
2117*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_variance16x8_vsx),
2118*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_variance8x16_vsx),
2119*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_vsx),
2120*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_variance8x4_vsx),
2121*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_variance4x8_vsx),
2122*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_variance4x4_vsx)));
2123*fb1b10abSAndroid Build Coastguard Worker
2124*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2125*fb1b10abSAndroid Build Coastguard Worker VSX, VpxGetVarianceTest,
2126*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(GetVarianceParams(4, 4, &vpx_get16x16var_vsx),
2127*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_vsx),
2128*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_vsx),
2129*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_vsx),
2130*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(4, 4, &vpx_get16x16var_vsx),
2131*fb1b10abSAndroid Build Coastguard Worker GetVarianceParams(3, 3, &vpx_get8x8var_vsx)));
2132*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_VSX
2133*fb1b10abSAndroid Build Coastguard Worker
2134*fb1b10abSAndroid Build Coastguard Worker #if HAVE_MMI
2135*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(MMI, VpxMseTest,
2136*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_mmi),
2137*fb1b10abSAndroid Build Coastguard Worker MseParams(4, 3, &vpx_mse16x8_mmi),
2138*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 4, &vpx_mse8x16_mmi),
2139*fb1b10abSAndroid Build Coastguard Worker MseParams(3, 3, &vpx_mse8x8_mmi)));
2140*fb1b10abSAndroid Build Coastguard Worker
2141*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2142*fb1b10abSAndroid Build Coastguard Worker MMI, VpxVarianceTest,
2143*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_mmi),
2144*fb1b10abSAndroid Build Coastguard Worker VarianceParams(6, 5, &vpx_variance64x32_mmi),
2145*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 6, &vpx_variance32x64_mmi),
2146*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_mmi),
2147*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 4, &vpx_variance32x16_mmi),
2148*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 5, &vpx_variance16x32_mmi),
2149*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_mmi),
2150*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 3, &vpx_variance16x8_mmi),
2151*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 4, &vpx_variance8x16_mmi),
2152*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_mmi),
2153*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 2, &vpx_variance8x4_mmi),
2154*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 3, &vpx_variance4x8_mmi),
2155*fb1b10abSAndroid Build Coastguard Worker VarianceParams(2, 2, &vpx_variance4x4_mmi)));
2156*fb1b10abSAndroid Build Coastguard Worker
2157*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2158*fb1b10abSAndroid Build Coastguard Worker MMI, VpxSubpelVarianceTest,
2159*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
2160*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 6, &vpx_sub_pixel_variance64x64_mmi, 0),
2161*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(6, 5, &vpx_sub_pixel_variance64x32_mmi, 0),
2162*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 6, &vpx_sub_pixel_variance32x64_mmi, 0),
2163*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_sub_pixel_variance32x32_mmi, 0),
2164*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 4, &vpx_sub_pixel_variance32x16_mmi, 0),
2165*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 5, &vpx_sub_pixel_variance16x32_mmi, 0),
2166*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_sub_pixel_variance16x16_mmi, 0),
2167*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 3, &vpx_sub_pixel_variance16x8_mmi, 0),
2168*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 4, &vpx_sub_pixel_variance8x16_mmi, 0),
2169*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_sub_pixel_variance8x8_mmi, 0),
2170*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 2, &vpx_sub_pixel_variance8x4_mmi, 0),
2171*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 3, &vpx_sub_pixel_variance4x8_mmi, 0),
2172*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(2, 2, &vpx_sub_pixel_variance4x4_mmi, 0)));
2173*fb1b10abSAndroid Build Coastguard Worker
2174*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2175*fb1b10abSAndroid Build Coastguard Worker MMI, VpxSubpelAvgVarianceTest,
2176*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
2177*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 6, &vpx_sub_pixel_avg_variance64x64_mmi, 0),
2178*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(6, 5, &vpx_sub_pixel_avg_variance64x32_mmi, 0),
2179*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 6, &vpx_sub_pixel_avg_variance32x64_mmi, 0),
2180*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 5, &vpx_sub_pixel_avg_variance32x32_mmi, 0),
2181*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(5, 4, &vpx_sub_pixel_avg_variance32x16_mmi, 0),
2182*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 5, &vpx_sub_pixel_avg_variance16x32_mmi, 0),
2183*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 4, &vpx_sub_pixel_avg_variance16x16_mmi, 0),
2184*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(4, 3, &vpx_sub_pixel_avg_variance16x8_mmi, 0),
2185*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 4, &vpx_sub_pixel_avg_variance8x16_mmi, 0),
2186*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 3, &vpx_sub_pixel_avg_variance8x8_mmi, 0),
2187*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(3, 2, &vpx_sub_pixel_avg_variance8x4_mmi, 0),
2188*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 3, &vpx_sub_pixel_avg_variance4x8_mmi, 0),
2189*fb1b10abSAndroid Build Coastguard Worker SubpelAvgVarianceParams(2, 2, &vpx_sub_pixel_avg_variance4x4_mmi, 0)));
2190*fb1b10abSAndroid Build Coastguard Worker #endif // HAVE_MMI
2191*fb1b10abSAndroid Build Coastguard Worker
2192*fb1b10abSAndroid Build Coastguard Worker #if HAVE_LSX
2193*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(LSX, VpxMseTest,
2194*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(MseParams(4, 4, &vpx_mse16x16_lsx)));
2195*fb1b10abSAndroid Build Coastguard Worker
2196*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2197*fb1b10abSAndroid Build Coastguard Worker LSX, VpxVarianceTest,
2198*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_lsx),
2199*fb1b10abSAndroid Build Coastguard Worker VarianceParams(5, 5, &vpx_variance32x32_lsx),
2200*fb1b10abSAndroid Build Coastguard Worker VarianceParams(4, 4, &vpx_variance16x16_lsx),
2201*fb1b10abSAndroid Build Coastguard Worker VarianceParams(3, 3, &vpx_variance8x8_lsx)));
2202*fb1b10abSAndroid Build Coastguard Worker
2203*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
2204*fb1b10abSAndroid Build Coastguard Worker LSX, VpxSubpelVarianceTest,
2205*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(
2206*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(3, 3, &vpx_sub_pixel_variance8x8_lsx, 0),
2207*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(4, 4, &vpx_sub_pixel_variance16x16_lsx, 0),
2208*fb1b10abSAndroid Build Coastguard Worker SubpelVarianceParams(5, 5, &vpx_sub_pixel_variance32x32_lsx, 0)));
2209*fb1b10abSAndroid Build Coastguard Worker
2210*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(LSX, VpxSubpelAvgVarianceTest,
2211*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(SubpelAvgVarianceParams(
2212*fb1b10abSAndroid Build Coastguard Worker 6, 6, &vpx_sub_pixel_avg_variance64x64_lsx, 0)));
2213*fb1b10abSAndroid Build Coastguard Worker #endif
2214*fb1b10abSAndroid Build Coastguard Worker } // namespace
2215