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 }