xref: /aosp_15_r20/external/libaom/test/minmax_test.cc (revision 77c1e3ccc04c968bd2bc212e87364f250e820521)
1*77c1e3ccSAndroid Build Coastguard Worker /*
2*77c1e3ccSAndroid Build Coastguard Worker  * Copyright (c) 2023 The WebM project authors. All rights reserved.
3*77c1e3ccSAndroid Build Coastguard Worker  * Copyright (c) 2023, Alliance for Open Media. All rights reserved.
4*77c1e3ccSAndroid Build Coastguard Worker  *
5*77c1e3ccSAndroid Build Coastguard Worker  *  This source code is subject to the terms of the BSD 2 Clause License and
6*77c1e3ccSAndroid Build Coastguard Worker  *  the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
7*77c1e3ccSAndroid Build Coastguard Worker  *  was not distributed with this source code in the LICENSE file, you can
8*77c1e3ccSAndroid Build Coastguard Worker  *  obtain it at www.aomedia.org/license/software. If the Alliance for Open
9*77c1e3ccSAndroid Build Coastguard Worker  *  Media Patent License 1.0 was not distributed with this source code in the
10*77c1e3ccSAndroid Build Coastguard Worker  *  PATENTS file, you can obtain it at www.aomedia.org/license/patent.
11*77c1e3ccSAndroid Build Coastguard Worker  */
12*77c1e3ccSAndroid Build Coastguard Worker 
13*77c1e3ccSAndroid Build Coastguard Worker #include <stdlib.h>
14*77c1e3ccSAndroid Build Coastguard Worker #include <string.h>
15*77c1e3ccSAndroid Build Coastguard Worker 
16*77c1e3ccSAndroid Build Coastguard Worker #include "gtest/gtest.h"
17*77c1e3ccSAndroid Build Coastguard Worker 
18*77c1e3ccSAndroid Build Coastguard Worker #include "config/aom_config.h"
19*77c1e3ccSAndroid Build Coastguard Worker #include "config/aom_dsp_rtcd.h"
20*77c1e3ccSAndroid Build Coastguard Worker #include "aom_ports/mem.h"
21*77c1e3ccSAndroid Build Coastguard Worker #include "test/acm_random.h"
22*77c1e3ccSAndroid Build Coastguard Worker #include "test/register_state_check.h"
23*77c1e3ccSAndroid Build Coastguard Worker #include "test/util.h"
24*77c1e3ccSAndroid Build Coastguard Worker 
25*77c1e3ccSAndroid Build Coastguard Worker namespace {
26*77c1e3ccSAndroid Build Coastguard Worker 
27*77c1e3ccSAndroid Build Coastguard Worker using ::libaom_test::ACMRandom;
28*77c1e3ccSAndroid Build Coastguard Worker 
29*77c1e3ccSAndroid Build Coastguard Worker typedef void (*MinMaxFunc)(const uint8_t *a, int a_stride, const uint8_t *b,
30*77c1e3ccSAndroid Build Coastguard Worker                            int b_stride, int *min, int *max);
31*77c1e3ccSAndroid Build Coastguard Worker 
32*77c1e3ccSAndroid Build Coastguard Worker class MinMaxTest : public ::testing::TestWithParam<MinMaxFunc> {
33*77c1e3ccSAndroid Build Coastguard Worker  public:
SetUp()34*77c1e3ccSAndroid Build Coastguard Worker   void SetUp() override {
35*77c1e3ccSAndroid Build Coastguard Worker     mm_func_ = GetParam();
36*77c1e3ccSAndroid Build Coastguard Worker     rnd_.Reset(ACMRandom::DeterministicSeed());
37*77c1e3ccSAndroid Build Coastguard Worker   }
38*77c1e3ccSAndroid Build Coastguard Worker 
39*77c1e3ccSAndroid Build Coastguard Worker  protected:
40*77c1e3ccSAndroid Build Coastguard Worker   MinMaxFunc mm_func_;
41*77c1e3ccSAndroid Build Coastguard Worker   ACMRandom rnd_;
42*77c1e3ccSAndroid Build Coastguard Worker };
43*77c1e3ccSAndroid 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)44*77c1e3ccSAndroid Build Coastguard Worker void reference_minmax(const uint8_t *a, int a_stride, const uint8_t *b,
45*77c1e3ccSAndroid Build Coastguard Worker                       int b_stride, int *min_ret, int *max_ret) {
46*77c1e3ccSAndroid Build Coastguard Worker   int min = 255;
47*77c1e3ccSAndroid Build Coastguard Worker   int max = 0;
48*77c1e3ccSAndroid Build Coastguard Worker   for (int i = 0; i < 8; i++) {
49*77c1e3ccSAndroid Build Coastguard Worker     for (int j = 0; j < 8; j++) {
50*77c1e3ccSAndroid Build Coastguard Worker       const int diff = abs(a[i * a_stride + j] - b[i * b_stride + j]);
51*77c1e3ccSAndroid Build Coastguard Worker       if (min > diff) min = diff;
52*77c1e3ccSAndroid Build Coastguard Worker       if (max < diff) max = diff;
53*77c1e3ccSAndroid Build Coastguard Worker     }
54*77c1e3ccSAndroid Build Coastguard Worker   }
55*77c1e3ccSAndroid Build Coastguard Worker 
56*77c1e3ccSAndroid Build Coastguard Worker   *min_ret = min;
57*77c1e3ccSAndroid Build Coastguard Worker   *max_ret = max;
58*77c1e3ccSAndroid Build Coastguard Worker }
59*77c1e3ccSAndroid Build Coastguard Worker 
TEST_P(MinMaxTest,MinValue)60*77c1e3ccSAndroid Build Coastguard Worker TEST_P(MinMaxTest, MinValue) {
61*77c1e3ccSAndroid Build Coastguard Worker   for (int i = 0; i < 64; i++) {
62*77c1e3ccSAndroid Build Coastguard Worker     uint8_t a[64], b[64];
63*77c1e3ccSAndroid Build Coastguard Worker     memset(a, 0, sizeof(a));
64*77c1e3ccSAndroid Build Coastguard Worker     memset(b, 255, sizeof(b));
65*77c1e3ccSAndroid Build Coastguard Worker     b[i] = i;  // Set a minimum difference of i.
66*77c1e3ccSAndroid Build Coastguard Worker 
67*77c1e3ccSAndroid Build Coastguard Worker     int min, max;
68*77c1e3ccSAndroid Build Coastguard Worker     API_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
69*77c1e3ccSAndroid Build Coastguard Worker     EXPECT_EQ(255, max);
70*77c1e3ccSAndroid Build Coastguard Worker     EXPECT_EQ(i, min);
71*77c1e3ccSAndroid Build Coastguard Worker   }
72*77c1e3ccSAndroid Build Coastguard Worker }
73*77c1e3ccSAndroid Build Coastguard Worker 
TEST_P(MinMaxTest,MaxValue)74*77c1e3ccSAndroid Build Coastguard Worker TEST_P(MinMaxTest, MaxValue) {
75*77c1e3ccSAndroid Build Coastguard Worker   for (int i = 0; i < 64; i++) {
76*77c1e3ccSAndroid Build Coastguard Worker     uint8_t a[64], b[64];
77*77c1e3ccSAndroid Build Coastguard Worker     memset(a, 0, sizeof(a));
78*77c1e3ccSAndroid Build Coastguard Worker     memset(b, 0, sizeof(b));
79*77c1e3ccSAndroid Build Coastguard Worker     b[i] = i;  // Set a maximum difference of i.
80*77c1e3ccSAndroid Build Coastguard Worker 
81*77c1e3ccSAndroid Build Coastguard Worker     int min, max;
82*77c1e3ccSAndroid Build Coastguard Worker     API_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
83*77c1e3ccSAndroid Build Coastguard Worker     EXPECT_EQ(i, max);
84*77c1e3ccSAndroid Build Coastguard Worker     EXPECT_EQ(0, min);
85*77c1e3ccSAndroid Build Coastguard Worker   }
86*77c1e3ccSAndroid Build Coastguard Worker }
87*77c1e3ccSAndroid Build Coastguard Worker 
TEST_P(MinMaxTest,CompareReference)88*77c1e3ccSAndroid Build Coastguard Worker TEST_P(MinMaxTest, CompareReference) {
89*77c1e3ccSAndroid Build Coastguard Worker   uint8_t a[64], b[64];
90*77c1e3ccSAndroid Build Coastguard Worker   for (int j = 0; j < 64; j++) {
91*77c1e3ccSAndroid Build Coastguard Worker     a[j] = rnd_.Rand8();
92*77c1e3ccSAndroid Build Coastguard Worker     b[j] = rnd_.Rand8();
93*77c1e3ccSAndroid Build Coastguard Worker   }
94*77c1e3ccSAndroid Build Coastguard Worker 
95*77c1e3ccSAndroid Build Coastguard Worker   int min_ref, max_ref, min, max;
96*77c1e3ccSAndroid Build Coastguard Worker   reference_minmax(a, 8, b, 8, &min_ref, &max_ref);
97*77c1e3ccSAndroid Build Coastguard Worker   API_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
98*77c1e3ccSAndroid Build Coastguard Worker   EXPECT_EQ(max_ref, max);
99*77c1e3ccSAndroid Build Coastguard Worker   EXPECT_EQ(min_ref, min);
100*77c1e3ccSAndroid Build Coastguard Worker }
101*77c1e3ccSAndroid Build Coastguard Worker 
TEST_P(MinMaxTest,CompareReferenceAndVaryStride)102*77c1e3ccSAndroid Build Coastguard Worker TEST_P(MinMaxTest, CompareReferenceAndVaryStride) {
103*77c1e3ccSAndroid Build Coastguard Worker   uint8_t a[8 * 64], b[8 * 64];
104*77c1e3ccSAndroid Build Coastguard Worker   for (int i = 0; i < 8 * 64; i++) {
105*77c1e3ccSAndroid Build Coastguard Worker     a[i] = rnd_.Rand8();
106*77c1e3ccSAndroid Build Coastguard Worker     b[i] = rnd_.Rand8();
107*77c1e3ccSAndroid Build Coastguard Worker   }
108*77c1e3ccSAndroid Build Coastguard Worker   for (int a_stride = 8; a_stride <= 64; a_stride += 8) {
109*77c1e3ccSAndroid Build Coastguard Worker     for (int b_stride = 8; b_stride <= 64; b_stride += 8) {
110*77c1e3ccSAndroid Build Coastguard Worker       int min_ref, max_ref, min, max;
111*77c1e3ccSAndroid Build Coastguard Worker       reference_minmax(a, a_stride, b, b_stride, &min_ref, &max_ref);
112*77c1e3ccSAndroid Build Coastguard Worker       API_REGISTER_STATE_CHECK(mm_func_(a, a_stride, b, b_stride, &min, &max));
113*77c1e3ccSAndroid Build Coastguard Worker       EXPECT_EQ(max_ref, max)
114*77c1e3ccSAndroid Build Coastguard Worker           << "when a_stride = " << a_stride << " and b_stride = " << b_stride;
115*77c1e3ccSAndroid Build Coastguard Worker       EXPECT_EQ(min_ref, min)
116*77c1e3ccSAndroid Build Coastguard Worker           << "when a_stride = " << a_stride << " and b_stride = " << b_stride;
117*77c1e3ccSAndroid Build Coastguard Worker     }
118*77c1e3ccSAndroid Build Coastguard Worker   }
119*77c1e3ccSAndroid Build Coastguard Worker }
120*77c1e3ccSAndroid Build Coastguard Worker 
121*77c1e3ccSAndroid Build Coastguard Worker #if CONFIG_AV1_HIGHBITDEPTH
122*77c1e3ccSAndroid Build Coastguard Worker 
123*77c1e3ccSAndroid Build Coastguard Worker using HBDMinMaxTest = MinMaxTest;
124*77c1e3ccSAndroid 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)125*77c1e3ccSAndroid Build Coastguard Worker void highbd_reference_minmax(const uint8_t *a, int a_stride, const uint8_t *b,
126*77c1e3ccSAndroid Build Coastguard Worker                              int b_stride, int *min_ret, int *max_ret) {
127*77c1e3ccSAndroid Build Coastguard Worker   int min = 65535;
128*77c1e3ccSAndroid Build Coastguard Worker   int max = 0;
129*77c1e3ccSAndroid Build Coastguard Worker   const uint16_t *a_ptr = CONVERT_TO_SHORTPTR(a);
130*77c1e3ccSAndroid Build Coastguard Worker   const uint16_t *b_ptr = CONVERT_TO_SHORTPTR(b);
131*77c1e3ccSAndroid Build Coastguard Worker   for (int i = 0; i < 8; i++) {
132*77c1e3ccSAndroid Build Coastguard Worker     for (int j = 0; j < 8; j++) {
133*77c1e3ccSAndroid Build Coastguard Worker       const int diff = abs(a_ptr[i * a_stride + j] - b_ptr[i * b_stride + j]);
134*77c1e3ccSAndroid Build Coastguard Worker       if (min > diff) min = diff;
135*77c1e3ccSAndroid Build Coastguard Worker       if (max < diff) max = diff;
136*77c1e3ccSAndroid Build Coastguard Worker     }
137*77c1e3ccSAndroid Build Coastguard Worker   }
138*77c1e3ccSAndroid Build Coastguard Worker 
139*77c1e3ccSAndroid Build Coastguard Worker   *min_ret = min;
140*77c1e3ccSAndroid Build Coastguard Worker   *max_ret = max;
141*77c1e3ccSAndroid Build Coastguard Worker }
142*77c1e3ccSAndroid Build Coastguard Worker 
TEST_P(HBDMinMaxTest,MinValue)143*77c1e3ccSAndroid Build Coastguard Worker TEST_P(HBDMinMaxTest, MinValue) {
144*77c1e3ccSAndroid Build Coastguard Worker   uint8_t *a = CONVERT_TO_BYTEPTR(
145*77c1e3ccSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(aom_malloc(64 * sizeof(uint16_t))));
146*77c1e3ccSAndroid Build Coastguard Worker   uint8_t *b = CONVERT_TO_BYTEPTR(
147*77c1e3ccSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(aom_malloc(64 * sizeof(uint16_t))));
148*77c1e3ccSAndroid Build Coastguard Worker   for (int i = 0; i < 64; i++) {
149*77c1e3ccSAndroid Build Coastguard Worker     aom_memset16(CONVERT_TO_SHORTPTR(a), 0, 64);
150*77c1e3ccSAndroid Build Coastguard Worker     aom_memset16(CONVERT_TO_SHORTPTR(b), 65535, 64);
151*77c1e3ccSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(b)[i] = i;  // Set a minimum difference of i.
152*77c1e3ccSAndroid Build Coastguard Worker 
153*77c1e3ccSAndroid Build Coastguard Worker     int min, max;
154*77c1e3ccSAndroid Build Coastguard Worker     API_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
155*77c1e3ccSAndroid Build Coastguard Worker     EXPECT_EQ(65535, max);
156*77c1e3ccSAndroid Build Coastguard Worker     EXPECT_EQ(i, min);
157*77c1e3ccSAndroid Build Coastguard Worker   }
158*77c1e3ccSAndroid Build Coastguard Worker   aom_free(CONVERT_TO_SHORTPTR(a));
159*77c1e3ccSAndroid Build Coastguard Worker   aom_free(CONVERT_TO_SHORTPTR(b));
160*77c1e3ccSAndroid Build Coastguard Worker }
161*77c1e3ccSAndroid Build Coastguard Worker 
TEST_P(HBDMinMaxTest,MaxValue)162*77c1e3ccSAndroid Build Coastguard Worker TEST_P(HBDMinMaxTest, MaxValue) {
163*77c1e3ccSAndroid Build Coastguard Worker   uint8_t *a = CONVERT_TO_BYTEPTR(
164*77c1e3ccSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(aom_malloc(64 * sizeof(uint16_t))));
165*77c1e3ccSAndroid Build Coastguard Worker   uint8_t *b = CONVERT_TO_BYTEPTR(
166*77c1e3ccSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(aom_malloc(64 * sizeof(uint16_t))));
167*77c1e3ccSAndroid Build Coastguard Worker   for (int i = 0; i < 64; i++) {
168*77c1e3ccSAndroid Build Coastguard Worker     aom_memset16(CONVERT_TO_SHORTPTR(a), 0, 64);
169*77c1e3ccSAndroid Build Coastguard Worker     aom_memset16(CONVERT_TO_SHORTPTR(b), 0, 64);
170*77c1e3ccSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(b)[i] = i;  // Set a minimum difference of i.
171*77c1e3ccSAndroid Build Coastguard Worker 
172*77c1e3ccSAndroid Build Coastguard Worker     int min, max;
173*77c1e3ccSAndroid Build Coastguard Worker     API_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
174*77c1e3ccSAndroid Build Coastguard Worker     EXPECT_EQ(i, max);
175*77c1e3ccSAndroid Build Coastguard Worker     EXPECT_EQ(0, min);
176*77c1e3ccSAndroid Build Coastguard Worker   }
177*77c1e3ccSAndroid Build Coastguard Worker   aom_free(CONVERT_TO_SHORTPTR(a));
178*77c1e3ccSAndroid Build Coastguard Worker   aom_free(CONVERT_TO_SHORTPTR(b));
179*77c1e3ccSAndroid Build Coastguard Worker }
180*77c1e3ccSAndroid Build Coastguard Worker 
TEST_P(HBDMinMaxTest,CompareReference)181*77c1e3ccSAndroid Build Coastguard Worker TEST_P(HBDMinMaxTest, CompareReference) {
182*77c1e3ccSAndroid Build Coastguard Worker   uint8_t *a = CONVERT_TO_BYTEPTR(
183*77c1e3ccSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(aom_malloc(64 * sizeof(uint16_t))));
184*77c1e3ccSAndroid Build Coastguard Worker   uint8_t *b = CONVERT_TO_BYTEPTR(
185*77c1e3ccSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(aom_malloc(64 * sizeof(uint16_t))));
186*77c1e3ccSAndroid Build Coastguard Worker   for (int j = 0; j < 64; j++) {
187*77c1e3ccSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(a)[j] = rnd_.Rand16();
188*77c1e3ccSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(b)[j] = rnd_.Rand16();
189*77c1e3ccSAndroid Build Coastguard Worker   }
190*77c1e3ccSAndroid Build Coastguard Worker 
191*77c1e3ccSAndroid Build Coastguard Worker   int min_ref, max_ref, min, max;
192*77c1e3ccSAndroid Build Coastguard Worker   highbd_reference_minmax(a, 8, b, 8, &min_ref, &max_ref);
193*77c1e3ccSAndroid Build Coastguard Worker   API_REGISTER_STATE_CHECK(mm_func_(a, 8, b, 8, &min, &max));
194*77c1e3ccSAndroid Build Coastguard Worker   aom_free(CONVERT_TO_SHORTPTR(a));
195*77c1e3ccSAndroid Build Coastguard Worker   aom_free(CONVERT_TO_SHORTPTR(b));
196*77c1e3ccSAndroid Build Coastguard Worker   EXPECT_EQ(max_ref, max);
197*77c1e3ccSAndroid Build Coastguard Worker   EXPECT_EQ(min_ref, min);
198*77c1e3ccSAndroid Build Coastguard Worker }
199*77c1e3ccSAndroid Build Coastguard Worker 
TEST_P(HBDMinMaxTest,CompareReferenceAndVaryStride)200*77c1e3ccSAndroid Build Coastguard Worker TEST_P(HBDMinMaxTest, CompareReferenceAndVaryStride) {
201*77c1e3ccSAndroid Build Coastguard Worker   uint8_t *a = CONVERT_TO_BYTEPTR(
202*77c1e3ccSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(aom_malloc((8 * 64) * sizeof(uint16_t))));
203*77c1e3ccSAndroid Build Coastguard Worker   uint8_t *b = CONVERT_TO_BYTEPTR(
204*77c1e3ccSAndroid Build Coastguard Worker       reinterpret_cast<uint16_t *>(aom_malloc((8 * 64) * sizeof(uint16_t))));
205*77c1e3ccSAndroid Build Coastguard Worker   for (int i = 0; i < 8 * 64; i++) {
206*77c1e3ccSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(a)[i] = rnd_.Rand16();
207*77c1e3ccSAndroid Build Coastguard Worker     CONVERT_TO_SHORTPTR(b)[i] = rnd_.Rand16();
208*77c1e3ccSAndroid Build Coastguard Worker   }
209*77c1e3ccSAndroid Build Coastguard Worker   for (int a_stride = 8; a_stride <= 64; a_stride += 8) {
210*77c1e3ccSAndroid Build Coastguard Worker     for (int b_stride = 8; b_stride <= 64; b_stride += 8) {
211*77c1e3ccSAndroid Build Coastguard Worker       int min_ref, max_ref, min, max;
212*77c1e3ccSAndroid Build Coastguard Worker       highbd_reference_minmax(a, a_stride, b, b_stride, &min_ref, &max_ref);
213*77c1e3ccSAndroid Build Coastguard Worker       API_REGISTER_STATE_CHECK(mm_func_(a, a_stride, b, b_stride, &min, &max));
214*77c1e3ccSAndroid Build Coastguard Worker       EXPECT_EQ(max_ref, max)
215*77c1e3ccSAndroid Build Coastguard Worker           << "when a_stride = " << a_stride << " and b_stride = " << b_stride;
216*77c1e3ccSAndroid Build Coastguard Worker       EXPECT_EQ(min_ref, min)
217*77c1e3ccSAndroid Build Coastguard Worker           << "when a_stride = " << a_stride << " and b_stride = " << b_stride;
218*77c1e3ccSAndroid Build Coastguard Worker     }
219*77c1e3ccSAndroid Build Coastguard Worker   }
220*77c1e3ccSAndroid Build Coastguard Worker   aom_free(CONVERT_TO_SHORTPTR(a));
221*77c1e3ccSAndroid Build Coastguard Worker   aom_free(CONVERT_TO_SHORTPTR(b));
222*77c1e3ccSAndroid Build Coastguard Worker }
223*77c1e3ccSAndroid Build Coastguard Worker #endif  // CONFIG_AV1_HIGHBITDEPTH
224*77c1e3ccSAndroid Build Coastguard Worker 
225*77c1e3ccSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(C, MinMaxTest, ::testing::Values(&aom_minmax_8x8_c));
226*77c1e3ccSAndroid Build Coastguard Worker #if CONFIG_AV1_HIGHBITDEPTH
227*77c1e3ccSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(C, HBDMinMaxTest,
228*77c1e3ccSAndroid Build Coastguard Worker                          ::testing::Values(&aom_highbd_minmax_8x8_c));
229*77c1e3ccSAndroid Build Coastguard Worker #if HAVE_NEON
230*77c1e3ccSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(NEON, HBDMinMaxTest,
231*77c1e3ccSAndroid Build Coastguard Worker                          ::testing::Values(&aom_highbd_minmax_8x8_neon));
232*77c1e3ccSAndroid Build Coastguard Worker #endif
233*77c1e3ccSAndroid Build Coastguard Worker #endif
234*77c1e3ccSAndroid Build Coastguard Worker 
235*77c1e3ccSAndroid Build Coastguard Worker #if HAVE_SSE2
236*77c1e3ccSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(SSE2, MinMaxTest,
237*77c1e3ccSAndroid Build Coastguard Worker                          ::testing::Values(&aom_minmax_8x8_sse2));
238*77c1e3ccSAndroid Build Coastguard Worker #endif
239*77c1e3ccSAndroid Build Coastguard Worker 
240*77c1e3ccSAndroid Build Coastguard Worker #if HAVE_NEON
241*77c1e3ccSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(NEON, MinMaxTest,
242*77c1e3ccSAndroid Build Coastguard Worker                          ::testing::Values(&aom_minmax_8x8_neon));
243*77c1e3ccSAndroid Build Coastguard Worker #endif
244*77c1e3ccSAndroid Build Coastguard Worker }  // namespace
245