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