xref: /aosp_15_r20/external/libvpx/test/minmax_test.cc (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker /*
2*fb1b10abSAndroid Build Coastguard Worker  *  Copyright (c) 2016 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 <stdlib.h>
12*fb1b10abSAndroid Build Coastguard Worker #include <string.h>
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 "vpx/vpx_integer.h"
19*fb1b10abSAndroid Build Coastguard Worker #include "vpx_mem/vpx_mem.h"
20*fb1b10abSAndroid Build Coastguard Worker 
21*fb1b10abSAndroid Build Coastguard Worker #include "test/acm_random.h"
22*fb1b10abSAndroid Build Coastguard Worker #include "test/register_state_check.h"
23*fb1b10abSAndroid Build Coastguard Worker 
24*fb1b10abSAndroid Build Coastguard Worker namespace {
25*fb1b10abSAndroid Build Coastguard Worker 
26*fb1b10abSAndroid Build Coastguard Worker using ::libvpx_test::ACMRandom;
27*fb1b10abSAndroid Build Coastguard Worker 
28*fb1b10abSAndroid Build Coastguard Worker typedef void (*MinMaxFunc)(const uint8_t *a, int a_stride, const uint8_t *b,
29*fb1b10abSAndroid Build Coastguard Worker                            int b_stride, int *min, int *max);
30*fb1b10abSAndroid Build Coastguard Worker 
31*fb1b10abSAndroid Build Coastguard Worker class MinMaxTest : public ::testing::TestWithParam<MinMaxFunc> {
32*fb1b10abSAndroid Build Coastguard Worker  public:
SetUp()33*fb1b10abSAndroid Build Coastguard Worker   void SetUp() override {
34*fb1b10abSAndroid Build Coastguard Worker     mm_func_ = GetParam();
35*fb1b10abSAndroid Build Coastguard Worker     rnd_.Reset(ACMRandom::DeterministicSeed());
36*fb1b10abSAndroid Build Coastguard Worker   }
37*fb1b10abSAndroid Build Coastguard Worker 
38*fb1b10abSAndroid Build Coastguard Worker  protected:
39*fb1b10abSAndroid Build Coastguard Worker   MinMaxFunc mm_func_;
40*fb1b10abSAndroid Build Coastguard Worker   ACMRandom rnd_;
41*fb1b10abSAndroid Build Coastguard Worker };
42*fb1b10abSAndroid Build Coastguard Worker 
reference_minmax(const uint8_t * a,int a_stride,const uint8_t * b,int b_stride,int * min_ret,int * max_ret)43*fb1b10abSAndroid Build Coastguard Worker void reference_minmax(const uint8_t *a, int a_stride, const uint8_t *b,
44*fb1b10abSAndroid Build Coastguard Worker                       int b_stride, int *min_ret, int *max_ret) {
45*fb1b10abSAndroid Build Coastguard Worker   int min = 255;
46*fb1b10abSAndroid Build Coastguard Worker   int max = 0;
47*fb1b10abSAndroid Build Coastguard Worker   for (int i = 0; i < 8; i++) {
48*fb1b10abSAndroid Build Coastguard Worker     for (int j = 0; j < 8; j++) {
49*fb1b10abSAndroid Build Coastguard Worker       const int diff = abs(a[i * a_stride + j] - b[i * b_stride + j]);
50*fb1b10abSAndroid Build Coastguard Worker       if (min > diff) min = diff;
51*fb1b10abSAndroid Build Coastguard Worker       if (max < diff) max = diff;
52*fb1b10abSAndroid Build Coastguard Worker     }
53*fb1b10abSAndroid Build Coastguard Worker   }
54*fb1b10abSAndroid Build Coastguard Worker 
55*fb1b10abSAndroid Build Coastguard Worker   *min_ret = min;
56*fb1b10abSAndroid Build Coastguard Worker   *max_ret = max;
57*fb1b10abSAndroid Build Coastguard Worker }
58*fb1b10abSAndroid Build Coastguard Worker 
TEST_P(MinMaxTest,MinValue)59*fb1b10abSAndroid Build Coastguard Worker TEST_P(MinMaxTest, MinValue) {
60*fb1b10abSAndroid Build Coastguard Worker   for (int i = 0; i < 64; i++) {
61*fb1b10abSAndroid Build Coastguard Worker     uint8_t a[64], b[64];
62*fb1b10abSAndroid Build Coastguard Worker     memset(a, 0, sizeof(a));
63*fb1b10abSAndroid Build Coastguard Worker     memset(b, 255, sizeof(b));
64*fb1b10abSAndroid Build Coastguard Worker     b[i] = i;  // Set a minimum difference of i.
65*fb1b10abSAndroid Build Coastguard Worker 
66*fb1b10abSAndroid Build Coastguard Worker     int min, max;
67*fb1b10abSAndroid Build Coastguard Worker     ASM_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
68*fb1b10abSAndroid Build Coastguard Worker     EXPECT_EQ(255, max);
69*fb1b10abSAndroid Build Coastguard Worker     EXPECT_EQ(i, min);
70*fb1b10abSAndroid Build Coastguard Worker   }
71*fb1b10abSAndroid Build Coastguard Worker }
72*fb1b10abSAndroid Build Coastguard Worker 
TEST_P(MinMaxTest,MaxValue)73*fb1b10abSAndroid Build Coastguard Worker TEST_P(MinMaxTest, MaxValue) {
74*fb1b10abSAndroid Build Coastguard Worker   for (int i = 0; i < 64; i++) {
75*fb1b10abSAndroid Build Coastguard Worker     uint8_t a[64], b[64];
76*fb1b10abSAndroid Build Coastguard Worker     memset(a, 0, sizeof(a));
77*fb1b10abSAndroid Build Coastguard Worker     memset(b, 0, sizeof(b));
78*fb1b10abSAndroid Build Coastguard Worker     b[i] = i;  // Set a maximum difference of i.
79*fb1b10abSAndroid Build Coastguard Worker 
80*fb1b10abSAndroid Build Coastguard Worker     int min, max;
81*fb1b10abSAndroid Build Coastguard Worker     ASM_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
82*fb1b10abSAndroid Build Coastguard Worker     EXPECT_EQ(i, max);
83*fb1b10abSAndroid Build Coastguard Worker     EXPECT_EQ(0, min);
84*fb1b10abSAndroid Build Coastguard Worker   }
85*fb1b10abSAndroid Build Coastguard Worker }
86*fb1b10abSAndroid Build Coastguard Worker 
TEST_P(MinMaxTest,CompareReference)87*fb1b10abSAndroid Build Coastguard Worker TEST_P(MinMaxTest, CompareReference) {
88*fb1b10abSAndroid Build Coastguard Worker   uint8_t a[64], b[64];
89*fb1b10abSAndroid Build Coastguard Worker   for (int j = 0; j < 64; j++) {
90*fb1b10abSAndroid Build Coastguard Worker     a[j] = rnd_.Rand8();
91*fb1b10abSAndroid Build Coastguard Worker     b[j] = rnd_.Rand8();
92*fb1b10abSAndroid Build Coastguard Worker   }
93*fb1b10abSAndroid Build Coastguard Worker 
94*fb1b10abSAndroid Build Coastguard Worker   int min_ref, max_ref, min, max;
95*fb1b10abSAndroid Build Coastguard Worker   reference_minmax(a, 8, b, 8, &min_ref, &max_ref);
96*fb1b10abSAndroid Build Coastguard Worker   ASM_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
97*fb1b10abSAndroid Build Coastguard Worker   EXPECT_EQ(max_ref, max);
98*fb1b10abSAndroid Build Coastguard Worker   EXPECT_EQ(min_ref, min);
99*fb1b10abSAndroid Build Coastguard Worker }
100*fb1b10abSAndroid Build Coastguard Worker 
TEST_P(MinMaxTest,CompareReferenceAndVaryStride)101*fb1b10abSAndroid Build Coastguard Worker TEST_P(MinMaxTest, CompareReferenceAndVaryStride) {
102*fb1b10abSAndroid Build Coastguard Worker   uint8_t a[8 * 64], b[8 * 64];
103*fb1b10abSAndroid Build Coastguard Worker   for (int i = 0; i < 8 * 64; i++) {
104*fb1b10abSAndroid Build Coastguard Worker     a[i] = rnd_.Rand8();
105*fb1b10abSAndroid Build Coastguard Worker     b[i] = rnd_.Rand8();
106*fb1b10abSAndroid Build Coastguard Worker   }
107*fb1b10abSAndroid Build Coastguard Worker   for (int a_stride = 8; a_stride <= 64; a_stride += 8) {
108*fb1b10abSAndroid Build Coastguard Worker     for (int b_stride = 8; b_stride <= 64; b_stride += 8) {
109*fb1b10abSAndroid Build Coastguard Worker       int min_ref, max_ref, min, max;
110*fb1b10abSAndroid Build Coastguard Worker       reference_minmax(a, a_stride, b, b_stride, &min_ref, &max_ref);
111*fb1b10abSAndroid Build Coastguard Worker       ASM_REGISTER_STATE_CHECK(mm_func_(a, a_stride, b, b_stride, &min, &max));
112*fb1b10abSAndroid Build Coastguard Worker       EXPECT_EQ(max_ref, max)
113*fb1b10abSAndroid Build Coastguard Worker           << "when a_stride = " << a_stride << " and b_stride = " << b_stride;
114*fb1b10abSAndroid Build Coastguard Worker       EXPECT_EQ(min_ref, min)
115*fb1b10abSAndroid Build Coastguard Worker           << "when a_stride = " << a_stride << " and b_stride = " << b_stride;
116*fb1b10abSAndroid Build Coastguard Worker     }
117*fb1b10abSAndroid Build Coastguard Worker   }
118*fb1b10abSAndroid Build Coastguard Worker }
119*fb1b10abSAndroid Build Coastguard Worker 
120*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
121*fb1b10abSAndroid Build Coastguard Worker 
122*fb1b10abSAndroid Build Coastguard Worker using HBDMinMaxTest = MinMaxTest;
123*fb1b10abSAndroid Build Coastguard Worker 
highbd_reference_minmax(const uint8_t * a,int a_stride,const uint8_t * b,int b_stride,int * min_ret,int * max_ret)124*fb1b10abSAndroid Build Coastguard Worker void highbd_reference_minmax(const uint8_t *a, int a_stride, const uint8_t *b,
125*fb1b10abSAndroid Build Coastguard Worker                              int b_stride, int *min_ret, int *max_ret) {
126*fb1b10abSAndroid Build Coastguard Worker   int min = 65535;
127*fb1b10abSAndroid Build Coastguard Worker   int max = 0;
128*fb1b10abSAndroid Build Coastguard Worker   const uint16_t *a_ptr = CONVERT_TO_SHORTPTR(a);
129*fb1b10abSAndroid Build Coastguard Worker   const uint16_t *b_ptr = CONVERT_TO_SHORTPTR(b);
130*fb1b10abSAndroid Build Coastguard Worker   for (int i = 0; i < 8; i++) {
131*fb1b10abSAndroid Build Coastguard Worker     for (int j = 0; j < 8; j++) {
132*fb1b10abSAndroid Build Coastguard Worker       const int diff = abs(a_ptr[i * a_stride + j] - b_ptr[i * b_stride + j]);
133*fb1b10abSAndroid Build Coastguard Worker       if (min > diff) min = diff;
134*fb1b10abSAndroid Build Coastguard Worker       if (max < diff) max = diff;
135*fb1b10abSAndroid Build Coastguard Worker     }
136*fb1b10abSAndroid Build Coastguard Worker   }
137*fb1b10abSAndroid Build Coastguard Worker 
138*fb1b10abSAndroid Build Coastguard Worker   *min_ret = min;
139*fb1b10abSAndroid Build Coastguard Worker   *max_ret = max;
140*fb1b10abSAndroid Build Coastguard Worker }
141*fb1b10abSAndroid Build Coastguard Worker 
TEST_P(HBDMinMaxTest,MinValue)142*fb1b10abSAndroid Build Coastguard Worker TEST_P(HBDMinMaxTest, MinValue) {
143*fb1b10abSAndroid Build Coastguard Worker   uint8_t *a = CONVERT_TO_BYTEPTR(
144*fb1b10abSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(vpx_malloc(64 * sizeof(uint16_t))));
145*fb1b10abSAndroid Build Coastguard Worker   uint8_t *b = CONVERT_TO_BYTEPTR(
146*fb1b10abSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(vpx_malloc(64 * sizeof(uint16_t))));
147*fb1b10abSAndroid Build Coastguard Worker   for (int i = 0; i < 64; i++) {
148*fb1b10abSAndroid Build Coastguard Worker     vpx_memset16(CONVERT_TO_SHORTPTR(a), 0, 64);
149*fb1b10abSAndroid Build Coastguard Worker     vpx_memset16(CONVERT_TO_SHORTPTR(b), 65535, 64);
150*fb1b10abSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(b)[i] = i;  // Set a minimum difference of i.
151*fb1b10abSAndroid Build Coastguard Worker 
152*fb1b10abSAndroid Build Coastguard Worker     int min, max;
153*fb1b10abSAndroid Build Coastguard Worker     ASM_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
154*fb1b10abSAndroid Build Coastguard Worker     EXPECT_EQ(65535, max);
155*fb1b10abSAndroid Build Coastguard Worker     EXPECT_EQ(i, min);
156*fb1b10abSAndroid Build Coastguard Worker   }
157*fb1b10abSAndroid Build Coastguard Worker   vpx_free(CONVERT_TO_SHORTPTR(a));
158*fb1b10abSAndroid Build Coastguard Worker   vpx_free(CONVERT_TO_SHORTPTR(b));
159*fb1b10abSAndroid Build Coastguard Worker }
160*fb1b10abSAndroid Build Coastguard Worker 
TEST_P(HBDMinMaxTest,MaxValue)161*fb1b10abSAndroid Build Coastguard Worker TEST_P(HBDMinMaxTest, MaxValue) {
162*fb1b10abSAndroid Build Coastguard Worker   uint8_t *a = CONVERT_TO_BYTEPTR(
163*fb1b10abSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(vpx_malloc(64 * sizeof(uint16_t))));
164*fb1b10abSAndroid Build Coastguard Worker   uint8_t *b = CONVERT_TO_BYTEPTR(
165*fb1b10abSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(vpx_malloc(64 * sizeof(uint16_t))));
166*fb1b10abSAndroid Build Coastguard Worker   for (int i = 0; i < 64; i++) {
167*fb1b10abSAndroid Build Coastguard Worker     vpx_memset16(CONVERT_TO_SHORTPTR(a), 0, 64);
168*fb1b10abSAndroid Build Coastguard Worker     vpx_memset16(CONVERT_TO_SHORTPTR(b), 0, 64);
169*fb1b10abSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(b)[i] = i;  // Set a minimum difference of i.
170*fb1b10abSAndroid Build Coastguard Worker 
171*fb1b10abSAndroid Build Coastguard Worker     int min, max;
172*fb1b10abSAndroid Build Coastguard Worker     ASM_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
173*fb1b10abSAndroid Build Coastguard Worker     EXPECT_EQ(i, max);
174*fb1b10abSAndroid Build Coastguard Worker     EXPECT_EQ(0, min);
175*fb1b10abSAndroid Build Coastguard Worker   }
176*fb1b10abSAndroid Build Coastguard Worker   vpx_free(CONVERT_TO_SHORTPTR(a));
177*fb1b10abSAndroid Build Coastguard Worker   vpx_free(CONVERT_TO_SHORTPTR(b));
178*fb1b10abSAndroid Build Coastguard Worker }
179*fb1b10abSAndroid Build Coastguard Worker 
TEST_P(HBDMinMaxTest,CompareReference)180*fb1b10abSAndroid Build Coastguard Worker TEST_P(HBDMinMaxTest, CompareReference) {
181*fb1b10abSAndroid Build Coastguard Worker   uint8_t *a = CONVERT_TO_BYTEPTR(
182*fb1b10abSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(vpx_malloc(64 * sizeof(uint16_t))));
183*fb1b10abSAndroid Build Coastguard Worker   uint8_t *b = CONVERT_TO_BYTEPTR(
184*fb1b10abSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(vpx_malloc(64 * sizeof(uint16_t))));
185*fb1b10abSAndroid Build Coastguard Worker   for (int j = 0; j < 64; j++) {
186*fb1b10abSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(a)[j] = rnd_.Rand16();
187*fb1b10abSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(b)[j] = rnd_.Rand16();
188*fb1b10abSAndroid Build Coastguard Worker   }
189*fb1b10abSAndroid Build Coastguard Worker 
190*fb1b10abSAndroid Build Coastguard Worker   int min_ref, max_ref, min, max;
191*fb1b10abSAndroid Build Coastguard Worker   highbd_reference_minmax(a, 8, b, 8, &min_ref, &max_ref);
192*fb1b10abSAndroid Build Coastguard Worker   ASM_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
193*fb1b10abSAndroid Build Coastguard Worker   vpx_free(CONVERT_TO_SHORTPTR(a));
194*fb1b10abSAndroid Build Coastguard Worker   vpx_free(CONVERT_TO_SHORTPTR(b));
195*fb1b10abSAndroid Build Coastguard Worker   EXPECT_EQ(max_ref, max);
196*fb1b10abSAndroid Build Coastguard Worker   EXPECT_EQ(min_ref, min);
197*fb1b10abSAndroid Build Coastguard Worker }
198*fb1b10abSAndroid Build Coastguard Worker 
TEST_P(HBDMinMaxTest,CompareReferenceAndVaryStride)199*fb1b10abSAndroid Build Coastguard Worker TEST_P(HBDMinMaxTest, CompareReferenceAndVaryStride) {
200*fb1b10abSAndroid Build Coastguard Worker   uint8_t *a = CONVERT_TO_BYTEPTR(
201*fb1b10abSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(vpx_malloc((8 * 64) * sizeof(uint16_t))));
202*fb1b10abSAndroid Build Coastguard Worker   uint8_t *b = CONVERT_TO_BYTEPTR(
203*fb1b10abSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(vpx_malloc((8 * 64) * sizeof(uint16_t))));
204*fb1b10abSAndroid Build Coastguard Worker   for (int i = 0; i < 8 * 64; i++) {
205*fb1b10abSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(a)[i] = rnd_.Rand16();
206*fb1b10abSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(b)[i] = rnd_.Rand16();
207*fb1b10abSAndroid Build Coastguard Worker   }
208*fb1b10abSAndroid Build Coastguard Worker   for (int a_stride = 8; a_stride <= 64; a_stride += 8) {
209*fb1b10abSAndroid Build Coastguard Worker     for (int b_stride = 8; b_stride <= 64; b_stride += 8) {
210*fb1b10abSAndroid Build Coastguard Worker       int min_ref, max_ref, min, max;
211*fb1b10abSAndroid Build Coastguard Worker       highbd_reference_minmax(a, a_stride, b, b_stride, &min_ref, &max_ref);
212*fb1b10abSAndroid Build Coastguard Worker       ASM_REGISTER_STATE_CHECK(mm_func_(a, a_stride, b, b_stride, &min, &max));
213*fb1b10abSAndroid Build Coastguard Worker       EXPECT_EQ(max_ref, max)
214*fb1b10abSAndroid Build Coastguard Worker           << "when a_stride = " << a_stride << " and b_stride = " << b_stride;
215*fb1b10abSAndroid Build Coastguard Worker       EXPECT_EQ(min_ref, min)
216*fb1b10abSAndroid Build Coastguard Worker           << "when a_stride = " << a_stride << " and b_stride = " << b_stride;
217*fb1b10abSAndroid Build Coastguard Worker     }
218*fb1b10abSAndroid Build Coastguard Worker   }
219*fb1b10abSAndroid Build Coastguard Worker   vpx_free(CONVERT_TO_SHORTPTR(a));
220*fb1b10abSAndroid Build Coastguard Worker   vpx_free(CONVERT_TO_SHORTPTR(b));
221*fb1b10abSAndroid Build Coastguard Worker }
222*fb1b10abSAndroid Build Coastguard Worker #endif
223*fb1b10abSAndroid Build Coastguard Worker 
224*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(C, MinMaxTest, ::testing::Values(&vpx_minmax_8x8_c));
225*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
226*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(C, HBDMinMaxTest,
227*fb1b10abSAndroid Build Coastguard Worker                          ::testing::Values(&vpx_highbd_minmax_8x8_c));
228*fb1b10abSAndroid Build Coastguard Worker #endif
229*fb1b10abSAndroid Build Coastguard Worker 
230*fb1b10abSAndroid Build Coastguard Worker #if HAVE_SSE2
231*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(SSE2, MinMaxTest,
232*fb1b10abSAndroid Build Coastguard Worker                          ::testing::Values(&vpx_minmax_8x8_sse2));
233*fb1b10abSAndroid Build Coastguard Worker #endif
234*fb1b10abSAndroid Build Coastguard Worker 
235*fb1b10abSAndroid Build Coastguard Worker #if HAVE_NEON
236*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(NEON, MinMaxTest,
237*fb1b10abSAndroid Build Coastguard Worker                          ::testing::Values(&vpx_minmax_8x8_neon));
238*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
239*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(NEON, HBDMinMaxTest,
240*fb1b10abSAndroid Build Coastguard Worker                          ::testing::Values(&vpx_highbd_minmax_8x8_neon));
241*fb1b10abSAndroid Build Coastguard Worker #endif
242*fb1b10abSAndroid Build Coastguard Worker #endif
243*fb1b10abSAndroid Build Coastguard Worker 
244*fb1b10abSAndroid Build Coastguard Worker #if HAVE_MSA
245*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(MSA, MinMaxTest,
246*fb1b10abSAndroid Build Coastguard Worker                          ::testing::Values(&vpx_minmax_8x8_msa));
247*fb1b10abSAndroid Build Coastguard Worker #endif
248*fb1b10abSAndroid Build Coastguard Worker 
249*fb1b10abSAndroid Build Coastguard Worker }  // namespace
250