xref: /aosp_15_r20/external/XNNPACK/test/f16-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/f16-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_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile)24*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile) {
25*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
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(8)
30*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
31*4bdc9457SAndroid Build Coastguard Worker   }
32*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile_with_input_offset)33*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile_with_input_offset) {
34*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
35*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
36*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
37*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
38*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
39*4bdc9457SAndroid Build Coastguard Worker       .input_offset(11)
40*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
41*4bdc9457SAndroid Build Coastguard Worker   }
42*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile_with_qmin)43*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile_with_qmin) {
44*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
45*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
46*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
47*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
48*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
49*4bdc9457SAndroid Build Coastguard Worker       .qmin(-16384)
50*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
51*4bdc9457SAndroid Build Coastguard Worker   }
52*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile_with_qmax)53*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile_with_qmax) {
54*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
55*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
56*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
57*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
58*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
59*4bdc9457SAndroid Build Coastguard Worker       .qmax(16384)
60*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
61*4bdc9457SAndroid Build Coastguard Worker   }
62*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_unipass_subtile)63*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_unipass_subtile) {
64*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
65*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
66*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
67*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
68*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
69*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
70*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
71*4bdc9457SAndroid Build Coastguard Worker     }
72*4bdc9457SAndroid Build Coastguard Worker   }
73*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_unipass_subtile_with_input_offset)74*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_unipass_subtile_with_input_offset) {
75*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
76*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
77*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
78*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
79*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
80*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
81*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
82*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
83*4bdc9457SAndroid Build Coastguard Worker     }
84*4bdc9457SAndroid Build Coastguard Worker   }
85*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile)86*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile) {
87*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
88*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
89*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
90*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
91*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
92*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
93*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
94*4bdc9457SAndroid Build Coastguard Worker     }
95*4bdc9457SAndroid Build Coastguard Worker   }
96*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile_with_input_offset)97*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile_with_input_offset) {
98*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
99*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
100*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
101*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
102*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
103*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
104*4bdc9457SAndroid Build Coastguard Worker         .input_offset(67)
105*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
106*4bdc9457SAndroid Build Coastguard Worker     }
107*4bdc9457SAndroid Build Coastguard Worker   }
108*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile_with_qmin)109*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile_with_qmin) {
110*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
111*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
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         .qmin(-16384)
117*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
118*4bdc9457SAndroid Build Coastguard Worker     }
119*4bdc9457SAndroid Build Coastguard Worker   }
120*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile_with_qmax)121*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile_with_qmax) {
122*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
123*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
124*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
125*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
126*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
127*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
128*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
129*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
130*4bdc9457SAndroid Build Coastguard Worker     }
131*4bdc9457SAndroid Build Coastguard Worker   }
132*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_unipass_subtile)133*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_unipass_subtile) {
134*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
135*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
136*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
137*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
138*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
139*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
140*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
141*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
142*4bdc9457SAndroid Build Coastguard Worker       }
143*4bdc9457SAndroid Build Coastguard Worker     }
144*4bdc9457SAndroid Build Coastguard Worker   }
145*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_unipass_subtile_with_input_offset)146*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_unipass_subtile_with_input_offset) {
147*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
148*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
149*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
150*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
151*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
152*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
153*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
154*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
155*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
156*4bdc9457SAndroid Build Coastguard Worker       }
157*4bdc9457SAndroid Build Coastguard Worker     }
158*4bdc9457SAndroid Build Coastguard Worker   }
159*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile)160*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile) {
161*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
162*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
163*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
164*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
165*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
166*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
167*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
168*4bdc9457SAndroid Build Coastguard Worker     }
169*4bdc9457SAndroid Build Coastguard Worker   }
170*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile_with_input_offset)171*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile_with_input_offset) {
172*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
173*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
174*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
175*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
176*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
177*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
178*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
179*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
180*4bdc9457SAndroid Build Coastguard Worker     }
181*4bdc9457SAndroid Build Coastguard Worker   }
182*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile_with_qmin)183*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile_with_qmin) {
184*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
185*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
186*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
187*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
188*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
189*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
190*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
191*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
192*4bdc9457SAndroid Build Coastguard Worker     }
193*4bdc9457SAndroid Build Coastguard Worker   }
194*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile_with_qmax)195*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile_with_qmax) {
196*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
197*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
198*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
199*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
200*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
201*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
202*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
203*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
204*4bdc9457SAndroid Build Coastguard Worker     }
205*4bdc9457SAndroid Build Coastguard Worker   }
206*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_unipass_subtile)207*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_unipass_subtile) {
208*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
209*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
210*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
211*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
212*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
213*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
214*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
215*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
216*4bdc9457SAndroid Build Coastguard Worker       }
217*4bdc9457SAndroid Build Coastguard Worker     }
218*4bdc9457SAndroid Build Coastguard Worker   }
219*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_unipass_subtile_with_input_offset)220*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_unipass_subtile_with_input_offset) {
221*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
222*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
223*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
224*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
225*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
226*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
227*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
228*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
229*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
230*4bdc9457SAndroid Build Coastguard Worker       }
231*4bdc9457SAndroid Build Coastguard Worker     }
232*4bdc9457SAndroid Build Coastguard Worker   }
233*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile)234*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile) {
235*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
236*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
237*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
238*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
239*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
240*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
241*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
242*4bdc9457SAndroid Build Coastguard Worker     }
243*4bdc9457SAndroid Build Coastguard Worker   }
244*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile_with_input_offset)245*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile_with_input_offset) {
246*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
247*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
248*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
249*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
250*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
251*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
252*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
253*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
254*4bdc9457SAndroid Build Coastguard Worker     }
255*4bdc9457SAndroid Build Coastguard Worker   }
256*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile_with_qmin)257*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile_with_qmin) {
258*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
259*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
260*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
261*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
262*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
263*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
264*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
265*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
266*4bdc9457SAndroid Build Coastguard Worker     }
267*4bdc9457SAndroid Build Coastguard Worker   }
268*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile_with_qmax)269*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile_with_qmax) {
270*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
271*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
272*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
273*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
274*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
275*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
276*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
277*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
278*4bdc9457SAndroid Build Coastguard Worker     }
279*4bdc9457SAndroid Build Coastguard Worker   }
280*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_unipass_subtile)281*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_unipass_subtile) {
282*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
283*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
284*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
285*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
286*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
287*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
288*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
289*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
290*4bdc9457SAndroid Build Coastguard Worker       }
291*4bdc9457SAndroid Build Coastguard Worker     }
292*4bdc9457SAndroid Build Coastguard Worker   }
293*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_unipass_subtile_with_input_offset)294*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_unipass_subtile_with_input_offset) {
295*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
296*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
297*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
298*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
299*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
300*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
301*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
302*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
303*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
304*4bdc9457SAndroid Build Coastguard Worker       }
305*4bdc9457SAndroid Build Coastguard Worker     }
306*4bdc9457SAndroid Build Coastguard Worker   }
307*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile)308*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile) {
309*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
310*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
311*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
312*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
313*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
314*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
315*4bdc9457SAndroid Build Coastguard Worker   }
316*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile_with_input_offset)317*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile_with_input_offset) {
318*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
319*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
320*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
321*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
322*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
323*4bdc9457SAndroid Build Coastguard Worker       .input_offset(11)
324*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
325*4bdc9457SAndroid Build Coastguard Worker   }
326*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile_with_qmin)327*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile_with_qmin) {
328*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
329*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
330*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
331*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
332*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
333*4bdc9457SAndroid Build Coastguard Worker       .qmin(-16384)
334*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
335*4bdc9457SAndroid Build Coastguard Worker   }
336*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile_with_qmax)337*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile_with_qmax) {
338*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
339*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
340*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
341*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
342*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
343*4bdc9457SAndroid Build Coastguard Worker       .qmax(16384)
344*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
345*4bdc9457SAndroid Build Coastguard Worker   }
346*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_subtile)347*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_subtile) {
348*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
349*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
350*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
351*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
352*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
353*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
354*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
355*4bdc9457SAndroid Build Coastguard Worker     }
356*4bdc9457SAndroid Build Coastguard Worker   }
357*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_subtile_with_input_offset)358*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_subtile_with_input_offset) {
359*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
360*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
361*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
362*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
363*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
364*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
365*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
366*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
367*4bdc9457SAndroid Build Coastguard Worker     }
368*4bdc9457SAndroid Build Coastguard Worker   }
369*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile)370*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile) {
371*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
372*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
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(channels)
377*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
378*4bdc9457SAndroid Build Coastguard Worker     }
379*4bdc9457SAndroid Build Coastguard Worker   }
380*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile_with_input_offset)381*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile_with_input_offset) {
382*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
383*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
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(channels)
388*4bdc9457SAndroid Build Coastguard Worker         .input_offset(41)
389*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
390*4bdc9457SAndroid Build Coastguard Worker     }
391*4bdc9457SAndroid Build Coastguard Worker   }
392*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile_with_qmin)393*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile_with_qmin) {
394*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
395*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
396*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
397*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
398*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
399*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
400*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
401*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
402*4bdc9457SAndroid Build Coastguard Worker     }
403*4bdc9457SAndroid Build Coastguard Worker   }
404*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile_with_qmax)405*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile_with_qmax) {
406*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
407*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
408*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
409*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
410*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
411*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
412*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
413*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
414*4bdc9457SAndroid Build Coastguard Worker     }
415*4bdc9457SAndroid Build Coastguard Worker   }
416*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_subtile)417*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_subtile) {
418*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
419*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
420*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
421*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
422*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
423*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
424*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
425*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
426*4bdc9457SAndroid Build Coastguard Worker       }
427*4bdc9457SAndroid Build Coastguard Worker     }
428*4bdc9457SAndroid Build Coastguard Worker   }
429*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_subtile_with_input_offset)430*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_subtile_with_input_offset) {
431*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
432*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
433*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
434*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
435*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
436*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
437*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
438*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
439*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
440*4bdc9457SAndroid Build Coastguard Worker       }
441*4bdc9457SAndroid Build Coastguard Worker     }
442*4bdc9457SAndroid Build Coastguard Worker   }
443*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile)444*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile) {
445*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
446*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
447*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
448*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
449*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
450*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
451*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
452*4bdc9457SAndroid Build Coastguard Worker     }
453*4bdc9457SAndroid Build Coastguard Worker   }
454*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile_with_input_offset)455*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile_with_input_offset) {
456*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
457*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
458*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
459*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
460*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
461*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
462*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
463*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
464*4bdc9457SAndroid Build Coastguard Worker     }
465*4bdc9457SAndroid Build Coastguard Worker   }
466*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile_with_qmin)467*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile_with_qmin) {
468*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
469*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
470*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
471*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
472*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
473*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
474*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
475*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
476*4bdc9457SAndroid Build Coastguard Worker     }
477*4bdc9457SAndroid Build Coastguard Worker   }
478*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile_with_qmax)479*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile_with_qmax) {
480*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
481*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
482*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
483*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
484*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
485*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
486*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
487*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
488*4bdc9457SAndroid Build Coastguard Worker     }
489*4bdc9457SAndroid Build Coastguard Worker   }
490*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_subtile)491*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_subtile) {
492*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
493*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
494*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
495*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
496*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
497*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
498*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
499*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
500*4bdc9457SAndroid Build Coastguard Worker       }
501*4bdc9457SAndroid Build Coastguard Worker     }
502*4bdc9457SAndroid Build Coastguard Worker   }
503*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_subtile_with_input_offset)504*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_subtile_with_input_offset) {
505*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
506*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
507*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
508*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
509*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
510*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
511*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
512*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
513*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
514*4bdc9457SAndroid Build Coastguard Worker       }
515*4bdc9457SAndroid Build Coastguard Worker     }
516*4bdc9457SAndroid Build Coastguard Worker   }
517*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile)518*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile) {
519*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
520*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
521*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
522*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
523*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
524*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
525*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
526*4bdc9457SAndroid Build Coastguard Worker     }
527*4bdc9457SAndroid Build Coastguard Worker   }
528*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile_with_input_offset)529*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile_with_input_offset) {
530*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
531*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
532*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
533*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
534*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
535*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
536*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
537*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
538*4bdc9457SAndroid Build Coastguard Worker     }
539*4bdc9457SAndroid Build Coastguard Worker   }
540*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile_with_qmin)541*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile_with_qmin) {
542*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
543*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
544*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
545*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
546*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
547*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
548*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
549*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
550*4bdc9457SAndroid Build Coastguard Worker     }
551*4bdc9457SAndroid Build Coastguard Worker   }
552*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile_with_qmax)553*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile_with_qmax) {
554*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
555*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
556*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
557*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
558*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
559*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
560*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
561*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
562*4bdc9457SAndroid Build Coastguard Worker     }
563*4bdc9457SAndroid Build Coastguard Worker   }
564*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_subtile)565*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_subtile) {
566*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
567*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
568*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
569*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
570*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
571*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
572*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
573*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
574*4bdc9457SAndroid Build Coastguard Worker       }
575*4bdc9457SAndroid Build Coastguard Worker     }
576*4bdc9457SAndroid Build Coastguard Worker   }
577*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_subtile_with_input_offset)578*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_subtile_with_input_offset) {
579*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
580*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
581*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
582*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
583*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
584*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
585*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
586*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
587*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
588*4bdc9457SAndroid Build Coastguard Worker       }
589*4bdc9457SAndroid Build Coastguard Worker     }
590*4bdc9457SAndroid Build Coastguard Worker   }
591*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass)592*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass) {
593*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
594*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
595*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
596*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
597*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
598*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
599*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
600*4bdc9457SAndroid Build Coastguard Worker     }
601*4bdc9457SAndroid Build Coastguard Worker   }
602*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass_with_input_offset)603*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass_with_input_offset) {
604*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
605*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
606*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
607*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
608*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
609*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
610*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
611*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
612*4bdc9457SAndroid Build Coastguard Worker     }
613*4bdc9457SAndroid Build Coastguard Worker   }
614*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass_with_qmin)615*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass_with_qmin) {
616*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
617*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
618*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
619*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
620*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
621*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
622*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
623*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
624*4bdc9457SAndroid Build Coastguard Worker     }
625*4bdc9457SAndroid Build Coastguard Worker   }
626*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass_with_qmax)627*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass_with_qmax) {
628*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
629*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
630*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
631*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
632*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
633*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
634*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
635*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
636*4bdc9457SAndroid Build Coastguard Worker     }
637*4bdc9457SAndroid Build Coastguard Worker   }
638*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass)639*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass) {
640*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
641*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
642*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
643*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
644*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
645*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
646*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
647*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
648*4bdc9457SAndroid Build Coastguard Worker       }
649*4bdc9457SAndroid Build Coastguard Worker     }
650*4bdc9457SAndroid Build Coastguard Worker   }
651*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass_with_input_offset)652*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass_with_input_offset) {
653*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
654*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
655*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
656*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
657*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
658*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
659*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
660*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
661*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
662*4bdc9457SAndroid Build Coastguard Worker       }
663*4bdc9457SAndroid Build Coastguard Worker     }
664*4bdc9457SAndroid Build Coastguard Worker   }
665*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass_with_qmin)666*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass_with_qmin) {
667*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
668*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
669*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
670*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
671*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
672*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
673*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
674*4bdc9457SAndroid Build Coastguard Worker           .qmin(-16384)
675*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
676*4bdc9457SAndroid Build Coastguard Worker       }
677*4bdc9457SAndroid Build Coastguard Worker     }
678*4bdc9457SAndroid Build Coastguard Worker   }
679*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass_with_qmax)680*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass_with_qmax) {
681*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
682*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
683*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
684*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
685*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
686*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
687*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
688*4bdc9457SAndroid Build Coastguard Worker           .qmax(16384)
689*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
690*4bdc9457SAndroid Build Coastguard Worker       }
691*4bdc9457SAndroid Build Coastguard Worker     }
692*4bdc9457SAndroid Build Coastguard Worker   }
693*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass)694*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass) {
695*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
696*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
697*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
698*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
699*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
700*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
701*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
702*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
703*4bdc9457SAndroid Build Coastguard Worker       }
704*4bdc9457SAndroid Build Coastguard Worker     }
705*4bdc9457SAndroid Build Coastguard Worker   }
706*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass_with_input_offset)707*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass_with_input_offset) {
708*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
709*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
710*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
711*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
712*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
713*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
714*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
715*4bdc9457SAndroid Build Coastguard Worker           .input_offset(8)
716*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
717*4bdc9457SAndroid Build Coastguard Worker       }
718*4bdc9457SAndroid Build Coastguard Worker     }
719*4bdc9457SAndroid Build Coastguard Worker   }
720*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass_with_qmin)721*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass_with_qmin) {
722*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
723*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
724*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
725*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
726*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
727*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
728*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
729*4bdc9457SAndroid Build Coastguard Worker           .qmin(-16384)
730*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
731*4bdc9457SAndroid Build Coastguard Worker       }
732*4bdc9457SAndroid Build Coastguard Worker     }
733*4bdc9457SAndroid Build Coastguard Worker   }
734*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass_with_qmax)735*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass_with_qmax) {
736*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
737*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
738*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
739*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
740*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
741*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
742*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
743*4bdc9457SAndroid Build Coastguard Worker           .qmax(16384)
744*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
745*4bdc9457SAndroid Build Coastguard Worker       }
746*4bdc9457SAndroid Build Coastguard Worker     }
747*4bdc9457SAndroid Build Coastguard Worker   }
748*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass)749*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_multipass) {
750*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
751*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
752*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
753*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
754*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
755*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
756*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
757*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
758*4bdc9457SAndroid Build Coastguard Worker       }
759*4bdc9457SAndroid Build Coastguard Worker     }
760*4bdc9457SAndroid Build Coastguard Worker   }
761*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass_with_input_offset)762*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_multipass_with_input_offset) {
763*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
764*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
765*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
766*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
767*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
768*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
769*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
770*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
771*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
772*4bdc9457SAndroid Build Coastguard Worker       }
773*4bdc9457SAndroid Build Coastguard Worker     }
774*4bdc9457SAndroid Build Coastguard Worker   }
775*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass_with_qmin)776*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_multipass_with_qmin) {
777*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
778*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
779*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
780*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
781*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
782*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
783*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
784*4bdc9457SAndroid Build Coastguard Worker           .qmin(-16384)
785*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
786*4bdc9457SAndroid Build Coastguard Worker       }
787*4bdc9457SAndroid Build Coastguard Worker     }
788*4bdc9457SAndroid Build Coastguard Worker   }
789*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass_with_qmax)790*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_multipass_with_qmax) {
791*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
792*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
793*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
794*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
795*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
796*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
797*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
798*4bdc9457SAndroid Build Coastguard Worker           .qmax(16384)
799*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
800*4bdc9457SAndroid Build Coastguard Worker       }
801*4bdc9457SAndroid Build Coastguard Worker     }
802*4bdc9457SAndroid Build Coastguard Worker   }
803*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels)804*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels) {
805*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
806*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
807*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
808*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
809*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
810*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
811*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
812*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
813*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
814*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
815*4bdc9457SAndroid Build Coastguard Worker         }
816*4bdc9457SAndroid Build Coastguard Worker       }
817*4bdc9457SAndroid Build Coastguard Worker     }
818*4bdc9457SAndroid Build Coastguard Worker   }
819*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_input_offset)820*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_input_offset) {
821*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
822*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
823*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
824*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
825*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
826*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
827*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
828*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
829*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
830*4bdc9457SAndroid Build Coastguard Worker             .input_offset(43)
831*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
832*4bdc9457SAndroid Build Coastguard Worker         }
833*4bdc9457SAndroid Build Coastguard Worker       }
834*4bdc9457SAndroid Build Coastguard Worker     }
835*4bdc9457SAndroid Build Coastguard Worker   }
836*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_qmin)837*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_qmin) {
838*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
839*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
840*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
841*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
842*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
843*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
844*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
845*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
846*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
847*4bdc9457SAndroid Build Coastguard Worker             .qmin(-16384)
848*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
849*4bdc9457SAndroid Build Coastguard Worker         }
850*4bdc9457SAndroid Build Coastguard Worker       }
851*4bdc9457SAndroid Build Coastguard Worker     }
852*4bdc9457SAndroid Build Coastguard Worker   }
853*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_qmax)854*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_qmax) {
855*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
856*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
857*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
858*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
859*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
860*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
861*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
862*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
863*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
864*4bdc9457SAndroid Build Coastguard Worker             .qmax(16384)
865*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
866*4bdc9457SAndroid Build Coastguard Worker         }
867*4bdc9457SAndroid Build Coastguard Worker       }
868*4bdc9457SAndroid Build Coastguard Worker     }
869*4bdc9457SAndroid Build Coastguard Worker   }
870*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_output_stride)871*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_output_stride) {
872*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
873*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
874*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
875*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
876*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
877*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
878*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
879*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
880*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
881*4bdc9457SAndroid Build Coastguard Worker             .output_stride(43)
882*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
883*4bdc9457SAndroid Build Coastguard Worker         }
884*4bdc9457SAndroid Build Coastguard Worker       }
885*4bdc9457SAndroid Build Coastguard Worker     }
886*4bdc9457SAndroid Build Coastguard Worker   }
887*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_step)888*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_step) {
889*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
890*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
891*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
892*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
893*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
894*4bdc9457SAndroid Build Coastguard Worker             MaxPoolMicrokernelTester()
895*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
896*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
897*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
898*4bdc9457SAndroid Build Coastguard Worker               .step(step)
899*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
900*4bdc9457SAndroid Build Coastguard Worker               .output_stride(43)
901*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
902*4bdc9457SAndroid Build Coastguard Worker           }
903*4bdc9457SAndroid Build Coastguard Worker         }
904*4bdc9457SAndroid Build Coastguard Worker       }
905*4bdc9457SAndroid Build Coastguard Worker     }
906*4bdc9457SAndroid Build Coastguard Worker   }
907*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
908*4bdc9457SAndroid Build Coastguard Worker 
909*4bdc9457SAndroid Build Coastguard Worker 
910*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_unipass_fulltile)911*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_unipass_fulltile) {
912*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
913*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
914*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
915*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
916*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
917*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
918*4bdc9457SAndroid Build Coastguard Worker   }
919*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_unipass_fulltile_with_input_offset)920*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_unipass_fulltile_with_input_offset) {
921*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
922*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
923*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
924*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
925*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
926*4bdc9457SAndroid Build Coastguard Worker       .input_offset(11)
927*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
928*4bdc9457SAndroid Build Coastguard Worker   }
929*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_unipass_fulltile_with_qmin)930*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_unipass_fulltile_with_qmin) {
931*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
932*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
933*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
934*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
935*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
936*4bdc9457SAndroid Build Coastguard Worker       .qmin(-16384)
937*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
938*4bdc9457SAndroid Build Coastguard Worker   }
939*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_unipass_fulltile_with_qmax)940*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_unipass_fulltile_with_qmax) {
941*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
942*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
943*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
944*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
945*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
946*4bdc9457SAndroid Build Coastguard Worker       .qmax(16384)
947*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
948*4bdc9457SAndroid Build Coastguard Worker   }
949*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_unipass_subtile)950*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_unipass_subtile) {
951*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
952*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
953*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
954*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
955*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
956*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
957*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
958*4bdc9457SAndroid Build Coastguard Worker     }
959*4bdc9457SAndroid Build Coastguard Worker   }
960*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_unipass_subtile_with_input_offset)961*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_unipass_subtile_with_input_offset) {
962*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
963*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
964*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
965*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
966*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
967*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
968*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
969*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
970*4bdc9457SAndroid Build Coastguard Worker     }
971*4bdc9457SAndroid Build Coastguard Worker   }
972*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_unipass_fulltile)973*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_unipass_fulltile) {
974*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
975*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
976*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
977*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
978*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
979*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
980*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
981*4bdc9457SAndroid Build Coastguard Worker     }
982*4bdc9457SAndroid Build Coastguard Worker   }
983*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_unipass_fulltile_with_input_offset)984*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_unipass_fulltile_with_input_offset) {
985*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
986*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
987*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
988*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
989*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
990*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
991*4bdc9457SAndroid Build Coastguard Worker         .input_offset(67)
992*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
993*4bdc9457SAndroid Build Coastguard Worker     }
994*4bdc9457SAndroid Build Coastguard Worker   }
995*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_unipass_fulltile_with_qmin)996*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_unipass_fulltile_with_qmin) {
997*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
998*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
999*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1000*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1001*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1002*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1003*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
1004*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1005*4bdc9457SAndroid Build Coastguard Worker     }
1006*4bdc9457SAndroid Build Coastguard Worker   }
1007*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_unipass_fulltile_with_qmax)1008*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_unipass_fulltile_with_qmax) {
1009*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1010*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1011*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1012*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1013*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1014*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1015*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
1016*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1017*4bdc9457SAndroid Build Coastguard Worker     }
1018*4bdc9457SAndroid Build Coastguard Worker   }
1019*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_unipass_subtile)1020*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_unipass_subtile) {
1021*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1022*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1023*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1024*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1025*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1026*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1027*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1028*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1029*4bdc9457SAndroid Build Coastguard Worker       }
1030*4bdc9457SAndroid Build Coastguard Worker     }
1031*4bdc9457SAndroid Build Coastguard Worker   }
1032*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_unipass_subtile_with_input_offset)1033*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_unipass_subtile_with_input_offset) {
1034*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1035*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1036*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1037*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1038*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1039*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1040*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1041*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
1042*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1043*4bdc9457SAndroid Build Coastguard Worker       }
1044*4bdc9457SAndroid Build Coastguard Worker     }
1045*4bdc9457SAndroid Build Coastguard Worker   }
1046*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_unipass_fulltile)1047*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_unipass_fulltile) {
1048*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1049*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
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(channels)
1054*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1055*4bdc9457SAndroid Build Coastguard Worker     }
1056*4bdc9457SAndroid Build Coastguard Worker   }
1057*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_unipass_fulltile_with_input_offset)1058*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_unipass_fulltile_with_input_offset) {
1059*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1060*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
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(channels)
1065*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1066*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1067*4bdc9457SAndroid Build Coastguard Worker     }
1068*4bdc9457SAndroid Build Coastguard Worker   }
1069*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_unipass_fulltile_with_qmin)1070*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_unipass_fulltile_with_qmin) {
1071*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1072*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1073*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1074*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1075*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1076*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1077*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
1078*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1079*4bdc9457SAndroid Build Coastguard Worker     }
1080*4bdc9457SAndroid Build Coastguard Worker   }
1081*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_unipass_fulltile_with_qmax)1082*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_unipass_fulltile_with_qmax) {
1083*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1084*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1085*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1086*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1087*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1088*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1089*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
1090*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1091*4bdc9457SAndroid Build Coastguard Worker     }
1092*4bdc9457SAndroid Build Coastguard Worker   }
1093*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_unipass_subtile)1094*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_unipass_subtile) {
1095*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1096*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1097*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1098*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1099*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1100*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1101*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1102*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1103*4bdc9457SAndroid Build Coastguard Worker       }
1104*4bdc9457SAndroid Build Coastguard Worker     }
1105*4bdc9457SAndroid Build Coastguard Worker   }
1106*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_unipass_subtile_with_input_offset)1107*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_unipass_subtile_with_input_offset) {
1108*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1109*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1110*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1111*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1112*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1113*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1114*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1115*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
1116*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1117*4bdc9457SAndroid Build Coastguard Worker       }
1118*4bdc9457SAndroid Build Coastguard Worker     }
1119*4bdc9457SAndroid Build Coastguard Worker   }
1120*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_unipass_fulltile)1121*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_unipass_fulltile) {
1122*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1123*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1124*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1125*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1126*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1127*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1128*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1129*4bdc9457SAndroid Build Coastguard Worker     }
1130*4bdc9457SAndroid Build Coastguard Worker   }
1131*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_unipass_fulltile_with_input_offset)1132*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_unipass_fulltile_with_input_offset) {
1133*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1134*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1135*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1136*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1137*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1138*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1139*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
1140*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1141*4bdc9457SAndroid Build Coastguard Worker     }
1142*4bdc9457SAndroid Build Coastguard Worker   }
1143*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_unipass_fulltile_with_qmin)1144*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_unipass_fulltile_with_qmin) {
1145*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1146*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1147*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1148*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1149*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1150*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1151*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
1152*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1153*4bdc9457SAndroid Build Coastguard Worker     }
1154*4bdc9457SAndroid Build Coastguard Worker   }
1155*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_unipass_fulltile_with_qmax)1156*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_unipass_fulltile_with_qmax) {
1157*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1158*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1159*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1160*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1161*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1162*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1163*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
1164*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1165*4bdc9457SAndroid Build Coastguard Worker     }
1166*4bdc9457SAndroid Build Coastguard Worker   }
1167*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_unipass_subtile)1168*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_unipass_subtile) {
1169*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1170*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1171*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1172*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1173*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1174*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1175*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1176*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1177*4bdc9457SAndroid Build Coastguard Worker       }
1178*4bdc9457SAndroid Build Coastguard Worker     }
1179*4bdc9457SAndroid Build Coastguard Worker   }
1180*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_unipass_subtile_with_input_offset)1181*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_unipass_subtile_with_input_offset) {
1182*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1183*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1184*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1185*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1186*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1187*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1188*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1189*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1190*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1191*4bdc9457SAndroid Build Coastguard Worker       }
1192*4bdc9457SAndroid Build Coastguard Worker     }
1193*4bdc9457SAndroid Build Coastguard Worker   }
1194*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_twopass_fulltile)1195*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_twopass_fulltile) {
1196*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1197*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1198*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1199*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1200*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1201*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1202*4bdc9457SAndroid Build Coastguard Worker   }
1203*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_twopass_fulltile_with_input_offset)1204*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_twopass_fulltile_with_input_offset) {
1205*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1206*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1207*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1208*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1209*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1210*4bdc9457SAndroid Build Coastguard Worker       .input_offset(11)
1211*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1212*4bdc9457SAndroid Build Coastguard Worker   }
1213*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_twopass_fulltile_with_qmin)1214*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_twopass_fulltile_with_qmin) {
1215*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1216*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1217*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1218*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1219*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1220*4bdc9457SAndroid Build Coastguard Worker       .qmin(-16384)
1221*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1222*4bdc9457SAndroid Build Coastguard Worker   }
1223*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_twopass_fulltile_with_qmax)1224*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_twopass_fulltile_with_qmax) {
1225*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1226*4bdc9457SAndroid Build Coastguard Worker     MaxPoolMicrokernelTester()
1227*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1228*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1229*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1230*4bdc9457SAndroid Build Coastguard Worker       .qmax(16384)
1231*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1232*4bdc9457SAndroid Build Coastguard Worker   }
1233*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_twopass_subtile)1234*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_twopass_subtile) {
1235*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1236*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1237*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1238*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1239*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1240*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1241*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1242*4bdc9457SAndroid Build Coastguard Worker     }
1243*4bdc9457SAndroid Build Coastguard Worker   }
1244*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_twopass_subtile_with_input_offset)1245*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_twopass_subtile_with_input_offset) {
1246*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1247*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1248*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1249*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1250*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1251*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1252*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1253*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1254*4bdc9457SAndroid Build Coastguard Worker     }
1255*4bdc9457SAndroid Build Coastguard Worker   }
1256*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_twopass_fulltile)1257*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_twopass_fulltile) {
1258*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1259*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1260*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1261*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1262*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1263*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1264*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1265*4bdc9457SAndroid Build Coastguard Worker     }
1266*4bdc9457SAndroid Build Coastguard Worker   }
1267*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_twopass_fulltile_with_input_offset)1268*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_twopass_fulltile_with_input_offset) {
1269*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1270*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1271*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1272*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1273*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1274*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1275*4bdc9457SAndroid Build Coastguard Worker         .input_offset(41)
1276*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1277*4bdc9457SAndroid Build Coastguard Worker     }
1278*4bdc9457SAndroid Build Coastguard Worker   }
1279*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_twopass_fulltile_with_qmin)1280*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_twopass_fulltile_with_qmin) {
1281*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1282*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1283*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1284*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1285*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1286*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1287*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
1288*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1289*4bdc9457SAndroid Build Coastguard Worker     }
1290*4bdc9457SAndroid Build Coastguard Worker   }
1291*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_twopass_fulltile_with_qmax)1292*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_twopass_fulltile_with_qmax) {
1293*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1294*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1295*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1296*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1297*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1298*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1299*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
1300*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1301*4bdc9457SAndroid Build Coastguard Worker     }
1302*4bdc9457SAndroid Build Coastguard Worker   }
1303*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_twopass_subtile)1304*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_twopass_subtile) {
1305*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1306*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1307*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1308*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1309*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1310*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1311*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1312*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1313*4bdc9457SAndroid Build Coastguard Worker       }
1314*4bdc9457SAndroid Build Coastguard Worker     }
1315*4bdc9457SAndroid Build Coastguard Worker   }
1316*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_twopass_subtile_with_input_offset)1317*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_twopass_subtile_with_input_offset) {
1318*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1319*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1320*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1321*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1322*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1323*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1324*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1325*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
1326*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1327*4bdc9457SAndroid Build Coastguard Worker       }
1328*4bdc9457SAndroid Build Coastguard Worker     }
1329*4bdc9457SAndroid Build Coastguard Worker   }
1330*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_twopass_fulltile)1331*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_twopass_fulltile) {
1332*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1333*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1334*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1335*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1336*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1337*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1338*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1339*4bdc9457SAndroid Build Coastguard Worker     }
1340*4bdc9457SAndroid Build Coastguard Worker   }
1341*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_twopass_fulltile_with_input_offset)1342*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_twopass_fulltile_with_input_offset) {
1343*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1344*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1345*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1346*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1347*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1348*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1349*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1350*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1351*4bdc9457SAndroid Build Coastguard Worker     }
1352*4bdc9457SAndroid Build Coastguard Worker   }
1353*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_twopass_fulltile_with_qmin)1354*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_twopass_fulltile_with_qmin) {
1355*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1356*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1357*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1358*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1359*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1360*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1361*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
1362*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1363*4bdc9457SAndroid Build Coastguard Worker     }
1364*4bdc9457SAndroid Build Coastguard Worker   }
1365*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_twopass_fulltile_with_qmax)1366*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_twopass_fulltile_with_qmax) {
1367*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1368*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1369*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1370*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1371*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1372*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1373*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
1374*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1375*4bdc9457SAndroid Build Coastguard Worker     }
1376*4bdc9457SAndroid Build Coastguard Worker   }
1377*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_twopass_subtile)1378*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_twopass_subtile) {
1379*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1380*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1381*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1382*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1383*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1384*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1385*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1386*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1387*4bdc9457SAndroid Build Coastguard Worker       }
1388*4bdc9457SAndroid Build Coastguard Worker     }
1389*4bdc9457SAndroid Build Coastguard Worker   }
1390*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_twopass_subtile_with_input_offset)1391*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_twopass_subtile_with_input_offset) {
1392*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1393*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1394*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1395*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1396*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1397*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1398*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1399*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
1400*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1401*4bdc9457SAndroid Build Coastguard Worker       }
1402*4bdc9457SAndroid Build Coastguard Worker     }
1403*4bdc9457SAndroid Build Coastguard Worker   }
1404*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_twopass_fulltile)1405*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_twopass_fulltile) {
1406*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1407*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1408*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1409*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1410*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1411*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1412*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1413*4bdc9457SAndroid Build Coastguard Worker     }
1414*4bdc9457SAndroid Build Coastguard Worker   }
1415*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_twopass_fulltile_with_input_offset)1416*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_twopass_fulltile_with_input_offset) {
1417*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1418*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1419*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1420*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1421*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1422*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1423*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
1424*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1425*4bdc9457SAndroid Build Coastguard Worker     }
1426*4bdc9457SAndroid Build Coastguard Worker   }
1427*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_twopass_fulltile_with_qmin)1428*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_twopass_fulltile_with_qmin) {
1429*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1430*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1431*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1432*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1433*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1434*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1435*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
1436*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1437*4bdc9457SAndroid Build Coastguard Worker     }
1438*4bdc9457SAndroid Build Coastguard Worker   }
1439*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_twopass_fulltile_with_qmax)1440*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_twopass_fulltile_with_qmax) {
1441*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1442*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1443*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1444*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1445*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1446*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1447*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
1448*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1449*4bdc9457SAndroid Build Coastguard Worker     }
1450*4bdc9457SAndroid Build Coastguard Worker   }
1451*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_twopass_subtile)1452*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_twopass_subtile) {
1453*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1454*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1455*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1456*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1457*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1458*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1459*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1460*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1461*4bdc9457SAndroid Build Coastguard Worker       }
1462*4bdc9457SAndroid Build Coastguard Worker     }
1463*4bdc9457SAndroid Build Coastguard Worker   }
1464*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_twopass_subtile_with_input_offset)1465*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_twopass_subtile_with_input_offset) {
1466*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1467*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1468*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1469*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1470*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1471*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1472*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1473*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1474*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1475*4bdc9457SAndroid Build Coastguard Worker       }
1476*4bdc9457SAndroid Build Coastguard Worker     }
1477*4bdc9457SAndroid Build Coastguard Worker   }
1478*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_multipass)1479*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_multipass) {
1480*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1481*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1482*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1483*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1484*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1485*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1486*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1487*4bdc9457SAndroid Build Coastguard Worker     }
1488*4bdc9457SAndroid Build Coastguard Worker   }
1489*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_multipass_with_input_offset)1490*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_multipass_with_input_offset) {
1491*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1492*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
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(8)
1497*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1498*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1499*4bdc9457SAndroid Build Coastguard Worker     }
1500*4bdc9457SAndroid Build Coastguard Worker   }
1501*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_multipass_with_qmin)1502*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_multipass_with_qmin) {
1503*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1504*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1505*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1506*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1507*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1508*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1509*4bdc9457SAndroid Build Coastguard Worker         .qmin(-16384)
1510*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1511*4bdc9457SAndroid Build Coastguard Worker     }
1512*4bdc9457SAndroid Build Coastguard Worker   }
1513*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_eq_8_multipass_with_qmax)1514*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_eq_8_multipass_with_qmax) {
1515*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1516*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1517*4bdc9457SAndroid Build Coastguard Worker       MaxPoolMicrokernelTester()
1518*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1519*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1520*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1521*4bdc9457SAndroid Build Coastguard Worker         .qmax(16384)
1522*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1523*4bdc9457SAndroid Build Coastguard Worker     }
1524*4bdc9457SAndroid Build Coastguard Worker   }
1525*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_multipass)1526*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_multipass) {
1527*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1528*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1529*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1530*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1531*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1532*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1533*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1534*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1535*4bdc9457SAndroid Build Coastguard Worker       }
1536*4bdc9457SAndroid Build Coastguard Worker     }
1537*4bdc9457SAndroid Build Coastguard Worker   }
1538*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_multipass_with_input_offset)1539*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_multipass_with_input_offset) {
1540*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1541*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1542*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1543*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1544*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1545*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1546*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1547*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
1548*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1549*4bdc9457SAndroid Build Coastguard Worker       }
1550*4bdc9457SAndroid Build Coastguard Worker     }
1551*4bdc9457SAndroid Build Coastguard Worker   }
1552*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_multipass_with_qmin)1553*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_multipass_with_qmin) {
1554*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1555*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1556*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1557*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1558*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1559*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1560*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1561*4bdc9457SAndroid Build Coastguard Worker           .qmin(-16384)
1562*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1563*4bdc9457SAndroid Build Coastguard Worker       }
1564*4bdc9457SAndroid Build Coastguard Worker     }
1565*4bdc9457SAndroid Build Coastguard Worker   }
1566*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_div_8_multipass_with_qmax)1567*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_div_8_multipass_with_qmax) {
1568*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1569*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1570*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1571*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1572*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1573*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1574*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1575*4bdc9457SAndroid Build Coastguard Worker           .qmax(16384)
1576*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1577*4bdc9457SAndroid Build Coastguard Worker       }
1578*4bdc9457SAndroid Build Coastguard Worker     }
1579*4bdc9457SAndroid Build Coastguard Worker   }
1580*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_multipass)1581*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_multipass) {
1582*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1583*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1584*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1585*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1586*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1587*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1588*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1589*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1590*4bdc9457SAndroid Build Coastguard Worker       }
1591*4bdc9457SAndroid Build Coastguard Worker     }
1592*4bdc9457SAndroid Build Coastguard Worker   }
1593*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_multipass_with_input_offset)1594*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_multipass_with_input_offset) {
1595*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1596*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1597*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1598*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1599*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1600*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1601*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1602*4bdc9457SAndroid Build Coastguard Worker           .input_offset(8)
1603*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1604*4bdc9457SAndroid Build Coastguard Worker       }
1605*4bdc9457SAndroid Build Coastguard Worker     }
1606*4bdc9457SAndroid Build Coastguard Worker   }
1607*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_multipass_with_qmin)1608*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_multipass_with_qmin) {
1609*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1610*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1611*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1612*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1613*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1614*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1615*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1616*4bdc9457SAndroid Build Coastguard Worker           .qmin(-16384)
1617*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1618*4bdc9457SAndroid Build Coastguard Worker       }
1619*4bdc9457SAndroid Build Coastguard Worker     }
1620*4bdc9457SAndroid Build Coastguard Worker   }
1621*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_lt_8_multipass_with_qmax)1622*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_lt_8_multipass_with_qmax) {
1623*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1624*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1625*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1626*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1627*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1628*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1629*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1630*4bdc9457SAndroid Build Coastguard Worker           .qmax(16384)
1631*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1632*4bdc9457SAndroid Build Coastguard Worker       }
1633*4bdc9457SAndroid Build Coastguard Worker     }
1634*4bdc9457SAndroid Build Coastguard Worker   }
1635*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_multipass)1636*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_multipass) {
1637*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1638*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1639*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1640*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1641*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1642*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1643*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1644*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1645*4bdc9457SAndroid Build Coastguard Worker       }
1646*4bdc9457SAndroid Build Coastguard Worker     }
1647*4bdc9457SAndroid Build Coastguard Worker   }
1648*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_multipass_with_input_offset)1649*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_multipass_with_input_offset) {
1650*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1651*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1652*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1653*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1654*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1655*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1656*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1657*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1658*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1659*4bdc9457SAndroid Build Coastguard Worker       }
1660*4bdc9457SAndroid Build Coastguard Worker     }
1661*4bdc9457SAndroid Build Coastguard Worker   }
1662*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_multipass_with_qmin)1663*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_multipass_with_qmin) {
1664*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1665*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1666*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1667*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1668*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1669*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1670*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1671*4bdc9457SAndroid Build Coastguard Worker           .qmin(-16384)
1672*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1673*4bdc9457SAndroid Build Coastguard Worker       }
1674*4bdc9457SAndroid Build Coastguard Worker     }
1675*4bdc9457SAndroid Build Coastguard Worker   }
1676*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,channels_gt_8_multipass_with_qmax)1677*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, channels_gt_8_multipass_with_qmax) {
1678*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1679*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1680*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1681*4bdc9457SAndroid Build Coastguard Worker         MaxPoolMicrokernelTester()
1682*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1683*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1684*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1685*4bdc9457SAndroid Build Coastguard Worker           .qmax(16384)
1686*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1687*4bdc9457SAndroid Build Coastguard Worker       }
1688*4bdc9457SAndroid Build Coastguard Worker     }
1689*4bdc9457SAndroid Build Coastguard Worker   }
1690*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,few_output_pixels)1691*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, few_output_pixels) {
1692*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1693*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1694*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1695*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1696*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1697*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1698*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1699*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1700*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1701*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1702*4bdc9457SAndroid Build Coastguard Worker         }
1703*4bdc9457SAndroid Build Coastguard Worker       }
1704*4bdc9457SAndroid Build Coastguard Worker     }
1705*4bdc9457SAndroid Build Coastguard Worker   }
1706*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,few_output_pixels_with_input_offset)1707*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, few_output_pixels_with_input_offset) {
1708*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1709*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1710*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1711*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1712*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1713*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1714*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1715*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1716*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1717*4bdc9457SAndroid Build Coastguard Worker             .input_offset(43)
1718*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1719*4bdc9457SAndroid Build Coastguard Worker         }
1720*4bdc9457SAndroid Build Coastguard Worker       }
1721*4bdc9457SAndroid Build Coastguard Worker     }
1722*4bdc9457SAndroid Build Coastguard Worker   }
1723*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,few_output_pixels_with_qmin)1724*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, few_output_pixels_with_qmin) {
1725*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1726*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1727*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1728*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1729*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1730*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
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(-16384)
1735*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1736*4bdc9457SAndroid Build Coastguard Worker         }
1737*4bdc9457SAndroid Build Coastguard Worker       }
1738*4bdc9457SAndroid Build Coastguard Worker     }
1739*4bdc9457SAndroid Build Coastguard Worker   }
1740*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,few_output_pixels_with_qmax)1741*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, few_output_pixels_with_qmax) {
1742*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1743*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1744*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1745*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1746*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1747*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1748*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1749*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1750*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1751*4bdc9457SAndroid Build Coastguard Worker             .qmax(16384)
1752*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1753*4bdc9457SAndroid Build Coastguard Worker         }
1754*4bdc9457SAndroid Build Coastguard Worker       }
1755*4bdc9457SAndroid Build Coastguard Worker     }
1756*4bdc9457SAndroid Build Coastguard Worker   }
1757*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,few_output_pixels_with_output_stride)1758*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, few_output_pixels_with_output_stride) {
1759*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1760*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1761*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1762*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1763*4bdc9457SAndroid Build Coastguard Worker           MaxPoolMicrokernelTester()
1764*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1765*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1766*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1767*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1768*4bdc9457SAndroid Build Coastguard Worker             .output_stride(43)
1769*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1770*4bdc9457SAndroid Build Coastguard Worker         }
1771*4bdc9457SAndroid Build Coastguard Worker       }
1772*4bdc9457SAndroid Build Coastguard Worker     }
1773*4bdc9457SAndroid Build Coastguard Worker   }
1774*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8,few_output_pixels_with_step)1775*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_MAXPOOL_MINMAX_9P8X__F16C_C8, few_output_pixels_with_step) {
1776*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_F16C;
1777*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1778*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1779*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1780*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
1781*4bdc9457SAndroid Build Coastguard Worker             MaxPoolMicrokernelTester()
1782*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
1783*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
1784*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
1785*4bdc9457SAndroid Build Coastguard Worker               .step(step)
1786*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
1787*4bdc9457SAndroid Build Coastguard Worker               .output_stride(43)
1788*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8, xnn_init_f16_minmax_avx_params);
1789*4bdc9457SAndroid Build Coastguard Worker           }
1790*4bdc9457SAndroid Build Coastguard Worker         }
1791*4bdc9457SAndroid Build Coastguard Worker       }
1792*4bdc9457SAndroid Build Coastguard Worker     }
1793*4bdc9457SAndroid Build Coastguard Worker   }
1794*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1795