xref: /aosp_15_r20/external/XNNPACK/test/f16-pavgpool-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 2020 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-pavgpool-minmax.yaml
11*4bdc9457SAndroid Build Coastguard Worker //   Generator: tools/generate-avgpool-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/avgpool.h>
20*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/pavgpool.h>
21*4bdc9457SAndroid Build Coastguard Worker #include "avgpool-microkernel-tester.h"
22*4bdc9457SAndroid Build Coastguard Worker 
23*4bdc9457SAndroid Build Coastguard Worker 
24*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile)25*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile) {
26*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
27*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
28*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
29*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
30*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
31*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
32*4bdc9457SAndroid Build Coastguard Worker   }
33*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile_with_input_offset)34*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile_with_input_offset) {
35*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
36*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
37*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
38*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
39*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
40*4bdc9457SAndroid Build Coastguard Worker       .input_offset(11)
41*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
42*4bdc9457SAndroid Build Coastguard Worker   }
43*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile_with_zero)44*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile_with_zero) {
45*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
46*4bdc9457SAndroid Build Coastguard Worker     for (size_t zero_index = 0; zero_index < 17; zero_index++) {
47*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
48*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
49*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
50*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
51*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
52*4bdc9457SAndroid Build Coastguard Worker         .zero_index(zero_index)
53*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
54*4bdc9457SAndroid Build Coastguard Worker     }
55*4bdc9457SAndroid Build Coastguard Worker   }
56*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile_with_qmin)57*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile_with_qmin) {
58*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
59*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
60*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
61*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
62*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
63*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
64*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
65*4bdc9457SAndroid Build Coastguard Worker   }
66*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_fulltile_with_qmax)67*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_fulltile_with_qmax) {
68*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
69*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
70*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
71*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
72*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
73*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
74*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
75*4bdc9457SAndroid Build Coastguard Worker   }
76*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_subtile)77*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_subtile) {
78*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
79*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
80*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
81*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
82*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
83*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
84*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
85*4bdc9457SAndroid Build Coastguard Worker     }
86*4bdc9457SAndroid Build Coastguard Worker   }
87*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_subtile_with_input_offset)88*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_subtile_with_input_offset) {
89*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
90*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
91*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
92*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
93*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
94*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
95*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
96*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
97*4bdc9457SAndroid Build Coastguard Worker     }
98*4bdc9457SAndroid Build Coastguard Worker   }
99*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_twopass_subtile_with_zero)100*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_twopass_subtile_with_zero) {
101*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
102*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
103*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
104*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
105*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
106*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
107*4bdc9457SAndroid Build Coastguard Worker           .channels(8)
108*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
109*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
110*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
111*4bdc9457SAndroid Build Coastguard Worker       }
112*4bdc9457SAndroid Build Coastguard Worker     }
113*4bdc9457SAndroid Build Coastguard Worker   }
114*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile)115*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile) {
116*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
117*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
118*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
119*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
120*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
121*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
122*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
123*4bdc9457SAndroid Build Coastguard Worker     }
124*4bdc9457SAndroid Build Coastguard Worker   }
125*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile_with_input_offset)126*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile_with_input_offset) {
127*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
128*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
129*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
130*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
131*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
132*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
133*4bdc9457SAndroid Build Coastguard Worker         .input_offset(41)
134*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
135*4bdc9457SAndroid Build Coastguard Worker     }
136*4bdc9457SAndroid Build Coastguard Worker   }
137*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile_with_zero)138*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile_with_zero) {
139*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
140*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
141*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 17; zero_index++) {
142*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
143*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(17)
144*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
145*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
146*4bdc9457SAndroid Build Coastguard Worker           .input_offset(41)
147*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
148*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
149*4bdc9457SAndroid Build Coastguard Worker       }
150*4bdc9457SAndroid Build Coastguard Worker     }
151*4bdc9457SAndroid Build Coastguard Worker   }
152*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile_with_qmin)153*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile_with_qmin) {
154*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
155*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
156*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
157*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
158*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
159*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
160*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
161*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
162*4bdc9457SAndroid Build Coastguard Worker     }
163*4bdc9457SAndroid Build Coastguard Worker   }
164*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_fulltile_with_qmax)165*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_fulltile_with_qmax) {
166*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
167*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
168*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
169*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
170*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
171*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
172*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
173*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
174*4bdc9457SAndroid Build Coastguard Worker     }
175*4bdc9457SAndroid Build Coastguard Worker   }
176*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_subtile)177*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_subtile) {
178*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
179*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
180*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
181*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
182*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
183*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
184*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
185*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
186*4bdc9457SAndroid Build Coastguard Worker       }
187*4bdc9457SAndroid Build Coastguard Worker     }
188*4bdc9457SAndroid Build Coastguard Worker   }
189*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_subtile_with_input_offset)190*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_subtile_with_input_offset) {
191*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
192*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
193*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
194*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
195*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
196*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
197*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
198*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
199*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
200*4bdc9457SAndroid Build Coastguard Worker       }
201*4bdc9457SAndroid Build Coastguard Worker     }
202*4bdc9457SAndroid Build Coastguard Worker   }
203*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_twopass_subtile_with_zero)204*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_twopass_subtile_with_zero) {
205*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
206*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
207*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
208*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
209*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
210*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
211*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
212*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
213*4bdc9457SAndroid Build Coastguard Worker             .input_offset(67)
214*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
215*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_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   }
220*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile)221*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile) {
222*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
223*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
224*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
225*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
226*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
227*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
228*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
229*4bdc9457SAndroid Build Coastguard Worker     }
230*4bdc9457SAndroid Build Coastguard Worker   }
231*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile_with_input_offset)232*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile_with_input_offset) {
233*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
234*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
235*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
236*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
237*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
238*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
239*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
240*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
241*4bdc9457SAndroid Build Coastguard Worker     }
242*4bdc9457SAndroid Build Coastguard Worker   }
243*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile_with_zero_index)244*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile_with_zero_index) {
245*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
246*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
247*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 17; zero_index++) {
248*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
249*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(17)
250*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
251*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
252*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
253*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
254*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
255*4bdc9457SAndroid Build Coastguard Worker       }
256*4bdc9457SAndroid Build Coastguard Worker     }
257*4bdc9457SAndroid Build Coastguard Worker   }
258*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile_with_qmin)259*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile_with_qmin) {
260*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
261*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
262*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
263*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
264*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
265*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
266*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
267*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
268*4bdc9457SAndroid Build Coastguard Worker     }
269*4bdc9457SAndroid Build Coastguard Worker   }
270*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_fulltile_with_qmax)271*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_fulltile_with_qmax) {
272*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
273*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
274*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
275*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
276*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
277*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
278*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
279*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
280*4bdc9457SAndroid Build Coastguard Worker     }
281*4bdc9457SAndroid Build Coastguard Worker   }
282*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_subtile)283*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_subtile) {
284*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
285*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
286*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
287*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
288*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
289*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
290*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
291*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
292*4bdc9457SAndroid Build Coastguard Worker       }
293*4bdc9457SAndroid Build Coastguard Worker     }
294*4bdc9457SAndroid Build Coastguard Worker   }
295*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_subtile_with_input_offset)296*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_subtile_with_input_offset) {
297*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
298*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
299*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
300*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
301*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
302*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
303*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
304*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
305*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
306*4bdc9457SAndroid Build Coastguard Worker       }
307*4bdc9457SAndroid Build Coastguard Worker     }
308*4bdc9457SAndroid Build Coastguard Worker   }
309*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_twopass_subtile_with_zero)310*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_twopass_subtile_with_zero) {
311*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
312*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
313*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
314*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
315*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
316*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
317*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
318*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
319*4bdc9457SAndroid Build Coastguard Worker             .input_offset(11)
320*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
321*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
322*4bdc9457SAndroid Build Coastguard Worker         }
323*4bdc9457SAndroid Build Coastguard Worker       }
324*4bdc9457SAndroid Build Coastguard Worker     }
325*4bdc9457SAndroid Build Coastguard Worker   }
326*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile)327*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile) {
328*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
329*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
330*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
331*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
332*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
333*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
334*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
335*4bdc9457SAndroid Build Coastguard Worker     }
336*4bdc9457SAndroid Build Coastguard Worker   }
337*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile_with_input_offset)338*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile_with_input_offset) {
339*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
340*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
341*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
342*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
343*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
344*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
345*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
346*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
347*4bdc9457SAndroid Build Coastguard Worker     }
348*4bdc9457SAndroid Build Coastguard Worker   }
349*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile_with_zero)350*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile_with_zero) {
351*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
352*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
353*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 17; zero_index++) {
354*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
355*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(17)
356*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
357*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
358*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
359*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
360*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
361*4bdc9457SAndroid Build Coastguard Worker       }
362*4bdc9457SAndroid Build Coastguard Worker     }
363*4bdc9457SAndroid Build Coastguard Worker   }
364*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile_with_qmin)365*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile_with_qmin) {
366*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
367*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
368*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
369*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
370*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
371*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
372*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
373*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
374*4bdc9457SAndroid Build Coastguard Worker     }
375*4bdc9457SAndroid Build Coastguard Worker   }
376*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_fulltile_with_qmax)377*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_fulltile_with_qmax) {
378*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
379*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
380*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
381*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
382*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
383*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
384*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
385*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
386*4bdc9457SAndroid Build Coastguard Worker     }
387*4bdc9457SAndroid Build Coastguard Worker   }
388*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_subtile)389*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_subtile) {
390*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
391*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
392*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
393*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
394*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
395*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
396*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
397*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
398*4bdc9457SAndroid Build Coastguard Worker       }
399*4bdc9457SAndroid Build Coastguard Worker     }
400*4bdc9457SAndroid Build Coastguard Worker   }
401*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_subtile_with_input_offset)402*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_subtile_with_input_offset) {
403*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
404*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
405*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
406*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
407*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
408*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
409*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
410*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
411*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
412*4bdc9457SAndroid Build Coastguard Worker       }
413*4bdc9457SAndroid Build Coastguard Worker     }
414*4bdc9457SAndroid Build Coastguard Worker   }
415*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_twopass_subtile_with_zero)416*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_twopass_subtile_with_zero) {
417*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
418*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
419*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
420*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
421*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
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             .input_offset(17)
426*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
427*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
428*4bdc9457SAndroid Build Coastguard Worker         }
429*4bdc9457SAndroid Build Coastguard Worker       }
430*4bdc9457SAndroid Build Coastguard Worker     }
431*4bdc9457SAndroid Build Coastguard Worker   }
432*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass)433*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass) {
434*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
435*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
436*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
437*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
438*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
439*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
440*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
441*4bdc9457SAndroid Build Coastguard Worker     }
442*4bdc9457SAndroid Build Coastguard Worker   }
443*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass_with_input_offset)444*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass_with_input_offset) {
445*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
446*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
447*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
448*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
449*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
450*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
451*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
452*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
453*4bdc9457SAndroid Build Coastguard Worker     }
454*4bdc9457SAndroid Build Coastguard Worker   }
455*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass_with_zero)456*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass_with_zero) {
457*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
458*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
459*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
460*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
461*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
462*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
463*4bdc9457SAndroid Build Coastguard Worker           .channels(8)
464*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
465*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
466*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
467*4bdc9457SAndroid Build Coastguard Worker       }
468*4bdc9457SAndroid Build Coastguard Worker     }
469*4bdc9457SAndroid Build Coastguard Worker   }
470*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass_with_qmin)471*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass_with_qmin) {
472*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
473*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
474*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
475*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
476*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
477*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
478*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
479*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
480*4bdc9457SAndroid Build Coastguard Worker     }
481*4bdc9457SAndroid Build Coastguard Worker   }
482*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_eq_8_multipass_with_qmax)483*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_eq_8_multipass_with_qmax) {
484*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
485*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
486*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
487*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
488*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
489*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
490*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
491*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
492*4bdc9457SAndroid Build Coastguard Worker     }
493*4bdc9457SAndroid Build Coastguard Worker   }
494*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass)495*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass) {
496*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
497*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
498*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
499*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
500*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
501*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
502*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
503*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
504*4bdc9457SAndroid Build Coastguard Worker       }
505*4bdc9457SAndroid Build Coastguard Worker     }
506*4bdc9457SAndroid Build Coastguard Worker   }
507*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass_with_input_offset)508*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass_with_input_offset) {
509*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
510*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
511*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
512*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
513*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
514*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
515*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
516*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
517*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
518*4bdc9457SAndroid Build Coastguard Worker       }
519*4bdc9457SAndroid Build Coastguard Worker     }
520*4bdc9457SAndroid Build Coastguard Worker   }
521*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass_with_zero)522*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass_with_zero) {
523*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
524*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
525*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
526*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
527*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
528*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
529*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
530*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
531*4bdc9457SAndroid Build Coastguard Worker             .input_offset(67)
532*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
533*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
534*4bdc9457SAndroid Build Coastguard Worker         }
535*4bdc9457SAndroid Build Coastguard Worker       }
536*4bdc9457SAndroid Build Coastguard Worker     }
537*4bdc9457SAndroid Build Coastguard Worker   }
538*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass_with_qmin)539*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass_with_qmin) {
540*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
541*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
542*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
543*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
544*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
545*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
546*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
547*4bdc9457SAndroid Build Coastguard Worker           .qmin(128)
548*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
549*4bdc9457SAndroid Build Coastguard Worker       }
550*4bdc9457SAndroid Build Coastguard Worker     }
551*4bdc9457SAndroid Build Coastguard Worker   }
552*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_div_8_multipass_with_qmax)553*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_div_8_multipass_with_qmax) {
554*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
555*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
556*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
557*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
558*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
559*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
560*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
561*4bdc9457SAndroid Build Coastguard Worker           .qmax(128)
562*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
563*4bdc9457SAndroid Build Coastguard Worker       }
564*4bdc9457SAndroid Build Coastguard Worker     }
565*4bdc9457SAndroid Build Coastguard Worker   }
566*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass)567*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass) {
568*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
569*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
570*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
571*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
572*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
573*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
574*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
575*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
576*4bdc9457SAndroid Build Coastguard Worker       }
577*4bdc9457SAndroid Build Coastguard Worker     }
578*4bdc9457SAndroid Build Coastguard Worker   }
579*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass_with_input_offset)580*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass_with_input_offset) {
581*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
582*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
583*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
584*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
585*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
586*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
587*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
588*4bdc9457SAndroid Build Coastguard Worker           .input_offset(8)
589*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
590*4bdc9457SAndroid Build Coastguard Worker       }
591*4bdc9457SAndroid Build Coastguard Worker     }
592*4bdc9457SAndroid Build Coastguard Worker   }
593*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass_with_zero)594*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass_with_zero) {
595*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
596*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
597*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
598*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
599*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
600*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
601*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
602*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
603*4bdc9457SAndroid Build Coastguard Worker             .input_offset(8)
604*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
605*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
606*4bdc9457SAndroid Build Coastguard Worker         }
607*4bdc9457SAndroid Build Coastguard Worker       }
608*4bdc9457SAndroid Build Coastguard Worker     }
609*4bdc9457SAndroid Build Coastguard Worker   }
610*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass_with_qmin)611*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass_with_qmin) {
612*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
613*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
614*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
615*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
616*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
617*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
618*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
619*4bdc9457SAndroid Build Coastguard Worker           .qmin(128)
620*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
621*4bdc9457SAndroid Build Coastguard Worker       }
622*4bdc9457SAndroid Build Coastguard Worker     }
623*4bdc9457SAndroid Build Coastguard Worker   }
624*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_lt_8_multipass_with_qmax)625*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_lt_8_multipass_with_qmax) {
626*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
627*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
628*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
629*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
630*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
631*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
632*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
633*4bdc9457SAndroid Build Coastguard Worker           .qmax(128)
634*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
635*4bdc9457SAndroid Build Coastguard Worker       }
636*4bdc9457SAndroid Build Coastguard Worker     }
637*4bdc9457SAndroid Build Coastguard Worker   }
638*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass)639*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_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 = 9; channels < 16; channels++) {
643*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
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_pavgpool_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_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass_with_input_offset)652*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_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 = 9; channels < 16; channels++) {
656*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
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(17)
661*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_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_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass_with_zero)666*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_multipass_with_zero) {
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 = 9; channels < 16; channels++) {
670*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
671*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
672*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
673*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
674*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
675*4bdc9457SAndroid Build Coastguard Worker             .input_offset(17)
676*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
677*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
678*4bdc9457SAndroid Build Coastguard Worker         }
679*4bdc9457SAndroid Build Coastguard Worker       }
680*4bdc9457SAndroid Build Coastguard Worker     }
681*4bdc9457SAndroid Build Coastguard Worker   }
682*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass_with_qmin)683*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_multipass_with_qmin) {
684*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
685*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
686*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
687*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
688*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
689*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
690*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
691*4bdc9457SAndroid Build Coastguard Worker           .qmin(128)
692*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
693*4bdc9457SAndroid Build Coastguard Worker       }
694*4bdc9457SAndroid Build Coastguard Worker     }
695*4bdc9457SAndroid Build Coastguard Worker   }
696*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,channels_gt_8_multipass_with_qmax)697*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, channels_gt_8_multipass_with_qmax) {
698*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
699*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
700*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
701*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
702*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
703*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
704*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
705*4bdc9457SAndroid Build Coastguard Worker           .qmax(128)
706*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
707*4bdc9457SAndroid Build Coastguard Worker       }
708*4bdc9457SAndroid Build Coastguard Worker     }
709*4bdc9457SAndroid Build Coastguard Worker   }
710*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels)711*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels) {
712*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
713*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
714*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
715*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
716*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
717*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
718*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
719*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
720*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
721*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
722*4bdc9457SAndroid Build Coastguard Worker         }
723*4bdc9457SAndroid Build Coastguard Worker       }
724*4bdc9457SAndroid Build Coastguard Worker     }
725*4bdc9457SAndroid Build Coastguard Worker   }
726*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_input_offset)727*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_input_offset) {
728*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
729*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
730*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
731*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
732*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
733*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
734*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
735*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
736*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
737*4bdc9457SAndroid Build Coastguard Worker             .input_offset(43)
738*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
739*4bdc9457SAndroid Build Coastguard Worker         }
740*4bdc9457SAndroid Build Coastguard Worker       }
741*4bdc9457SAndroid Build Coastguard Worker     }
742*4bdc9457SAndroid Build Coastguard Worker   }
743*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_zero)744*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_zero) {
745*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
746*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
747*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
748*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
749*4bdc9457SAndroid Build Coastguard Worker           for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
750*4bdc9457SAndroid Build Coastguard Worker             AvgPoolMicrokernelTester()
751*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
752*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
753*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
754*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
755*4bdc9457SAndroid Build Coastguard Worker               .input_offset(43)
756*4bdc9457SAndroid Build Coastguard Worker               .zero_index(zero_index)
757*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_pavgpool_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     }
762*4bdc9457SAndroid Build Coastguard Worker   }
763*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_qmin)764*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_qmin) {
765*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
766*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
767*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
768*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
769*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
770*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
771*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
772*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
773*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
774*4bdc9457SAndroid Build Coastguard Worker             .qmin(128)
775*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
776*4bdc9457SAndroid Build Coastguard Worker         }
777*4bdc9457SAndroid Build Coastguard Worker       }
778*4bdc9457SAndroid Build Coastguard Worker     }
779*4bdc9457SAndroid Build Coastguard Worker   }
780*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_qmax)781*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_qmax) {
782*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
783*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
784*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
785*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
786*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
787*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
788*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
789*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
790*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
791*4bdc9457SAndroid Build Coastguard Worker             .qmax(128)
792*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
793*4bdc9457SAndroid Build Coastguard Worker         }
794*4bdc9457SAndroid Build Coastguard Worker       }
795*4bdc9457SAndroid Build Coastguard Worker     }
796*4bdc9457SAndroid Build Coastguard Worker   }
797*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_output_stride)798*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_output_stride) {
799*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
800*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
801*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
802*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
803*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
804*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
805*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
806*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
807*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
808*4bdc9457SAndroid Build Coastguard Worker             .output_stride(43)
809*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
810*4bdc9457SAndroid Build Coastguard Worker         }
811*4bdc9457SAndroid Build Coastguard Worker       }
812*4bdc9457SAndroid Build Coastguard Worker     }
813*4bdc9457SAndroid Build Coastguard Worker   }
814*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8,few_output_pixels_with_step)815*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__NEONFP16ARITH_C8, few_output_pixels_with_step) {
816*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
817*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
818*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
819*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
820*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
821*4bdc9457SAndroid Build Coastguard Worker             AvgPoolMicrokernelTester()
822*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
823*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
824*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
825*4bdc9457SAndroid Build Coastguard Worker               .step(step)
826*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
827*4bdc9457SAndroid Build Coastguard Worker               .output_stride(43)
828*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
829*4bdc9457SAndroid Build Coastguard Worker           }
830*4bdc9457SAndroid Build Coastguard Worker         }
831*4bdc9457SAndroid Build Coastguard Worker       }
832*4bdc9457SAndroid Build Coastguard Worker     }
833*4bdc9457SAndroid Build Coastguard Worker   }
834*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
835*4bdc9457SAndroid Build Coastguard Worker 
836*4bdc9457SAndroid Build Coastguard Worker 
837*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile)838*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile) {
839*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
840*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
841*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
842*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9)
843*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
844*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
845*4bdc9457SAndroid Build Coastguard Worker   }
846*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile_with_input_offset)847*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile_with_input_offset) {
848*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
849*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
850*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
851*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9)
852*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
853*4bdc9457SAndroid Build Coastguard Worker       .input_offset(11)
854*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
855*4bdc9457SAndroid Build Coastguard Worker   }
856*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile_with_zero)857*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile_with_zero) {
858*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
859*4bdc9457SAndroid Build Coastguard Worker     for (size_t zero_index = 0; zero_index < 9; zero_index++) {
860*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
861*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
862*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
863*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
864*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
865*4bdc9457SAndroid Build Coastguard Worker         .zero_index(zero_index)
866*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
867*4bdc9457SAndroid Build Coastguard Worker     }
868*4bdc9457SAndroid Build Coastguard Worker   }
869*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile_with_qmin)870*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile_with_qmin) {
871*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
872*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
873*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
874*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9)
875*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
876*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
877*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
878*4bdc9457SAndroid Build Coastguard Worker   }
879*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_eq_8_unipass_fulltile_with_qmax)880*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_eq_8_unipass_fulltile_with_qmax) {
881*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
882*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
883*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
884*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9)
885*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
886*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
887*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
888*4bdc9457SAndroid Build Coastguard Worker   }
889*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_eq_8_unipass_subtile)890*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_eq_8_unipass_subtile) {
891*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
892*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
893*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
894*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
895*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
896*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
897*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
898*4bdc9457SAndroid Build Coastguard Worker     }
899*4bdc9457SAndroid Build Coastguard Worker   }
900*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_eq_8_unipass_subtile_with_input_offset)901*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_eq_8_unipass_subtile_with_input_offset) {
902*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
903*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
904*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
905*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
906*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
907*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
908*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
909*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
910*4bdc9457SAndroid Build Coastguard Worker     }
911*4bdc9457SAndroid Build Coastguard Worker   }
912*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_eq_8_unipass_subtile_with_zero)913*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_eq_8_unipass_subtile_with_zero) {
914*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
915*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
916*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
917*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
918*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
919*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
920*4bdc9457SAndroid Build Coastguard Worker           .channels(8)
921*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
922*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
923*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
924*4bdc9457SAndroid Build Coastguard Worker       }
925*4bdc9457SAndroid Build Coastguard Worker     }
926*4bdc9457SAndroid Build Coastguard Worker   }
927*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile)928*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile) {
929*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
930*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
931*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
932*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
933*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
934*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
935*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
936*4bdc9457SAndroid Build Coastguard Worker     }
937*4bdc9457SAndroid Build Coastguard Worker   }
938*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile_with_input_offset)939*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile_with_input_offset) {
940*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
941*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
942*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
943*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
944*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
945*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
946*4bdc9457SAndroid Build Coastguard Worker         .input_offset(67)
947*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
948*4bdc9457SAndroid Build Coastguard Worker     }
949*4bdc9457SAndroid Build Coastguard Worker   }
950*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile_with_zero)951*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile_with_zero) {
952*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
953*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
954*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 9; zero_index++) {
955*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
956*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(9)
957*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
958*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
959*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
960*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
961*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
962*4bdc9457SAndroid Build Coastguard Worker       }
963*4bdc9457SAndroid Build Coastguard Worker     }
964*4bdc9457SAndroid Build Coastguard Worker   }
965*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile_with_qmin)966*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile_with_qmin) {
967*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
968*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
969*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
970*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
971*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
972*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
973*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
974*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
975*4bdc9457SAndroid Build Coastguard Worker     }
976*4bdc9457SAndroid Build Coastguard Worker   }
977*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_div_8_unipass_fulltile_with_qmax)978*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_div_8_unipass_fulltile_with_qmax) {
979*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
980*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
981*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
982*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
983*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
984*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
985*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
986*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
987*4bdc9457SAndroid Build Coastguard Worker     }
988*4bdc9457SAndroid Build Coastguard Worker   }
989*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_div_8_unipass_subtile)990*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_div_8_unipass_subtile) {
991*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
992*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
993*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
994*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
995*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
996*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
997*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
998*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
999*4bdc9457SAndroid Build Coastguard Worker       }
1000*4bdc9457SAndroid Build Coastguard Worker     }
1001*4bdc9457SAndroid Build Coastguard Worker   }
1002*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_div_8_unipass_subtile_with_input_offset)1003*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_div_8_unipass_subtile_with_input_offset) {
1004*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1005*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1006*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1007*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1008*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1009*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
1010*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1011*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
1012*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1013*4bdc9457SAndroid Build Coastguard Worker       }
1014*4bdc9457SAndroid Build Coastguard Worker     }
1015*4bdc9457SAndroid Build Coastguard Worker   }
1016*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_div_8_unipass_subtile_with_zero)1017*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_div_8_unipass_subtile_with_zero) {
1018*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1019*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1020*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1021*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1022*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1023*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1024*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9)
1025*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1026*4bdc9457SAndroid Build Coastguard Worker             .input_offset(67)
1027*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
1028*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1029*4bdc9457SAndroid Build Coastguard Worker         }
1030*4bdc9457SAndroid Build Coastguard Worker       }
1031*4bdc9457SAndroid Build Coastguard Worker     }
1032*4bdc9457SAndroid Build Coastguard Worker   }
1033*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile)1034*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile) {
1035*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1036*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1037*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1038*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1039*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
1040*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1041*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1042*4bdc9457SAndroid Build Coastguard Worker     }
1043*4bdc9457SAndroid Build Coastguard Worker   }
1044*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile_with_input_offset)1045*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile_with_input_offset) {
1046*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1047*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1048*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1049*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1050*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
1051*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1052*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1053*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1054*4bdc9457SAndroid Build Coastguard Worker     }
1055*4bdc9457SAndroid Build Coastguard Worker   }
1056*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile_with_zero)1057*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile_with_zero) {
1058*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1059*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1060*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 9; zero_index++) {
1061*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1062*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(9)
1063*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
1064*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1065*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
1066*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
1067*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1068*4bdc9457SAndroid Build Coastguard Worker       }
1069*4bdc9457SAndroid Build Coastguard Worker     }
1070*4bdc9457SAndroid Build Coastguard Worker   }
1071*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile_with_qmin)1072*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile_with_qmin) {
1073*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1074*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1075*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1076*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1077*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
1078*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1079*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1080*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1081*4bdc9457SAndroid Build Coastguard Worker     }
1082*4bdc9457SAndroid Build Coastguard Worker   }
1083*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_lt_8_unipass_fulltile_with_qmax)1084*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_lt_8_unipass_fulltile_with_qmax) {
1085*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1086*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1087*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1088*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1089*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
1090*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1091*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1092*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1093*4bdc9457SAndroid Build Coastguard Worker     }
1094*4bdc9457SAndroid Build Coastguard Worker   }
1095*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_lt_8_unipass_subtile)1096*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_lt_8_unipass_subtile) {
1097*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1098*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1099*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1100*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1101*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1102*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
1103*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1104*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1105*4bdc9457SAndroid Build Coastguard Worker       }
1106*4bdc9457SAndroid Build Coastguard Worker     }
1107*4bdc9457SAndroid Build Coastguard Worker   }
1108*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_lt_8_unipass_subtile_with_input_offset)1109*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_lt_8_unipass_subtile_with_input_offset) {
1110*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1111*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1112*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1113*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1114*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1115*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
1116*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1117*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
1118*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1119*4bdc9457SAndroid Build Coastguard Worker       }
1120*4bdc9457SAndroid Build Coastguard Worker     }
1121*4bdc9457SAndroid Build Coastguard Worker   }
1122*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_lt_8_unipass_subtile_with_zero)1123*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_lt_8_unipass_subtile_with_zero) {
1124*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1125*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1126*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1127*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1128*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1129*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1130*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9)
1131*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1132*4bdc9457SAndroid Build Coastguard Worker             .input_offset(11)
1133*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
1134*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1135*4bdc9457SAndroid Build Coastguard Worker         }
1136*4bdc9457SAndroid Build Coastguard Worker       }
1137*4bdc9457SAndroid Build Coastguard Worker     }
1138*4bdc9457SAndroid Build Coastguard Worker   }
1139*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile)1140*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile) {
1141*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1142*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1143*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1144*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1145*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
1146*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1147*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1148*4bdc9457SAndroid Build Coastguard Worker     }
1149*4bdc9457SAndroid Build Coastguard Worker   }
1150*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile_with_input_offset)1151*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile_with_input_offset) {
1152*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1153*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1154*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1155*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1156*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
1157*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1158*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
1159*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1160*4bdc9457SAndroid Build Coastguard Worker     }
1161*4bdc9457SAndroid Build Coastguard Worker   }
1162*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile_with_zero)1163*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile_with_zero) {
1164*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1165*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1166*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 9; zero_index++) {
1167*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1168*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(9)
1169*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
1170*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1171*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1172*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
1173*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1174*4bdc9457SAndroid Build Coastguard Worker       }
1175*4bdc9457SAndroid Build Coastguard Worker     }
1176*4bdc9457SAndroid Build Coastguard Worker   }
1177*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile_with_qmin)1178*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile_with_qmin) {
1179*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1180*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1181*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1182*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1183*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
1184*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1185*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1186*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1187*4bdc9457SAndroid Build Coastguard Worker     }
1188*4bdc9457SAndroid Build Coastguard Worker   }
1189*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_gt_8_unipass_fulltile_with_qmax)1190*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_gt_8_unipass_fulltile_with_qmax) {
1191*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1192*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1193*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1194*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
1195*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
1196*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1197*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1198*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1199*4bdc9457SAndroid Build Coastguard Worker     }
1200*4bdc9457SAndroid Build Coastguard Worker   }
1201*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_gt_8_unipass_subtile)1202*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_gt_8_unipass_subtile) {
1203*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1204*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1205*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1206*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1207*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1208*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
1209*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1210*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1211*4bdc9457SAndroid Build Coastguard Worker       }
1212*4bdc9457SAndroid Build Coastguard Worker     }
1213*4bdc9457SAndroid Build Coastguard Worker   }
1214*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_gt_8_unipass_subtile_with_input_offset)1215*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_gt_8_unipass_subtile_with_input_offset) {
1216*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1217*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1218*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1219*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1220*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1221*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
1222*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1223*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1224*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1225*4bdc9457SAndroid Build Coastguard Worker       }
1226*4bdc9457SAndroid Build Coastguard Worker     }
1227*4bdc9457SAndroid Build Coastguard Worker   }
1228*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,channels_gt_8_unipass_subtile_with_zero)1229*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, channels_gt_8_unipass_subtile_with_zero) {
1230*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1231*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1232*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1233*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1234*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1235*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1236*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9)
1237*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1238*4bdc9457SAndroid Build Coastguard Worker             .input_offset(17)
1239*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
1240*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1241*4bdc9457SAndroid Build Coastguard Worker         }
1242*4bdc9457SAndroid Build Coastguard Worker       }
1243*4bdc9457SAndroid Build Coastguard Worker     }
1244*4bdc9457SAndroid Build Coastguard Worker   }
1245*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,few_output_pixels)1246*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, few_output_pixels) {
1247*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1248*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1249*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
1250*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1251*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1252*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1253*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1254*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
1255*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1256*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1257*4bdc9457SAndroid Build Coastguard Worker         }
1258*4bdc9457SAndroid Build Coastguard Worker       }
1259*4bdc9457SAndroid Build Coastguard Worker     }
1260*4bdc9457SAndroid Build Coastguard Worker   }
1261*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,few_output_pixels_with_input_offset)1262*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, few_output_pixels_with_input_offset) {
1263*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1264*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1265*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
1266*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1267*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1268*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1269*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1270*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
1271*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1272*4bdc9457SAndroid Build Coastguard Worker             .input_offset(43)
1273*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1274*4bdc9457SAndroid Build Coastguard Worker         }
1275*4bdc9457SAndroid Build Coastguard Worker       }
1276*4bdc9457SAndroid Build Coastguard Worker     }
1277*4bdc9457SAndroid Build Coastguard Worker   }
1278*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,few_output_pixels_with_zero)1279*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, few_output_pixels_with_zero) {
1280*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1281*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1282*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
1283*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1284*4bdc9457SAndroid Build Coastguard Worker           for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1285*4bdc9457SAndroid Build Coastguard Worker             AvgPoolMicrokernelTester()
1286*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
1287*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
1288*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 0)
1289*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
1290*4bdc9457SAndroid Build Coastguard Worker               .input_offset(43)
1291*4bdc9457SAndroid Build Coastguard Worker               .zero_index(zero_index)
1292*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1293*4bdc9457SAndroid Build Coastguard Worker           }
1294*4bdc9457SAndroid Build Coastguard Worker         }
1295*4bdc9457SAndroid Build Coastguard Worker       }
1296*4bdc9457SAndroid Build Coastguard Worker     }
1297*4bdc9457SAndroid Build Coastguard Worker   }
1298*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,few_output_pixels_with_qmin)1299*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, few_output_pixels_with_qmin) {
1300*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1301*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1302*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
1303*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1304*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1305*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1306*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1307*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
1308*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1309*4bdc9457SAndroid Build Coastguard Worker             .qmin(128)
1310*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1311*4bdc9457SAndroid Build Coastguard Worker         }
1312*4bdc9457SAndroid Build Coastguard Worker       }
1313*4bdc9457SAndroid Build Coastguard Worker     }
1314*4bdc9457SAndroid Build Coastguard Worker   }
1315*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,few_output_pixels_with_qmax)1316*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, few_output_pixels_with_qmax) {
1317*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1318*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1319*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
1320*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1321*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1322*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1323*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1324*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
1325*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1326*4bdc9457SAndroid Build Coastguard Worker             .qmax(128)
1327*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1328*4bdc9457SAndroid Build Coastguard Worker         }
1329*4bdc9457SAndroid Build Coastguard Worker       }
1330*4bdc9457SAndroid Build Coastguard Worker     }
1331*4bdc9457SAndroid Build Coastguard Worker   }
1332*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,few_output_pixels_with_output_stride)1333*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, few_output_pixels_with_output_stride) {
1334*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1335*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1336*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
1337*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1338*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1339*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
1340*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1341*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
1342*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1343*4bdc9457SAndroid Build Coastguard Worker             .output_stride(43)
1344*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1345*4bdc9457SAndroid Build Coastguard Worker         }
1346*4bdc9457SAndroid Build Coastguard Worker       }
1347*4bdc9457SAndroid Build Coastguard Worker     }
1348*4bdc9457SAndroid Build Coastguard Worker   }
1349*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8,few_output_pixels_with_step)1350*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__NEONFP16ARITH_C8, few_output_pixels_with_step) {
1351*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
1352*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1353*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
1354*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
1355*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
1356*4bdc9457SAndroid Build Coastguard Worker             AvgPoolMicrokernelTester()
1357*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
1358*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
1359*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 0)
1360*4bdc9457SAndroid Build Coastguard Worker               .step(step)
1361*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
1362*4bdc9457SAndroid Build Coastguard Worker               .output_stride(43)
1363*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_pavgpool_minmax_ukernel_9x__neonfp16arith_c8, xnn_init_f16_minmax_neon_params);
1364*4bdc9457SAndroid Build Coastguard Worker           }
1365*4bdc9457SAndroid Build Coastguard Worker         }
1366*4bdc9457SAndroid Build Coastguard Worker       }
1367*4bdc9457SAndroid Build Coastguard Worker     }
1368*4bdc9457SAndroid Build Coastguard Worker   }
1369*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
1370*4bdc9457SAndroid Build Coastguard Worker 
1371*4bdc9457SAndroid Build Coastguard Worker 
1372*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_twopass_fulltile)1373*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_twopass_fulltile) {
1374*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1375*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
1376*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1377*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1378*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1379*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1380*4bdc9457SAndroid Build Coastguard Worker   }
1381*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_twopass_fulltile_with_input_offset)1382*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_twopass_fulltile_with_input_offset) {
1383*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1384*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
1385*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1386*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1387*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1388*4bdc9457SAndroid Build Coastguard Worker       .input_offset(11)
1389*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1390*4bdc9457SAndroid Build Coastguard Worker   }
1391*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_twopass_fulltile_with_zero)1392*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_twopass_fulltile_with_zero) {
1393*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1394*4bdc9457SAndroid Build Coastguard Worker     for (size_t zero_index = 0; zero_index < 17; zero_index++) {
1395*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1396*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1397*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1398*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1399*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1400*4bdc9457SAndroid Build Coastguard Worker         .zero_index(zero_index)
1401*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1402*4bdc9457SAndroid Build Coastguard Worker     }
1403*4bdc9457SAndroid Build Coastguard Worker   }
1404*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_twopass_fulltile_with_qmin)1405*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_twopass_fulltile_with_qmin) {
1406*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1407*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
1408*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1409*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1410*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1411*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
1412*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1413*4bdc9457SAndroid Build Coastguard Worker   }
1414*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_twopass_fulltile_with_qmax)1415*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_twopass_fulltile_with_qmax) {
1416*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1417*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
1418*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(17)
1419*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9, 8)
1420*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1421*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
1422*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1423*4bdc9457SAndroid Build Coastguard Worker   }
1424*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_twopass_subtile)1425*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_twopass_subtile) {
1426*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1427*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1428*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1429*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1430*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1431*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1432*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1433*4bdc9457SAndroid Build Coastguard Worker     }
1434*4bdc9457SAndroid Build Coastguard Worker   }
1435*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_twopass_subtile_with_input_offset)1436*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_twopass_subtile_with_input_offset) {
1437*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1438*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1439*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1440*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1441*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1442*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1443*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1444*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1445*4bdc9457SAndroid Build Coastguard Worker     }
1446*4bdc9457SAndroid Build Coastguard Worker   }
1447*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_twopass_subtile_with_zero)1448*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_twopass_subtile_with_zero) {
1449*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1450*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1451*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1452*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1453*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1454*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1455*4bdc9457SAndroid Build Coastguard Worker           .channels(8)
1456*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
1457*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
1458*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1459*4bdc9457SAndroid Build Coastguard Worker       }
1460*4bdc9457SAndroid Build Coastguard Worker     }
1461*4bdc9457SAndroid Build Coastguard Worker   }
1462*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_twopass_fulltile)1463*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_twopass_fulltile) {
1464*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1465*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1466*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1467*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1468*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1469*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1470*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1471*4bdc9457SAndroid Build Coastguard Worker     }
1472*4bdc9457SAndroid Build Coastguard Worker   }
1473*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_twopass_fulltile_with_input_offset)1474*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_twopass_fulltile_with_input_offset) {
1475*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1476*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1477*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1478*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1479*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1480*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1481*4bdc9457SAndroid Build Coastguard Worker         .input_offset(41)
1482*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1483*4bdc9457SAndroid Build Coastguard Worker     }
1484*4bdc9457SAndroid Build Coastguard Worker   }
1485*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_twopass_fulltile_with_zero)1486*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_twopass_fulltile_with_zero) {
1487*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1488*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1489*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 17; zero_index++) {
1490*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1491*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(17)
1492*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1493*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1494*4bdc9457SAndroid Build Coastguard Worker           .input_offset(41)
1495*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
1496*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1497*4bdc9457SAndroid Build Coastguard Worker       }
1498*4bdc9457SAndroid Build Coastguard Worker     }
1499*4bdc9457SAndroid Build Coastguard Worker   }
1500*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_twopass_fulltile_with_qmin)1501*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_twopass_fulltile_with_qmin) {
1502*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1503*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1504*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1505*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1506*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1507*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1508*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1509*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1510*4bdc9457SAndroid Build Coastguard Worker     }
1511*4bdc9457SAndroid Build Coastguard Worker   }
1512*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_twopass_fulltile_with_qmax)1513*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_twopass_fulltile_with_qmax) {
1514*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1515*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1516*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1517*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1518*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1519*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1520*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1521*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1522*4bdc9457SAndroid Build Coastguard Worker     }
1523*4bdc9457SAndroid Build Coastguard Worker   }
1524*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_twopass_subtile)1525*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_twopass_subtile) {
1526*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1527*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1528*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1529*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1530*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1531*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1532*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1533*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1534*4bdc9457SAndroid Build Coastguard Worker       }
1535*4bdc9457SAndroid Build Coastguard Worker     }
1536*4bdc9457SAndroid Build Coastguard Worker   }
1537*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_twopass_subtile_with_input_offset)1538*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_twopass_subtile_with_input_offset) {
1539*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1540*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1541*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1542*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1543*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1544*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1545*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1546*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
1547*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1548*4bdc9457SAndroid Build Coastguard Worker       }
1549*4bdc9457SAndroid Build Coastguard Worker     }
1550*4bdc9457SAndroid Build Coastguard Worker   }
1551*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_twopass_subtile_with_zero)1552*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_twopass_subtile_with_zero) {
1553*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1554*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1555*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1556*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1557*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
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             .input_offset(67)
1562*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
1563*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1564*4bdc9457SAndroid Build Coastguard Worker         }
1565*4bdc9457SAndroid Build Coastguard Worker       }
1566*4bdc9457SAndroid Build Coastguard Worker     }
1567*4bdc9457SAndroid Build Coastguard Worker   }
1568*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_twopass_fulltile)1569*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_twopass_fulltile) {
1570*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1571*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1572*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1573*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1574*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1575*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1576*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1577*4bdc9457SAndroid Build Coastguard Worker     }
1578*4bdc9457SAndroid Build Coastguard Worker   }
1579*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_twopass_fulltile_with_input_offset)1580*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_twopass_fulltile_with_input_offset) {
1581*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1582*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1583*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1584*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1585*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1586*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1587*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1588*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1589*4bdc9457SAndroid Build Coastguard Worker     }
1590*4bdc9457SAndroid Build Coastguard Worker   }
1591*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_twopass_fulltile_with_zero_index)1592*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_twopass_fulltile_with_zero_index) {
1593*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1594*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1595*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 17; zero_index++) {
1596*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1597*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(17)
1598*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1599*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1600*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
1601*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
1602*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1603*4bdc9457SAndroid Build Coastguard Worker       }
1604*4bdc9457SAndroid Build Coastguard Worker     }
1605*4bdc9457SAndroid Build Coastguard Worker   }
1606*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_twopass_fulltile_with_qmin)1607*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_twopass_fulltile_with_qmin) {
1608*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1609*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1610*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1611*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1612*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1613*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1614*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1615*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1616*4bdc9457SAndroid Build Coastguard Worker     }
1617*4bdc9457SAndroid Build Coastguard Worker   }
1618*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_twopass_fulltile_with_qmax)1619*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_twopass_fulltile_with_qmax) {
1620*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1621*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1622*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1623*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1624*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1625*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1626*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1627*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1628*4bdc9457SAndroid Build Coastguard Worker     }
1629*4bdc9457SAndroid Build Coastguard Worker   }
1630*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_twopass_subtile)1631*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_twopass_subtile) {
1632*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1633*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1634*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1635*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1636*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1637*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1638*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1639*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1640*4bdc9457SAndroid Build Coastguard Worker       }
1641*4bdc9457SAndroid Build Coastguard Worker     }
1642*4bdc9457SAndroid Build Coastguard Worker   }
1643*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_twopass_subtile_with_input_offset)1644*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_twopass_subtile_with_input_offset) {
1645*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1646*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1647*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1648*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1649*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1650*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1651*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1652*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
1653*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1654*4bdc9457SAndroid Build Coastguard Worker       }
1655*4bdc9457SAndroid Build Coastguard Worker     }
1656*4bdc9457SAndroid Build Coastguard Worker   }
1657*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_twopass_subtile_with_zero)1658*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_twopass_subtile_with_zero) {
1659*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1660*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1661*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1662*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1663*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1664*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1665*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1666*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1667*4bdc9457SAndroid Build Coastguard Worker             .input_offset(11)
1668*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
1669*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1670*4bdc9457SAndroid Build Coastguard Worker         }
1671*4bdc9457SAndroid Build Coastguard Worker       }
1672*4bdc9457SAndroid Build Coastguard Worker     }
1673*4bdc9457SAndroid Build Coastguard Worker   }
1674*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_twopass_fulltile)1675*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_twopass_fulltile) {
1676*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1677*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1678*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1679*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1680*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1681*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1682*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1683*4bdc9457SAndroid Build Coastguard Worker     }
1684*4bdc9457SAndroid Build Coastguard Worker   }
1685*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_twopass_fulltile_with_input_offset)1686*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_twopass_fulltile_with_input_offset) {
1687*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1688*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1689*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1690*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1691*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1692*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1693*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
1694*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1695*4bdc9457SAndroid Build Coastguard Worker     }
1696*4bdc9457SAndroid Build Coastguard Worker   }
1697*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_twopass_fulltile_with_zero)1698*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_twopass_fulltile_with_zero) {
1699*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1700*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1701*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 17; zero_index++) {
1702*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1703*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(17)
1704*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1705*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1706*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1707*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
1708*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1709*4bdc9457SAndroid Build Coastguard Worker       }
1710*4bdc9457SAndroid Build Coastguard Worker     }
1711*4bdc9457SAndroid Build Coastguard Worker   }
1712*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_twopass_fulltile_with_qmin)1713*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_twopass_fulltile_with_qmin) {
1714*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1715*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1716*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1717*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1718*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1719*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1720*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1721*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1722*4bdc9457SAndroid Build Coastguard Worker     }
1723*4bdc9457SAndroid Build Coastguard Worker   }
1724*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_twopass_fulltile_with_qmax)1725*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_twopass_fulltile_with_qmax) {
1726*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1727*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1728*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1729*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(17)
1730*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1731*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1732*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1733*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1734*4bdc9457SAndroid Build Coastguard Worker     }
1735*4bdc9457SAndroid Build Coastguard Worker   }
1736*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_twopass_subtile)1737*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_twopass_subtile) {
1738*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1739*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1740*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1741*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1742*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1743*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1744*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1745*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1746*4bdc9457SAndroid Build Coastguard Worker       }
1747*4bdc9457SAndroid Build Coastguard Worker     }
1748*4bdc9457SAndroid Build Coastguard Worker   }
1749*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_twopass_subtile_with_input_offset)1750*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_twopass_subtile_with_input_offset) {
1751*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1752*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1753*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1754*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1755*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1756*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1757*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1758*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
1759*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1760*4bdc9457SAndroid Build Coastguard Worker       }
1761*4bdc9457SAndroid Build Coastguard Worker     }
1762*4bdc9457SAndroid Build Coastguard Worker   }
1763*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_twopass_subtile_with_zero)1764*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_twopass_subtile_with_zero) {
1765*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1766*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1767*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1768*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1769*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1770*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1771*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1772*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1773*4bdc9457SAndroid Build Coastguard Worker             .input_offset(17)
1774*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
1775*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1776*4bdc9457SAndroid Build Coastguard Worker         }
1777*4bdc9457SAndroid Build Coastguard Worker       }
1778*4bdc9457SAndroid Build Coastguard Worker     }
1779*4bdc9457SAndroid Build Coastguard Worker   }
1780*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_multipass)1781*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_multipass) {
1782*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1783*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1784*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1785*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1786*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1787*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1788*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1789*4bdc9457SAndroid Build Coastguard Worker     }
1790*4bdc9457SAndroid Build Coastguard Worker   }
1791*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_multipass_with_input_offset)1792*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_multipass_with_input_offset) {
1793*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1794*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1795*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1796*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1797*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1798*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1799*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
1800*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1801*4bdc9457SAndroid Build Coastguard Worker     }
1802*4bdc9457SAndroid Build Coastguard Worker   }
1803*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_multipass_with_zero)1804*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_multipass_with_zero) {
1805*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1806*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1807*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1808*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1809*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1810*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1811*4bdc9457SAndroid Build Coastguard Worker           .channels(8)
1812*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
1813*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
1814*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1815*4bdc9457SAndroid Build Coastguard Worker       }
1816*4bdc9457SAndroid Build Coastguard Worker     }
1817*4bdc9457SAndroid Build Coastguard Worker   }
1818*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_multipass_with_qmin)1819*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_multipass_with_qmin) {
1820*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1821*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1822*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1823*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1824*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1825*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1826*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1827*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1828*4bdc9457SAndroid Build Coastguard Worker     }
1829*4bdc9457SAndroid Build Coastguard Worker   }
1830*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_eq_8_multipass_with_qmax)1831*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_eq_8_multipass_with_qmax) {
1832*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1833*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1834*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
1835*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
1836*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9, 8)
1837*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1838*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1839*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1840*4bdc9457SAndroid Build Coastguard Worker     }
1841*4bdc9457SAndroid Build Coastguard Worker   }
1842*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_multipass)1843*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_multipass) {
1844*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1845*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1846*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1847*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1848*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1849*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1850*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1851*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1852*4bdc9457SAndroid Build Coastguard Worker       }
1853*4bdc9457SAndroid Build Coastguard Worker     }
1854*4bdc9457SAndroid Build Coastguard Worker   }
1855*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_multipass_with_input_offset)1856*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_multipass_with_input_offset) {
1857*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1858*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1859*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1860*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1861*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1862*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1863*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1864*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
1865*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1866*4bdc9457SAndroid Build Coastguard Worker       }
1867*4bdc9457SAndroid Build Coastguard Worker     }
1868*4bdc9457SAndroid Build Coastguard Worker   }
1869*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_multipass_with_zero)1870*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_multipass_with_zero) {
1871*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1872*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1873*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1874*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1875*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1876*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1877*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1878*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1879*4bdc9457SAndroid Build Coastguard Worker             .input_offset(67)
1880*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
1881*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1882*4bdc9457SAndroid Build Coastguard Worker         }
1883*4bdc9457SAndroid Build Coastguard Worker       }
1884*4bdc9457SAndroid Build Coastguard Worker     }
1885*4bdc9457SAndroid Build Coastguard Worker   }
1886*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_multipass_with_qmin)1887*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_multipass_with_qmin) {
1888*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1889*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1890*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1891*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1892*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1893*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1894*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1895*4bdc9457SAndroid Build Coastguard Worker           .qmin(128)
1896*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1897*4bdc9457SAndroid Build Coastguard Worker       }
1898*4bdc9457SAndroid Build Coastguard Worker     }
1899*4bdc9457SAndroid Build Coastguard Worker   }
1900*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_div_8_multipass_with_qmax)1901*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_div_8_multipass_with_qmax) {
1902*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1903*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1904*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
1905*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1906*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1907*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1908*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1909*4bdc9457SAndroid Build Coastguard Worker           .qmax(128)
1910*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1911*4bdc9457SAndroid Build Coastguard Worker       }
1912*4bdc9457SAndroid Build Coastguard Worker     }
1913*4bdc9457SAndroid Build Coastguard Worker   }
1914*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_multipass)1915*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_multipass) {
1916*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1917*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1918*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1919*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1920*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1921*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1922*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1923*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1924*4bdc9457SAndroid Build Coastguard Worker       }
1925*4bdc9457SAndroid Build Coastguard Worker     }
1926*4bdc9457SAndroid Build Coastguard Worker   }
1927*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_multipass_with_input_offset)1928*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_multipass_with_input_offset) {
1929*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1930*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1931*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1932*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1933*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1934*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1935*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1936*4bdc9457SAndroid Build Coastguard Worker           .input_offset(8)
1937*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1938*4bdc9457SAndroid Build Coastguard Worker       }
1939*4bdc9457SAndroid Build Coastguard Worker     }
1940*4bdc9457SAndroid Build Coastguard Worker   }
1941*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_multipass_with_zero)1942*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_multipass_with_zero) {
1943*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1944*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1945*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1946*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
1947*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
1948*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
1949*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
1950*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
1951*4bdc9457SAndroid Build Coastguard Worker             .input_offset(8)
1952*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
1953*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1954*4bdc9457SAndroid Build Coastguard Worker         }
1955*4bdc9457SAndroid Build Coastguard Worker       }
1956*4bdc9457SAndroid Build Coastguard Worker     }
1957*4bdc9457SAndroid Build Coastguard Worker   }
1958*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_multipass_with_qmin)1959*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_multipass_with_qmin) {
1960*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1961*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1962*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1963*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1964*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1965*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1966*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1967*4bdc9457SAndroid Build Coastguard Worker           .qmin(128)
1968*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1969*4bdc9457SAndroid Build Coastguard Worker       }
1970*4bdc9457SAndroid Build Coastguard Worker     }
1971*4bdc9457SAndroid Build Coastguard Worker   }
1972*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_lt_8_multipass_with_qmax)1973*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_lt_8_multipass_with_qmax) {
1974*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1975*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1976*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
1977*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1978*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1979*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1980*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1981*4bdc9457SAndroid Build Coastguard Worker           .qmax(128)
1982*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1983*4bdc9457SAndroid Build Coastguard Worker       }
1984*4bdc9457SAndroid Build Coastguard Worker     }
1985*4bdc9457SAndroid Build Coastguard Worker   }
1986*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_multipass)1987*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_multipass) {
1988*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
1989*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1990*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
1991*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
1992*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
1993*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
1994*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1995*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
1996*4bdc9457SAndroid Build Coastguard Worker       }
1997*4bdc9457SAndroid Build Coastguard Worker     }
1998*4bdc9457SAndroid Build Coastguard Worker   }
1999*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_multipass_with_input_offset)2000*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_multipass_with_input_offset) {
2001*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2002*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2003*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
2004*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2005*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2006*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2007*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2008*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
2009*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2010*4bdc9457SAndroid Build Coastguard Worker       }
2011*4bdc9457SAndroid Build Coastguard Worker     }
2012*4bdc9457SAndroid Build Coastguard Worker   }
2013*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_multipass_with_zero)2014*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_multipass_with_zero) {
2015*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2016*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2017*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
2018*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
2019*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2020*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2021*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2022*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2023*4bdc9457SAndroid Build Coastguard Worker             .input_offset(17)
2024*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
2025*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2026*4bdc9457SAndroid Build Coastguard Worker         }
2027*4bdc9457SAndroid Build Coastguard Worker       }
2028*4bdc9457SAndroid Build Coastguard Worker     }
2029*4bdc9457SAndroid Build Coastguard Worker   }
2030*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_multipass_with_qmin)2031*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_multipass_with_qmin) {
2032*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2033*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2034*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
2035*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2036*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2037*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2038*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2039*4bdc9457SAndroid Build Coastguard Worker           .qmin(128)
2040*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2041*4bdc9457SAndroid Build Coastguard Worker       }
2042*4bdc9457SAndroid Build Coastguard Worker     }
2043*4bdc9457SAndroid Build Coastguard Worker   }
2044*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,channels_gt_8_multipass_with_qmax)2045*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, channels_gt_8_multipass_with_qmax) {
2046*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2047*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2048*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
2049*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2050*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2051*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9, 8)
2052*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2053*4bdc9457SAndroid Build Coastguard Worker           .qmax(128)
2054*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2055*4bdc9457SAndroid Build Coastguard Worker       }
2056*4bdc9457SAndroid Build Coastguard Worker     }
2057*4bdc9457SAndroid Build Coastguard Worker   }
2058*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,few_output_pixels)2059*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, few_output_pixels) {
2060*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2061*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2062*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
2063*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2064*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2065*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2066*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2067*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2068*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2069*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2070*4bdc9457SAndroid Build Coastguard Worker         }
2071*4bdc9457SAndroid Build Coastguard Worker       }
2072*4bdc9457SAndroid Build Coastguard Worker     }
2073*4bdc9457SAndroid Build Coastguard Worker   }
2074*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,few_output_pixels_with_input_offset)2075*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, few_output_pixels_with_input_offset) {
2076*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2077*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2078*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
2079*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2080*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2081*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2082*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2083*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2084*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2085*4bdc9457SAndroid Build Coastguard Worker             .input_offset(43)
2086*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2087*4bdc9457SAndroid Build Coastguard Worker         }
2088*4bdc9457SAndroid Build Coastguard Worker       }
2089*4bdc9457SAndroid Build Coastguard Worker     }
2090*4bdc9457SAndroid Build Coastguard Worker   }
2091*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,few_output_pixels_with_zero)2092*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, few_output_pixels_with_zero) {
2093*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2094*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2095*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
2096*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2097*4bdc9457SAndroid Build Coastguard Worker           for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
2098*4bdc9457SAndroid Build Coastguard Worker             AvgPoolMicrokernelTester()
2099*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
2100*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
2101*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
2102*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
2103*4bdc9457SAndroid Build Coastguard Worker               .input_offset(43)
2104*4bdc9457SAndroid Build Coastguard Worker               .zero_index(zero_index)
2105*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2106*4bdc9457SAndroid Build Coastguard Worker           }
2107*4bdc9457SAndroid Build Coastguard Worker         }
2108*4bdc9457SAndroid Build Coastguard Worker       }
2109*4bdc9457SAndroid Build Coastguard Worker     }
2110*4bdc9457SAndroid Build Coastguard Worker   }
2111*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,few_output_pixels_with_qmin)2112*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, few_output_pixels_with_qmin) {
2113*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2114*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2115*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
2116*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2117*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2118*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2119*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2120*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2121*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2122*4bdc9457SAndroid Build Coastguard Worker             .qmin(128)
2123*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2124*4bdc9457SAndroid Build Coastguard Worker         }
2125*4bdc9457SAndroid Build Coastguard Worker       }
2126*4bdc9457SAndroid Build Coastguard Worker     }
2127*4bdc9457SAndroid Build Coastguard Worker   }
2128*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,few_output_pixels_with_qmax)2129*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, few_output_pixels_with_qmax) {
2130*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2131*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2132*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
2133*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2134*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2135*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2136*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2137*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2138*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2139*4bdc9457SAndroid Build Coastguard Worker             .qmax(128)
2140*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2141*4bdc9457SAndroid Build Coastguard Worker         }
2142*4bdc9457SAndroid Build Coastguard Worker       }
2143*4bdc9457SAndroid Build Coastguard Worker     }
2144*4bdc9457SAndroid Build Coastguard Worker   }
2145*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,few_output_pixels_with_output_stride)2146*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, few_output_pixels_with_output_stride) {
2147*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2148*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2149*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
2150*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2151*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2152*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2153*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2154*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 8)
2155*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2156*4bdc9457SAndroid Build Coastguard Worker             .output_stride(43)
2157*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2158*4bdc9457SAndroid Build Coastguard Worker         }
2159*4bdc9457SAndroid Build Coastguard Worker       }
2160*4bdc9457SAndroid Build Coastguard Worker     }
2161*4bdc9457SAndroid Build Coastguard Worker   }
2162*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8,few_output_pixels_with_step)2163*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9P8X__AVX2_C8, few_output_pixels_with_step) {
2164*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2165*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2166*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{10, 16, 18}}) {
2167*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2168*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
2169*4bdc9457SAndroid Build Coastguard Worker             AvgPoolMicrokernelTester()
2170*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
2171*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
2172*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 8)
2173*4bdc9457SAndroid Build Coastguard Worker               .step(step)
2174*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
2175*4bdc9457SAndroid Build Coastguard Worker               .output_stride(43)
2176*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_pavgpool_minmax_ukernel_9p8x__avx2_c8, xnn_init_f16_minmax_avx_params);
2177*4bdc9457SAndroid Build Coastguard Worker           }
2178*4bdc9457SAndroid Build Coastguard Worker         }
2179*4bdc9457SAndroid Build Coastguard Worker       }
2180*4bdc9457SAndroid Build Coastguard Worker     }
2181*4bdc9457SAndroid Build Coastguard Worker   }
2182*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2183*4bdc9457SAndroid Build Coastguard Worker 
2184*4bdc9457SAndroid Build Coastguard Worker 
2185*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_eq_8_unipass_fulltile)2186*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_eq_8_unipass_fulltile) {
2187*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2188*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
2189*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
2190*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9)
2191*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
2192*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2193*4bdc9457SAndroid Build Coastguard Worker   }
2194*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_eq_8_unipass_fulltile_with_input_offset)2195*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_eq_8_unipass_fulltile_with_input_offset) {
2196*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2197*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
2198*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
2199*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9)
2200*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
2201*4bdc9457SAndroid Build Coastguard Worker       .input_offset(11)
2202*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2203*4bdc9457SAndroid Build Coastguard Worker   }
2204*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_eq_8_unipass_fulltile_with_zero)2205*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_eq_8_unipass_fulltile_with_zero) {
2206*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2207*4bdc9457SAndroid Build Coastguard Worker     for (size_t zero_index = 0; zero_index < 9; zero_index++) {
2208*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2209*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2210*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2211*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
2212*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
2213*4bdc9457SAndroid Build Coastguard Worker         .zero_index(zero_index)
2214*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2215*4bdc9457SAndroid Build Coastguard Worker     }
2216*4bdc9457SAndroid Build Coastguard Worker   }
2217*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_eq_8_unipass_fulltile_with_qmin)2218*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_eq_8_unipass_fulltile_with_qmin) {
2219*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2220*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
2221*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
2222*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9)
2223*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
2224*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
2225*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2226*4bdc9457SAndroid Build Coastguard Worker   }
2227*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_eq_8_unipass_fulltile_with_qmax)2228*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_eq_8_unipass_fulltile_with_qmax) {
2229*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2230*4bdc9457SAndroid Build Coastguard Worker     AvgPoolMicrokernelTester()
2231*4bdc9457SAndroid Build Coastguard Worker       .pooling_elements(9)
2232*4bdc9457SAndroid Build Coastguard Worker       .pooling_tile(9)
2233*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
2234*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
2235*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2236*4bdc9457SAndroid Build Coastguard Worker   }
2237*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_eq_8_unipass_subtile)2238*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_eq_8_unipass_subtile) {
2239*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2240*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2241*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2242*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2243*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2244*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
2245*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2246*4bdc9457SAndroid Build Coastguard Worker     }
2247*4bdc9457SAndroid Build Coastguard Worker   }
2248*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_eq_8_unipass_subtile_with_input_offset)2249*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_eq_8_unipass_subtile_with_input_offset) {
2250*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2251*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2252*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2253*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(pooling_elements)
2254*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2255*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
2256*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
2257*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2258*4bdc9457SAndroid Build Coastguard Worker     }
2259*4bdc9457SAndroid Build Coastguard Worker   }
2260*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_eq_8_unipass_subtile_with_zero)2261*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_eq_8_unipass_subtile_with_zero) {
2262*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2263*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2264*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
2265*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2266*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2267*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2268*4bdc9457SAndroid Build Coastguard Worker           .channels(8)
2269*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
2270*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
2271*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2272*4bdc9457SAndroid Build Coastguard Worker       }
2273*4bdc9457SAndroid Build Coastguard Worker     }
2274*4bdc9457SAndroid Build Coastguard Worker   }
2275*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_div_8_unipass_fulltile)2276*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_div_8_unipass_fulltile) {
2277*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2278*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
2279*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2280*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2281*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2282*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2283*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2284*4bdc9457SAndroid Build Coastguard Worker     }
2285*4bdc9457SAndroid Build Coastguard Worker   }
2286*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_div_8_unipass_fulltile_with_input_offset)2287*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_div_8_unipass_fulltile_with_input_offset) {
2288*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2289*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
2290*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2291*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2292*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2293*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2294*4bdc9457SAndroid Build Coastguard Worker         .input_offset(67)
2295*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2296*4bdc9457SAndroid Build Coastguard Worker     }
2297*4bdc9457SAndroid Build Coastguard Worker   }
2298*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_div_8_unipass_fulltile_with_zero)2299*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_div_8_unipass_fulltile_with_zero) {
2300*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2301*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
2302*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 9; zero_index++) {
2303*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2304*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(9)
2305*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2306*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2307*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
2308*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
2309*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2310*4bdc9457SAndroid Build Coastguard Worker       }
2311*4bdc9457SAndroid Build Coastguard Worker     }
2312*4bdc9457SAndroid Build Coastguard Worker   }
2313*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_div_8_unipass_fulltile_with_qmin)2314*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_div_8_unipass_fulltile_with_qmin) {
2315*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2316*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
2317*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2318*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2319*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2320*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2321*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
2322*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2323*4bdc9457SAndroid Build Coastguard Worker     }
2324*4bdc9457SAndroid Build Coastguard Worker   }
2325*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_div_8_unipass_fulltile_with_qmax)2326*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_div_8_unipass_fulltile_with_qmax) {
2327*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2328*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
2329*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2330*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2331*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2332*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2333*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
2334*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2335*4bdc9457SAndroid Build Coastguard Worker     }
2336*4bdc9457SAndroid Build Coastguard Worker   }
2337*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_div_8_unipass_subtile)2338*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_div_8_unipass_subtile) {
2339*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2340*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2341*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
2342*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2343*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2344*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2345*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2346*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2347*4bdc9457SAndroid Build Coastguard Worker       }
2348*4bdc9457SAndroid Build Coastguard Worker     }
2349*4bdc9457SAndroid Build Coastguard Worker   }
2350*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_div_8_unipass_subtile_with_input_offset)2351*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_div_8_unipass_subtile_with_input_offset) {
2352*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2353*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2354*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
2355*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2356*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2357*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2358*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2359*4bdc9457SAndroid Build Coastguard Worker           .input_offset(67)
2360*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2361*4bdc9457SAndroid Build Coastguard Worker       }
2362*4bdc9457SAndroid Build Coastguard Worker     }
2363*4bdc9457SAndroid Build Coastguard Worker   }
2364*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_div_8_unipass_subtile_with_zero)2365*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_div_8_unipass_subtile_with_zero) {
2366*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2367*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2368*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 16; channels < 64; channels += 8) {
2369*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
2370*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2371*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2372*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9)
2373*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2374*4bdc9457SAndroid Build Coastguard Worker             .input_offset(67)
2375*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
2376*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2377*4bdc9457SAndroid Build Coastguard Worker         }
2378*4bdc9457SAndroid Build Coastguard Worker       }
2379*4bdc9457SAndroid Build Coastguard Worker     }
2380*4bdc9457SAndroid Build Coastguard Worker   }
2381*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_lt_8_unipass_fulltile)2382*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_lt_8_unipass_fulltile) {
2383*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2384*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
2385*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2386*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2387*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2388*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2389*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2390*4bdc9457SAndroid Build Coastguard Worker     }
2391*4bdc9457SAndroid Build Coastguard Worker   }
2392*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_lt_8_unipass_fulltile_with_input_offset)2393*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_lt_8_unipass_fulltile_with_input_offset) {
2394*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2395*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
2396*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2397*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2398*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2399*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2400*4bdc9457SAndroid Build Coastguard Worker         .input_offset(11)
2401*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2402*4bdc9457SAndroid Build Coastguard Worker     }
2403*4bdc9457SAndroid Build Coastguard Worker   }
2404*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_lt_8_unipass_fulltile_with_zero)2405*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_lt_8_unipass_fulltile_with_zero) {
2406*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2407*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
2408*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 9; zero_index++) {
2409*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2410*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(9)
2411*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2412*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2413*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
2414*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
2415*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2416*4bdc9457SAndroid Build Coastguard Worker       }
2417*4bdc9457SAndroid Build Coastguard Worker     }
2418*4bdc9457SAndroid Build Coastguard Worker   }
2419*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_lt_8_unipass_fulltile_with_qmin)2420*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_lt_8_unipass_fulltile_with_qmin) {
2421*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2422*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
2423*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2424*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2425*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2426*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2427*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
2428*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2429*4bdc9457SAndroid Build Coastguard Worker     }
2430*4bdc9457SAndroid Build Coastguard Worker   }
2431*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_lt_8_unipass_fulltile_with_qmax)2432*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_lt_8_unipass_fulltile_with_qmax) {
2433*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2434*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
2435*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2436*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2437*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2438*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2439*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
2440*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2441*4bdc9457SAndroid Build Coastguard Worker     }
2442*4bdc9457SAndroid Build Coastguard Worker   }
2443*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_lt_8_unipass_subtile)2444*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_lt_8_unipass_subtile) {
2445*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2446*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2447*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
2448*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2449*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2450*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2451*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2452*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2453*4bdc9457SAndroid Build Coastguard Worker       }
2454*4bdc9457SAndroid Build Coastguard Worker     }
2455*4bdc9457SAndroid Build Coastguard Worker   }
2456*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_lt_8_unipass_subtile_with_input_offset)2457*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_lt_8_unipass_subtile_with_input_offset) {
2458*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2459*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2460*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
2461*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2462*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2463*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2464*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2465*4bdc9457SAndroid Build Coastguard Worker           .input_offset(11)
2466*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2467*4bdc9457SAndroid Build Coastguard Worker       }
2468*4bdc9457SAndroid Build Coastguard Worker     }
2469*4bdc9457SAndroid Build Coastguard Worker   }
2470*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_lt_8_unipass_subtile_with_zero)2471*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_lt_8_unipass_subtile_with_zero) {
2472*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2473*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2474*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels < 8; channels++) {
2475*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
2476*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2477*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2478*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9)
2479*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2480*4bdc9457SAndroid Build Coastguard Worker             .input_offset(11)
2481*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
2482*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2483*4bdc9457SAndroid Build Coastguard Worker         }
2484*4bdc9457SAndroid Build Coastguard Worker       }
2485*4bdc9457SAndroid Build Coastguard Worker     }
2486*4bdc9457SAndroid Build Coastguard Worker   }
2487*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_gt_8_unipass_fulltile)2488*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_gt_8_unipass_fulltile) {
2489*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2490*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
2491*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2492*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2493*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2494*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2495*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2496*4bdc9457SAndroid Build Coastguard Worker     }
2497*4bdc9457SAndroid Build Coastguard Worker   }
2498*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_gt_8_unipass_fulltile_with_input_offset)2499*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_gt_8_unipass_fulltile_with_input_offset) {
2500*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2501*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
2502*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2503*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2504*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2505*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2506*4bdc9457SAndroid Build Coastguard Worker         .input_offset(17)
2507*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2508*4bdc9457SAndroid Build Coastguard Worker     }
2509*4bdc9457SAndroid Build Coastguard Worker   }
2510*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_gt_8_unipass_fulltile_with_zero)2511*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_gt_8_unipass_fulltile_with_zero) {
2512*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2513*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
2514*4bdc9457SAndroid Build Coastguard Worker       for (size_t zero_index = 0; zero_index < 9; zero_index++) {
2515*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2516*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(9)
2517*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2518*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2519*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
2520*4bdc9457SAndroid Build Coastguard Worker           .zero_index(zero_index)
2521*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2522*4bdc9457SAndroid Build Coastguard Worker       }
2523*4bdc9457SAndroid Build Coastguard Worker     }
2524*4bdc9457SAndroid Build Coastguard Worker   }
2525*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_gt_8_unipass_fulltile_with_qmin)2526*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_gt_8_unipass_fulltile_with_qmin) {
2527*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2528*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
2529*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2530*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2531*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2532*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2533*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
2534*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2535*4bdc9457SAndroid Build Coastguard Worker     }
2536*4bdc9457SAndroid Build Coastguard Worker   }
2537*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_gt_8_unipass_fulltile_with_qmax)2538*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_gt_8_unipass_fulltile_with_qmax) {
2539*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2540*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
2541*4bdc9457SAndroid Build Coastguard Worker       AvgPoolMicrokernelTester()
2542*4bdc9457SAndroid Build Coastguard Worker         .pooling_elements(9)
2543*4bdc9457SAndroid Build Coastguard Worker         .pooling_tile(9)
2544*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
2545*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
2546*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2547*4bdc9457SAndroid Build Coastguard Worker     }
2548*4bdc9457SAndroid Build Coastguard Worker   }
2549*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_gt_8_unipass_subtile)2550*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_gt_8_unipass_subtile) {
2551*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2552*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2553*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
2554*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2555*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2556*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2557*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2558*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2559*4bdc9457SAndroid Build Coastguard Worker       }
2560*4bdc9457SAndroid Build Coastguard Worker     }
2561*4bdc9457SAndroid Build Coastguard Worker   }
2562*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_gt_8_unipass_subtile_with_input_offset)2563*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_gt_8_unipass_subtile_with_input_offset) {
2564*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2565*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2566*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
2567*4bdc9457SAndroid Build Coastguard Worker         AvgPoolMicrokernelTester()
2568*4bdc9457SAndroid Build Coastguard Worker           .pooling_elements(pooling_elements)
2569*4bdc9457SAndroid Build Coastguard Worker           .pooling_tile(9)
2570*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
2571*4bdc9457SAndroid Build Coastguard Worker           .input_offset(17)
2572*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2573*4bdc9457SAndroid Build Coastguard Worker       }
2574*4bdc9457SAndroid Build Coastguard Worker     }
2575*4bdc9457SAndroid Build Coastguard Worker   }
2576*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,channels_gt_8_unipass_subtile_with_zero)2577*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, channels_gt_8_unipass_subtile_with_zero) {
2578*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2579*4bdc9457SAndroid Build Coastguard Worker     for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2580*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 9; channels < 16; channels++) {
2581*4bdc9457SAndroid Build Coastguard Worker         for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
2582*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2583*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2584*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9)
2585*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2586*4bdc9457SAndroid Build Coastguard Worker             .input_offset(17)
2587*4bdc9457SAndroid Build Coastguard Worker             .zero_index(zero_index)
2588*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2589*4bdc9457SAndroid Build Coastguard Worker         }
2590*4bdc9457SAndroid Build Coastguard Worker       }
2591*4bdc9457SAndroid Build Coastguard Worker     }
2592*4bdc9457SAndroid Build Coastguard Worker   }
2593*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,few_output_pixels)2594*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, few_output_pixels) {
2595*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2596*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2597*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
2598*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2599*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2600*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2601*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2602*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
2603*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2604*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2605*4bdc9457SAndroid Build Coastguard Worker         }
2606*4bdc9457SAndroid Build Coastguard Worker       }
2607*4bdc9457SAndroid Build Coastguard Worker     }
2608*4bdc9457SAndroid Build Coastguard Worker   }
2609*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,few_output_pixels_with_input_offset)2610*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, few_output_pixels_with_input_offset) {
2611*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2612*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2613*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
2614*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2615*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2616*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2617*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2618*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
2619*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2620*4bdc9457SAndroid Build Coastguard Worker             .input_offset(43)
2621*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2622*4bdc9457SAndroid Build Coastguard Worker         }
2623*4bdc9457SAndroid Build Coastguard Worker       }
2624*4bdc9457SAndroid Build Coastguard Worker     }
2625*4bdc9457SAndroid Build Coastguard Worker   }
2626*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,few_output_pixels_with_zero)2627*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, few_output_pixels_with_zero) {
2628*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2629*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2630*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
2631*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2632*4bdc9457SAndroid Build Coastguard Worker           for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) {
2633*4bdc9457SAndroid Build Coastguard Worker             AvgPoolMicrokernelTester()
2634*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
2635*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
2636*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 0)
2637*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
2638*4bdc9457SAndroid Build Coastguard Worker               .input_offset(43)
2639*4bdc9457SAndroid Build Coastguard Worker               .zero_index(zero_index)
2640*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2641*4bdc9457SAndroid Build Coastguard Worker           }
2642*4bdc9457SAndroid Build Coastguard Worker         }
2643*4bdc9457SAndroid Build Coastguard Worker       }
2644*4bdc9457SAndroid Build Coastguard Worker     }
2645*4bdc9457SAndroid Build Coastguard Worker   }
2646*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,few_output_pixels_with_qmin)2647*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, few_output_pixels_with_qmin) {
2648*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2649*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2650*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
2651*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2652*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2653*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2654*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2655*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
2656*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2657*4bdc9457SAndroid Build Coastguard Worker             .qmin(128)
2658*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2659*4bdc9457SAndroid Build Coastguard Worker         }
2660*4bdc9457SAndroid Build Coastguard Worker       }
2661*4bdc9457SAndroid Build Coastguard Worker     }
2662*4bdc9457SAndroid Build Coastguard Worker   }
2663*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,few_output_pixels_with_qmax)2664*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, few_output_pixels_with_qmax) {
2665*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2666*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2667*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
2668*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2669*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2670*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2671*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2672*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
2673*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2674*4bdc9457SAndroid Build Coastguard Worker             .qmax(128)
2675*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2676*4bdc9457SAndroid Build Coastguard Worker         }
2677*4bdc9457SAndroid Build Coastguard Worker       }
2678*4bdc9457SAndroid Build Coastguard Worker     }
2679*4bdc9457SAndroid Build Coastguard Worker   }
2680*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,few_output_pixels_with_output_stride)2681*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, few_output_pixels_with_output_stride) {
2682*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2683*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2684*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
2685*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2686*4bdc9457SAndroid Build Coastguard Worker           AvgPoolMicrokernelTester()
2687*4bdc9457SAndroid Build Coastguard Worker             .output_pixels(output_pixels)
2688*4bdc9457SAndroid Build Coastguard Worker             .pooling_elements(pooling_elements)
2689*4bdc9457SAndroid Build Coastguard Worker             .pooling_tile(9, 0)
2690*4bdc9457SAndroid Build Coastguard Worker             .channels(channels)
2691*4bdc9457SAndroid Build Coastguard Worker             .output_stride(43)
2692*4bdc9457SAndroid Build Coastguard Worker             .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2693*4bdc9457SAndroid Build Coastguard Worker         }
2694*4bdc9457SAndroid Build Coastguard Worker       }
2695*4bdc9457SAndroid Build Coastguard Worker     }
2696*4bdc9457SAndroid Build Coastguard Worker   }
2697*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8,few_output_pixels_with_step)2698*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_PAVGPOOL_MINMAX_9X__AVX2_C8, few_output_pixels_with_step) {
2699*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
2700*4bdc9457SAndroid Build Coastguard Worker     for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2701*4bdc9457SAndroid Build Coastguard Worker       for (size_t pooling_elements : std::vector<size_t>{{2, 8, 9}}) {
2702*4bdc9457SAndroid Build Coastguard Worker         for (size_t channels = 1; channels <= 40; channels += 7) {
2703*4bdc9457SAndroid Build Coastguard Worker           for (size_t step = 2; step <= pooling_elements; step++) {
2704*4bdc9457SAndroid Build Coastguard Worker             AvgPoolMicrokernelTester()
2705*4bdc9457SAndroid Build Coastguard Worker               .output_pixels(output_pixels)
2706*4bdc9457SAndroid Build Coastguard Worker               .pooling_elements(pooling_elements)
2707*4bdc9457SAndroid Build Coastguard Worker               .pooling_tile(9, 0)
2708*4bdc9457SAndroid Build Coastguard Worker               .step(step)
2709*4bdc9457SAndroid Build Coastguard Worker               .channels(channels)
2710*4bdc9457SAndroid Build Coastguard Worker               .output_stride(43)
2711*4bdc9457SAndroid Build Coastguard Worker               .Test(xnn_f16_pavgpool_minmax_ukernel_9x__avx2_c8, xnn_init_f16_minmax_avx_params);
2712*4bdc9457SAndroid Build Coastguard Worker           }
2713*4bdc9457SAndroid Build Coastguard Worker         }
2714*4bdc9457SAndroid Build Coastguard Worker       }
2715*4bdc9457SAndroid Build Coastguard Worker     }
2716*4bdc9457SAndroid Build Coastguard Worker   }
2717*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2718