xref: /aosp_15_r20/external/XNNPACK/test/u8-maxpool-minmax.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates.
2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved.
3*4bdc9457SAndroid Build Coastguard Worker //
4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC
5*4bdc9457SAndroid Build Coastguard Worker //
6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the
7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree.
8*4bdc9457SAndroid Build Coastguard Worker //
9*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit!
10*4bdc9457SAndroid Build Coastguard Worker //   Specification: test/u8-maxpool-minmax.yaml
11*4bdc9457SAndroid Build Coastguard Worker //   Generator: tools/generate-maxpool-test.py
12*4bdc9457SAndroid Build Coastguard Worker 
13*4bdc9457SAndroid Build Coastguard Worker 
14*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h>
15*4bdc9457SAndroid Build Coastguard Worker 
16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h>
17*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h>
18*4bdc9457SAndroid Build Coastguard Worker 
19*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/maxpool.h>
20*4bdc9457SAndroid Build Coastguard Worker #include "maxpool-microkernel-tester.h"
21*4bdc9457SAndroid Build Coastguard Worker 
22*4bdc9457SAndroid Build Coastguard Worker 
23*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_unipass_fulltile)24*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_unipass_fulltile) {
25*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
26*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
27*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
28*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
29*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
30*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
31*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
32*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
33*4bdc9457SAndroid Build Coastguard Worker   }
34*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_unipass_fulltile_with_input_offset)35*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_unipass_fulltile_with_input_offset) {
36*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
37*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
38*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
39*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
40*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
41*4bdc9457SAndroid Build Coastguard Worker       .input_offset(19)
42*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
43*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
44*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
45*4bdc9457SAndroid Build Coastguard Worker   }
46*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_unipass_fulltile_with_qmin)47*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_unipass_fulltile_with_qmin) {
48*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
49*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
50*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
51*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
52*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
53*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
54*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
55*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
56*4bdc9457SAndroid Build Coastguard Worker   }
57*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_unipass_fulltile_with_qmax)58*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_unipass_fulltile_with_qmax) {
59*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
60*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
61*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
62*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
63*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
64*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
65*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
66*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
67*4bdc9457SAndroid Build Coastguard Worker   }
68*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_unipass_subtile)69*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_unipass_subtile) {
70*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
71*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
72*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
73*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
74*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
75*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
76*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
77*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
78*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
79*4bdc9457SAndroid Build Coastguard Worker     }
80*4bdc9457SAndroid Build Coastguard Worker   }
81*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_unipass_subtile_with_input_offset)82*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_unipass_subtile_with_input_offset) {
83*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
84*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
85*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
86*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
87*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
88*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
89*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
90*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
91*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
92*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
93*4bdc9457SAndroid Build Coastguard Worker     }
94*4bdc9457SAndroid Build Coastguard Worker   }
95*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_unipass_fulltile)96*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_unipass_fulltile) {
97*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
98*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
99*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
100*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
101*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
102*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
103*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
104*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
105*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
106*4bdc9457SAndroid Build Coastguard Worker     }
107*4bdc9457SAndroid Build Coastguard Worker   }
108*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_unipass_fulltile_with_input_offset)109*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_unipass_fulltile_with_input_offset) {
110*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
111*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
112*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
113*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
114*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
115*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
116*4bdc9457SAndroid Build Coastguard Worker         .input_offset(131)
117*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
118*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
119*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
120*4bdc9457SAndroid Build Coastguard Worker     }
121*4bdc9457SAndroid Build Coastguard Worker   }
122*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_unipass_fulltile_with_qmin)123*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_unipass_fulltile_with_qmin) {
124*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
125*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
126*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
127*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
128*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
129*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
130*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
131*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
132*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
133*4bdc9457SAndroid Build Coastguard Worker     }
134*4bdc9457SAndroid Build Coastguard Worker   }
135*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_unipass_fulltile_with_qmax)136*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_unipass_fulltile_with_qmax) {
137*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
138*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
139*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
140*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
141*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
142*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
143*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
144*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
145*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
146*4bdc9457SAndroid Build Coastguard Worker     }
147*4bdc9457SAndroid Build Coastguard Worker   }
148*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_unipass_subtile)149*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_unipass_subtile) {
150*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
151*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
152*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
153*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
154*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
155*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
156*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
157*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
158*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
159*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
160*4bdc9457SAndroid Build Coastguard Worker       }
161*4bdc9457SAndroid Build Coastguard Worker     }
162*4bdc9457SAndroid Build Coastguard Worker   }
163*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_unipass_subtile_with_input_offset)164*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_unipass_subtile_with_input_offset) {
165*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
166*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
167*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
168*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
169*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
170*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
171*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
172*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
173*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
174*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
175*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
176*4bdc9457SAndroid Build Coastguard Worker       }
177*4bdc9457SAndroid Build Coastguard Worker     }
178*4bdc9457SAndroid Build Coastguard Worker   }
179*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_unipass_fulltile)180*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_unipass_fulltile) {
181*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
182*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
183*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
184*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
185*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
186*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
187*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
188*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
189*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
190*4bdc9457SAndroid Build Coastguard Worker     }
191*4bdc9457SAndroid Build Coastguard Worker   }
192*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_unipass_fulltile_with_input_offset)193*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_unipass_fulltile_with_input_offset) {
194*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
195*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
196*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
197*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
198*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
199*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
200*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
201*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
202*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
203*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
204*4bdc9457SAndroid Build Coastguard Worker     }
205*4bdc9457SAndroid Build Coastguard Worker   }
206*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_unipass_fulltile_with_qmin)207*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_unipass_fulltile_with_qmin) {
208*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
209*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
210*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
211*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
212*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
213*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
214*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
215*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
216*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
217*4bdc9457SAndroid Build Coastguard Worker     }
218*4bdc9457SAndroid Build Coastguard Worker   }
219*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_unipass_fulltile_with_qmax)220*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_unipass_fulltile_with_qmax) {
221*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
222*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
223*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
224*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
225*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
226*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
227*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
228*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
229*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
230*4bdc9457SAndroid Build Coastguard Worker     }
231*4bdc9457SAndroid Build Coastguard Worker   }
232*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_unipass_subtile)233*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_unipass_subtile) {
234*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
235*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
236*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
237*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
238*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
239*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
240*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
241*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
242*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
243*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
244*4bdc9457SAndroid Build Coastguard Worker       }
245*4bdc9457SAndroid Build Coastguard Worker     }
246*4bdc9457SAndroid Build Coastguard Worker   }
247*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_unipass_subtile_with_input_offset)248*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_unipass_subtile_with_input_offset) {
249*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
250*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
251*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
252*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
253*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
254*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
255*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
256*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
257*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
258*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
259*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
260*4bdc9457SAndroid Build Coastguard Worker       }
261*4bdc9457SAndroid Build Coastguard Worker     }
262*4bdc9457SAndroid Build Coastguard Worker   }
263*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_unipass_fulltile)264*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_unipass_fulltile) {
265*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
266*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
267*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
268*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
269*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
270*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
271*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
272*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
273*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
274*4bdc9457SAndroid Build Coastguard Worker     }
275*4bdc9457SAndroid Build Coastguard Worker   }
276*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_unipass_fulltile_with_input_offset)277*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_unipass_fulltile_with_input_offset) {
278*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
279*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
280*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
281*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
282*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
283*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
284*4bdc9457SAndroid Build Coastguard Worker         .input_offset(37)
285*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
286*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
287*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
288*4bdc9457SAndroid Build Coastguard Worker     }
289*4bdc9457SAndroid Build Coastguard Worker   }
290*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_unipass_fulltile_with_qmin)291*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_unipass_fulltile_with_qmin) {
292*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
293*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
294*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
295*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
296*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
297*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
298*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
299*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
300*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
301*4bdc9457SAndroid Build Coastguard Worker     }
302*4bdc9457SAndroid Build Coastguard Worker   }
303*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_unipass_fulltile_with_qmax)304*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_unipass_fulltile_with_qmax) {
305*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
306*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
307*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
308*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
309*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
310*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
311*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
312*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
313*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
314*4bdc9457SAndroid Build Coastguard Worker     }
315*4bdc9457SAndroid Build Coastguard Worker   }
316*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_unipass_subtile)317*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_unipass_subtile) {
318*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
319*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
320*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
321*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
322*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
323*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
324*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
325*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
326*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
327*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
328*4bdc9457SAndroid Build Coastguard Worker       }
329*4bdc9457SAndroid Build Coastguard Worker     }
330*4bdc9457SAndroid Build Coastguard Worker   }
331*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_unipass_subtile_with_input_offset)332*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_unipass_subtile_with_input_offset) {
333*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
334*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
335*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
336*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
337*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
338*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
339*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
340*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
341*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
342*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
343*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
344*4bdc9457SAndroid Build Coastguard Worker       }
345*4bdc9457SAndroid Build Coastguard Worker     }
346*4bdc9457SAndroid Build Coastguard Worker   }
347*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_twopass_fulltile)348*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_twopass_fulltile) {
349*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
350*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
351*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
352*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
353*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
354*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
355*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
356*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
357*4bdc9457SAndroid Build Coastguard Worker   }
358*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_twopass_fulltile_with_input_offset)359*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_twopass_fulltile_with_input_offset) {
360*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
361*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
362*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
363*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
364*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
365*4bdc9457SAndroid Build Coastguard Worker       .input_offset(19)
366*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
367*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
368*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
369*4bdc9457SAndroid Build Coastguard Worker   }
370*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_twopass_fulltile_with_qmin)371*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_twopass_fulltile_with_qmin) {
372*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
373*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
374*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
375*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
376*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
377*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
378*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
379*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
380*4bdc9457SAndroid Build Coastguard Worker   }
381*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_twopass_fulltile_with_qmax)382*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_twopass_fulltile_with_qmax) {
383*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
384*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
385*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
386*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
387*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
388*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
389*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
390*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
391*4bdc9457SAndroid Build Coastguard Worker   }
392*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_twopass_subtile)393*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_twopass_subtile) {
394*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
395*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
396*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
397*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
398*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
399*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
400*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
401*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
402*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
403*4bdc9457SAndroid Build Coastguard Worker     }
404*4bdc9457SAndroid Build Coastguard Worker   }
405*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_twopass_subtile_with_input_offset)406*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_twopass_subtile_with_input_offset) {
407*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
408*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
409*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
410*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
411*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
412*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
413*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
414*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
415*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
416*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
417*4bdc9457SAndroid Build Coastguard Worker     }
418*4bdc9457SAndroid Build Coastguard Worker   }
419*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_twopass_fulltile)420*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_twopass_fulltile) {
421*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
422*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
423*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
424*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
425*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
426*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
427*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
428*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
429*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
430*4bdc9457SAndroid Build Coastguard Worker     }
431*4bdc9457SAndroid Build Coastguard Worker   }
432*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_twopass_fulltile_with_input_offset)433*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_twopass_fulltile_with_input_offset) {
434*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
435*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
436*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
437*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
438*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
439*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
440*4bdc9457SAndroid Build Coastguard Worker         .input_offset(83)
441*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
442*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
443*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
444*4bdc9457SAndroid Build Coastguard Worker     }
445*4bdc9457SAndroid Build Coastguard Worker   }
446*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_twopass_fulltile_with_qmin)447*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_twopass_fulltile_with_qmin) {
448*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
449*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
450*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
451*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
452*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
453*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
454*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
455*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
456*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
457*4bdc9457SAndroid Build Coastguard Worker     }
458*4bdc9457SAndroid Build Coastguard Worker   }
459*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_twopass_fulltile_with_qmax)460*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_twopass_fulltile_with_qmax) {
461*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
462*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
463*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
464*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
465*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
466*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
467*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
468*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
469*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
470*4bdc9457SAndroid Build Coastguard Worker     }
471*4bdc9457SAndroid Build Coastguard Worker   }
472*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_twopass_subtile)473*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_twopass_subtile) {
474*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
475*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
476*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
477*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
478*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
479*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
480*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
481*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
482*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
483*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
484*4bdc9457SAndroid Build Coastguard Worker       }
485*4bdc9457SAndroid Build Coastguard Worker     }
486*4bdc9457SAndroid Build Coastguard Worker   }
487*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_twopass_subtile_with_input_offset)488*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_twopass_subtile_with_input_offset) {
489*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
490*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
491*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
492*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
493*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
494*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
495*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
496*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
497*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
498*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
499*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
500*4bdc9457SAndroid Build Coastguard Worker       }
501*4bdc9457SAndroid Build Coastguard Worker     }
502*4bdc9457SAndroid Build Coastguard Worker   }
503*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_twopass_fulltile)504*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_twopass_fulltile) {
505*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
506*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
507*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
508*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
509*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
510*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
511*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
512*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
513*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
514*4bdc9457SAndroid Build Coastguard Worker     }
515*4bdc9457SAndroid Build Coastguard Worker   }
516*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_twopass_fulltile_with_input_offset)517*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_twopass_fulltile_with_input_offset) {
518*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
519*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
520*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
521*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
522*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
523*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
524*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
525*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
526*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
527*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
528*4bdc9457SAndroid Build Coastguard Worker     }
529*4bdc9457SAndroid Build Coastguard Worker   }
530*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_twopass_fulltile_with_qmin)531*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_twopass_fulltile_with_qmin) {
532*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
533*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
534*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
535*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
536*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
537*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
538*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
539*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
540*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
541*4bdc9457SAndroid Build Coastguard Worker     }
542*4bdc9457SAndroid Build Coastguard Worker   }
543*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_twopass_fulltile_with_qmax)544*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_twopass_fulltile_with_qmax) {
545*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
546*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
547*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
548*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
549*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
550*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
551*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
552*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
553*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
554*4bdc9457SAndroid Build Coastguard Worker     }
555*4bdc9457SAndroid Build Coastguard Worker   }
556*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_twopass_subtile)557*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_twopass_subtile) {
558*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
559*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
560*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
561*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
562*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
563*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
564*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
565*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
566*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
567*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
568*4bdc9457SAndroid Build Coastguard Worker       }
569*4bdc9457SAndroid Build Coastguard Worker     }
570*4bdc9457SAndroid Build Coastguard Worker   }
571*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_twopass_subtile_with_input_offset)572*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_twopass_subtile_with_input_offset) {
573*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
574*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
575*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
576*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
577*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
578*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
579*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
580*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
581*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
582*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
583*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
584*4bdc9457SAndroid Build Coastguard Worker       }
585*4bdc9457SAndroid Build Coastguard Worker     }
586*4bdc9457SAndroid Build Coastguard Worker   }
587*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_twopass_fulltile)588*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_twopass_fulltile) {
589*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
590*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
591*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
592*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
593*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
594*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
595*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
596*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
597*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
598*4bdc9457SAndroid Build Coastguard Worker     }
599*4bdc9457SAndroid Build Coastguard Worker   }
600*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_twopass_fulltile_with_input_offset)601*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_twopass_fulltile_with_input_offset) {
602*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
603*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
604*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
605*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
606*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
607*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
608*4bdc9457SAndroid Build Coastguard Worker         .input_offset(37)
609*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
610*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
611*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
612*4bdc9457SAndroid Build Coastguard Worker     }
613*4bdc9457SAndroid Build Coastguard Worker   }
614*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_twopass_fulltile_with_qmin)615*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_twopass_fulltile_with_qmin) {
616*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
617*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
618*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
619*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
620*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
621*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
622*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
623*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
624*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
625*4bdc9457SAndroid Build Coastguard Worker     }
626*4bdc9457SAndroid Build Coastguard Worker   }
627*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_twopass_fulltile_with_qmax)628*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_twopass_fulltile_with_qmax) {
629*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
630*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
631*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
632*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
633*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
634*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
635*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
636*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
637*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
638*4bdc9457SAndroid Build Coastguard Worker     }
639*4bdc9457SAndroid Build Coastguard Worker   }
640*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_twopass_subtile)641*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_twopass_subtile) {
642*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
643*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
644*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
645*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
646*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
647*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
648*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
649*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
650*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
651*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
652*4bdc9457SAndroid Build Coastguard Worker       }
653*4bdc9457SAndroid Build Coastguard Worker     }
654*4bdc9457SAndroid Build Coastguard Worker   }
655*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_twopass_subtile_with_input_offset)656*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_twopass_subtile_with_input_offset) {
657*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
658*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
659*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
660*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
661*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
662*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
663*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
664*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
665*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
666*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
667*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
668*4bdc9457SAndroid Build Coastguard Worker       }
669*4bdc9457SAndroid Build Coastguard Worker     }
670*4bdc9457SAndroid Build Coastguard Worker   }
671*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_multipass)672*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_multipass) {
673*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
674*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
675*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
676*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
677*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
678*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
679*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
680*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
681*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
682*4bdc9457SAndroid Build Coastguard Worker     }
683*4bdc9457SAndroid Build Coastguard Worker   }
684*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_multipass_with_input_offset)685*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_multipass_with_input_offset) {
686*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
687*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
688*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
689*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
690*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
691*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
692*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
693*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
694*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
695*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
696*4bdc9457SAndroid Build Coastguard Worker     }
697*4bdc9457SAndroid Build Coastguard Worker   }
698*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_multipass_with_qmin)699*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_multipass_with_qmin) {
700*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
701*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
702*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
703*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
704*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
705*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
706*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
707*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
708*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
709*4bdc9457SAndroid Build Coastguard Worker     }
710*4bdc9457SAndroid Build Coastguard Worker   }
711*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_eq_16_multipass_with_qmax)712*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_eq_16_multipass_with_qmax) {
713*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
714*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
715*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
716*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
717*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
718*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
719*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
720*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
721*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
722*4bdc9457SAndroid Build Coastguard Worker     }
723*4bdc9457SAndroid Build Coastguard Worker   }
724*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_multipass)725*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_multipass) {
726*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
727*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
728*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
729*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
730*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
731*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
732*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
733*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
734*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
735*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
736*4bdc9457SAndroid Build Coastguard Worker       }
737*4bdc9457SAndroid Build Coastguard Worker     }
738*4bdc9457SAndroid Build Coastguard Worker   }
739*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_multipass_with_input_offset)740*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_multipass_with_input_offset) {
741*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
742*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
743*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
744*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
745*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
746*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
747*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
748*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
749*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
750*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
751*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
752*4bdc9457SAndroid Build Coastguard Worker       }
753*4bdc9457SAndroid Build Coastguard Worker     }
754*4bdc9457SAndroid Build Coastguard Worker   }
755*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_multipass_with_qmin)756*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_multipass_with_qmin) {
757*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
758*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
759*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
760*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
761*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
762*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
763*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
764*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
765*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
766*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
767*4bdc9457SAndroid Build Coastguard Worker       }
768*4bdc9457SAndroid Build Coastguard Worker     }
769*4bdc9457SAndroid Build Coastguard Worker   }
770*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_div_16_multipass_with_qmax)771*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_div_16_multipass_with_qmax) {
772*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
773*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
774*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
775*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
776*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
777*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
778*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
779*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
780*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
781*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
782*4bdc9457SAndroid Build Coastguard Worker       }
783*4bdc9457SAndroid Build Coastguard Worker     }
784*4bdc9457SAndroid Build Coastguard Worker   }
785*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_multipass)786*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_multipass) {
787*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
788*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
789*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
790*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
791*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
792*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
793*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
794*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
795*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
796*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
797*4bdc9457SAndroid Build Coastguard Worker       }
798*4bdc9457SAndroid Build Coastguard Worker     }
799*4bdc9457SAndroid Build Coastguard Worker   }
800*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_multipass_with_input_offset)801*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_multipass_with_input_offset) {
802*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
803*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
804*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
805*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
806*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
807*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
808*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
809*4bdc9457SAndroid Build Coastguard Worker           .input_offset(16)
810*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
811*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
812*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
813*4bdc9457SAndroid Build Coastguard Worker       }
814*4bdc9457SAndroid Build Coastguard Worker     }
815*4bdc9457SAndroid Build Coastguard Worker   }
816*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_multipass_with_qmin)817*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_multipass_with_qmin) {
818*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
819*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
820*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
821*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
822*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
823*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
824*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
825*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
826*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
827*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
828*4bdc9457SAndroid Build Coastguard Worker       }
829*4bdc9457SAndroid Build Coastguard Worker     }
830*4bdc9457SAndroid Build Coastguard Worker   }
831*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_lt_16_multipass_with_qmax)832*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_lt_16_multipass_with_qmax) {
833*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
834*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
835*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
836*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
837*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
838*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
839*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
840*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
841*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
842*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
843*4bdc9457SAndroid Build Coastguard Worker       }
844*4bdc9457SAndroid Build Coastguard Worker     }
845*4bdc9457SAndroid Build Coastguard Worker   }
846*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_multipass)847*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_multipass) {
848*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
849*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
850*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
851*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
852*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
853*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
854*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
855*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
856*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
857*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
858*4bdc9457SAndroid Build Coastguard Worker       }
859*4bdc9457SAndroid Build Coastguard Worker     }
860*4bdc9457SAndroid Build Coastguard Worker   }
861*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_multipass_with_input_offset)862*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_multipass_with_input_offset) {
863*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
864*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
865*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
866*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
867*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
868*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
869*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
870*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
871*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
872*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
873*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
874*4bdc9457SAndroid Build Coastguard Worker       }
875*4bdc9457SAndroid Build Coastguard Worker     }
876*4bdc9457SAndroid Build Coastguard Worker   }
877*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_multipass_with_qmin)878*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_multipass_with_qmin) {
879*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
880*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
881*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
882*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
883*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
884*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
885*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
886*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
887*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
888*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
889*4bdc9457SAndroid Build Coastguard Worker       }
890*4bdc9457SAndroid Build Coastguard Worker     }
891*4bdc9457SAndroid Build Coastguard Worker   }
892*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,channels_gt_16_multipass_with_qmax)893*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, channels_gt_16_multipass_with_qmax) {
894*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
895*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
896*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
897*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
898*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
899*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
900*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
901*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
902*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
903*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
904*4bdc9457SAndroid Build Coastguard Worker       }
905*4bdc9457SAndroid Build Coastguard Worker     }
906*4bdc9457SAndroid Build Coastguard Worker   }
907*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,few_output_pixels)908*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, few_output_pixels) {
909*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
910*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
911*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
912*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
913*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
914*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
915*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
916*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
917*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
918*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
919*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
920*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
921*4bdc9457SAndroid Build Coastguard Worker         }
922*4bdc9457SAndroid Build Coastguard Worker       }
923*4bdc9457SAndroid Build Coastguard Worker     }
924*4bdc9457SAndroid Build Coastguard Worker   }
925*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,few_output_pixels_with_input_offset)926*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, few_output_pixels_with_input_offset) {
927*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
928*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
929*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
930*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
931*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
932*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
933*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
934*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
935*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
936*4bdc9457SAndroid Build Coastguard Worker             .input_offset(83)
937*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
938*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
939*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
940*4bdc9457SAndroid Build Coastguard Worker         }
941*4bdc9457SAndroid Build Coastguard Worker       }
942*4bdc9457SAndroid Build Coastguard Worker     }
943*4bdc9457SAndroid Build Coastguard Worker   }
944*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,few_output_pixels_with_qmin)945*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, few_output_pixels_with_qmin) {
946*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
947*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
948*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
949*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
950*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
951*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
952*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
953*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
954*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
955*4bdc9457SAndroid Build Coastguard Worker             .qmin(64)
956*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
957*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
958*4bdc9457SAndroid Build Coastguard Worker         }
959*4bdc9457SAndroid Build Coastguard Worker       }
960*4bdc9457SAndroid Build Coastguard Worker     }
961*4bdc9457SAndroid Build Coastguard Worker   }
962*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,few_output_pixels_with_qmax)963*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, few_output_pixels_with_qmax) {
964*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
965*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
966*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
967*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
968*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
969*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
970*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
971*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
972*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
973*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
974*4bdc9457SAndroid Build Coastguard Worker             .qmax(192)
975*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
976*4bdc9457SAndroid Build Coastguard Worker         }
977*4bdc9457SAndroid Build Coastguard Worker       }
978*4bdc9457SAndroid Build Coastguard Worker     }
979*4bdc9457SAndroid Build Coastguard Worker   }
980*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,few_output_pixels_with_output_stride)981*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, few_output_pixels_with_output_stride) {
982*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
983*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
984*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
985*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
986*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
987*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
988*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
989*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
990*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
991*4bdc9457SAndroid Build Coastguard Worker             .output_stride(83)
992*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
993*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
994*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
995*4bdc9457SAndroid Build Coastguard Worker         }
996*4bdc9457SAndroid Build Coastguard Worker       }
997*4bdc9457SAndroid Build Coastguard Worker     }
998*4bdc9457SAndroid Build Coastguard Worker   }
999*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16,few_output_pixels_with_step)1000*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__NEON_C16, few_output_pixels_with_step) {
1001*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1002*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1003*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1004*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
1005*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
1006*4bdc9457SAndroid Build Coastguard Worker             MaxPoolMicrokernelTester()
1007*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
1008*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
1009*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
1010*4bdc9457SAndroid Build Coastguard Worker               .step(step)
1011*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
1012*4bdc9457SAndroid Build Coastguard Worker               .output_stride(83)
1013*4bdc9457SAndroid Build Coastguard Worker               .qmin(std::numeric_limits<uint8_t>::min())
1014*4bdc9457SAndroid Build Coastguard Worker               .qmax(std::numeric_limits<uint8_t>::max())
1015*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16, xnn_init_u8_minmax_neon_params);
1016*4bdc9457SAndroid Build Coastguard Worker           }
1017*4bdc9457SAndroid Build Coastguard Worker         }
1018*4bdc9457SAndroid Build Coastguard Worker       }
1019*4bdc9457SAndroid Build Coastguard Worker     }
1020*4bdc9457SAndroid Build Coastguard Worker   }
1021*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1022*4bdc9457SAndroid Build Coastguard Worker 
1023*4bdc9457SAndroid Build Coastguard Worker 
1024*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_unipass_fulltile)1025*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_unipass_fulltile) {
1026*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1027*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1028*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
1029*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1030*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1031*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
1032*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
1033*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1034*4bdc9457SAndroid Build Coastguard Worker   }
1035*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_unipass_fulltile_with_input_offset)1036*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_unipass_fulltile_with_input_offset) {
1037*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1038*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1039*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
1040*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1041*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1042*4bdc9457SAndroid Build Coastguard Worker       .input_offset(19)
1043*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
1044*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
1045*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1046*4bdc9457SAndroid Build Coastguard Worker   }
1047*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_unipass_fulltile_with_qmin)1048*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_unipass_fulltile_with_qmin) {
1049*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1050*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1051*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
1052*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1053*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1054*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
1055*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
1056*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1057*4bdc9457SAndroid Build Coastguard Worker   }
1058*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_unipass_fulltile_with_qmax)1059*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_unipass_fulltile_with_qmax) {
1060*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1061*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1062*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
1063*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1064*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1065*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
1066*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
1067*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1068*4bdc9457SAndroid Build Coastguard Worker   }
1069*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_unipass_subtile)1070*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_unipass_subtile) {
1071*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1072*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1073*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1074*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1075*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1076*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1077*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1078*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1079*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1080*4bdc9457SAndroid Build Coastguard Worker     }
1081*4bdc9457SAndroid Build Coastguard Worker   }
1082*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_unipass_subtile_with_input_offset)1083*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_unipass_subtile_with_input_offset) {
1084*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1085*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1086*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1087*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1088*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1089*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1090*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
1091*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1092*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1093*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1094*4bdc9457SAndroid Build Coastguard Worker     }
1095*4bdc9457SAndroid Build Coastguard Worker   }
1096*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_unipass_fulltile)1097*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_unipass_fulltile) {
1098*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1099*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1100*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1101*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1102*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1103*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1104*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1105*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1106*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1107*4bdc9457SAndroid Build Coastguard Worker     }
1108*4bdc9457SAndroid Build Coastguard Worker   }
1109*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_unipass_fulltile_with_input_offset)1110*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_unipass_fulltile_with_input_offset) {
1111*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1112*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1113*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1114*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1115*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1116*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1117*4bdc9457SAndroid Build Coastguard Worker         .input_offset(131)
1118*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1119*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1120*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1121*4bdc9457SAndroid Build Coastguard Worker     }
1122*4bdc9457SAndroid Build Coastguard Worker   }
1123*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_unipass_fulltile_with_qmin)1124*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_unipass_fulltile_with_qmin) {
1125*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1126*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1127*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1128*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1129*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1130*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1131*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
1132*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1133*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1134*4bdc9457SAndroid Build Coastguard Worker     }
1135*4bdc9457SAndroid Build Coastguard Worker   }
1136*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_unipass_fulltile_with_qmax)1137*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_unipass_fulltile_with_qmax) {
1138*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1139*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1140*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1141*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1142*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1143*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1144*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1145*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
1146*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1147*4bdc9457SAndroid Build Coastguard Worker     }
1148*4bdc9457SAndroid Build Coastguard Worker   }
1149*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_unipass_subtile)1150*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_unipass_subtile) {
1151*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1152*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1153*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
1154*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1155*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1156*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1157*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1158*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1159*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1160*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1161*4bdc9457SAndroid Build Coastguard Worker       }
1162*4bdc9457SAndroid Build Coastguard Worker     }
1163*4bdc9457SAndroid Build Coastguard Worker   }
1164*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_unipass_subtile_with_input_offset)1165*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_unipass_subtile_with_input_offset) {
1166*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1167*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1168*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
1169*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1170*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1171*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1172*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1173*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
1174*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1175*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1176*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1177*4bdc9457SAndroid Build Coastguard Worker       }
1178*4bdc9457SAndroid Build Coastguard Worker     }
1179*4bdc9457SAndroid Build Coastguard Worker   }
1180*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_unipass_fulltile)1181*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_unipass_fulltile) {
1182*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1183*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1184*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1185*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1186*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1187*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1188*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1189*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1190*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1191*4bdc9457SAndroid Build Coastguard Worker     }
1192*4bdc9457SAndroid Build Coastguard Worker   }
1193*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_unipass_fulltile_with_input_offset)1194*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_unipass_fulltile_with_input_offset) {
1195*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1196*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1197*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1198*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1199*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1200*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1201*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
1202*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1203*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1204*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1205*4bdc9457SAndroid Build Coastguard Worker     }
1206*4bdc9457SAndroid Build Coastguard Worker   }
1207*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_unipass_fulltile_with_qmin)1208*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_unipass_fulltile_with_qmin) {
1209*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1210*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1211*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1212*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1213*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1214*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1215*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
1216*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1217*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1218*4bdc9457SAndroid Build Coastguard Worker     }
1219*4bdc9457SAndroid Build Coastguard Worker   }
1220*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_unipass_fulltile_with_qmax)1221*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_unipass_fulltile_with_qmax) {
1222*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1223*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1224*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1225*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1226*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1227*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1228*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1229*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
1230*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1231*4bdc9457SAndroid Build Coastguard Worker     }
1232*4bdc9457SAndroid Build Coastguard Worker   }
1233*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_unipass_subtile)1234*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_unipass_subtile) {
1235*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1236*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1237*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
1238*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1239*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1240*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1241*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1242*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1243*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1244*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1245*4bdc9457SAndroid Build Coastguard Worker       }
1246*4bdc9457SAndroid Build Coastguard Worker     }
1247*4bdc9457SAndroid Build Coastguard Worker   }
1248*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_unipass_subtile_with_input_offset)1249*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_unipass_subtile_with_input_offset) {
1250*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1251*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1252*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
1253*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1254*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1255*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1256*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1257*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1258*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1259*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1260*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1261*4bdc9457SAndroid Build Coastguard Worker       }
1262*4bdc9457SAndroid Build Coastguard Worker     }
1263*4bdc9457SAndroid Build Coastguard Worker   }
1264*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_unipass_fulltile)1265*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_unipass_fulltile) {
1266*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1267*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1268*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1269*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1270*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1271*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1272*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1273*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1274*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1275*4bdc9457SAndroid Build Coastguard Worker     }
1276*4bdc9457SAndroid Build Coastguard Worker   }
1277*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_unipass_fulltile_with_input_offset)1278*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_unipass_fulltile_with_input_offset) {
1279*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1280*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1281*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1282*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1283*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1284*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1285*4bdc9457SAndroid Build Coastguard Worker         .input_offset(37)
1286*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1287*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1288*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1289*4bdc9457SAndroid Build Coastguard Worker     }
1290*4bdc9457SAndroid Build Coastguard Worker   }
1291*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_unipass_fulltile_with_qmin)1292*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_unipass_fulltile_with_qmin) {
1293*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1294*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1295*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1296*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1297*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1298*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1299*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
1300*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1301*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1302*4bdc9457SAndroid Build Coastguard Worker     }
1303*4bdc9457SAndroid Build Coastguard Worker   }
1304*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_unipass_fulltile_with_qmax)1305*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_unipass_fulltile_with_qmax) {
1306*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1307*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1308*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1309*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1310*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1311*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1312*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1313*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
1314*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1315*4bdc9457SAndroid Build Coastguard Worker     }
1316*4bdc9457SAndroid Build Coastguard Worker   }
1317*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_unipass_subtile)1318*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_unipass_subtile) {
1319*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1320*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1321*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
1322*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1323*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1324*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1325*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1326*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1327*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1328*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1329*4bdc9457SAndroid Build Coastguard Worker       }
1330*4bdc9457SAndroid Build Coastguard Worker     }
1331*4bdc9457SAndroid Build Coastguard Worker   }
1332*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_unipass_subtile_with_input_offset)1333*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_unipass_subtile_with_input_offset) {
1334*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1335*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1336*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
1337*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1338*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1339*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1340*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1341*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
1342*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1343*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1344*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1345*4bdc9457SAndroid Build Coastguard Worker       }
1346*4bdc9457SAndroid Build Coastguard Worker     }
1347*4bdc9457SAndroid Build Coastguard Worker   }
1348*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_twopass_fulltile)1349*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_twopass_fulltile) {
1350*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1351*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1352*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1353*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1354*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1355*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
1356*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
1357*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1358*4bdc9457SAndroid Build Coastguard Worker   }
1359*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_twopass_fulltile_with_input_offset)1360*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_twopass_fulltile_with_input_offset) {
1361*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1362*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1363*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1364*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1365*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1366*4bdc9457SAndroid Build Coastguard Worker       .input_offset(19)
1367*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
1368*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
1369*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1370*4bdc9457SAndroid Build Coastguard Worker   }
1371*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_twopass_fulltile_with_qmin)1372*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_twopass_fulltile_with_qmin) {
1373*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1374*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1375*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1376*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1377*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1378*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
1379*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
1380*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1381*4bdc9457SAndroid Build Coastguard Worker   }
1382*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_twopass_fulltile_with_qmax)1383*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_twopass_fulltile_with_qmax) {
1384*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1385*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1386*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1387*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1388*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1389*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
1390*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
1391*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1392*4bdc9457SAndroid Build Coastguard Worker   }
1393*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_twopass_subtile)1394*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_twopass_subtile) {
1395*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1396*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1397*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1398*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1399*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1400*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1401*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1402*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1403*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1404*4bdc9457SAndroid Build Coastguard Worker     }
1405*4bdc9457SAndroid Build Coastguard Worker   }
1406*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_twopass_subtile_with_input_offset)1407*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_twopass_subtile_with_input_offset) {
1408*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1409*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1410*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1411*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1412*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1413*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1414*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
1415*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1416*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1417*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1418*4bdc9457SAndroid Build Coastguard Worker     }
1419*4bdc9457SAndroid Build Coastguard Worker   }
1420*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_twopass_fulltile)1421*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_twopass_fulltile) {
1422*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1423*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1424*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1425*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1426*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1427*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1428*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1429*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1430*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1431*4bdc9457SAndroid Build Coastguard Worker     }
1432*4bdc9457SAndroid Build Coastguard Worker   }
1433*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_twopass_fulltile_with_input_offset)1434*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_twopass_fulltile_with_input_offset) {
1435*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1436*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1437*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1438*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1439*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1440*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1441*4bdc9457SAndroid Build Coastguard Worker         .input_offset(83)
1442*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1443*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1444*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1445*4bdc9457SAndroid Build Coastguard Worker     }
1446*4bdc9457SAndroid Build Coastguard Worker   }
1447*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_twopass_fulltile_with_qmin)1448*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_twopass_fulltile_with_qmin) {
1449*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1450*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1451*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1452*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1453*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1454*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1455*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
1456*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1457*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1458*4bdc9457SAndroid Build Coastguard Worker     }
1459*4bdc9457SAndroid Build Coastguard Worker   }
1460*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_twopass_fulltile_with_qmax)1461*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_twopass_fulltile_with_qmax) {
1462*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1463*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1464*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1465*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1466*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1467*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1468*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1469*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
1470*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1471*4bdc9457SAndroid Build Coastguard Worker     }
1472*4bdc9457SAndroid Build Coastguard Worker   }
1473*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_twopass_subtile)1474*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_twopass_subtile) {
1475*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1476*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1477*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
1478*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1479*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1480*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1481*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1482*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1483*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1484*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1485*4bdc9457SAndroid Build Coastguard Worker       }
1486*4bdc9457SAndroid Build Coastguard Worker     }
1487*4bdc9457SAndroid Build Coastguard Worker   }
1488*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_twopass_subtile_with_input_offset)1489*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_twopass_subtile_with_input_offset) {
1490*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1491*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1492*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
1493*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1494*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1495*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1496*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1497*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
1498*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1499*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1500*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1501*4bdc9457SAndroid Build Coastguard Worker       }
1502*4bdc9457SAndroid Build Coastguard Worker     }
1503*4bdc9457SAndroid Build Coastguard Worker   }
1504*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_twopass_fulltile)1505*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_twopass_fulltile) {
1506*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1507*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1508*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1509*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1510*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1511*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1512*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1513*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1514*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1515*4bdc9457SAndroid Build Coastguard Worker     }
1516*4bdc9457SAndroid Build Coastguard Worker   }
1517*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_twopass_fulltile_with_input_offset)1518*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_twopass_fulltile_with_input_offset) {
1519*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1520*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1521*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1522*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1523*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1524*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1525*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
1526*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1527*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1528*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1529*4bdc9457SAndroid Build Coastguard Worker     }
1530*4bdc9457SAndroid Build Coastguard Worker   }
1531*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_twopass_fulltile_with_qmin)1532*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_twopass_fulltile_with_qmin) {
1533*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1534*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1535*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1536*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1537*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1538*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1539*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
1540*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1541*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1542*4bdc9457SAndroid Build Coastguard Worker     }
1543*4bdc9457SAndroid Build Coastguard Worker   }
1544*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_twopass_fulltile_with_qmax)1545*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_twopass_fulltile_with_qmax) {
1546*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1547*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1548*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1549*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1550*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1551*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1552*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1553*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
1554*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1555*4bdc9457SAndroid Build Coastguard Worker     }
1556*4bdc9457SAndroid Build Coastguard Worker   }
1557*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_twopass_subtile)1558*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_twopass_subtile) {
1559*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1560*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1561*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
1562*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1563*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1564*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1565*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1566*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1567*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1568*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1569*4bdc9457SAndroid Build Coastguard Worker       }
1570*4bdc9457SAndroid Build Coastguard Worker     }
1571*4bdc9457SAndroid Build Coastguard Worker   }
1572*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_twopass_subtile_with_input_offset)1573*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_twopass_subtile_with_input_offset) {
1574*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1575*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1576*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
1577*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1578*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1579*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1580*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1581*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1582*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1583*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1584*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1585*4bdc9457SAndroid Build Coastguard Worker       }
1586*4bdc9457SAndroid Build Coastguard Worker     }
1587*4bdc9457SAndroid Build Coastguard Worker   }
1588*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_twopass_fulltile)1589*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_twopass_fulltile) {
1590*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1591*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1592*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1593*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1594*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1595*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1596*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1597*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1598*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1599*4bdc9457SAndroid Build Coastguard Worker     }
1600*4bdc9457SAndroid Build Coastguard Worker   }
1601*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_twopass_fulltile_with_input_offset)1602*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_twopass_fulltile_with_input_offset) {
1603*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1604*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1605*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1606*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1607*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1608*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1609*4bdc9457SAndroid Build Coastguard Worker         .input_offset(37)
1610*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1611*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1612*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1613*4bdc9457SAndroid Build Coastguard Worker     }
1614*4bdc9457SAndroid Build Coastguard Worker   }
1615*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_twopass_fulltile_with_qmin)1616*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_twopass_fulltile_with_qmin) {
1617*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1618*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1619*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1620*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1621*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1622*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1623*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
1624*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1625*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1626*4bdc9457SAndroid Build Coastguard Worker     }
1627*4bdc9457SAndroid Build Coastguard Worker   }
1628*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_twopass_fulltile_with_qmax)1629*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_twopass_fulltile_with_qmax) {
1630*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1631*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1632*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1633*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1634*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1635*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1636*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1637*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
1638*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1639*4bdc9457SAndroid Build Coastguard Worker     }
1640*4bdc9457SAndroid Build Coastguard Worker   }
1641*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_twopass_subtile)1642*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_twopass_subtile) {
1643*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1644*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1645*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
1646*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1647*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1648*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1649*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1650*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1651*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1652*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1653*4bdc9457SAndroid Build Coastguard Worker       }
1654*4bdc9457SAndroid Build Coastguard Worker     }
1655*4bdc9457SAndroid Build Coastguard Worker   }
1656*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_twopass_subtile_with_input_offset)1657*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_twopass_subtile_with_input_offset) {
1658*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1659*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1660*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
1661*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1662*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1663*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1664*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1665*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
1666*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1667*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1668*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1669*4bdc9457SAndroid Build Coastguard Worker       }
1670*4bdc9457SAndroid Build Coastguard Worker     }
1671*4bdc9457SAndroid Build Coastguard Worker   }
1672*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_multipass)1673*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_multipass) {
1674*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1675*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1676*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1677*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1678*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1679*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1680*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1681*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1682*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1683*4bdc9457SAndroid Build Coastguard Worker     }
1684*4bdc9457SAndroid Build Coastguard Worker   }
1685*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_multipass_with_input_offset)1686*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_multipass_with_input_offset) {
1687*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1688*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1689*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1690*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1691*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1692*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1693*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
1694*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1695*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1696*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1697*4bdc9457SAndroid Build Coastguard Worker     }
1698*4bdc9457SAndroid Build Coastguard Worker   }
1699*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_multipass_with_qmin)1700*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_multipass_with_qmin) {
1701*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1702*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1703*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1704*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1705*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1706*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1707*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
1708*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
1709*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1710*4bdc9457SAndroid Build Coastguard Worker     }
1711*4bdc9457SAndroid Build Coastguard Worker   }
1712*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_eq_16_multipass_with_qmax)1713*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_eq_16_multipass_with_qmax) {
1714*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1715*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1716*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1717*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1718*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1719*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1720*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
1721*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
1722*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1723*4bdc9457SAndroid Build Coastguard Worker     }
1724*4bdc9457SAndroid Build Coastguard Worker   }
1725*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_multipass)1726*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_multipass) {
1727*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1728*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1729*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
1730*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1731*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1732*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1733*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1734*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1735*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1736*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1737*4bdc9457SAndroid Build Coastguard Worker       }
1738*4bdc9457SAndroid Build Coastguard Worker     }
1739*4bdc9457SAndroid Build Coastguard Worker   }
1740*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_multipass_with_input_offset)1741*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_multipass_with_input_offset) {
1742*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1743*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1744*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
1745*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1746*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1747*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1748*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1749*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
1750*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1751*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1752*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1753*4bdc9457SAndroid Build Coastguard Worker       }
1754*4bdc9457SAndroid Build Coastguard Worker     }
1755*4bdc9457SAndroid Build Coastguard Worker   }
1756*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_multipass_with_qmin)1757*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_multipass_with_qmin) {
1758*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1759*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1760*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
1761*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1762*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1763*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1764*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1765*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
1766*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1767*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1768*4bdc9457SAndroid Build Coastguard Worker       }
1769*4bdc9457SAndroid Build Coastguard Worker     }
1770*4bdc9457SAndroid Build Coastguard Worker   }
1771*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_div_16_multipass_with_qmax)1772*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_div_16_multipass_with_qmax) {
1773*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1774*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1775*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
1776*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1777*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1778*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1779*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1780*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1781*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
1782*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1783*4bdc9457SAndroid Build Coastguard Worker       }
1784*4bdc9457SAndroid Build Coastguard Worker     }
1785*4bdc9457SAndroid Build Coastguard Worker   }
1786*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_multipass)1787*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_multipass) {
1788*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1789*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1790*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
1791*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1792*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1793*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1794*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1795*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1796*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1797*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1798*4bdc9457SAndroid Build Coastguard Worker       }
1799*4bdc9457SAndroid Build Coastguard Worker     }
1800*4bdc9457SAndroid Build Coastguard Worker   }
1801*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_multipass_with_input_offset)1802*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_multipass_with_input_offset) {
1803*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1804*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1805*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
1806*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1807*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1808*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1809*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1810*4bdc9457SAndroid Build Coastguard Worker           .input_offset(16)
1811*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1812*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1813*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1814*4bdc9457SAndroid Build Coastguard Worker       }
1815*4bdc9457SAndroid Build Coastguard Worker     }
1816*4bdc9457SAndroid Build Coastguard Worker   }
1817*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_multipass_with_qmin)1818*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_multipass_with_qmin) {
1819*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1820*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1821*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
1822*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1823*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1824*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1825*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1826*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
1827*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1828*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1829*4bdc9457SAndroid Build Coastguard Worker       }
1830*4bdc9457SAndroid Build Coastguard Worker     }
1831*4bdc9457SAndroid Build Coastguard Worker   }
1832*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_lt_16_multipass_with_qmax)1833*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_lt_16_multipass_with_qmax) {
1834*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1835*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1836*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
1837*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1838*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1839*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1840*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1841*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1842*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
1843*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1844*4bdc9457SAndroid Build Coastguard Worker       }
1845*4bdc9457SAndroid Build Coastguard Worker     }
1846*4bdc9457SAndroid Build Coastguard Worker   }
1847*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_multipass)1848*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_multipass) {
1849*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1850*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1851*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
1852*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1853*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1854*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1855*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1856*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1857*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1858*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1859*4bdc9457SAndroid Build Coastguard Worker       }
1860*4bdc9457SAndroid Build Coastguard Worker     }
1861*4bdc9457SAndroid Build Coastguard Worker   }
1862*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_multipass_with_input_offset)1863*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_multipass_with_input_offset) {
1864*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1865*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1866*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
1867*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1868*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1869*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1870*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1871*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
1872*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1873*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1874*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1875*4bdc9457SAndroid Build Coastguard Worker       }
1876*4bdc9457SAndroid Build Coastguard Worker     }
1877*4bdc9457SAndroid Build Coastguard Worker   }
1878*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_multipass_with_qmin)1879*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_multipass_with_qmin) {
1880*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1881*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1882*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
1883*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1884*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1885*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1886*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1887*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
1888*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
1889*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1890*4bdc9457SAndroid Build Coastguard Worker       }
1891*4bdc9457SAndroid Build Coastguard Worker     }
1892*4bdc9457SAndroid Build Coastguard Worker   }
1893*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,channels_gt_16_multipass_with_qmax)1894*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, channels_gt_16_multipass_with_qmax) {
1895*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1896*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1897*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
1898*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1899*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1900*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1901*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1902*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
1903*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
1904*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1905*4bdc9457SAndroid Build Coastguard Worker       }
1906*4bdc9457SAndroid Build Coastguard Worker     }
1907*4bdc9457SAndroid Build Coastguard Worker   }
1908*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,few_output_pixels)1909*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, few_output_pixels) {
1910*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1911*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1912*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1913*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
1914*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1915*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1916*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1917*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1918*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1919*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
1920*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
1921*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1922*4bdc9457SAndroid Build Coastguard Worker         }
1923*4bdc9457SAndroid Build Coastguard Worker       }
1924*4bdc9457SAndroid Build Coastguard Worker     }
1925*4bdc9457SAndroid Build Coastguard Worker   }
1926*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,few_output_pixels_with_input_offset)1927*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, few_output_pixels_with_input_offset) {
1928*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1929*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1930*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1931*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
1932*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1933*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1934*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1935*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1936*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1937*4bdc9457SAndroid Build Coastguard Worker             .input_offset(83)
1938*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
1939*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
1940*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1941*4bdc9457SAndroid Build Coastguard Worker         }
1942*4bdc9457SAndroid Build Coastguard Worker       }
1943*4bdc9457SAndroid Build Coastguard Worker     }
1944*4bdc9457SAndroid Build Coastguard Worker   }
1945*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,few_output_pixels_with_qmin)1946*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, few_output_pixels_with_qmin) {
1947*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1948*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1949*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1950*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
1951*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1952*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1953*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1954*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1955*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1956*4bdc9457SAndroid Build Coastguard Worker             .qmin(64)
1957*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
1958*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1959*4bdc9457SAndroid Build Coastguard Worker         }
1960*4bdc9457SAndroid Build Coastguard Worker       }
1961*4bdc9457SAndroid Build Coastguard Worker     }
1962*4bdc9457SAndroid Build Coastguard Worker   }
1963*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,few_output_pixels_with_qmax)1964*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, few_output_pixels_with_qmax) {
1965*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1966*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1967*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1968*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
1969*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1970*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1971*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1972*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1973*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1974*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
1975*4bdc9457SAndroid Build Coastguard Worker             .qmax(192)
1976*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1977*4bdc9457SAndroid Build Coastguard Worker         }
1978*4bdc9457SAndroid Build Coastguard Worker       }
1979*4bdc9457SAndroid Build Coastguard Worker     }
1980*4bdc9457SAndroid Build Coastguard Worker   }
1981*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,few_output_pixels_with_output_stride)1982*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, few_output_pixels_with_output_stride) {
1983*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
1984*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1985*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1986*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
1987*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1988*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1989*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1990*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1991*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1992*4bdc9457SAndroid Build Coastguard Worker             .output_stride(83)
1993*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
1994*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
1995*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
1996*4bdc9457SAndroid Build Coastguard Worker         }
1997*4bdc9457SAndroid Build Coastguard Worker       }
1998*4bdc9457SAndroid Build Coastguard Worker     }
1999*4bdc9457SAndroid Build Coastguard Worker   }
2000*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16,few_output_pixels_with_step)2001*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__SSE2_C16, few_output_pixels_with_step) {
2002*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE2;
2003*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2004*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2005*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
2006*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
2007*4bdc9457SAndroid Build Coastguard Worker             MaxPoolMicrokernelTester()
2008*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
2009*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
2010*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
2011*4bdc9457SAndroid Build Coastguard Worker               .step(step)
2012*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
2013*4bdc9457SAndroid Build Coastguard Worker               .output_stride(83)
2014*4bdc9457SAndroid Build Coastguard Worker               .qmin(std::numeric_limits<uint8_t>::min())
2015*4bdc9457SAndroid Build Coastguard Worker               .qmax(std::numeric_limits<uint8_t>::max())
2016*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16, xnn_init_u8_minmax_sse2_params);
2017*4bdc9457SAndroid Build Coastguard Worker           }
2018*4bdc9457SAndroid Build Coastguard Worker         }
2019*4bdc9457SAndroid Build Coastguard Worker       }
2020*4bdc9457SAndroid Build Coastguard Worker     }
2021*4bdc9457SAndroid Build Coastguard Worker   }
2022*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2023*4bdc9457SAndroid Build Coastguard Worker 
2024*4bdc9457SAndroid Build Coastguard Worker 
2025*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_unipass_fulltile)2026*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_unipass_fulltile) {
2027*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
2028*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
2029*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
2030*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
2031*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
2032*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
2033*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2034*4bdc9457SAndroid Build Coastguard Worker   }
2035*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_unipass_fulltile_with_input_offset)2036*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_unipass_fulltile_with_input_offset) {
2037*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
2038*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
2039*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
2040*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
2041*4bdc9457SAndroid Build Coastguard Worker       .input_offset(19)
2042*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
2043*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
2044*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2045*4bdc9457SAndroid Build Coastguard Worker   }
2046*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_unipass_fulltile_with_qmin)2047*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_unipass_fulltile_with_qmin) {
2048*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
2049*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
2050*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
2051*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
2052*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
2053*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
2054*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2055*4bdc9457SAndroid Build Coastguard Worker   }
2056*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_unipass_fulltile_with_qmax)2057*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_unipass_fulltile_with_qmax) {
2058*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
2059*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
2060*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
2061*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
2062*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
2063*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
2064*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2065*4bdc9457SAndroid Build Coastguard Worker   }
2066*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_unipass_subtile)2067*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_unipass_subtile) {
2068*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2069*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2070*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2071*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2072*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
2073*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2074*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2075*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2076*4bdc9457SAndroid Build Coastguard Worker     }
2077*4bdc9457SAndroid Build Coastguard Worker   }
2078*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_unipass_subtile_with_input_offset)2079*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_unipass_subtile_with_input_offset) {
2080*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2081*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2082*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2083*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2084*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
2085*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
2086*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2087*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2088*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2089*4bdc9457SAndroid Build Coastguard Worker     }
2090*4bdc9457SAndroid Build Coastguard Worker   }
2091*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_unipass_fulltile)2092*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_unipass_fulltile) {
2093*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
2094*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2095*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2096*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2097*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2098*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2099*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2100*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2101*4bdc9457SAndroid Build Coastguard Worker     }
2102*4bdc9457SAndroid Build Coastguard Worker   }
2103*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_unipass_fulltile_with_input_offset)2104*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_unipass_fulltile_with_input_offset) {
2105*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
2106*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2107*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2108*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2109*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2110*4bdc9457SAndroid Build Coastguard Worker         .input_offset(131)
2111*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2112*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2113*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2114*4bdc9457SAndroid Build Coastguard Worker     }
2115*4bdc9457SAndroid Build Coastguard Worker   }
2116*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_unipass_fulltile_with_qmin)2117*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_unipass_fulltile_with_qmin) {
2118*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
2119*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2120*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2121*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2122*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2123*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
2124*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2125*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2126*4bdc9457SAndroid Build Coastguard Worker     }
2127*4bdc9457SAndroid Build Coastguard Worker   }
2128*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_unipass_fulltile_with_qmax)2129*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_unipass_fulltile_with_qmax) {
2130*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
2131*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2132*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2133*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2134*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2135*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2136*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
2137*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2138*4bdc9457SAndroid Build Coastguard Worker     }
2139*4bdc9457SAndroid Build Coastguard Worker   }
2140*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_unipass_subtile)2141*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_unipass_subtile) {
2142*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2143*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
2144*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2145*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2146*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2147*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2148*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2149*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2150*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2151*4bdc9457SAndroid Build Coastguard Worker       }
2152*4bdc9457SAndroid Build Coastguard Worker     }
2153*4bdc9457SAndroid Build Coastguard Worker   }
2154*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_unipass_subtile_with_input_offset)2155*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_unipass_subtile_with_input_offset) {
2156*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2157*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
2158*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2159*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2160*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2161*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2162*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
2163*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2164*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2165*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2166*4bdc9457SAndroid Build Coastguard Worker       }
2167*4bdc9457SAndroid Build Coastguard Worker     }
2168*4bdc9457SAndroid Build Coastguard Worker   }
2169*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_unipass_fulltile)2170*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_unipass_fulltile) {
2171*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
2172*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2173*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2174*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2175*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2176*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2177*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2178*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2179*4bdc9457SAndroid Build Coastguard Worker     }
2180*4bdc9457SAndroid Build Coastguard Worker   }
2181*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_unipass_fulltile_with_input_offset)2182*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_unipass_fulltile_with_input_offset) {
2183*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
2184*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2185*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2186*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2187*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2188*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
2189*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2190*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2191*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2192*4bdc9457SAndroid Build Coastguard Worker     }
2193*4bdc9457SAndroid Build Coastguard Worker   }
2194*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_unipass_fulltile_with_qmin)2195*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_unipass_fulltile_with_qmin) {
2196*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
2197*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2198*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2199*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2200*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2201*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
2202*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2203*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2204*4bdc9457SAndroid Build Coastguard Worker     }
2205*4bdc9457SAndroid Build Coastguard Worker   }
2206*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_unipass_fulltile_with_qmax)2207*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_unipass_fulltile_with_qmax) {
2208*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
2209*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2210*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2211*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2212*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2213*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2214*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
2215*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2216*4bdc9457SAndroid Build Coastguard Worker     }
2217*4bdc9457SAndroid Build Coastguard Worker   }
2218*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_unipass_subtile)2219*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_unipass_subtile) {
2220*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2221*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
2222*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2223*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2224*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2225*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2226*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2227*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2228*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2229*4bdc9457SAndroid Build Coastguard Worker       }
2230*4bdc9457SAndroid Build Coastguard Worker     }
2231*4bdc9457SAndroid Build Coastguard Worker   }
2232*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_unipass_subtile_with_input_offset)2233*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_unipass_subtile_with_input_offset) {
2234*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2235*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
2236*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2237*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2238*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2239*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2240*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
2241*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2242*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2243*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2244*4bdc9457SAndroid Build Coastguard Worker       }
2245*4bdc9457SAndroid Build Coastguard Worker     }
2246*4bdc9457SAndroid Build Coastguard Worker   }
2247*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_unipass_fulltile)2248*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_unipass_fulltile) {
2249*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
2250*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2251*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2252*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2253*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2254*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2255*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2256*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2257*4bdc9457SAndroid Build Coastguard Worker     }
2258*4bdc9457SAndroid Build Coastguard Worker   }
2259*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_unipass_fulltile_with_input_offset)2260*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_unipass_fulltile_with_input_offset) {
2261*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
2262*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2263*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2264*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2265*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2266*4bdc9457SAndroid Build Coastguard Worker         .input_offset(37)
2267*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2268*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2269*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2270*4bdc9457SAndroid Build Coastguard Worker     }
2271*4bdc9457SAndroid Build Coastguard Worker   }
2272*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_unipass_fulltile_with_qmin)2273*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_unipass_fulltile_with_qmin) {
2274*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
2275*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2276*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2277*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2278*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2279*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
2280*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2281*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2282*4bdc9457SAndroid Build Coastguard Worker     }
2283*4bdc9457SAndroid Build Coastguard Worker   }
2284*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_unipass_fulltile_with_qmax)2285*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_unipass_fulltile_with_qmax) {
2286*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
2287*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2288*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2289*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2290*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2291*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2292*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
2293*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2294*4bdc9457SAndroid Build Coastguard Worker     }
2295*4bdc9457SAndroid Build Coastguard Worker   }
2296*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_unipass_subtile)2297*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_unipass_subtile) {
2298*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2299*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
2300*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2301*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2302*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2303*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2304*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2305*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2306*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2307*4bdc9457SAndroid Build Coastguard Worker       }
2308*4bdc9457SAndroid Build Coastguard Worker     }
2309*4bdc9457SAndroid Build Coastguard Worker   }
2310*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_unipass_subtile_with_input_offset)2311*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_unipass_subtile_with_input_offset) {
2312*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2313*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
2314*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2315*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2316*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2317*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2318*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
2319*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2320*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2321*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2322*4bdc9457SAndroid Build Coastguard Worker       }
2323*4bdc9457SAndroid Build Coastguard Worker     }
2324*4bdc9457SAndroid Build Coastguard Worker   }
2325*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_twopass_fulltile)2326*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_twopass_fulltile) {
2327*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
2328*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
2329*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
2330*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
2331*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
2332*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
2333*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2334*4bdc9457SAndroid Build Coastguard Worker   }
2335*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_twopass_fulltile_with_input_offset)2336*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_twopass_fulltile_with_input_offset) {
2337*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
2338*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
2339*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
2340*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
2341*4bdc9457SAndroid Build Coastguard Worker       .input_offset(19)
2342*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
2343*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
2344*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2345*4bdc9457SAndroid Build Coastguard Worker   }
2346*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_twopass_fulltile_with_qmin)2347*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_twopass_fulltile_with_qmin) {
2348*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
2349*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
2350*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
2351*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
2352*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
2353*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
2354*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2355*4bdc9457SAndroid Build Coastguard Worker   }
2356*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_twopass_fulltile_with_qmax)2357*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_twopass_fulltile_with_qmax) {
2358*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
2359*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
2360*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
2361*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
2362*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
2363*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
2364*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2365*4bdc9457SAndroid Build Coastguard Worker   }
2366*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_twopass_subtile)2367*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_twopass_subtile) {
2368*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2369*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2370*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2371*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2372*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
2373*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2374*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2375*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2376*4bdc9457SAndroid Build Coastguard Worker     }
2377*4bdc9457SAndroid Build Coastguard Worker   }
2378*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_twopass_subtile_with_input_offset)2379*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_twopass_subtile_with_input_offset) {
2380*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2381*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2382*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2383*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2384*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
2385*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
2386*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2387*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2388*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2389*4bdc9457SAndroid Build Coastguard Worker     }
2390*4bdc9457SAndroid Build Coastguard Worker   }
2391*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_twopass_fulltile)2392*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_twopass_fulltile) {
2393*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
2394*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2395*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2396*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2397*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2398*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2399*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2400*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2401*4bdc9457SAndroid Build Coastguard Worker     }
2402*4bdc9457SAndroid Build Coastguard Worker   }
2403*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_twopass_fulltile_with_input_offset)2404*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_twopass_fulltile_with_input_offset) {
2405*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
2406*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2407*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2408*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2409*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2410*4bdc9457SAndroid Build Coastguard Worker         .input_offset(83)
2411*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2412*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2413*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2414*4bdc9457SAndroid Build Coastguard Worker     }
2415*4bdc9457SAndroid Build Coastguard Worker   }
2416*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_twopass_fulltile_with_qmin)2417*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_twopass_fulltile_with_qmin) {
2418*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
2419*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2420*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2421*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2422*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2423*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
2424*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2425*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2426*4bdc9457SAndroid Build Coastguard Worker     }
2427*4bdc9457SAndroid Build Coastguard Worker   }
2428*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_twopass_fulltile_with_qmax)2429*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_twopass_fulltile_with_qmax) {
2430*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
2431*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2432*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2433*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2434*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2435*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2436*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
2437*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2438*4bdc9457SAndroid Build Coastguard Worker     }
2439*4bdc9457SAndroid Build Coastguard Worker   }
2440*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_twopass_subtile)2441*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_twopass_subtile) {
2442*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2443*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
2444*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2445*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2446*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2447*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2448*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2449*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2450*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2451*4bdc9457SAndroid Build Coastguard Worker       }
2452*4bdc9457SAndroid Build Coastguard Worker     }
2453*4bdc9457SAndroid Build Coastguard Worker   }
2454*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_twopass_subtile_with_input_offset)2455*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_twopass_subtile_with_input_offset) {
2456*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2457*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
2458*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2459*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2460*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2461*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2462*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
2463*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2464*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2465*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2466*4bdc9457SAndroid Build Coastguard Worker       }
2467*4bdc9457SAndroid Build Coastguard Worker     }
2468*4bdc9457SAndroid Build Coastguard Worker   }
2469*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_twopass_fulltile)2470*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_twopass_fulltile) {
2471*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
2472*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2473*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2474*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2475*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2476*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2477*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2478*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2479*4bdc9457SAndroid Build Coastguard Worker     }
2480*4bdc9457SAndroid Build Coastguard Worker   }
2481*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_twopass_fulltile_with_input_offset)2482*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_twopass_fulltile_with_input_offset) {
2483*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
2484*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2485*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2486*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2487*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2488*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
2489*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2490*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2491*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2492*4bdc9457SAndroid Build Coastguard Worker     }
2493*4bdc9457SAndroid Build Coastguard Worker   }
2494*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_twopass_fulltile_with_qmin)2495*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_twopass_fulltile_with_qmin) {
2496*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
2497*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2498*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2499*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2500*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2501*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
2502*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2503*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2504*4bdc9457SAndroid Build Coastguard Worker     }
2505*4bdc9457SAndroid Build Coastguard Worker   }
2506*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_twopass_fulltile_with_qmax)2507*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_twopass_fulltile_with_qmax) {
2508*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
2509*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2510*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2511*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2512*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2513*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2514*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
2515*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2516*4bdc9457SAndroid Build Coastguard Worker     }
2517*4bdc9457SAndroid Build Coastguard Worker   }
2518*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_twopass_subtile)2519*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_twopass_subtile) {
2520*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2521*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
2522*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2523*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2524*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2525*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2526*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2527*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2528*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2529*4bdc9457SAndroid Build Coastguard Worker       }
2530*4bdc9457SAndroid Build Coastguard Worker     }
2531*4bdc9457SAndroid Build Coastguard Worker   }
2532*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_twopass_subtile_with_input_offset)2533*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_twopass_subtile_with_input_offset) {
2534*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2535*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
2536*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2537*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2538*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2539*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2540*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
2541*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2542*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2543*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2544*4bdc9457SAndroid Build Coastguard Worker       }
2545*4bdc9457SAndroid Build Coastguard Worker     }
2546*4bdc9457SAndroid Build Coastguard Worker   }
2547*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_twopass_fulltile)2548*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_twopass_fulltile) {
2549*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
2550*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2551*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2552*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2553*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2554*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2555*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2556*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2557*4bdc9457SAndroid Build Coastguard Worker     }
2558*4bdc9457SAndroid Build Coastguard Worker   }
2559*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_twopass_fulltile_with_input_offset)2560*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_twopass_fulltile_with_input_offset) {
2561*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
2562*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2563*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2564*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2565*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2566*4bdc9457SAndroid Build Coastguard Worker         .input_offset(37)
2567*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2568*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2569*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2570*4bdc9457SAndroid Build Coastguard Worker     }
2571*4bdc9457SAndroid Build Coastguard Worker   }
2572*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_twopass_fulltile_with_qmin)2573*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_twopass_fulltile_with_qmin) {
2574*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
2575*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2576*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2577*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2578*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2579*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
2580*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2581*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2582*4bdc9457SAndroid Build Coastguard Worker     }
2583*4bdc9457SAndroid Build Coastguard Worker   }
2584*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_twopass_fulltile_with_qmax)2585*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_twopass_fulltile_with_qmax) {
2586*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
2587*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2588*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
2589*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2590*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2591*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2592*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
2593*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2594*4bdc9457SAndroid Build Coastguard Worker     }
2595*4bdc9457SAndroid Build Coastguard Worker   }
2596*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_twopass_subtile)2597*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_twopass_subtile) {
2598*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2599*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
2600*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2601*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2602*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2603*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2604*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2605*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2606*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2607*4bdc9457SAndroid Build Coastguard Worker       }
2608*4bdc9457SAndroid Build Coastguard Worker     }
2609*4bdc9457SAndroid Build Coastguard Worker   }
2610*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_twopass_subtile_with_input_offset)2611*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_twopass_subtile_with_input_offset) {
2612*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2613*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
2614*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2615*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2616*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2617*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2618*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
2619*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2620*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2621*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2622*4bdc9457SAndroid Build Coastguard Worker       }
2623*4bdc9457SAndroid Build Coastguard Worker     }
2624*4bdc9457SAndroid Build Coastguard Worker   }
2625*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_multipass)2626*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_multipass) {
2627*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2628*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2629*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2630*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2631*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
2632*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2633*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2634*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2635*4bdc9457SAndroid Build Coastguard Worker     }
2636*4bdc9457SAndroid Build Coastguard Worker   }
2637*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_multipass_with_input_offset)2638*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_multipass_with_input_offset) {
2639*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2640*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2641*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2642*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2643*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
2644*4bdc9457SAndroid Build Coastguard Worker         .input_offset(19)
2645*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2646*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2647*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2648*4bdc9457SAndroid Build Coastguard Worker     }
2649*4bdc9457SAndroid Build Coastguard Worker   }
2650*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_multipass_with_qmin)2651*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_multipass_with_qmin) {
2652*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2653*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2654*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2655*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2656*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
2657*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
2658*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
2659*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2660*4bdc9457SAndroid Build Coastguard Worker     }
2661*4bdc9457SAndroid Build Coastguard Worker   }
2662*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_eq_16_multipass_with_qmax)2663*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_eq_16_multipass_with_qmax) {
2664*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2665*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
2666*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2667*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
2668*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
2669*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
2670*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
2671*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2672*4bdc9457SAndroid Build Coastguard Worker     }
2673*4bdc9457SAndroid Build Coastguard Worker   }
2674*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_multipass)2675*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_multipass) {
2676*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2677*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
2678*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2679*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2680*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2681*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2682*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2683*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2684*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2685*4bdc9457SAndroid Build Coastguard Worker       }
2686*4bdc9457SAndroid Build Coastguard Worker     }
2687*4bdc9457SAndroid Build Coastguard Worker   }
2688*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_multipass_with_input_offset)2689*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_multipass_with_input_offset) {
2690*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2691*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
2692*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2693*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2694*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2695*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2696*4bdc9457SAndroid Build Coastguard Worker           .input_offset(131)
2697*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2698*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2699*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2700*4bdc9457SAndroid Build Coastguard Worker       }
2701*4bdc9457SAndroid Build Coastguard Worker     }
2702*4bdc9457SAndroid Build Coastguard Worker   }
2703*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_multipass_with_qmin)2704*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_multipass_with_qmin) {
2705*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2706*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
2707*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2708*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2709*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2710*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2711*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
2712*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2713*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2714*4bdc9457SAndroid Build Coastguard Worker       }
2715*4bdc9457SAndroid Build Coastguard Worker     }
2716*4bdc9457SAndroid Build Coastguard Worker   }
2717*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_div_16_multipass_with_qmax)2718*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_div_16_multipass_with_qmax) {
2719*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2720*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 32; channels < 128; channels += 16) {
2721*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2722*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2723*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2724*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2725*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2726*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
2727*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2728*4bdc9457SAndroid Build Coastguard Worker       }
2729*4bdc9457SAndroid Build Coastguard Worker     }
2730*4bdc9457SAndroid Build Coastguard Worker   }
2731*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_multipass)2732*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_multipass) {
2733*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2734*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
2735*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2736*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2737*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2738*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2739*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2740*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2741*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2742*4bdc9457SAndroid Build Coastguard Worker       }
2743*4bdc9457SAndroid Build Coastguard Worker     }
2744*4bdc9457SAndroid Build Coastguard Worker   }
2745*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_multipass_with_input_offset)2746*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_multipass_with_input_offset) {
2747*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2748*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
2749*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2750*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2751*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2752*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2753*4bdc9457SAndroid Build Coastguard Worker           .input_offset(16)
2754*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2755*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2756*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2757*4bdc9457SAndroid Build Coastguard Worker       }
2758*4bdc9457SAndroid Build Coastguard Worker     }
2759*4bdc9457SAndroid Build Coastguard Worker   }
2760*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_multipass_with_qmin)2761*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_multipass_with_qmin) {
2762*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2763*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
2764*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2765*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2766*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2767*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2768*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
2769*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2770*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2771*4bdc9457SAndroid Build Coastguard Worker       }
2772*4bdc9457SAndroid Build Coastguard Worker     }
2773*4bdc9457SAndroid Build Coastguard Worker   }
2774*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_lt_16_multipass_with_qmax)2775*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_lt_16_multipass_with_qmax) {
2776*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2777*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 16; channels++) {
2778*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2779*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2780*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2781*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2782*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2783*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
2784*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2785*4bdc9457SAndroid Build Coastguard Worker       }
2786*4bdc9457SAndroid Build Coastguard Worker     }
2787*4bdc9457SAndroid Build Coastguard Worker   }
2788*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_multipass)2789*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_multipass) {
2790*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2791*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
2792*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2793*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2794*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2795*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2796*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2797*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2798*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2799*4bdc9457SAndroid Build Coastguard Worker       }
2800*4bdc9457SAndroid Build Coastguard Worker     }
2801*4bdc9457SAndroid Build Coastguard Worker   }
2802*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_multipass_with_input_offset)2803*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_multipass_with_input_offset) {
2804*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2805*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
2806*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2807*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2808*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2809*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2810*4bdc9457SAndroid Build Coastguard Worker           .input_offset(37)
2811*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2812*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2813*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2814*4bdc9457SAndroid Build Coastguard Worker       }
2815*4bdc9457SAndroid Build Coastguard Worker     }
2816*4bdc9457SAndroid Build Coastguard Worker   }
2817*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_multipass_with_qmin)2818*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_multipass_with_qmin) {
2819*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2820*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
2821*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2822*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2823*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2824*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2825*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
2826*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
2827*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2828*4bdc9457SAndroid Build Coastguard Worker       }
2829*4bdc9457SAndroid Build Coastguard Worker     }
2830*4bdc9457SAndroid Build Coastguard Worker   }
2831*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,channels_gt_16_multipass_with_qmax)2832*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, channels_gt_16_multipass_with_qmax) {
2833*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2834*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 17; channels < 32; channels++) {
2835*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
2836*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2837*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2838*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2839*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
2840*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
2841*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2842*4bdc9457SAndroid Build Coastguard Worker       }
2843*4bdc9457SAndroid Build Coastguard Worker     }
2844*4bdc9457SAndroid Build Coastguard Worker   }
2845*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,few_output_pixels)2846*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, few_output_pixels) {
2847*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2848*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2849*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
2850*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
2851*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2852*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2853*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2854*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2855*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
2856*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
2857*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2858*4bdc9457SAndroid Build Coastguard Worker         }
2859*4bdc9457SAndroid Build Coastguard Worker       }
2860*4bdc9457SAndroid Build Coastguard Worker     }
2861*4bdc9457SAndroid Build Coastguard Worker   }
2862*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,few_output_pixels_with_input_offset)2863*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, few_output_pixels_with_input_offset) {
2864*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2865*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2866*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
2867*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
2868*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2869*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2870*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2871*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2872*4bdc9457SAndroid Build Coastguard Worker             .input_offset(83)
2873*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
2874*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
2875*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2876*4bdc9457SAndroid Build Coastguard Worker         }
2877*4bdc9457SAndroid Build Coastguard Worker       }
2878*4bdc9457SAndroid Build Coastguard Worker     }
2879*4bdc9457SAndroid Build Coastguard Worker   }
2880*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,few_output_pixels_with_qmin)2881*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, few_output_pixels_with_qmin) {
2882*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2883*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2884*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
2885*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
2886*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2887*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2888*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2889*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2890*4bdc9457SAndroid Build Coastguard Worker             .qmin(64)
2891*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
2892*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2893*4bdc9457SAndroid Build Coastguard Worker         }
2894*4bdc9457SAndroid Build Coastguard Worker       }
2895*4bdc9457SAndroid Build Coastguard Worker     }
2896*4bdc9457SAndroid Build Coastguard Worker   }
2897*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,few_output_pixels_with_qmax)2898*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, few_output_pixels_with_qmax) {
2899*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2900*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2901*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
2902*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
2903*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2904*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2905*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2906*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2907*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
2908*4bdc9457SAndroid Build Coastguard Worker             .qmax(192)
2909*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2910*4bdc9457SAndroid Build Coastguard Worker         }
2911*4bdc9457SAndroid Build Coastguard Worker       }
2912*4bdc9457SAndroid Build Coastguard Worker     }
2913*4bdc9457SAndroid Build Coastguard Worker   }
2914*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,few_output_pixels_with_output_stride)2915*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, few_output_pixels_with_output_stride) {
2916*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2917*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2918*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
2919*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
2920*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2921*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2922*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2923*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2924*4bdc9457SAndroid Build Coastguard Worker             .output_stride(83)
2925*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
2926*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
2927*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2928*4bdc9457SAndroid Build Coastguard Worker         }
2929*4bdc9457SAndroid Build Coastguard Worker       }
2930*4bdc9457SAndroid Build Coastguard Worker     }
2931*4bdc9457SAndroid Build Coastguard Worker   }
2932*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16,few_output_pixels_with_step)2933*4bdc9457SAndroid Build Coastguard Worker   TEST(U8_MAXPOOL_MINMAX_9P8X__WASMSIMD_C16, few_output_pixels_with_step) {
2934*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2935*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2936*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 80; channels += 15) {
2937*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
2938*4bdc9457SAndroid Build Coastguard Worker             MaxPoolMicrokernelTester()
2939*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
2940*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
2941*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
2942*4bdc9457SAndroid Build Coastguard Worker               .step(step)
2943*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
2944*4bdc9457SAndroid Build Coastguard Worker               .output_stride(83)
2945*4bdc9457SAndroid Build Coastguard Worker               .qmin(std::numeric_limits<uint8_t>::min())
2946*4bdc9457SAndroid Build Coastguard Worker               .qmax(std::numeric_limits<uint8_t>::max())
2947*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16, xnn_init_u8_minmax_wasmsimd_params);
2948*4bdc9457SAndroid Build Coastguard Worker           }
2949*4bdc9457SAndroid Build Coastguard Worker         }
2950*4bdc9457SAndroid Build Coastguard Worker       }
2951*4bdc9457SAndroid Build Coastguard Worker     }
2952*4bdc9457SAndroid Build Coastguard Worker   }
2953*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
2954*4bdc9457SAndroid Build Coastguard Worker 
2955*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_unipass_fulltile)2956*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_fulltile) {
2957*4bdc9457SAndroid Build Coastguard Worker   MaxPoolMicrokernelTester()
2958*4bdc9457SAndroid Build Coastguard Worker     .pooling_elements(9)
2959*4bdc9457SAndroid Build Coastguard Worker     .pooling_tile(9, 8)
2960*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
2961*4bdc9457SAndroid Build Coastguard Worker     .qmin(std::numeric_limits<uint8_t>::min())
2962*4bdc9457SAndroid Build Coastguard Worker     .qmax(std::numeric_limits<uint8_t>::max())
2963*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
2964*4bdc9457SAndroid Build Coastguard Worker }
2965*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_unipass_fulltile_with_input_offset)2966*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
2967*4bdc9457SAndroid Build Coastguard Worker   MaxPoolMicrokernelTester()
2968*4bdc9457SAndroid Build Coastguard Worker     .pooling_elements(9)
2969*4bdc9457SAndroid Build Coastguard Worker     .pooling_tile(9, 8)
2970*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
2971*4bdc9457SAndroid Build Coastguard Worker     .input_offset(3)
2972*4bdc9457SAndroid Build Coastguard Worker     .qmin(std::numeric_limits<uint8_t>::min())
2973*4bdc9457SAndroid Build Coastguard Worker     .qmax(std::numeric_limits<uint8_t>::max())
2974*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
2975*4bdc9457SAndroid Build Coastguard Worker }
2976*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_unipass_fulltile_with_qmin)2977*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_qmin) {
2978*4bdc9457SAndroid Build Coastguard Worker   MaxPoolMicrokernelTester()
2979*4bdc9457SAndroid Build Coastguard Worker     .pooling_elements(9)
2980*4bdc9457SAndroid Build Coastguard Worker     .pooling_tile(9, 8)
2981*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
2982*4bdc9457SAndroid Build Coastguard Worker     .qmin(64)
2983*4bdc9457SAndroid Build Coastguard Worker     .qmax(std::numeric_limits<uint8_t>::max())
2984*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
2985*4bdc9457SAndroid Build Coastguard Worker }
2986*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_unipass_fulltile_with_qmax)2987*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_qmax) {
2988*4bdc9457SAndroid Build Coastguard Worker   MaxPoolMicrokernelTester()
2989*4bdc9457SAndroid Build Coastguard Worker     .pooling_elements(9)
2990*4bdc9457SAndroid Build Coastguard Worker     .pooling_tile(9, 8)
2991*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
2992*4bdc9457SAndroid Build Coastguard Worker     .qmin(std::numeric_limits<uint8_t>::min())
2993*4bdc9457SAndroid Build Coastguard Worker     .qmax(192)
2994*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
2995*4bdc9457SAndroid Build Coastguard Worker }
2996*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_unipass_subtile)2997*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_subtile) {
2998*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2999*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3000*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(pooling_elements)
3001*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3002*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
3003*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3004*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3005*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3006*4bdc9457SAndroid Build Coastguard Worker   }
3007*4bdc9457SAndroid Build Coastguard Worker }
3008*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_unipass_subtile_with_input_offset)3009*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_subtile_with_input_offset) {
3010*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3011*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3012*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(pooling_elements)
3013*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3014*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
3015*4bdc9457SAndroid Build Coastguard Worker       .input_offset(3)
3016*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3017*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3018*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3019*4bdc9457SAndroid Build Coastguard Worker   }
3020*4bdc9457SAndroid Build Coastguard Worker }
3021*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_unipass_fulltile)3022*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_fulltile) {
3023*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 10; channels++) {
3024*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3025*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
3026*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3027*4bdc9457SAndroid Build Coastguard Worker       .channels(channels)
3028*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3029*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3030*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3031*4bdc9457SAndroid Build Coastguard Worker   }
3032*4bdc9457SAndroid Build Coastguard Worker }
3033*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_unipass_fulltile_with_input_offset)3034*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_fulltile_with_input_offset) {
3035*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 10; channels++) {
3036*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3037*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
3038*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3039*4bdc9457SAndroid Build Coastguard Worker       .channels(channels)
3040*4bdc9457SAndroid Build Coastguard Worker       .input_offset(3)
3041*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3042*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3043*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3044*4bdc9457SAndroid Build Coastguard Worker   }
3045*4bdc9457SAndroid Build Coastguard Worker }
3046*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_unipass_fulltile_with_qmin)3047*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_fulltile_with_qmin) {
3048*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 10; channels++) {
3049*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3050*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
3051*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3052*4bdc9457SAndroid Build Coastguard Worker       .channels(channels)
3053*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
3054*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3055*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3056*4bdc9457SAndroid Build Coastguard Worker   }
3057*4bdc9457SAndroid Build Coastguard Worker }
3058*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_unipass_fulltile_with_qmax)3059*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_fulltile_with_qmax) {
3060*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 10; channels++) {
3061*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3062*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
3063*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3064*4bdc9457SAndroid Build Coastguard Worker       .channels(channels)
3065*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3066*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
3067*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3068*4bdc9457SAndroid Build Coastguard Worker   }
3069*4bdc9457SAndroid Build Coastguard Worker }
3070*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_unipass_subtile)3071*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_subtile) {
3072*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3073*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 10; channels++) {
3074*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
3075*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
3076*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
3077*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
3078*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
3079*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
3080*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3081*4bdc9457SAndroid Build Coastguard Worker     }
3082*4bdc9457SAndroid Build Coastguard Worker   }
3083*4bdc9457SAndroid Build Coastguard Worker }
3084*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_unipass_subtile_with_input_offset)3085*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_subtile_with_input_offset) {
3086*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3087*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 10; channels++) {
3088*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
3089*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
3090*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
3091*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
3092*4bdc9457SAndroid Build Coastguard Worker         .input_offset(3)
3093*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
3094*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
3095*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3096*4bdc9457SAndroid Build Coastguard Worker     }
3097*4bdc9457SAndroid Build Coastguard Worker   }
3098*4bdc9457SAndroid Build Coastguard Worker }
3099*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_twopass_fulltile)3100*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile) {
3101*4bdc9457SAndroid Build Coastguard Worker   MaxPoolMicrokernelTester()
3102*4bdc9457SAndroid Build Coastguard Worker     .pooling_elements(17)
3103*4bdc9457SAndroid Build Coastguard Worker     .pooling_tile(9, 8)
3104*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
3105*4bdc9457SAndroid Build Coastguard Worker     .qmin(std::numeric_limits<uint8_t>::min())
3106*4bdc9457SAndroid Build Coastguard Worker     .qmax(std::numeric_limits<uint8_t>::max())
3107*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3108*4bdc9457SAndroid Build Coastguard Worker }
3109*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_twopass_fulltile_with_input_offset)3110*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
3111*4bdc9457SAndroid Build Coastguard Worker   MaxPoolMicrokernelTester()
3112*4bdc9457SAndroid Build Coastguard Worker     .pooling_elements(17)
3113*4bdc9457SAndroid Build Coastguard Worker     .pooling_tile(9, 8)
3114*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
3115*4bdc9457SAndroid Build Coastguard Worker     .input_offset(3)
3116*4bdc9457SAndroid Build Coastguard Worker     .qmin(std::numeric_limits<uint8_t>::min())
3117*4bdc9457SAndroid Build Coastguard Worker     .qmax(std::numeric_limits<uint8_t>::max())
3118*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3119*4bdc9457SAndroid Build Coastguard Worker }
3120*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_twopass_fulltile_with_qmin)3121*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_qmin) {
3122*4bdc9457SAndroid Build Coastguard Worker   MaxPoolMicrokernelTester()
3123*4bdc9457SAndroid Build Coastguard Worker     .pooling_elements(17)
3124*4bdc9457SAndroid Build Coastguard Worker     .pooling_tile(9, 8)
3125*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
3126*4bdc9457SAndroid Build Coastguard Worker     .qmin(64)
3127*4bdc9457SAndroid Build Coastguard Worker     .qmax(std::numeric_limits<uint8_t>::max())
3128*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3129*4bdc9457SAndroid Build Coastguard Worker }
3130*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_twopass_fulltile_with_qmax)3131*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_qmax) {
3132*4bdc9457SAndroid Build Coastguard Worker   MaxPoolMicrokernelTester()
3133*4bdc9457SAndroid Build Coastguard Worker     .pooling_elements(17)
3134*4bdc9457SAndroid Build Coastguard Worker     .pooling_tile(9, 8)
3135*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
3136*4bdc9457SAndroid Build Coastguard Worker     .qmin(std::numeric_limits<uint8_t>::min())
3137*4bdc9457SAndroid Build Coastguard Worker     .qmax(192)
3138*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3139*4bdc9457SAndroid Build Coastguard Worker }
3140*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_twopass_subtile)3141*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile) {
3142*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3143*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3144*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(pooling_elements)
3145*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3146*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
3147*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3148*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3149*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3150*4bdc9457SAndroid Build Coastguard Worker   }
3151*4bdc9457SAndroid Build Coastguard Worker }
3152*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_twopass_subtile_with_input_offset)3153*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile_with_input_offset) {
3154*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3155*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3156*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(pooling_elements)
3157*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3158*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
3159*4bdc9457SAndroid Build Coastguard Worker       .input_offset(3)
3160*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3161*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3162*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3163*4bdc9457SAndroid Build Coastguard Worker   }
3164*4bdc9457SAndroid Build Coastguard Worker }
3165*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_twopass_fulltile)3166*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile) {
3167*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 10; channels++) {
3168*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3169*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
3170*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3171*4bdc9457SAndroid Build Coastguard Worker       .channels(channels)
3172*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3173*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3174*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3175*4bdc9457SAndroid Build Coastguard Worker   }
3176*4bdc9457SAndroid Build Coastguard Worker }
3177*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_twopass_fulltile_with_input_offset)3178*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile_with_input_offset) {
3179*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 10; channels++) {
3180*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3181*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
3182*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3183*4bdc9457SAndroid Build Coastguard Worker       .channels(channels)
3184*4bdc9457SAndroid Build Coastguard Worker       .input_offset(3)
3185*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3186*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3187*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3188*4bdc9457SAndroid Build Coastguard Worker   }
3189*4bdc9457SAndroid Build Coastguard Worker }
3190*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_twopass_fulltile_with_qmin)3191*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile_with_qmin) {
3192*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 10; channels++) {
3193*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3194*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
3195*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3196*4bdc9457SAndroid Build Coastguard Worker       .channels(channels)
3197*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
3198*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3199*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3200*4bdc9457SAndroid Build Coastguard Worker   }
3201*4bdc9457SAndroid Build Coastguard Worker }
3202*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_twopass_fulltile_with_qmax)3203*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile_with_qmax) {
3204*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 10; channels++) {
3205*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3206*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
3207*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3208*4bdc9457SAndroid Build Coastguard Worker       .channels(channels)
3209*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3210*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
3211*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3212*4bdc9457SAndroid Build Coastguard Worker   }
3213*4bdc9457SAndroid Build Coastguard Worker }
3214*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_twopass_subtile)3215*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_subtile) {
3216*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3217*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 10; channels++) {
3218*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
3219*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
3220*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
3221*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
3222*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
3223*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
3224*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3225*4bdc9457SAndroid Build Coastguard Worker     }
3226*4bdc9457SAndroid Build Coastguard Worker   }
3227*4bdc9457SAndroid Build Coastguard Worker }
3228*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_twopass_subtile_with_input_offset)3229*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_subtile_with_input_offset) {
3230*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3231*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 10; channels++) {
3232*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
3233*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
3234*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
3235*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
3236*4bdc9457SAndroid Build Coastguard Worker         .input_offset(3)
3237*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
3238*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
3239*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3240*4bdc9457SAndroid Build Coastguard Worker     }
3241*4bdc9457SAndroid Build Coastguard Worker   }
3242*4bdc9457SAndroid Build Coastguard Worker }
3243*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_multipass)3244*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_multipass) {
3245*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3246*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3247*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(pooling_elements)
3248*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3249*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
3250*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3251*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3252*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3253*4bdc9457SAndroid Build Coastguard Worker   }
3254*4bdc9457SAndroid Build Coastguard Worker }
3255*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_multipass_with_input_offset)3256*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_multipass_with_input_offset) {
3257*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3258*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3259*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(pooling_elements)
3260*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3261*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
3262*4bdc9457SAndroid Build Coastguard Worker       .input_offset(3)
3263*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3264*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3265*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3266*4bdc9457SAndroid Build Coastguard Worker   }
3267*4bdc9457SAndroid Build Coastguard Worker }
3268*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_multipass_with_qmin)3269*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_multipass_with_qmin) {
3270*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3271*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3272*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(pooling_elements)
3273*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3274*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
3275*4bdc9457SAndroid Build Coastguard Worker       .qmin(64)
3276*4bdc9457SAndroid Build Coastguard Worker       .qmax(std::numeric_limits<uint8_t>::max())
3277*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3278*4bdc9457SAndroid Build Coastguard Worker   }
3279*4bdc9457SAndroid Build Coastguard Worker }
3280*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_eq_1_multipass_with_qmax)3281*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_multipass_with_qmax) {
3282*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3283*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
3284*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(pooling_elements)
3285*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
3286*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
3287*4bdc9457SAndroid Build Coastguard Worker       .qmin(std::numeric_limits<uint8_t>::min())
3288*4bdc9457SAndroid Build Coastguard Worker       .qmax(192)
3289*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3290*4bdc9457SAndroid Build Coastguard Worker   }
3291*4bdc9457SAndroid Build Coastguard Worker }
3292*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_multipass)3293*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_multipass) {
3294*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3295*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 10; channels++) {
3296*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
3297*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
3298*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
3299*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
3300*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
3301*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
3302*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3303*4bdc9457SAndroid Build Coastguard Worker     }
3304*4bdc9457SAndroid Build Coastguard Worker   }
3305*4bdc9457SAndroid Build Coastguard Worker }
3306*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_multipass_with_input_offset)3307*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_multipass_with_input_offset) {
3308*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3309*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 10; channels++) {
3310*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
3311*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
3312*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
3313*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
3314*4bdc9457SAndroid Build Coastguard Worker         .input_offset(3)
3315*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
3316*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
3317*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3318*4bdc9457SAndroid Build Coastguard Worker     }
3319*4bdc9457SAndroid Build Coastguard Worker   }
3320*4bdc9457SAndroid Build Coastguard Worker }
3321*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_multipass_with_qmin)3322*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_multipass_with_qmin) {
3323*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3324*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 10; channels++) {
3325*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
3326*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
3327*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
3328*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
3329*4bdc9457SAndroid Build Coastguard Worker         .qmin(64)
3330*4bdc9457SAndroid Build Coastguard Worker         .qmax(std::numeric_limits<uint8_t>::max())
3331*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3332*4bdc9457SAndroid Build Coastguard Worker     }
3333*4bdc9457SAndroid Build Coastguard Worker   }
3334*4bdc9457SAndroid Build Coastguard Worker }
3335*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,channels_gt_1_multipass_with_qmax)3336*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_multipass_with_qmax) {
3337*4bdc9457SAndroid Build Coastguard Worker   for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3338*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 10; channels++) {
3339*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
3340*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
3341*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
3342*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
3343*4bdc9457SAndroid Build Coastguard Worker         .qmin(std::numeric_limits<uint8_t>::min())
3344*4bdc9457SAndroid Build Coastguard Worker         .qmax(192)
3345*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3346*4bdc9457SAndroid Build Coastguard Worker     }
3347*4bdc9457SAndroid Build Coastguard Worker   }
3348*4bdc9457SAndroid Build Coastguard Worker }
3349*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,few_output_pixels)3350*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels) {
3351*4bdc9457SAndroid Build Coastguard Worker   for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3352*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3353*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
3354*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
3355*4bdc9457SAndroid Build Coastguard Worker           .output_pixels(output_pixels)
3356*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
3357*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
3358*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
3359*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
3360*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
3361*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3362*4bdc9457SAndroid Build Coastguard Worker       }
3363*4bdc9457SAndroid Build Coastguard Worker     }
3364*4bdc9457SAndroid Build Coastguard Worker   }
3365*4bdc9457SAndroid Build Coastguard Worker }
3366*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,few_output_pixels_with_input_offset)3367*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_input_offset) {
3368*4bdc9457SAndroid Build Coastguard Worker   for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3369*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3370*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
3371*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
3372*4bdc9457SAndroid Build Coastguard Worker           .output_pixels(output_pixels)
3373*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
3374*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
3375*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
3376*4bdc9457SAndroid Build Coastguard Worker           .input_offset(7)
3377*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
3378*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
3379*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3380*4bdc9457SAndroid Build Coastguard Worker       }
3381*4bdc9457SAndroid Build Coastguard Worker     }
3382*4bdc9457SAndroid Build Coastguard Worker   }
3383*4bdc9457SAndroid Build Coastguard Worker }
3384*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,few_output_pixels_with_qmin)3385*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_qmin) {
3386*4bdc9457SAndroid Build Coastguard Worker   for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3387*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3388*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
3389*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
3390*4bdc9457SAndroid Build Coastguard Worker           .output_pixels(output_pixels)
3391*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
3392*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
3393*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
3394*4bdc9457SAndroid Build Coastguard Worker           .qmin(64)
3395*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
3396*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3397*4bdc9457SAndroid Build Coastguard Worker       }
3398*4bdc9457SAndroid Build Coastguard Worker     }
3399*4bdc9457SAndroid Build Coastguard Worker   }
3400*4bdc9457SAndroid Build Coastguard Worker }
3401*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,few_output_pixels_with_qmax)3402*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_qmax) {
3403*4bdc9457SAndroid Build Coastguard Worker   for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3404*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3405*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
3406*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
3407*4bdc9457SAndroid Build Coastguard Worker           .output_pixels(output_pixels)
3408*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
3409*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
3410*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
3411*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
3412*4bdc9457SAndroid Build Coastguard Worker           .qmax(192)
3413*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3414*4bdc9457SAndroid Build Coastguard Worker       }
3415*4bdc9457SAndroid Build Coastguard Worker     }
3416*4bdc9457SAndroid Build Coastguard Worker   }
3417*4bdc9457SAndroid Build Coastguard Worker }
3418*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,few_output_pixels_with_output_stride)3419*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_output_stride) {
3420*4bdc9457SAndroid Build Coastguard Worker   for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3421*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3422*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
3423*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
3424*4bdc9457SAndroid Build Coastguard Worker           .output_pixels(output_pixels)
3425*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
3426*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
3427*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
3428*4bdc9457SAndroid Build Coastguard Worker           .output_stride(7)
3429*4bdc9457SAndroid Build Coastguard Worker           .qmin(std::numeric_limits<uint8_t>::min())
3430*4bdc9457SAndroid Build Coastguard Worker           .qmax(std::numeric_limits<uint8_t>::max())
3431*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3432*4bdc9457SAndroid Build Coastguard Worker       }
3433*4bdc9457SAndroid Build Coastguard Worker     }
3434*4bdc9457SAndroid Build Coastguard Worker   }
3435*4bdc9457SAndroid Build Coastguard Worker }
3436*4bdc9457SAndroid Build Coastguard Worker 
TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1,few_output_pixels_with_step)3437*4bdc9457SAndroid Build Coastguard Worker TEST(U8_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_step) {
3438*4bdc9457SAndroid Build Coastguard Worker   for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3439*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3440*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
3441*4bdc9457SAndroid Build Coastguard Worker         for (size_t step = 2; step <= pooling_elements; step++) {
3442*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
3443*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
3444*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
3445*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
3446*4bdc9457SAndroid Build Coastguard Worker             .step(step)
3447*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
3448*4bdc9457SAndroid Build Coastguard Worker             .output_stride(7)
3449*4bdc9457SAndroid Build Coastguard Worker             .qmin(std::numeric_limits<uint8_t>::min())
3450*4bdc9457SAndroid Build Coastguard Worker             .qmax(std::numeric_limits<uint8_t>::max())
3451*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_u8_minmax_scalar_params);
3452*4bdc9457SAndroid Build Coastguard Worker         }
3453*4bdc9457SAndroid Build Coastguard Worker       }
3454*4bdc9457SAndroid Build Coastguard Worker     }
3455*4bdc9457SAndroid Build Coastguard Worker   }
3456*4bdc9457SAndroid Build Coastguard Worker }