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