blob: 23eb9ebadd3d046f996d974c4fb786f71f68f89c [file] [log] [blame]
Frank Barchard6c74cd12020-05-20 21:26:47 -07001// Copyright (c) Facebook, Inc. and its affiliates.
2// All rights reserved.
3//
4// Copyright 2020 Google LLC
Marat Dukhan99936602020-04-11 16:47:01 -07005//
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.
Frank Barchard6c74cd12020-05-20 21:26:47 -07008//
9// Auto-generated file. Do not edit!
10// Specification: test/f32-gavgpool-minmax.yaml
11// Generator: tools/generate-gavgpool-test.py
12
Marat Dukhan99936602020-04-11 16:47:01 -070013
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
Marat Dukhan99936602020-04-11 16:47:01 -070024 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
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)
Frank Barchard6c74cd12020-05-20 21:26:47 -070037 .input_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -070038 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
39 }
40
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
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
59 TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_2pass_subtile) {
60 TEST_REQUIRES_ARM_NEON;
Frank Barchard6c74cd12020-05-20 21:26:47 -070061 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -070062 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -070063 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -070064 .channels(4)
65 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
66 }
67 }
68
69 TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_eq_4_2pass_subtile_with_input_stride) {
70 TEST_REQUIRES_ARM_NEON;
Frank Barchard6c74cd12020-05-20 21:26:47 -070071 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -070072 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -070073 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -070074 .channels(4)
Frank Barchard6c74cd12020-05-20 21:26:47 -070075 .input_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -070076 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
77 }
78 }
79
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
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)
Frank Barchard6c74cd12020-05-20 21:26:47 -070096 .input_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -070097 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
98 }
99 }
100
101 TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_div_4_2pass_fulltile) {
102 TEST_REQUIRES_ARM_NEON;
Frank Barchard6c74cd12020-05-20 21:26:47 -0700103 for (size_t channels = 8; channels < 32; channels += 4) {
Marat Dukhan99936602020-04-11 16:47:01 -0700104 GAvgPoolMicrokernelTester()
105 .rows(14)
106 .channels(channels)
107 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
108 }
109 }
110
111 TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_div_4_2pass_subtile) {
112 TEST_REQUIRES_ARM_NEON;
Frank Barchard6c74cd12020-05-20 21:26:47 -0700113 for (size_t channels = 8; channels < 32; channels += 4) {
114 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700115 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -0700116 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -0700117 .channels(channels)
118 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
119 }
120 }
121 }
122
123 TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_div_4_multipass_fulltile) {
124 TEST_REQUIRES_ARM_NEON;
Frank Barchard6c74cd12020-05-20 21:26:47 -0700125 for (size_t channels = 8; channels < 32; channels += 4) {
Marat Dukhan99936602020-04-11 16:47:01 -0700126 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
135 TEST(F32_GAVGPOOL_MINMAX_7P7X__NEON_C4, channels_div_4_multipass_fulltile_with_input_stride) {
136 TEST_REQUIRES_ARM_NEON;
Frank Barchard6c74cd12020-05-20 21:26:47 -0700137 for (size_t channels = 8; channels < 32; channels += 4) {
Marat Dukhan99936602020-04-11 16:47:01 -0700138 for (size_t rows = 14; rows <= 35; rows += 7) {
139 GAvgPoolMicrokernelTester()
140 .rows(rows)
141 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -0700142 .input_stride(67)
Marat Dukhan99936602020-04-11 16:47:01 -0700143 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
144 }
145 }
146 }
147
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
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
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
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++) {
Frank Barchard6c74cd12020-05-20 21:26:47 -0700183 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700184 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -0700185 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -0700186 .channels(channels)
187 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
188 }
189 }
190 }
191
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
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)
Frank Barchard6c74cd12020-05-20 21:26:47 -0700211 .input_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700212 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
213 }
214 }
215 }
216
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
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
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
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++) {
Frank Barchard6c74cd12020-05-20 21:26:47 -0700252 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700253 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -0700254 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -0700255 .channels(channels)
256 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
257 }
258 }
259 }
260
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++) {
Frank Barchard6c74cd12020-05-20 21:26:47 -0700264 for (size_t rows = 14; rows < 35; rows += 14) {
Marat Dukhan99936602020-04-11 16:47:01 -0700265 GAvgPoolMicrokernelTester()
266 .rows(rows)
267 .channels(channels)
268 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__neon_c4);
269 }
270 }
271 }
272
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++) {
Frank Barchard6c74cd12020-05-20 21:26:47 -0700276 for (size_t rows = 14; rows < 35; rows += 14) {
Marat Dukhan99936602020-04-11 16:47:01 -0700277 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700289 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_fulltile) {
290 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700291 GAvgPoolMicrokernelTester()
292 .rows(14)
293 .channels(4)
294 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
295 }
296
Frank Barchard6c74cd12020-05-20 21:26:47 -0700297 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
298 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700299 GAvgPoolMicrokernelTester()
300 .rows(14)
301 .channels(4)
Frank Barchard6c74cd12020-05-20 21:26:47 -0700302 .input_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700303 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
304 }
305
Frank Barchard6c74cd12020-05-20 21:26:47 -0700306 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_fulltile_with_qmax) {
307 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700308 GAvgPoolMicrokernelTester()
309 .rows(14)
310 .channels(4)
311 .qmax(128)
312 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
313 }
314
Frank Barchard6c74cd12020-05-20 21:26:47 -0700315 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_2pass_fulltile_with_qmin) {
316 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700317 GAvgPoolMicrokernelTester()
318 .rows(14)
319 .channels(4)
320 .qmin(128)
321 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
322 }
323
Frank Barchard6c74cd12020-05-20 21:26:47 -0700324 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++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700327 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -0700328 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -0700329 .channels(4)
330 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
331 }
332 }
333
Frank Barchard6c74cd12020-05-20 21:26:47 -0700334 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++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700337 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -0700338 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -0700339 .channels(4)
Frank Barchard6c74cd12020-05-20 21:26:47 -0700340 .input_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700341 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
342 }
343 }
344
Frank Barchard6c74cd12020-05-20 21:26:47 -0700345 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_multipass_fulltile) {
346 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700347 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700355 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
356 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700357 for (size_t rows = 14; rows <= 35; rows += 7) {
358 GAvgPoolMicrokernelTester()
359 .rows(rows)
360 .channels(4)
Frank Barchard6c74cd12020-05-20 21:26:47 -0700361 .input_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700362 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
363 }
364 }
365
Frank Barchard6c74cd12020-05-20 21:26:47 -0700366 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) {
Marat Dukhan99936602020-04-11 16:47:01 -0700369 GAvgPoolMicrokernelTester()
370 .rows(14)
371 .channels(channels)
372 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
373 }
374 }
375
Frank Barchard6c74cd12020-05-20 21:26:47 -0700376 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++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700380 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -0700381 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -0700382 .channels(channels)
383 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
384 }
385 }
386 }
387
Frank Barchard6c74cd12020-05-20 21:26:47 -0700388 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) {
Marat Dukhan99936602020-04-11 16:47:01 -0700391 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700400 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) {
Marat Dukhan99936602020-04-11 16:47:01 -0700403 for (size_t rows = 14; rows <= 35; rows += 7) {
404 GAvgPoolMicrokernelTester()
405 .rows(rows)
406 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -0700407 .input_stride(67)
Marat Dukhan99936602020-04-11 16:47:01 -0700408 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
409 }
410 }
411 }
412
Frank Barchard6c74cd12020-05-20 21:26:47 -0700413 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_2pass_fulltile) {
414 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700415 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700423 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_2pass_fulltile_with_qmax) {
424 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700425 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700434 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_2pass_fulltile_with_qmin) {
435 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700436 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700445 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_2pass_subtile) {
446 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700447 for (size_t channels = 1; channels < 4; channels++) {
Frank Barchard6c74cd12020-05-20 21:26:47 -0700448 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700449 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -0700450 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -0700451 .channels(channels)
452 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
453 }
454 }
455 }
456
Frank Barchard6c74cd12020-05-20 21:26:47 -0700457 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_multipass_fulltile) {
458 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700459 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700469 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
470 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700471 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)
Frank Barchard6c74cd12020-05-20 21:26:47 -0700476 .input_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700477 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
478 }
479 }
480 }
481
Frank Barchard6c74cd12020-05-20 21:26:47 -0700482 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_2pass_fulltile) {
483 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700484 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700492 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_2pass_fulltile_with_qmax) {
493 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700494 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700503 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_2pass_fulltile_with_qmin) {
504 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700505 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
Frank Barchard6c74cd12020-05-20 21:26:47 -0700514 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_2pass_subtile) {
515 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700516 for (size_t channels = 5; channels < 8; channels++) {
Frank Barchard6c74cd12020-05-20 21:26:47 -0700517 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700518 GAvgPoolMicrokernelTester()
519 .rows(rows)
520 .channels(channels)
521 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__sse_c4);
522 }
523 }
524 }
525
Frank Barchard6c74cd12020-05-20 21:26:47 -0700526 TEST(F32_GAVGPOOL_MINMAX_7P7X__SSE_C4, channels_gt_4_multipass_fulltile) {
527 TEST_REQUIRES_X86_SSE;
Marat Dukhan99936602020-04-11 16:47:01 -0700528 for (size_t channels = 5; channels < 8; channels++) {
Frank Barchard6c74cd12020-05-20 21:26:47 -0700529 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
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) {
Marat Dukhan99936602020-04-11 16:47:01 -0700542 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
Marat Dukhanc6016802020-07-16 18:51:28 -0700553#if XNN_ARCH_WASMSIMD
554 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_2pass_fulltile) {
Marat Dukhan99936602020-04-11 16:47:01 -0700555 GAvgPoolMicrokernelTester()
Marat Dukhanc6016802020-07-16 18:51:28 -0700556 .rows(14)
557 .channels(4)
558 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
Marat Dukhan99936602020-04-11 16:47:01 -0700559 }
560
Marat Dukhanc6016802020-07-16 18:51:28 -0700561 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
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
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
585 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASMSIMD_ARM_C4, channels_eq_4_2pass_subtile) {
586 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700587 GAvgPoolMicrokernelTester()
588 .rows(rows)
Marat Dukhanc6016802020-07-16 18:51:28 -0700589 .channels(4)
590 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
Marat Dukhan99936602020-04-11 16:47:01 -0700591 }
592 }
593
Marat Dukhanc6016802020-07-16 18:51:28 -0700594 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++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700596 GAvgPoolMicrokernelTester()
Marat Dukhanc6016802020-07-16 18:51:28 -0700597 .rows(rows)
598 .channels(4)
599 .input_stride(7)
600 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
Marat Dukhan99936602020-04-11 16:47:01 -0700601 }
602 }
603
Marat Dukhanc6016802020-07-16 18:51:28 -0700604 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
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
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
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++) {
Marat Dukhan99936602020-04-11 16:47:01 -0700635 GAvgPoolMicrokernelTester()
636 .rows(rows)
637 .channels(channels)
Marat Dukhanc6016802020-07-16 18:51:28 -0700638 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasmsimd_arm_c4);
Marat Dukhan99936602020-04-11 16:47:01 -0700639 }
640 }
641 }
642
Marat Dukhanc6016802020-07-16 18:51:28 -0700643 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 }
Marat Dukhan99936602020-04-11 16:47:01 -0700651 }
652 }
653
Marat Dukhanc6016802020-07-16 18:51:28 -0700654 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 }
Marat Dukhan99936602020-04-11 16:47:01 -0700663 }
664 }
Marat Dukhanc6016802020-07-16 18:51:28 -0700665
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Marat Dukhan99936602020-04-11 16:47:01 -07001033
Frank Barchard6c74cd12020-05-20 21:26:47 -07001034
Frank Barchard609ac842020-07-01 12:09:33 -07001035#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
Marat Dukhan99936602020-04-11 16:47:01 -07001036 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_fulltile) {
1037 GAvgPoolMicrokernelTester()
1038 .rows(14)
1039 .channels(1)
Frank Barchard609ac842020-07-01 12:09:33 -07001040 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001041 }
1042
1043 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
1044 GAvgPoolMicrokernelTester()
1045 .rows(14)
1046 .channels(1)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001047 .input_stride(3)
Frank Barchard609ac842020-07-01 12:09:33 -07001048 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001049 }
1050
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)
Frank Barchard609ac842020-07-01 12:09:33 -07001056 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001057 }
1058
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)
Frank Barchard609ac842020-07-01 12:09:33 -07001064 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001065 }
1066
1067 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_subtile) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001068 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001069 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -07001070 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -07001071 .channels(1)
Frank Barchard609ac842020-07-01 12:09:33 -07001072 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001073 }
1074 }
1075
1076 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_eq_1_2pass_subtile_with_input_stride) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001077 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001078 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -07001079 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -07001080 .channels(1)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001081 .input_stride(3)
Frank Barchard609ac842020-07-01 12:09:33 -07001082 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001083 }
1084 }
1085
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)
Frank Barchard609ac842020-07-01 12:09:33 -07001091 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001092 }
1093 }
1094
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)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001100 .input_stride(3)
Frank Barchard609ac842020-07-01 12:09:33 -07001101 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Frank Barchard6c74cd12020-05-20 21:26:47 -07001102 }
1103 }
1104
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)
Frank Barchard609ac842020-07-01 12:09:33 -07001110 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Frank Barchard6c74cd12020-05-20 21:26:47 -07001111 }
1112 }
1113
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)
Frank Barchard609ac842020-07-01 12:09:33 -07001120 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Frank Barchard6c74cd12020-05-20 21:26:47 -07001121 }
1122 }
1123 }
1124
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)
Frank Barchard609ac842020-07-01 12:09:33 -07001131 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Frank Barchard6c74cd12020-05-20 21:26:47 -07001132 }
1133 }
1134 }
1135
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)
Frank Barchard609ac842020-07-01 12:09:33 -07001143 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Frank Barchard6c74cd12020-05-20 21:26:47 -07001144 }
Marat Dukhan99936602020-04-11 16:47:01 -07001145 }
1146 }
1147
1148 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_2pass_fulltile) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001149 for (size_t channels = 2; channels < 10; channels++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001150 GAvgPoolMicrokernelTester()
1151 .rows(14)
1152 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07001153 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001154 }
1155 }
1156
1157 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_2pass_fulltile_with_qmax) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001158 for (size_t channels = 2; channels < 10; channels++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001159 GAvgPoolMicrokernelTester()
1160 .rows(14)
1161 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001162 .qmax(128)
Frank Barchard609ac842020-07-01 12:09:33 -07001163 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001164 }
1165 }
1166
1167 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_2pass_fulltile_with_qmin) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001168 for (size_t channels = 2; channels < 10; channels++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001169 GAvgPoolMicrokernelTester()
1170 .rows(14)
1171 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001172 .qmin(128)
Frank Barchard609ac842020-07-01 12:09:33 -07001173 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001174 }
1175 }
1176
1177 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_2pass_subtile) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001178 for (size_t channels = 2; channels < 10; channels++) {
1179 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001180 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -07001181 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -07001182 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07001183 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001184 }
1185 }
1186 }
1187
1188 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_multipass_fulltile) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001189 for (size_t channels = 2; channels < 10; channels++) {
1190 for (size_t rows = 14; rows < 35; rows += 14) {
Marat Dukhan99936602020-04-11 16:47:01 -07001191 GAvgPoolMicrokernelTester()
1192 .rows(rows)
1193 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07001194 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001195 }
1196 }
1197 }
1198
1199 TEST(F32_GAVGPOOL_MINMAX_7P7X__WASM_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001200 for (size_t channels = 2; channels < 10; channels++) {
1201 for (size_t rows = 14; rows < 35; rows += 14) {
Marat Dukhan99936602020-04-11 16:47:01 -07001202 GAvgPoolMicrokernelTester()
1203 .rows(rows)
1204 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001205 .input_stride(17)
Frank Barchard609ac842020-07-01 12:09:33 -07001206 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__wasm_c1);
Marat Dukhan99936602020-04-11 16:47:01 -07001207 }
1208 }
1209 }
Frank Barchard609ac842020-07-01 12:09:33 -07001210#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
Marat Dukhan99936602020-04-11 16:47:01 -07001211
1212
Marat Dukhan99936602020-04-11 16:47:01 -07001213TEST(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
1220TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
1221 GAvgPoolMicrokernelTester()
1222 .rows(14)
1223 .channels(1)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001224 .input_stride(3)
Marat Dukhan99936602020-04-11 16:47:01 -07001225 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1226}
1227
1228TEST(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
1236TEST(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
1244TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_subtile) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001245 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001246 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -07001247 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -07001248 .channels(1)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001249 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan99936602020-04-11 16:47:01 -07001250 }
1251}
1252
1253TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_eq_1_2pass_subtile_with_input_stride) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001254 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001255 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -07001256 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -07001257 .channels(1)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001258 .input_stride(3)
Marat Dukhan99936602020-04-11 16:47:01 -07001259 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1260 }
1261}
1262
1263TEST(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)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001268 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan99936602020-04-11 16:47:01 -07001269 }
1270}
1271
1272TEST(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)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001277 .input_stride(3)
1278 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1279 }
1280}
1281
1282TEST(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
1291TEST(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)
Marat Dukhan99936602020-04-11 16:47:01 -07001297 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
Frank Barchard6c74cd12020-05-20 21:26:47 -07001298 }
1299 }
1300}
1301
1302TEST(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
1313TEST(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 }
Marat Dukhan99936602020-04-11 16:47:01 -07001322 }
1323}
1324
1325TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_2pass_fulltile) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001326 for (size_t channels = 2; channels < 10; channels++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001327 GAvgPoolMicrokernelTester()
1328 .rows(14)
1329 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001330 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan99936602020-04-11 16:47:01 -07001331 }
1332}
1333
1334TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_2pass_fulltile_with_qmax) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001335 for (size_t channels = 2; channels < 10; channels++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001336 GAvgPoolMicrokernelTester()
1337 .rows(14)
1338 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001339 .qmax(128)
Marat Dukhan99936602020-04-11 16:47:01 -07001340 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1341 }
1342}
1343
1344TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_2pass_fulltile_with_qmin) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001345 for (size_t channels = 2; channels < 10; channels++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001346 GAvgPoolMicrokernelTester()
1347 .rows(14)
1348 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001349 .qmin(128)
Marat Dukhan99936602020-04-11 16:47:01 -07001350 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1351 }
1352}
1353
1354TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_2pass_subtile) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001355 for (size_t channels = 2; channels < 10; channels++) {
1356 for (size_t rows = 8; rows < 14; rows++) {
Marat Dukhan99936602020-04-11 16:47:01 -07001357 GAvgPoolMicrokernelTester()
Frank Barchard6c74cd12020-05-20 21:26:47 -07001358 .rows(rows)
Marat Dukhan99936602020-04-11 16:47:01 -07001359 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001360 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan99936602020-04-11 16:47:01 -07001361 }
1362 }
1363}
1364
1365TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_multipass_fulltile) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001366 for (size_t channels = 2; channels < 10; channels++) {
1367 for (size_t rows = 14; rows < 35; rows += 14) {
Marat Dukhan99936602020-04-11 16:47:01 -07001368 GAvgPoolMicrokernelTester()
1369 .rows(rows)
1370 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001371 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan99936602020-04-11 16:47:01 -07001372 }
1373 }
1374}
1375
1376TEST(F32_GAVGPOOL_MINMAX_7P7X__SCALAR_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
Frank Barchard6c74cd12020-05-20 21:26:47 -07001377 for (size_t channels = 2; channels < 10; channels++) {
1378 for (size_t rows = 14; rows < 35; rows += 14) {
Marat Dukhan99936602020-04-11 16:47:01 -07001379 GAvgPoolMicrokernelTester()
1380 .rows(rows)
1381 .channels(channels)
Frank Barchard6c74cd12020-05-20 21:26:47 -07001382 .input_stride(17)
Marat Dukhan99936602020-04-11 16:47:01 -07001383 .Test(xnn_f32_gavgpool_minmax_ukernel_7p7x__scalar_c1, GAvgPoolMicrokernelTester::Variant::Scalar);
1384 }
1385 }
1386}
Marat Dukhanc6016802020-07-16 18:51:28 -07001387
1388
1389#if XNN_ARCH_ARM || XNN_ARCH_ARM64
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Marat Dukhanc6016802020-07-16 18:51:28 -07001705#if XNN_ARCH_WASMSIMD
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2074TEST(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
2081TEST(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
2090TEST(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
2098TEST(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
2106TEST(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
2114TEST(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
2123TEST(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
2134TEST(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
2144TEST(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}