• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) Facebook, Inc. and its affiliates.
2 // All rights reserved.
3 //
4 // Copyright 2020 Google LLC
5 //
6 // This source code is licensed under the BSD-style license found in the
7 // LICENSE file in the root directory of this source tree.
8 //
9 // Auto-generated file. Do not edit!
10 //   Specification: test/f32-gavgpool-minmax.yaml
11 //   Generator: tools/generate-gavgpool-test.py
12 
13 
14 #include <gtest/gtest.h>
15 
16 #include <xnnpack/common.h>
17 #include <xnnpack/isa-checks.h>
18 
19 #include <xnnpack/gavgpool.h>
20 #include "gavgpool-microkernel-tester.h"
21 
22 
23 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_eq_4_2pass_fulltile)24   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_2pass_fulltile) {
25     TEST_REQUIRES_ARM_NEON;
26     GAvgPoolMicrokernelTester()
27       .rows(14)
28       .channels(4)
29       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
30   }
31 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_eq_4_2pass_fulltile_with_input_stride)32   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
33     TEST_REQUIRES_ARM_NEON;
34     GAvgPoolMicrokernelTester()
35       .rows(14)
36       .channels(4)
37       .input_stride(7)
38       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
39   }
40 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_eq_4_2pass_fulltile_with_qmax)41   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_2pass_fulltile_with_qmax) {
42     TEST_REQUIRES_ARM_NEON;
43     GAvgPoolMicrokernelTester()
44       .rows(14)
45       .channels(4)
46       .qmax(128)
47       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
48   }
49 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_eq_4_2pass_fulltile_with_qmin)50   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_2pass_fulltile_with_qmin) {
51     TEST_REQUIRES_ARM_NEON;
52     GAvgPoolMicrokernelTester()
53       .rows(14)
54       .channels(4)
55       .qmin(128)
56       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
57   }
58 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_eq_4_2pass_subtile)59   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_2pass_subtile) {
60     TEST_REQUIRES_ARM_NEON;
61     for (size_t rows = 8; rows < 14; rows++) {
62       GAvgPoolMicrokernelTester()
63         .rows(rows)
64         .channels(4)
65         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
66     }
67   }
68 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_eq_4_2pass_subtile_with_input_stride)69   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_2pass_subtile_with_input_stride) {
70     TEST_REQUIRES_ARM_NEON;
71     for (size_t rows = 8; rows < 14; rows++) {
72       GAvgPoolMicrokernelTester()
73         .rows(rows)
74         .channels(4)
75         .input_stride(7)
76         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
77     }
78   }
79 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_eq_4_multipass_fulltile)80   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_multipass_fulltile) {
81     TEST_REQUIRES_ARM_NEON;
82     for (size_t rows = 14; rows <= 35; rows += 7) {
83       GAvgPoolMicrokernelTester()
84         .rows(rows)
85         .channels(4)
86         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
87     }
88   }
89 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_eq_4_multipass_fulltile_with_input_stride)90   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
91     TEST_REQUIRES_ARM_NEON;
92     for (size_t rows = 14; rows <= 35; rows += 7) {
93       GAvgPoolMicrokernelTester()
94         .rows(rows)
95         .channels(4)
96         .input_stride(7)
97         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
98     }
99   }
100 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_div_4_2pass_fulltile)101   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_div_4_2pass_fulltile) {
102     TEST_REQUIRES_ARM_NEON;
103     for (size_t channels = 8; channels < 32; channels += 4) {
104       GAvgPoolMicrokernelTester()
105         .rows(14)
106         .channels(channels)
107         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
108     }
109   }
110 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_div_4_2pass_subtile)111   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_div_4_2pass_subtile) {
112     TEST_REQUIRES_ARM_NEON;
113     for (size_t channels = 8; channels < 32; channels += 4) {
114       for (size_t rows = 8; rows < 14; rows++) {
115         GAvgPoolMicrokernelTester()
116           .rows(rows)
117           .channels(channels)
118           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
119       }
120     }
121   }
122 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_div_4_multipass_fulltile)123   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_div_4_multipass_fulltile) {
124     TEST_REQUIRES_ARM_NEON;
125     for (size_t channels = 8; channels < 32; channels += 4) {
126       for (size_t rows = 14; rows <= 35; rows += 7) {
127         GAvgPoolMicrokernelTester()
128           .rows(rows)
129           .channels(channels)
130           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
131       }
132     }
133   }
134 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_div_4_multipass_fulltile_with_input_stride)135   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_div_4_multipass_fulltile_with_input_stride) {
136     TEST_REQUIRES_ARM_NEON;
137     for (size_t channels = 8; channels < 32; channels += 4) {
138       for (size_t rows = 14; rows <= 35; rows += 7) {
139         GAvgPoolMicrokernelTester()
140           .rows(rows)
141           .channels(channels)
142           .input_stride(67)
143           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
144       }
145     }
146   }
147 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_lt_4_2pass_fulltile)148   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_lt_4_2pass_fulltile) {
149     TEST_REQUIRES_ARM_NEON;
150     for (size_t channels = 1; channels < 4; channels++) {
151       GAvgPoolMicrokernelTester()
152         .rows(14)
153         .channels(channels)
154         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
155     }
156   }
157 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_lt_4_2pass_fulltile_with_qmax)158   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_lt_4_2pass_fulltile_with_qmax) {
159     TEST_REQUIRES_ARM_NEON;
160     for (size_t channels = 1; channels < 4; channels++) {
161       GAvgPoolMicrokernelTester()
162         .rows(14)
163         .channels(channels)
164         .qmax(128)
165         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
166     }
167   }
168 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_lt_4_2pass_fulltile_with_qmin)169   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_lt_4_2pass_fulltile_with_qmin) {
170     TEST_REQUIRES_ARM_NEON;
171     for (size_t channels = 1; channels < 4; channels++) {
172       GAvgPoolMicrokernelTester()
173         .rows(14)
174         .channels(channels)
175         .qmin(128)
176         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
177     }
178   }
179 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_lt_4_2pass_subtile)180   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_lt_4_2pass_subtile) {
181     TEST_REQUIRES_ARM_NEON;
182     for (size_t channels = 1; channels < 4; channels++) {
183       for (size_t rows = 8; rows < 14; rows++) {
184         GAvgPoolMicrokernelTester()
185           .rows(rows)
186           .channels(channels)
187           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
188       }
189     }
190   }
191 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_lt_4_multipass_fulltile)192   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_lt_4_multipass_fulltile) {
193     TEST_REQUIRES_ARM_NEON;
194     for (size_t channels = 1; channels < 4; channels++) {
195       for (size_t rows = 14; rows <= 35; rows += 7) {
196         GAvgPoolMicrokernelTester()
197           .rows(rows)
198           .channels(channels)
199           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
200       }
201     }
202   }
203 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_lt_4_multipass_fulltile_with_input_stride)204   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
205     TEST_REQUIRES_ARM_NEON;
206     for (size_t channels = 1; channels < 4; channels++) {
207       for (size_t rows = 14; rows <= 35; rows += 7) {
208         GAvgPoolMicrokernelTester()
209           .rows(rows)
210           .channels(channels)
211           .input_stride(7)
212           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
213       }
214     }
215   }
216 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_gt_4_2pass_fulltile)217   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_gt_4_2pass_fulltile) {
218     TEST_REQUIRES_ARM_NEON;
219     for (size_t channels = 5; channels < 8; channels++) {
220       GAvgPoolMicrokernelTester()
221         .rows(14)
222         .channels(channels)
223         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
224     }
225   }
226 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_gt_4_2pass_fulltile_with_qmax)227   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_gt_4_2pass_fulltile_with_qmax) {
228     TEST_REQUIRES_ARM_NEON;
229     for (size_t channels = 5; channels < 8; channels++) {
230       GAvgPoolMicrokernelTester()
231         .rows(14)
232         .channels(channels)
233         .qmax(128)
234         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
235     }
236   }
237 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_gt_4_2pass_fulltile_with_qmin)238   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_gt_4_2pass_fulltile_with_qmin) {
239     TEST_REQUIRES_ARM_NEON;
240     for (size_t channels = 5; channels < 8; channels++) {
241       GAvgPoolMicrokernelTester()
242         .rows(14)
243         .channels(channels)
244         .qmin(128)
245         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
246     }
247   }
248 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_gt_4_2pass_subtile)249   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_gt_4_2pass_subtile) {
250     TEST_REQUIRES_ARM_NEON;
251     for (size_t channels = 5; channels < 8; channels++) {
252       for (size_t rows = 8; rows < 14; rows++) {
253         GAvgPoolMicrokernelTester()
254           .rows(rows)
255           .channels(channels)
256           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
257       }
258     }
259   }
260 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_gt_4_multipass_fulltile)261   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_gt_4_multipass_fulltile) {
262     TEST_REQUIRES_ARM_NEON;
263     for (size_t channels = 5; channels < 8; channels++) {
264       for (size_t rows = 14; rows < 35; rows += 14) {
265         GAvgPoolMicrokernelTester()
266           .rows(rows)
267           .channels(channels)
268           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
269       }
270     }
271   }
272 
TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4,channels_gt_4_multipass_fulltile_with_input_stride)273   TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
274     TEST_REQUIRES_ARM_NEON;
275     for (size_t channels = 5; channels < 8; channels++) {
276       for (size_t rows = 14; rows < 35; rows += 14) {
277         GAvgPoolMicrokernelTester()
278           .rows(rows)
279           .channels(channels)
280           .input_stride(23)
281           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
282       }
283     }
284   }
285 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
286 
287 
288 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_eq_4_2pass_fulltile)289   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_fulltile) {
290     TEST_REQUIRES_X86_SSE;
291     GAvgPoolMicrokernelTester()
292       .rows(14)
293       .channels(4)
294       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
295   }
296 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_eq_4_2pass_fulltile_with_input_stride)297   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
298     TEST_REQUIRES_X86_SSE;
299     GAvgPoolMicrokernelTester()
300       .rows(14)
301       .channels(4)
302       .input_stride(7)
303       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
304   }
305 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_eq_4_2pass_fulltile_with_qmax)306   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_fulltile_with_qmax) {
307     TEST_REQUIRES_X86_SSE;
308     GAvgPoolMicrokernelTester()
309       .rows(14)
310       .channels(4)
311       .qmax(128)
312       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
313   }
314 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_eq_4_2pass_fulltile_with_qmin)315   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_fulltile_with_qmin) {
316     TEST_REQUIRES_X86_SSE;
317     GAvgPoolMicrokernelTester()
318       .rows(14)
319       .channels(4)
320       .qmin(128)
321       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
322   }
323 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_eq_4_2pass_subtile)324   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_subtile) {
325     TEST_REQUIRES_X86_SSE;
326     for (size_t rows = 8; rows < 14; rows++) {
327       GAvgPoolMicrokernelTester()
328         .rows(rows)
329         .channels(4)
330         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
331     }
332   }
333 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_eq_4_2pass_subtile_with_input_stride)334   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_subtile_with_input_stride) {
335     TEST_REQUIRES_X86_SSE;
336     for (size_t rows = 8; rows < 14; rows++) {
337       GAvgPoolMicrokernelTester()
338         .rows(rows)
339         .channels(4)
340         .input_stride(7)
341         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
342     }
343   }
344 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_eq_4_multipass_fulltile)345   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_multipass_fulltile) {
346     TEST_REQUIRES_X86_SSE;
347     for (size_t rows = 14; rows <= 35; rows += 7) {
348       GAvgPoolMicrokernelTester()
349         .rows(rows)
350         .channels(4)
351         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
352     }
353   }
354 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_eq_4_multipass_fulltile_with_input_stride)355   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
356     TEST_REQUIRES_X86_SSE;
357     for (size_t rows = 14; rows <= 35; rows += 7) {
358       GAvgPoolMicrokernelTester()
359         .rows(rows)
360         .channels(4)
361         .input_stride(7)
362         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
363     }
364   }
365 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_div_4_2pass_fulltile)366   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_div_4_2pass_fulltile) {
367     TEST_REQUIRES_X86_SSE;
368     for (size_t channels = 8; channels < 32; channels += 4) {
369       GAvgPoolMicrokernelTester()
370         .rows(14)
371         .channels(channels)
372         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
373     }
374   }
375 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_div_4_2pass_subtile)376   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_div_4_2pass_subtile) {
377     TEST_REQUIRES_X86_SSE;
378     for (size_t channels = 8; channels < 32; channels += 4) {
379       for (size_t rows = 8; rows < 14; rows++) {
380         GAvgPoolMicrokernelTester()
381           .rows(rows)
382           .channels(channels)
383           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
384       }
385     }
386   }
387 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_div_4_multipass_fulltile)388   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_div_4_multipass_fulltile) {
389     TEST_REQUIRES_X86_SSE;
390     for (size_t channels = 8; channels < 32; channels += 4) {
391       for (size_t rows = 14; rows <= 35; rows += 7) {
392         GAvgPoolMicrokernelTester()
393           .rows(rows)
394           .channels(channels)
395           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
396       }
397     }
398   }
399 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_div_4_multipass_fulltile_with_input_stride)400   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_div_4_multipass_fulltile_with_input_stride) {
401     TEST_REQUIRES_X86_SSE;
402     for (size_t channels = 8; channels < 32; channels += 4) {
403       for (size_t rows = 14; rows <= 35; rows += 7) {
404         GAvgPoolMicrokernelTester()
405           .rows(rows)
406           .channels(channels)
407           .input_stride(67)
408           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
409       }
410     }
411   }
412 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_lt_4_2pass_fulltile)413   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_2pass_fulltile) {
414     TEST_REQUIRES_X86_SSE;
415     for (size_t channels = 1; channels < 4; channels++) {
416       GAvgPoolMicrokernelTester()
417         .rows(14)
418         .channels(channels)
419         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
420     }
421   }
422 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_lt_4_2pass_fulltile_with_qmax)423   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_2pass_fulltile_with_qmax) {
424     TEST_REQUIRES_X86_SSE;
425     for (size_t channels = 1; channels < 4; channels++) {
426       GAvgPoolMicrokernelTester()
427         .rows(14)
428         .channels(channels)
429         .qmax(128)
430         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
431     }
432   }
433 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_lt_4_2pass_fulltile_with_qmin)434   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_2pass_fulltile_with_qmin) {
435     TEST_REQUIRES_X86_SSE;
436     for (size_t channels = 1; channels < 4; channels++) {
437       GAvgPoolMicrokernelTester()
438         .rows(14)
439         .channels(channels)
440         .qmin(128)
441         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
442     }
443   }
444 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_lt_4_2pass_subtile)445   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_2pass_subtile) {
446     TEST_REQUIRES_X86_SSE;
447     for (size_t channels = 1; channels < 4; channels++) {
448       for (size_t rows = 8; rows < 14; rows++) {
449         GAvgPoolMicrokernelTester()
450           .rows(rows)
451           .channels(channels)
452           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
453       }
454     }
455   }
456 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_lt_4_multipass_fulltile)457   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_multipass_fulltile) {
458     TEST_REQUIRES_X86_SSE;
459     for (size_t channels = 1; channels < 4; channels++) {
460       for (size_t rows = 14; rows <= 35; rows += 7) {
461         GAvgPoolMicrokernelTester()
462           .rows(rows)
463           .channels(channels)
464           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
465       }
466     }
467   }
468 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_lt_4_multipass_fulltile_with_input_stride)469   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
470     TEST_REQUIRES_X86_SSE;
471     for (size_t channels = 1; channels < 4; channels++) {
472       for (size_t rows = 14; rows <= 35; rows += 7) {
473         GAvgPoolMicrokernelTester()
474           .rows(rows)
475           .channels(channels)
476           .input_stride(7)
477           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
478       }
479     }
480   }
481 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_gt_4_2pass_fulltile)482   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_2pass_fulltile) {
483     TEST_REQUIRES_X86_SSE;
484     for (size_t channels = 5; channels < 8; channels++) {
485       GAvgPoolMicrokernelTester()
486         .rows(14)
487         .channels(channels)
488         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
489     }
490   }
491 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_gt_4_2pass_fulltile_with_qmax)492   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_2pass_fulltile_with_qmax) {
493     TEST_REQUIRES_X86_SSE;
494     for (size_t channels = 5; channels < 8; channels++) {
495       GAvgPoolMicrokernelTester()
496         .rows(14)
497         .channels(channels)
498         .qmax(128)
499         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
500     }
501   }
502 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_gt_4_2pass_fulltile_with_qmin)503   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_2pass_fulltile_with_qmin) {
504     TEST_REQUIRES_X86_SSE;
505     for (size_t channels = 5; channels < 8; channels++) {
506       GAvgPoolMicrokernelTester()
507         .rows(14)
508         .channels(channels)
509         .qmin(128)
510         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
511     }
512   }
513 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_gt_4_2pass_subtile)514   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_2pass_subtile) {
515     TEST_REQUIRES_X86_SSE;
516     for (size_t channels = 5; channels < 8; channels++) {
517       for (size_t rows = 8; rows < 14; rows++) {
518         GAvgPoolMicrokernelTester()
519           .rows(rows)
520           .channels(channels)
521           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
522       }
523     }
524   }
525 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_gt_4_multipass_fulltile)526   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_multipass_fulltile) {
527     TEST_REQUIRES_X86_SSE;
528     for (size_t channels = 5; channels < 8; channels++) {
529       for (size_t rows = 14; rows < 35; rows += 14) {
530         GAvgPoolMicrokernelTester()
531           .rows(rows)
532           .channels(channels)
533           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
534       }
535     }
536   }
537 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4,channels_gt_4_multipass_fulltile_with_input_stride)538   TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
539     TEST_REQUIRES_X86_SSE;
540     for (size_t channels = 5; channels < 8; channels++) {
541       for (size_t rows = 14; rows < 35; rows += 14) {
542         GAvgPoolMicrokernelTester()
543           .rows(rows)
544           .channels(channels)
545           .input_stride(23)
546           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
547       }
548     }
549   }
550 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
551 
552 
553 #if XNN_ARCH_WASMSIMD
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_eq_4_2pass_fulltile)554   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_2pass_fulltile) {
555     GAvgPoolMicrokernelTester()
556       .rows(14)
557       .channels(4)
558       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
559   }
560 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_eq_4_2pass_fulltile_with_input_stride)561   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
562     GAvgPoolMicrokernelTester()
563       .rows(14)
564       .channels(4)
565       .input_stride(7)
566       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
567   }
568 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_eq_4_2pass_fulltile_with_qmax)569   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_2pass_fulltile_with_qmax) {
570     GAvgPoolMicrokernelTester()
571       .rows(14)
572       .channels(4)
573       .qmax(128)
574       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
575   }
576 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_eq_4_2pass_fulltile_with_qmin)577   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_2pass_fulltile_with_qmin) {
578     GAvgPoolMicrokernelTester()
579       .rows(14)
580       .channels(4)
581       .qmin(128)
582       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
583   }
584 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_eq_4_2pass_subtile)585   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_2pass_subtile) {
586     for (size_t rows = 8; rows < 14; rows++) {
587       GAvgPoolMicrokernelTester()
588         .rows(rows)
589         .channels(4)
590         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
591     }
592   }
593 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_eq_4_2pass_subtile_with_input_stride)594   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_2pass_subtile_with_input_stride) {
595     for (size_t rows = 8; rows < 14; rows++) {
596       GAvgPoolMicrokernelTester()
597         .rows(rows)
598         .channels(4)
599         .input_stride(7)
600         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
601     }
602   }
603 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_eq_4_multipass_fulltile)604   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_multipass_fulltile) {
605     for (size_t rows = 14; rows <= 35; rows += 7) {
606       GAvgPoolMicrokernelTester()
607         .rows(rows)
608         .channels(4)
609         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
610     }
611   }
612 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_eq_4_multipass_fulltile_with_input_stride)613   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
614     for (size_t rows = 14; rows <= 35; rows += 7) {
615       GAvgPoolMicrokernelTester()
616         .rows(rows)
617         .channels(4)
618         .input_stride(7)
619         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
620     }
621   }
622 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_div_4_2pass_fulltile)623   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_div_4_2pass_fulltile) {
624     for (size_t channels = 8; channels < 32; channels += 4) {
625       GAvgPoolMicrokernelTester()
626         .rows(14)
627         .channels(channels)
628         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
629     }
630   }
631 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_div_4_2pass_subtile)632   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_div_4_2pass_subtile) {
633     for (size_t channels = 8; channels < 32; channels += 4) {
634       for (size_t rows = 8; rows < 14; rows++) {
635         GAvgPoolMicrokernelTester()
636           .rows(rows)
637           .channels(channels)
638           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
639       }
640     }
641   }
642 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_div_4_multipass_fulltile)643   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_div_4_multipass_fulltile) {
644     for (size_t channels = 8; channels < 32; channels += 4) {
645       for (size_t rows = 14; rows <= 35; rows += 7) {
646         GAvgPoolMicrokernelTester()
647           .rows(rows)
648           .channels(channels)
649           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
650       }
651     }
652   }
653 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_div_4_multipass_fulltile_with_input_stride)654   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_div_4_multipass_fulltile_with_input_stride) {
655     for (size_t channels = 8; channels < 32; channels += 4) {
656       for (size_t rows = 14; rows <= 35; rows += 7) {
657         GAvgPoolMicrokernelTester()
658           .rows(rows)
659           .channels(channels)
660           .input_stride(67)
661           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
662       }
663     }
664   }
665 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_lt_4_2pass_fulltile)666   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_lt_4_2pass_fulltile) {
667     for (size_t channels = 1; channels < 4; channels++) {
668       GAvgPoolMicrokernelTester()
669         .rows(14)
670         .channels(channels)
671         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
672     }
673   }
674 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_lt_4_2pass_fulltile_with_qmax)675   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_lt_4_2pass_fulltile_with_qmax) {
676     for (size_t channels = 1; channels < 4; channels++) {
677       GAvgPoolMicrokernelTester()
678         .rows(14)
679         .channels(channels)
680         .qmax(128)
681         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
682     }
683   }
684 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_lt_4_2pass_fulltile_with_qmin)685   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_lt_4_2pass_fulltile_with_qmin) {
686     for (size_t channels = 1; channels < 4; channels++) {
687       GAvgPoolMicrokernelTester()
688         .rows(14)
689         .channels(channels)
690         .qmin(128)
691         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
692     }
693   }
694 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_lt_4_2pass_subtile)695   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_lt_4_2pass_subtile) {
696     for (size_t channels = 1; channels < 4; channels++) {
697       for (size_t rows = 8; rows < 14; rows++) {
698         GAvgPoolMicrokernelTester()
699           .rows(rows)
700           .channels(channels)
701           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
702       }
703     }
704   }
705 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_lt_4_multipass_fulltile)706   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_lt_4_multipass_fulltile) {
707     for (size_t channels = 1; channels < 4; channels++) {
708       for (size_t rows = 14; rows <= 35; rows += 7) {
709         GAvgPoolMicrokernelTester()
710           .rows(rows)
711           .channels(channels)
712           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
713       }
714     }
715   }
716 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_lt_4_multipass_fulltile_with_input_stride)717   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
718     for (size_t channels = 1; channels < 4; channels++) {
719       for (size_t rows = 14; rows <= 35; rows += 7) {
720         GAvgPoolMicrokernelTester()
721           .rows(rows)
722           .channels(channels)
723           .input_stride(7)
724           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
725       }
726     }
727   }
728 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_gt_4_2pass_fulltile)729   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_gt_4_2pass_fulltile) {
730     for (size_t channels = 5; channels < 8; channels++) {
731       GAvgPoolMicrokernelTester()
732         .rows(14)
733         .channels(channels)
734         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
735     }
736   }
737 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_gt_4_2pass_fulltile_with_qmax)738   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_gt_4_2pass_fulltile_with_qmax) {
739     for (size_t channels = 5; channels < 8; channels++) {
740       GAvgPoolMicrokernelTester()
741         .rows(14)
742         .channels(channels)
743         .qmax(128)
744         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
745     }
746   }
747 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_gt_4_2pass_fulltile_with_qmin)748   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_gt_4_2pass_fulltile_with_qmin) {
749     for (size_t channels = 5; channels < 8; channels++) {
750       GAvgPoolMicrokernelTester()
751         .rows(14)
752         .channels(channels)
753         .qmin(128)
754         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
755     }
756   }
757 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_gt_4_2pass_subtile)758   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_gt_4_2pass_subtile) {
759     for (size_t channels = 5; channels < 8; channels++) {
760       for (size_t rows = 8; rows < 14; rows++) {
761         GAvgPoolMicrokernelTester()
762           .rows(rows)
763           .channels(channels)
764           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
765       }
766     }
767   }
768 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_gt_4_multipass_fulltile)769   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_gt_4_multipass_fulltile) {
770     for (size_t channels = 5; channels < 8; channels++) {
771       for (size_t rows = 14; rows < 35; rows += 14) {
772         GAvgPoolMicrokernelTester()
773           .rows(rows)
774           .channels(channels)
775           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
776       }
777     }
778   }
779 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4,channels_gt_4_multipass_fulltile_with_input_stride)780   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
781     for (size_t channels = 5; channels < 8; channels++) {
782       for (size_t rows = 14; rows < 35; rows += 14) {
783         GAvgPoolMicrokernelTester()
784           .rows(rows)
785           .channels(channels)
786           .input_stride(23)
787           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
788       }
789     }
790   }
791 #endif  // XNN_ARCH_WASMSIMD
792 
793 
794 #if XNN_ARCH_WASMSIMD
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_eq_4_2pass_fulltile)795   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_eq_4_2pass_fulltile) {
796     GAvgPoolMicrokernelTester()
797       .rows(14)
798       .channels(4)
799       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
800   }
801 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_eq_4_2pass_fulltile_with_input_stride)802   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
803     GAvgPoolMicrokernelTester()
804       .rows(14)
805       .channels(4)
806       .input_stride(7)
807       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
808   }
809 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_eq_4_2pass_fulltile_with_qmax)810   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_eq_4_2pass_fulltile_with_qmax) {
811     GAvgPoolMicrokernelTester()
812       .rows(14)
813       .channels(4)
814       .qmax(128)
815       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
816   }
817 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_eq_4_2pass_fulltile_with_qmin)818   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_eq_4_2pass_fulltile_with_qmin) {
819     GAvgPoolMicrokernelTester()
820       .rows(14)
821       .channels(4)
822       .qmin(128)
823       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
824   }
825 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_eq_4_2pass_subtile)826   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_eq_4_2pass_subtile) {
827     for (size_t rows = 8; rows < 14; rows++) {
828       GAvgPoolMicrokernelTester()
829         .rows(rows)
830         .channels(4)
831         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
832     }
833   }
834 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_eq_4_2pass_subtile_with_input_stride)835   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_eq_4_2pass_subtile_with_input_stride) {
836     for (size_t rows = 8; rows < 14; rows++) {
837       GAvgPoolMicrokernelTester()
838         .rows(rows)
839         .channels(4)
840         .input_stride(7)
841         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
842     }
843   }
844 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_eq_4_multipass_fulltile)845   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_eq_4_multipass_fulltile) {
846     for (size_t rows = 14; rows <= 35; rows += 7) {
847       GAvgPoolMicrokernelTester()
848         .rows(rows)
849         .channels(4)
850         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
851     }
852   }
853 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_eq_4_multipass_fulltile_with_input_stride)854   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
855     for (size_t rows = 14; rows <= 35; rows += 7) {
856       GAvgPoolMicrokernelTester()
857         .rows(rows)
858         .channels(4)
859         .input_stride(7)
860         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
861     }
862   }
863 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_div_4_2pass_fulltile)864   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_div_4_2pass_fulltile) {
865     for (size_t channels = 8; channels < 32; channels += 4) {
866       GAvgPoolMicrokernelTester()
867         .rows(14)
868         .channels(channels)
869         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
870     }
871   }
872 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_div_4_2pass_subtile)873   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_div_4_2pass_subtile) {
874     for (size_t channels = 8; channels < 32; channels += 4) {
875       for (size_t rows = 8; rows < 14; rows++) {
876         GAvgPoolMicrokernelTester()
877           .rows(rows)
878           .channels(channels)
879           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
880       }
881     }
882   }
883 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_div_4_multipass_fulltile)884   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_div_4_multipass_fulltile) {
885     for (size_t channels = 8; channels < 32; channels += 4) {
886       for (size_t rows = 14; rows <= 35; rows += 7) {
887         GAvgPoolMicrokernelTester()
888           .rows(rows)
889           .channels(channels)
890           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
891       }
892     }
893   }
894 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_div_4_multipass_fulltile_with_input_stride)895   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_div_4_multipass_fulltile_with_input_stride) {
896     for (size_t channels = 8; channels < 32; channels += 4) {
897       for (size_t rows = 14; rows <= 35; rows += 7) {
898         GAvgPoolMicrokernelTester()
899           .rows(rows)
900           .channels(channels)
901           .input_stride(67)
902           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
903       }
904     }
905   }
906 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_lt_4_2pass_fulltile)907   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_lt_4_2pass_fulltile) {
908     for (size_t channels = 1; channels < 4; channels++) {
909       GAvgPoolMicrokernelTester()
910         .rows(14)
911         .channels(channels)
912         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
913     }
914   }
915 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_lt_4_2pass_fulltile_with_qmax)916   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_lt_4_2pass_fulltile_with_qmax) {
917     for (size_t channels = 1; channels < 4; channels++) {
918       GAvgPoolMicrokernelTester()
919         .rows(14)
920         .channels(channels)
921         .qmax(128)
922         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
923     }
924   }
925 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_lt_4_2pass_fulltile_with_qmin)926   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_lt_4_2pass_fulltile_with_qmin) {
927     for (size_t channels = 1; channels < 4; channels++) {
928       GAvgPoolMicrokernelTester()
929         .rows(14)
930         .channels(channels)
931         .qmin(128)
932         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
933     }
934   }
935 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_lt_4_2pass_subtile)936   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_lt_4_2pass_subtile) {
937     for (size_t channels = 1; channels < 4; channels++) {
938       for (size_t rows = 8; rows < 14; rows++) {
939         GAvgPoolMicrokernelTester()
940           .rows(rows)
941           .channels(channels)
942           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
943       }
944     }
945   }
946 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_lt_4_multipass_fulltile)947   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_lt_4_multipass_fulltile) {
948     for (size_t channels = 1; channels < 4; channels++) {
949       for (size_t rows = 14; rows <= 35; rows += 7) {
950         GAvgPoolMicrokernelTester()
951           .rows(rows)
952           .channels(channels)
953           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
954       }
955     }
956   }
957 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_lt_4_multipass_fulltile_with_input_stride)958   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
959     for (size_t channels = 1; channels < 4; channels++) {
960       for (size_t rows = 14; rows <= 35; rows += 7) {
961         GAvgPoolMicrokernelTester()
962           .rows(rows)
963           .channels(channels)
964           .input_stride(7)
965           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
966       }
967     }
968   }
969 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_gt_4_2pass_fulltile)970   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_gt_4_2pass_fulltile) {
971     for (size_t channels = 5; channels < 8; channels++) {
972       GAvgPoolMicrokernelTester()
973         .rows(14)
974         .channels(channels)
975         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
976     }
977   }
978 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_gt_4_2pass_fulltile_with_qmax)979   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_gt_4_2pass_fulltile_with_qmax) {
980     for (size_t channels = 5; channels < 8; channels++) {
981       GAvgPoolMicrokernelTester()
982         .rows(14)
983         .channels(channels)
984         .qmax(128)
985         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
986     }
987   }
988 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_gt_4_2pass_fulltile_with_qmin)989   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_gt_4_2pass_fulltile_with_qmin) {
990     for (size_t channels = 5; channels < 8; channels++) {
991       GAvgPoolMicrokernelTester()
992         .rows(14)
993         .channels(channels)
994         .qmin(128)
995         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
996     }
997   }
998 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_gt_4_2pass_subtile)999   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_gt_4_2pass_subtile) {
1000     for (size_t channels = 5; channels < 8; channels++) {
1001       for (size_t rows = 8; rows < 14; rows++) {
1002         GAvgPoolMicrokernelTester()
1003           .rows(rows)
1004           .channels(channels)
1005           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
1006       }
1007     }
1008   }
1009 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_gt_4_multipass_fulltile)1010   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_gt_4_multipass_fulltile) {
1011     for (size_t channels = 5; channels < 8; channels++) {
1012       for (size_t rows = 14; rows < 35; rows += 14) {
1013         GAvgPoolMicrokernelTester()
1014           .rows(rows)
1015           .channels(channels)
1016           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
1017       }
1018     }
1019   }
1020 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4,channels_gt_4_multipass_fulltile_with_input_stride)1021   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_X86_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
1022     for (size_t channels = 5; channels < 8; channels++) {
1023       for (size_t rows = 14; rows < 35; rows += 14) {
1024         GAvgPoolMicrokernelTester()
1025           .rows(rows)
1026           .channels(channels)
1027           .input_stride(23)
1028           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_x86_c4);
1029       }
1030     }
1031   }
1032 #endif  // XNN_ARCH_WASMSIMD
1033 
1034 
1035 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_eq_1_2pass_fulltile)1036   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_fulltile) {
1037     GAvgPoolMicrokernelTester()
1038       .rows(14)
1039       .channels(1)
1040       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1041   }
1042 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_eq_1_2pass_fulltile_with_input_stride)1043   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
1044     GAvgPoolMicrokernelTester()
1045       .rows(14)
1046       .channels(1)
1047       .input_stride(3)
1048       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1049   }
1050 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_eq_1_2pass_fulltile_with_qmax)1051   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_fulltile_with_qmax) {
1052     GAvgPoolMicrokernelTester()
1053       .rows(14)
1054       .channels(1)
1055       .qmax(128)
1056       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1057   }
1058 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_eq_1_2pass_fulltile_with_qmin)1059   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_fulltile_with_qmin) {
1060     GAvgPoolMicrokernelTester()
1061       .rows(14)
1062       .channels(1)
1063       .qmin(128)
1064       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1065   }
1066 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_eq_1_2pass_subtile)1067   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_subtile) {
1068     for (size_t rows = 8; rows < 14; rows++) {
1069       GAvgPoolMicrokernelTester()
1070         .rows(rows)
1071         .channels(1)
1072         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1073     }
1074   }
1075 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_eq_1_2pass_subtile_with_input_stride)1076   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_subtile_with_input_stride) {
1077     for (size_t rows = 8; rows < 14; rows++) {
1078       GAvgPoolMicrokernelTester()
1079         .rows(rows)
1080         .channels(1)
1081         .input_stride(3)
1082         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1083     }
1084   }
1085 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_eq_1_multipass_fulltile)1086   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_multipass_fulltile) {
1087     for (size_t rows = 14; rows <= 35; rows += 7) {
1088       GAvgPoolMicrokernelTester()
1089         .rows(rows)
1090         .channels(1)
1091         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1092     }
1093   }
1094 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_eq_1_multipass_fulltile_with_input_stride)1095   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_multipass_fulltile_with_input_stride) {
1096     for (size_t rows = 14; rows <= 35; rows += 7) {
1097       GAvgPoolMicrokernelTester()
1098         .rows(rows)
1099         .channels(1)
1100         .input_stride(3)
1101         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1102     }
1103   }
1104 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_div_1_2pass_fulltile)1105   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_div_1_2pass_fulltile) {
1106     for (size_t channels = 2; channels < 8; channels += 1) {
1107       GAvgPoolMicrokernelTester()
1108         .rows(14)
1109         .channels(channels)
1110         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1111     }
1112   }
1113 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_div_1_2pass_subtile)1114   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_div_1_2pass_subtile) {
1115     for (size_t channels = 2; channels < 8; channels += 1) {
1116       for (size_t rows = 8; rows < 14; rows++) {
1117         GAvgPoolMicrokernelTester()
1118           .rows(rows)
1119           .channels(channels)
1120           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1121       }
1122     }
1123   }
1124 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_div_1_multipass_fulltile)1125   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_div_1_multipass_fulltile) {
1126     for (size_t channels = 2; channels < 8; channels += 1) {
1127       for (size_t rows = 14; rows <= 35; rows += 7) {
1128         GAvgPoolMicrokernelTester()
1129           .rows(rows)
1130           .channels(channels)
1131           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1132       }
1133     }
1134   }
1135 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_div_1_multipass_fulltile_with_input_stride)1136   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_div_1_multipass_fulltile_with_input_stride) {
1137     for (size_t channels = 2; channels < 8; channels += 1) {
1138       for (size_t rows = 14; rows <= 35; rows += 7) {
1139         GAvgPoolMicrokernelTester()
1140           .rows(rows)
1141           .channels(channels)
1142           .input_stride(19)
1143           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1144       }
1145     }
1146   }
1147 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_gt_1_2pass_fulltile)1148   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_2pass_fulltile) {
1149     for (size_t channels = 2; channels < 10; channels++) {
1150       GAvgPoolMicrokernelTester()
1151         .rows(14)
1152         .channels(channels)
1153         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1154     }
1155   }
1156 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_gt_1_2pass_fulltile_with_qmax)1157   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_2pass_fulltile_with_qmax) {
1158     for (size_t channels = 2; channels < 10; channels++) {
1159       GAvgPoolMicrokernelTester()
1160         .rows(14)
1161         .channels(channels)
1162         .qmax(128)
1163         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1164     }
1165   }
1166 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_gt_1_2pass_fulltile_with_qmin)1167   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_2pass_fulltile_with_qmin) {
1168     for (size_t channels = 2; channels < 10; channels++) {
1169       GAvgPoolMicrokernelTester()
1170         .rows(14)
1171         .channels(channels)
1172         .qmin(128)
1173         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1174     }
1175   }
1176 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_gt_1_2pass_subtile)1177   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_2pass_subtile) {
1178     for (size_t channels = 2; channels < 10; channels++) {
1179       for (size_t rows = 8; rows < 14; rows++) {
1180         GAvgPoolMicrokernelTester()
1181           .rows(rows)
1182           .channels(channels)
1183           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1184       }
1185     }
1186   }
1187 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_gt_1_multipass_fulltile)1188   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_multipass_fulltile) {
1189     for (size_t channels = 2; channels < 10; channels++) {
1190       for (size_t rows = 14; rows < 35; rows += 14) {
1191         GAvgPoolMicrokernelTester()
1192           .rows(rows)
1193           .channels(channels)
1194           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1195       }
1196     }
1197   }
1198 
TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1,channels_gt_1_multipass_fulltile_with_input_stride)1199   TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
1200     for (size_t channels = 2; channels < 10; channels++) {
1201       for (size_t rows = 14; rows < 35; rows += 14) {
1202         GAvgPoolMicrokernelTester()
1203           .rows(rows)
1204           .channels(channels)
1205           .input_stride(17)
1206           .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
1207       }
1208     }
1209   }
1210 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
1211 
1212 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_eq_1_2pass_fulltile)1213 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_fulltile) {
1214   GAvgPoolMicrokernelTester()
1215     .rows(14)
1216     .channels(1)
1217     .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1218 }
1219 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_eq_1_2pass_fulltile_with_input_stride)1220 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
1221   GAvgPoolMicrokernelTester()
1222     .rows(14)
1223     .channels(1)
1224     .input_stride(3)
1225     .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1226 }
1227 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_eq_1_2pass_fulltile_with_qmax)1228 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_fulltile_with_qmax) {
1229   GAvgPoolMicrokernelTester()
1230     .rows(14)
1231     .channels(1)
1232     .qmax(128)
1233     .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1234 }
1235 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_eq_1_2pass_fulltile_with_qmin)1236 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_fulltile_with_qmin) {
1237   GAvgPoolMicrokernelTester()
1238     .rows(14)
1239     .channels(1)
1240     .qmin(128)
1241     .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1242 }
1243 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_eq_1_2pass_subtile)1244 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_subtile) {
1245   for (size_t rows = 8; rows < 14; rows++) {
1246     GAvgPoolMicrokernelTester()
1247       .rows(rows)
1248       .channels(1)
1249       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1250   }
1251 }
1252 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_eq_1_2pass_subtile_with_input_stride)1253 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_subtile_with_input_stride) {
1254   for (size_t rows = 8; rows < 14; rows++) {
1255     GAvgPoolMicrokernelTester()
1256       .rows(rows)
1257       .channels(1)
1258       .input_stride(3)
1259       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1260   }
1261 }
1262 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_eq_1_multipass_fulltile)1263 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_multipass_fulltile) {
1264   for (size_t rows = 14; rows <= 35; rows += 7) {
1265     GAvgPoolMicrokernelTester()
1266       .rows(rows)
1267       .channels(1)
1268       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1269   }
1270 }
1271 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_eq_1_multipass_fulltile_with_input_stride)1272 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_multipass_fulltile_with_input_stride) {
1273   for (size_t rows = 14; rows <= 35; rows += 7) {
1274     GAvgPoolMicrokernelTester()
1275       .rows(rows)
1276       .channels(1)
1277       .input_stride(3)
1278       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1279   }
1280 }
1281 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_div_1_2pass_fulltile)1282 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_div_1_2pass_fulltile) {
1283   for (size_t channels = 2; channels < 8; channels += 1) {
1284     GAvgPoolMicrokernelTester()
1285       .rows(14)
1286       .channels(channels)
1287       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1288   }
1289 }
1290 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_div_1_2pass_subtile)1291 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_div_1_2pass_subtile) {
1292   for (size_t channels = 2; channels < 8; channels += 1) {
1293     for (size_t rows = 8; rows < 14; rows++) {
1294       GAvgPoolMicrokernelTester()
1295         .rows(rows)
1296         .channels(channels)
1297         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1298     }
1299   }
1300 }
1301 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_div_1_multipass_fulltile)1302 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_div_1_multipass_fulltile) {
1303   for (size_t channels = 2; channels < 8; channels += 1) {
1304     for (size_t rows = 14; rows <= 35; rows += 7) {
1305       GAvgPoolMicrokernelTester()
1306         .rows(rows)
1307         .channels(channels)
1308         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1309     }
1310   }
1311 }
1312 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_div_1_multipass_fulltile_with_input_stride)1313 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_div_1_multipass_fulltile_with_input_stride) {
1314   for (size_t channels = 2; channels < 8; channels += 1) {
1315     for (size_t rows = 14; rows <= 35; rows += 7) {
1316       GAvgPoolMicrokernelTester()
1317         .rows(rows)
1318         .channels(channels)
1319         .input_stride(19)
1320         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1321     }
1322   }
1323 }
1324 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_gt_1_2pass_fulltile)1325 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_2pass_fulltile) {
1326   for (size_t channels = 2; channels < 10; channels++) {
1327     GAvgPoolMicrokernelTester()
1328       .rows(14)
1329       .channels(channels)
1330       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1331   }
1332 }
1333 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_gt_1_2pass_fulltile_with_qmax)1334 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_2pass_fulltile_with_qmax) {
1335   for (size_t channels = 2; channels < 10; channels++) {
1336     GAvgPoolMicrokernelTester()
1337       .rows(14)
1338       .channels(channels)
1339       .qmax(128)
1340       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1341   }
1342 }
1343 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_gt_1_2pass_fulltile_with_qmin)1344 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_2pass_fulltile_with_qmin) {
1345   for (size_t channels = 2; channels < 10; channels++) {
1346     GAvgPoolMicrokernelTester()
1347       .rows(14)
1348       .channels(channels)
1349       .qmin(128)
1350       .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1351   }
1352 }
1353 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_gt_1_2pass_subtile)1354 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_2pass_subtile) {
1355   for (size_t channels = 2; channels < 10; channels++) {
1356     for (size_t rows = 8; rows < 14; rows++) {
1357       GAvgPoolMicrokernelTester()
1358         .rows(rows)
1359         .channels(channels)
1360         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1361     }
1362   }
1363 }
1364 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_gt_1_multipass_fulltile)1365 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_multipass_fulltile) {
1366   for (size_t channels = 2; channels < 10; channels++) {
1367     for (size_t rows = 14; rows < 35; rows += 14) {
1368       GAvgPoolMicrokernelTester()
1369         .rows(rows)
1370         .channels(channels)
1371         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1372     }
1373   }
1374 }
1375 
TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1,channels_gt_1_multipass_fulltile_with_input_stride)1376 TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
1377   for (size_t channels = 2; channels < 10; channels++) {
1378     for (size_t rows = 14; rows < 35; rows += 14) {
1379       GAvgPoolMicrokernelTester()
1380         .rows(rows)
1381         .channels(channels)
1382         .input_stride(17)
1383         .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1384     }
1385   }
1386 }
1387 
1388 
1389 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_eq_4_fulltile)1390   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_eq_4_fulltile) {
1391     TEST_REQUIRES_ARM_NEON;
1392     GAvgPoolMicrokernelTester()
1393       .rows(7)
1394       .channels(4)
1395       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1396   }
1397 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_eq_4_subtile)1398   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_eq_4_subtile) {
1399     TEST_REQUIRES_ARM_NEON;
1400     for (size_t rows = 1; rows < 7; rows++) {
1401       GAvgPoolMicrokernelTester()
1402         .rows(rows)
1403         .channels(4)
1404         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1405     }
1406   }
1407 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_eq_4_fulltile_with_input_stride)1408   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_eq_4_fulltile_with_input_stride) {
1409     TEST_REQUIRES_ARM_NEON;
1410     GAvgPoolMicrokernelTester()
1411       .rows(7)
1412       .channels(4)
1413       .input_stride(7)
1414       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1415   }
1416 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_eq_4_fulltile_with_qmax)1417   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_eq_4_fulltile_with_qmax) {
1418     TEST_REQUIRES_ARM_NEON;
1419     GAvgPoolMicrokernelTester()
1420       .rows(7)
1421       .channels(4)
1422       .qmax(128)
1423       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1424   }
1425 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_eq_4_fulltile_with_qmin)1426   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_eq_4_fulltile_with_qmin) {
1427     TEST_REQUIRES_ARM_NEON;
1428     GAvgPoolMicrokernelTester()
1429       .rows(7)
1430       .channels(4)
1431       .qmin(128)
1432       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1433   }
1434 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_div_4_fulltile)1435   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_div_4_fulltile) {
1436     TEST_REQUIRES_ARM_NEON;
1437     for (size_t channels = 8; channels < 32; channels += 4) {
1438       GAvgPoolMicrokernelTester()
1439         .rows(7)
1440         .channels(channels)
1441         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1442     }
1443   }
1444 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_div_4_subtile)1445   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_div_4_subtile) {
1446     TEST_REQUIRES_ARM_NEON;
1447     for (size_t channels = 8; channels < 32; channels += 4) {
1448       for (size_t rows = 1; rows < 7; rows++) {
1449         GAvgPoolMicrokernelTester()
1450           .rows(rows)
1451           .channels(channels)
1452           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1453       }
1454     }
1455   }
1456 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_lt_4_fulltile)1457   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_lt_4_fulltile) {
1458     TEST_REQUIRES_ARM_NEON;
1459     for (size_t channels = 1; channels < 4; channels++) {
1460       GAvgPoolMicrokernelTester()
1461         .rows(7)
1462         .channels(channels)
1463         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1464     }
1465   }
1466 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_lt_4_subtile)1467   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_lt_4_subtile) {
1468     TEST_REQUIRES_ARM_NEON;
1469     for (size_t channels = 1; channels < 4; channels++) {
1470       for (size_t rows = 1; rows < 7; rows++) {
1471         GAvgPoolMicrokernelTester()
1472           .rows(rows)
1473           .channels(channels)
1474           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1475       }
1476     }
1477   }
1478 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_lt_4_fulltile_with_qmax)1479   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_lt_4_fulltile_with_qmax) {
1480     TEST_REQUIRES_ARM_NEON;
1481     for (size_t channels = 1; channels < 4; channels++) {
1482       GAvgPoolMicrokernelTester()
1483         .rows(7)
1484         .channels(channels)
1485         .qmax(128)
1486         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1487     }
1488   }
1489 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_lt_4_fulltile_with_qmin)1490   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_lt_4_fulltile_with_qmin) {
1491     TEST_REQUIRES_ARM_NEON;
1492     for (size_t channels = 1; channels < 4; channels++) {
1493       GAvgPoolMicrokernelTester()
1494         .rows(7)
1495         .channels(channels)
1496         .qmin(128)
1497         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1498     }
1499   }
1500 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_gt_4_fulltile)1501   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_gt_4_fulltile) {
1502     TEST_REQUIRES_ARM_NEON;
1503     for (size_t channels = 5; channels < 8; channels++) {
1504       GAvgPoolMicrokernelTester()
1505         .rows(7)
1506         .channels(channels)
1507         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1508     }
1509   }
1510 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_gt_4_subtile)1511   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_gt_4_subtile) {
1512     TEST_REQUIRES_ARM_NEON;
1513     for (size_t channels = 5; channels < 8; channels++) {
1514       for (size_t rows = 1; rows < 7; rows++) {
1515         GAvgPoolMicrokernelTester()
1516           .rows(rows)
1517           .channels(channels)
1518           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1519       }
1520     }
1521   }
1522 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_gt_4_fulltile_with_qmax)1523   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_gt_4_fulltile_with_qmax) {
1524     TEST_REQUIRES_ARM_NEON;
1525     for (size_t channels = 5; channels < 8; channels++) {
1526       GAvgPoolMicrokernelTester()
1527         .rows(7)
1528         .channels(channels)
1529         .qmax(128)
1530         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1531     }
1532   }
1533 
TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4,channels_gt_4_fulltile_with_qmin)1534   TEST(F32_GAVGPOOL_MINMAX_7X__NEON_C4, channels_gt_4_fulltile_with_qmin) {
1535     TEST_REQUIRES_ARM_NEON;
1536     for (size_t channels = 5; channels < 8; channels++) {
1537       GAvgPoolMicrokernelTester()
1538         .rows(7)
1539         .channels(channels)
1540         .qmin(128)
1541         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__neon_c4);
1542     }
1543   }
1544 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1545 
1546 
1547 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_eq_4_fulltile)1548   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_eq_4_fulltile) {
1549     TEST_REQUIRES_X86_SSE;
1550     GAvgPoolMicrokernelTester()
1551       .rows(7)
1552       .channels(4)
1553       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1554   }
1555 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_eq_4_subtile)1556   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_eq_4_subtile) {
1557     TEST_REQUIRES_X86_SSE;
1558     for (size_t rows = 1; rows < 7; rows++) {
1559       GAvgPoolMicrokernelTester()
1560         .rows(rows)
1561         .channels(4)
1562         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1563     }
1564   }
1565 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_eq_4_fulltile_with_input_stride)1566   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_eq_4_fulltile_with_input_stride) {
1567     TEST_REQUIRES_X86_SSE;
1568     GAvgPoolMicrokernelTester()
1569       .rows(7)
1570       .channels(4)
1571       .input_stride(7)
1572       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1573   }
1574 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_eq_4_fulltile_with_qmax)1575   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_eq_4_fulltile_with_qmax) {
1576     TEST_REQUIRES_X86_SSE;
1577     GAvgPoolMicrokernelTester()
1578       .rows(7)
1579       .channels(4)
1580       .qmax(128)
1581       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1582   }
1583 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_eq_4_fulltile_with_qmin)1584   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_eq_4_fulltile_with_qmin) {
1585     TEST_REQUIRES_X86_SSE;
1586     GAvgPoolMicrokernelTester()
1587       .rows(7)
1588       .channels(4)
1589       .qmin(128)
1590       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1591   }
1592 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_div_4_fulltile)1593   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_div_4_fulltile) {
1594     TEST_REQUIRES_X86_SSE;
1595     for (size_t channels = 8; channels < 32; channels += 4) {
1596       GAvgPoolMicrokernelTester()
1597         .rows(7)
1598         .channels(channels)
1599         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1600     }
1601   }
1602 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_div_4_subtile)1603   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_div_4_subtile) {
1604     TEST_REQUIRES_X86_SSE;
1605     for (size_t channels = 8; channels < 32; channels += 4) {
1606       for (size_t rows = 1; rows < 7; rows++) {
1607         GAvgPoolMicrokernelTester()
1608           .rows(rows)
1609           .channels(channels)
1610           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1611       }
1612     }
1613   }
1614 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_lt_4_fulltile)1615   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_lt_4_fulltile) {
1616     TEST_REQUIRES_X86_SSE;
1617     for (size_t channels = 1; channels < 4; channels++) {
1618       GAvgPoolMicrokernelTester()
1619         .rows(7)
1620         .channels(channels)
1621         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1622     }
1623   }
1624 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_lt_4_subtile)1625   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_lt_4_subtile) {
1626     TEST_REQUIRES_X86_SSE;
1627     for (size_t channels = 1; channels < 4; channels++) {
1628       for (size_t rows = 1; rows < 7; rows++) {
1629         GAvgPoolMicrokernelTester()
1630           .rows(rows)
1631           .channels(channels)
1632           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1633       }
1634     }
1635   }
1636 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_lt_4_fulltile_with_qmax)1637   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_lt_4_fulltile_with_qmax) {
1638     TEST_REQUIRES_X86_SSE;
1639     for (size_t channels = 1; channels < 4; channels++) {
1640       GAvgPoolMicrokernelTester()
1641         .rows(7)
1642         .channels(channels)
1643         .qmax(128)
1644         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1645     }
1646   }
1647 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_lt_4_fulltile_with_qmin)1648   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_lt_4_fulltile_with_qmin) {
1649     TEST_REQUIRES_X86_SSE;
1650     for (size_t channels = 1; channels < 4; channels++) {
1651       GAvgPoolMicrokernelTester()
1652         .rows(7)
1653         .channels(channels)
1654         .qmin(128)
1655         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1656     }
1657   }
1658 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_gt_4_fulltile)1659   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_gt_4_fulltile) {
1660     TEST_REQUIRES_X86_SSE;
1661     for (size_t channels = 5; channels < 8; channels++) {
1662       GAvgPoolMicrokernelTester()
1663         .rows(7)
1664         .channels(channels)
1665         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1666     }
1667   }
1668 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_gt_4_subtile)1669   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_gt_4_subtile) {
1670     TEST_REQUIRES_X86_SSE;
1671     for (size_t channels = 5; channels < 8; channels++) {
1672       for (size_t rows = 1; rows < 7; rows++) {
1673         GAvgPoolMicrokernelTester()
1674           .rows(rows)
1675           .channels(channels)
1676           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1677       }
1678     }
1679   }
1680 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_gt_4_fulltile_with_qmax)1681   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_gt_4_fulltile_with_qmax) {
1682     TEST_REQUIRES_X86_SSE;
1683     for (size_t channels = 5; channels < 8; channels++) {
1684       GAvgPoolMicrokernelTester()
1685         .rows(7)
1686         .channels(channels)
1687         .qmax(128)
1688         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1689     }
1690   }
1691 
TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4,channels_gt_4_fulltile_with_qmin)1692   TEST(F32_GAVGPOOL_MINMAX_7X__SSE_C4, channels_gt_4_fulltile_with_qmin) {
1693     TEST_REQUIRES_X86_SSE;
1694     for (size_t channels = 5; channels < 8; channels++) {
1695       GAvgPoolMicrokernelTester()
1696         .rows(7)
1697         .channels(channels)
1698         .qmin(128)
1699         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__sse_c4);
1700     }
1701   }
1702 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1703 
1704 
1705 #if XNN_ARCH_WASMSIMD
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_eq_4_fulltile)1706   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_eq_4_fulltile) {
1707     GAvgPoolMicrokernelTester()
1708       .rows(7)
1709       .channels(4)
1710       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1711   }
1712 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_eq_4_subtile)1713   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_eq_4_subtile) {
1714     for (size_t rows = 1; rows < 7; rows++) {
1715       GAvgPoolMicrokernelTester()
1716         .rows(rows)
1717         .channels(4)
1718         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1719     }
1720   }
1721 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_eq_4_fulltile_with_input_stride)1722   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_eq_4_fulltile_with_input_stride) {
1723     GAvgPoolMicrokernelTester()
1724       .rows(7)
1725       .channels(4)
1726       .input_stride(7)
1727       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1728   }
1729 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_eq_4_fulltile_with_qmax)1730   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_eq_4_fulltile_with_qmax) {
1731     GAvgPoolMicrokernelTester()
1732       .rows(7)
1733       .channels(4)
1734       .qmax(128)
1735       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1736   }
1737 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_eq_4_fulltile_with_qmin)1738   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_eq_4_fulltile_with_qmin) {
1739     GAvgPoolMicrokernelTester()
1740       .rows(7)
1741       .channels(4)
1742       .qmin(128)
1743       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1744   }
1745 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_div_4_fulltile)1746   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_div_4_fulltile) {
1747     for (size_t channels = 8; channels < 32; channels += 4) {
1748       GAvgPoolMicrokernelTester()
1749         .rows(7)
1750         .channels(channels)
1751         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1752     }
1753   }
1754 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_div_4_subtile)1755   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_div_4_subtile) {
1756     for (size_t channels = 8; channels < 32; channels += 4) {
1757       for (size_t rows = 1; rows < 7; rows++) {
1758         GAvgPoolMicrokernelTester()
1759           .rows(rows)
1760           .channels(channels)
1761           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1762       }
1763     }
1764   }
1765 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_lt_4_fulltile)1766   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_lt_4_fulltile) {
1767     for (size_t channels = 1; channels < 4; channels++) {
1768       GAvgPoolMicrokernelTester()
1769         .rows(7)
1770         .channels(channels)
1771         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1772     }
1773   }
1774 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_lt_4_subtile)1775   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_lt_4_subtile) {
1776     for (size_t channels = 1; channels < 4; channels++) {
1777       for (size_t rows = 1; rows < 7; rows++) {
1778         GAvgPoolMicrokernelTester()
1779           .rows(rows)
1780           .channels(channels)
1781           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1782       }
1783     }
1784   }
1785 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_lt_4_fulltile_with_qmax)1786   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_lt_4_fulltile_with_qmax) {
1787     for (size_t channels = 1; channels < 4; channels++) {
1788       GAvgPoolMicrokernelTester()
1789         .rows(7)
1790         .channels(channels)
1791         .qmax(128)
1792         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1793     }
1794   }
1795 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_lt_4_fulltile_with_qmin)1796   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_lt_4_fulltile_with_qmin) {
1797     for (size_t channels = 1; channels < 4; channels++) {
1798       GAvgPoolMicrokernelTester()
1799         .rows(7)
1800         .channels(channels)
1801         .qmin(128)
1802         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1803     }
1804   }
1805 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_gt_4_fulltile)1806   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_gt_4_fulltile) {
1807     for (size_t channels = 5; channels < 8; channels++) {
1808       GAvgPoolMicrokernelTester()
1809         .rows(7)
1810         .channels(channels)
1811         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1812     }
1813   }
1814 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_gt_4_subtile)1815   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_gt_4_subtile) {
1816     for (size_t channels = 5; channels < 8; channels++) {
1817       for (size_t rows = 1; rows < 7; rows++) {
1818         GAvgPoolMicrokernelTester()
1819           .rows(rows)
1820           .channels(channels)
1821           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1822       }
1823     }
1824   }
1825 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_gt_4_fulltile_with_qmax)1826   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_gt_4_fulltile_with_qmax) {
1827     for (size_t channels = 5; channels < 8; channels++) {
1828       GAvgPoolMicrokernelTester()
1829         .rows(7)
1830         .channels(channels)
1831         .qmax(128)
1832         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1833     }
1834   }
1835 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4,channels_gt_4_fulltile_with_qmin)1836   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_ARM_C4, channels_gt_4_fulltile_with_qmin) {
1837     for (size_t channels = 5; channels < 8; channels++) {
1838       GAvgPoolMicrokernelTester()
1839         .rows(7)
1840         .channels(channels)
1841         .qmin(128)
1842         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_arm_c4);
1843     }
1844   }
1845 #endif  // XNN_ARCH_WASMSIMD
1846 
1847 
1848 #if XNN_ARCH_WASMSIMD
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_eq_4_fulltile)1849   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_eq_4_fulltile) {
1850     GAvgPoolMicrokernelTester()
1851       .rows(7)
1852       .channels(4)
1853       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1854   }
1855 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_eq_4_subtile)1856   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_eq_4_subtile) {
1857     for (size_t rows = 1; rows < 7; rows++) {
1858       GAvgPoolMicrokernelTester()
1859         .rows(rows)
1860         .channels(4)
1861         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1862     }
1863   }
1864 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_eq_4_fulltile_with_input_stride)1865   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_eq_4_fulltile_with_input_stride) {
1866     GAvgPoolMicrokernelTester()
1867       .rows(7)
1868       .channels(4)
1869       .input_stride(7)
1870       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1871   }
1872 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_eq_4_fulltile_with_qmax)1873   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_eq_4_fulltile_with_qmax) {
1874     GAvgPoolMicrokernelTester()
1875       .rows(7)
1876       .channels(4)
1877       .qmax(128)
1878       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1879   }
1880 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_eq_4_fulltile_with_qmin)1881   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_eq_4_fulltile_with_qmin) {
1882     GAvgPoolMicrokernelTester()
1883       .rows(7)
1884       .channels(4)
1885       .qmin(128)
1886       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1887   }
1888 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_div_4_fulltile)1889   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_div_4_fulltile) {
1890     for (size_t channels = 8; channels < 32; channels += 4) {
1891       GAvgPoolMicrokernelTester()
1892         .rows(7)
1893         .channels(channels)
1894         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1895     }
1896   }
1897 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_div_4_subtile)1898   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_div_4_subtile) {
1899     for (size_t channels = 8; channels < 32; channels += 4) {
1900       for (size_t rows = 1; rows < 7; rows++) {
1901         GAvgPoolMicrokernelTester()
1902           .rows(rows)
1903           .channels(channels)
1904           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1905       }
1906     }
1907   }
1908 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_lt_4_fulltile)1909   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_lt_4_fulltile) {
1910     for (size_t channels = 1; channels < 4; channels++) {
1911       GAvgPoolMicrokernelTester()
1912         .rows(7)
1913         .channels(channels)
1914         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1915     }
1916   }
1917 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_lt_4_subtile)1918   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_lt_4_subtile) {
1919     for (size_t channels = 1; channels < 4; channels++) {
1920       for (size_t rows = 1; rows < 7; rows++) {
1921         GAvgPoolMicrokernelTester()
1922           .rows(rows)
1923           .channels(channels)
1924           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1925       }
1926     }
1927   }
1928 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_lt_4_fulltile_with_qmax)1929   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_lt_4_fulltile_with_qmax) {
1930     for (size_t channels = 1; channels < 4; channels++) {
1931       GAvgPoolMicrokernelTester()
1932         .rows(7)
1933         .channels(channels)
1934         .qmax(128)
1935         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1936     }
1937   }
1938 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_lt_4_fulltile_with_qmin)1939   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_lt_4_fulltile_with_qmin) {
1940     for (size_t channels = 1; channels < 4; channels++) {
1941       GAvgPoolMicrokernelTester()
1942         .rows(7)
1943         .channels(channels)
1944         .qmin(128)
1945         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1946     }
1947   }
1948 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_gt_4_fulltile)1949   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_gt_4_fulltile) {
1950     for (size_t channels = 5; channels < 8; channels++) {
1951       GAvgPoolMicrokernelTester()
1952         .rows(7)
1953         .channels(channels)
1954         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1955     }
1956   }
1957 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_gt_4_subtile)1958   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_gt_4_subtile) {
1959     for (size_t channels = 5; channels < 8; channels++) {
1960       for (size_t rows = 1; rows < 7; rows++) {
1961         GAvgPoolMicrokernelTester()
1962           .rows(rows)
1963           .channels(channels)
1964           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1965       }
1966     }
1967   }
1968 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_gt_4_fulltile_with_qmax)1969   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_gt_4_fulltile_with_qmax) {
1970     for (size_t channels = 5; channels < 8; channels++) {
1971       GAvgPoolMicrokernelTester()
1972         .rows(7)
1973         .channels(channels)
1974         .qmax(128)
1975         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1976     }
1977   }
1978 
TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4,channels_gt_4_fulltile_with_qmin)1979   TEST(F32_GAVGPOOL_MINMAX_7X__WASMSIMD_X86_C4, channels_gt_4_fulltile_with_qmin) {
1980     for (size_t channels = 5; channels < 8; channels++) {
1981       GAvgPoolMicrokernelTester()
1982         .rows(7)
1983         .channels(channels)
1984         .qmin(128)
1985         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasmsimd_x86_c4);
1986     }
1987   }
1988 #endif  // XNN_ARCH_WASMSIMD
1989 
1990 
1991 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_eq_1_fulltile)1992   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_eq_1_fulltile) {
1993     GAvgPoolMicrokernelTester()
1994       .rows(7)
1995       .channels(1)
1996       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
1997   }
1998 
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_eq_1_subtile)1999   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_eq_1_subtile) {
2000     for (size_t rows = 1; rows < 7; rows++) {
2001       GAvgPoolMicrokernelTester()
2002         .rows(rows)
2003         .channels(1)
2004         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
2005     }
2006   }
2007 
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_eq_1_fulltile_with_input_stride)2008   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_eq_1_fulltile_with_input_stride) {
2009     GAvgPoolMicrokernelTester()
2010       .rows(7)
2011       .channels(1)
2012       .input_stride(3)
2013       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
2014   }
2015 
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_eq_1_fulltile_with_qmax)2016   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_eq_1_fulltile_with_qmax) {
2017     GAvgPoolMicrokernelTester()
2018       .rows(7)
2019       .channels(1)
2020       .qmax(128)
2021       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
2022   }
2023 
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_eq_1_fulltile_with_qmin)2024   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_eq_1_fulltile_with_qmin) {
2025     GAvgPoolMicrokernelTester()
2026       .rows(7)
2027       .channels(1)
2028       .qmin(128)
2029       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
2030   }
2031 
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_gt_1_fulltile)2032   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_gt_1_fulltile) {
2033     for (size_t channels = 2; channels < 10; channels++) {
2034       GAvgPoolMicrokernelTester()
2035         .rows(7)
2036         .channels(channels)
2037         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
2038     }
2039   }
2040 
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_gt_1_subtile)2041   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_gt_1_subtile) {
2042     for (size_t channels = 2; channels < 10; channels++) {
2043       for (size_t rows = 1; rows < 7; rows++) {
2044         GAvgPoolMicrokernelTester()
2045           .rows(rows)
2046           .channels(channels)
2047           .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
2048       }
2049     }
2050   }
2051 
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_gt_1_fulltile_with_qmax)2052   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_gt_1_fulltile_with_qmax) {
2053     for (size_t channels = 2; channels < 10; channels++) {
2054       GAvgPoolMicrokernelTester()
2055         .rows(7)
2056         .channels(channels)
2057         .qmax(128)
2058         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
2059     }
2060   }
2061 
TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1,channels_gt_1_fulltile_with_qmin)2062   TEST(F32_GAVGPOOL_MINMAX_7X__WASM_C1, channels_gt_1_fulltile_with_qmin) {
2063     for (size_t channels = 2; channels < 10; channels++) {
2064       GAvgPoolMicrokernelTester()
2065         .rows(7)
2066         .channels(channels)
2067         .qmin(128)
2068         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__wasm_c1);
2069     }
2070   }
2071 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
2072 
2073 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_eq_1_fulltile)2074 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_eq_1_fulltile) {
2075   GAvgPoolMicrokernelTester()
2076     .rows(7)
2077     .channels(1)
2078     .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2079 }
2080 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_eq_1_subtile)2081 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_eq_1_subtile) {
2082   for (size_t rows = 1; rows < 7; rows++) {
2083     GAvgPoolMicrokernelTester()
2084       .rows(rows)
2085       .channels(1)
2086       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2087   }
2088 }
2089 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_eq_1_fulltile_with_input_stride)2090 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_eq_1_fulltile_with_input_stride) {
2091   GAvgPoolMicrokernelTester()
2092     .rows(7)
2093     .channels(1)
2094     .input_stride(3)
2095     .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2096 }
2097 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_eq_1_fulltile_with_qmax)2098 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_eq_1_fulltile_with_qmax) {
2099   GAvgPoolMicrokernelTester()
2100     .rows(7)
2101     .channels(1)
2102     .qmax(128)
2103     .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2104 }
2105 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_eq_1_fulltile_with_qmin)2106 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_eq_1_fulltile_with_qmin) {
2107   GAvgPoolMicrokernelTester()
2108     .rows(7)
2109     .channels(1)
2110     .qmin(128)
2111     .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2112 }
2113 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_gt_1_fulltile)2114 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_gt_1_fulltile) {
2115   for (size_t channels = 2; channels < 10; channels++) {
2116     GAvgPoolMicrokernelTester()
2117       .rows(7)
2118       .channels(channels)
2119       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2120   }
2121 }
2122 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_gt_1_subtile)2123 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_gt_1_subtile) {
2124   for (size_t channels = 2; channels < 10; channels++) {
2125     for (size_t rows = 1; rows < 7; rows++) {
2126       GAvgPoolMicrokernelTester()
2127         .rows(rows)
2128         .channels(channels)
2129         .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2130     }
2131   }
2132 }
2133 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_gt_1_fulltile_with_qmax)2134 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_gt_1_fulltile_with_qmax) {
2135   for (size_t channels = 2; channels < 10; channels++) {
2136     GAvgPoolMicrokernelTester()
2137       .rows(7)
2138       .channels(channels)
2139       .qmax(128)
2140       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2141   }
2142 }
2143 
TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1,channels_gt_1_fulltile_with_qmin)2144 TEST(F32_GAVGPOOL_MINMAX_7X__SCALAR_C1, channels_gt_1_fulltile_with_qmin) {
2145   for (size_t channels = 2; channels < 10; channels++) {
2146     GAvgPoolMicrokernelTester()
2147       .rows(7)
2148       .channels(channels)
2149       .qmin(128)
2150       .Test(xnn_f32_gavgpool_minmax_ukernel_7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
2151   }
2152 }