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/qu8-gavgpool-minmax-fp32.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(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_eq_8_2pass_fulltile)24 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_fulltile) {
25 TEST_REQUIRES_ARM_NEON;
26 GAvgPoolMicrokernelTester()
27 .rows(14)
28 .channels(8)
29 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
30 }
31
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_eq_8_2pass_fulltile_with_input_stride)32 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
33 TEST_REQUIRES_ARM_NEON;
34 GAvgPoolMicrokernelTester()
35 .rows(14)
36 .channels(8)
37 .input_stride(11)
38 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
39 }
40
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_eq_8_2pass_fulltile_with_qmax)41 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_qmax) {
42 TEST_REQUIRES_ARM_NEON;
43 GAvgPoolMicrokernelTester()
44 .rows(14)
45 .channels(8)
46 .qmax(128)
47 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
48 }
49
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_eq_8_2pass_fulltile_with_qmin)50 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_qmin) {
51 TEST_REQUIRES_ARM_NEON;
52 GAvgPoolMicrokernelTester()
53 .rows(14)
54 .channels(8)
55 .qmin(128)
56 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
57 }
58
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_eq_8_2pass_subtile)59 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_subtile) {
60 TEST_REQUIRES_ARM_NEON;
61 for (size_t rows = 8; rows < 14; rows++) {
62 GAvgPoolMicrokernelTester()
63 .rows(rows)
64 .channels(8)
65 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
66 }
67 }
68
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_eq_8_2pass_subtile_with_input_stride)69 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_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(8)
75 .input_stride(11)
76 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
77 }
78 }
79
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_eq_8_multipass_fulltile)80 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_multipass_fulltile) {
81 TEST_REQUIRES_ARM_NEON;
82 for (size_t rows = 14; rows <= 35; rows += 7) {
83 GAvgPoolMicrokernelTester()
84 .rows(rows)
85 .channels(8)
86 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
87 }
88 }
89
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_eq_8_multipass_fulltile_with_input_stride)90 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_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(8)
96 .input_stride(11)
97 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
98 }
99 }
100
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_div_8_2pass_fulltile)101 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_div_8_2pass_fulltile) {
102 TEST_REQUIRES_ARM_NEON;
103 for (size_t channels = 16; channels < 64; channels += 8) {
104 GAvgPoolMicrokernelTester()
105 .rows(14)
106 .channels(channels)
107 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
108 }
109 }
110
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_div_8_2pass_subtile)111 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_div_8_2pass_subtile) {
112 TEST_REQUIRES_ARM_NEON;
113 for (size_t channels = 16; channels < 64; channels += 8) {
114 for (size_t rows = 8; rows < 14; rows++) {
115 GAvgPoolMicrokernelTester()
116 .rows(rows)
117 .channels(channels)
118 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
119 }
120 }
121 }
122
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_div_8_multipass_fulltile)123 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_div_8_multipass_fulltile) {
124 TEST_REQUIRES_ARM_NEON;
125 for (size_t channels = 16; channels < 64; channels += 8) {
126 for (size_t rows = 14; rows <= 35; rows += 7) {
127 GAvgPoolMicrokernelTester()
128 .rows(rows)
129 .channels(channels)
130 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
131 }
132 }
133 }
134
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_div_8_multipass_fulltile_with_input_stride)135 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_div_8_multipass_fulltile_with_input_stride) {
136 TEST_REQUIRES_ARM_NEON;
137 for (size_t channels = 16; channels < 64; channels += 8) {
138 for (size_t rows = 14; rows <= 35; rows += 7) {
139 GAvgPoolMicrokernelTester()
140 .rows(rows)
141 .channels(channels)
142 .input_stride(131)
143 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
144 }
145 }
146 }
147
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_lt_8_2pass_fulltile)148 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_2pass_fulltile) {
149 TEST_REQUIRES_ARM_NEON;
150 for (size_t channels = 1; channels < 8; channels++) {
151 GAvgPoolMicrokernelTester()
152 .rows(14)
153 .channels(channels)
154 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
155 }
156 }
157
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_lt_8_2pass_fulltile_with_qmax)158 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_2pass_fulltile_with_qmax) {
159 TEST_REQUIRES_ARM_NEON;
160 for (size_t channels = 1; channels < 8; channels++) {
161 GAvgPoolMicrokernelTester()
162 .rows(14)
163 .channels(channels)
164 .qmax(128)
165 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
166 }
167 }
168
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_lt_8_2pass_fulltile_with_qmin)169 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_2pass_fulltile_with_qmin) {
170 TEST_REQUIRES_ARM_NEON;
171 for (size_t channels = 1; channels < 8; channels++) {
172 GAvgPoolMicrokernelTester()
173 .rows(14)
174 .channels(channels)
175 .qmin(128)
176 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
177 }
178 }
179
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_lt_8_2pass_subtile)180 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_2pass_subtile) {
181 TEST_REQUIRES_ARM_NEON;
182 for (size_t channels = 1; channels < 8; channels++) {
183 for (size_t rows = 8; rows < 14; rows++) {
184 GAvgPoolMicrokernelTester()
185 .rows(rows)
186 .channels(channels)
187 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
188 }
189 }
190 }
191
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_lt_8_multipass_fulltile)192 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_multipass_fulltile) {
193 TEST_REQUIRES_ARM_NEON;
194 for (size_t channels = 1; channels < 8; channels++) {
195 for (size_t rows = 14; rows <= 35; rows += 7) {
196 GAvgPoolMicrokernelTester()
197 .rows(rows)
198 .channels(channels)
199 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
200 }
201 }
202 }
203
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_lt_8_multipass_fulltile_with_input_stride)204 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
205 TEST_REQUIRES_ARM_NEON;
206 for (size_t channels = 1; channels < 8; channels++) {
207 for (size_t rows = 14; rows <= 35; rows += 7) {
208 GAvgPoolMicrokernelTester()
209 .rows(rows)
210 .channels(channels)
211 .input_stride(11)
212 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
213 }
214 }
215 }
216
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_gt_8_2pass_fulltile)217 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_2pass_fulltile) {
218 TEST_REQUIRES_ARM_NEON;
219 for (size_t channels = 9; channels < 16; channels++) {
220 GAvgPoolMicrokernelTester()
221 .rows(14)
222 .channels(channels)
223 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
224 }
225 }
226
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_gt_8_2pass_fulltile_with_qmax)227 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_2pass_fulltile_with_qmax) {
228 TEST_REQUIRES_ARM_NEON;
229 for (size_t channels = 9; channels < 16; channels++) {
230 GAvgPoolMicrokernelTester()
231 .rows(14)
232 .channels(channels)
233 .qmax(128)
234 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
235 }
236 }
237
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_gt_8_2pass_fulltile_with_qmin)238 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_2pass_fulltile_with_qmin) {
239 TEST_REQUIRES_ARM_NEON;
240 for (size_t channels = 9; channels < 16; channels++) {
241 GAvgPoolMicrokernelTester()
242 .rows(14)
243 .channels(channels)
244 .qmin(128)
245 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
246 }
247 }
248
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_gt_8_2pass_subtile)249 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_2pass_subtile) {
250 TEST_REQUIRES_ARM_NEON;
251 for (size_t channels = 9; channels < 16; channels++) {
252 for (size_t rows = 8; rows < 14; rows++) {
253 GAvgPoolMicrokernelTester()
254 .rows(rows)
255 .channels(channels)
256 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
257 }
258 }
259 }
260
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_gt_8_multipass_fulltile)261 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_multipass_fulltile) {
262 TEST_REQUIRES_ARM_NEON;
263 for (size_t channels = 9; channels < 16; channels++) {
264 for (size_t rows = 14; rows < 35; rows += 14) {
265 GAvgPoolMicrokernelTester()
266 .rows(rows)
267 .channels(channels)
268 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
269 }
270 }
271 }
272
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8,channels_gt_8_multipass_fulltile_with_input_stride)273 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
274 TEST_REQUIRES_ARM_NEON;
275 for (size_t channels = 9; channels < 16; channels++) {
276 for (size_t rows = 14; rows < 35; rows += 14) {
277 GAvgPoolMicrokernelTester()
278 .rows(rows)
279 .channels(channels)
280 .input_stride(29)
281 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
282 }
283 }
284 }
285 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
286
287
288 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_eq_16_2pass_fulltile)289 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_fulltile) {
290 TEST_REQUIRES_ARM_NEON;
291 GAvgPoolMicrokernelTester()
292 .rows(14)
293 .channels(16)
294 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
295 }
296
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_eq_16_2pass_fulltile_with_input_stride)297 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
298 TEST_REQUIRES_ARM_NEON;
299 GAvgPoolMicrokernelTester()
300 .rows(14)
301 .channels(16)
302 .input_stride(19)
303 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
304 }
305
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_eq_16_2pass_fulltile_with_qmax)306 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_qmax) {
307 TEST_REQUIRES_ARM_NEON;
308 GAvgPoolMicrokernelTester()
309 .rows(14)
310 .channels(16)
311 .qmax(128)
312 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
313 }
314
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_eq_16_2pass_fulltile_with_qmin)315 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_qmin) {
316 TEST_REQUIRES_ARM_NEON;
317 GAvgPoolMicrokernelTester()
318 .rows(14)
319 .channels(16)
320 .qmin(128)
321 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
322 }
323
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_eq_16_2pass_subtile)324 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_subtile) {
325 TEST_REQUIRES_ARM_NEON;
326 for (size_t rows = 8; rows < 14; rows++) {
327 GAvgPoolMicrokernelTester()
328 .rows(rows)
329 .channels(16)
330 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
331 }
332 }
333
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_eq_16_2pass_subtile_with_input_stride)334 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_subtile_with_input_stride) {
335 TEST_REQUIRES_ARM_NEON;
336 for (size_t rows = 8; rows < 14; rows++) {
337 GAvgPoolMicrokernelTester()
338 .rows(rows)
339 .channels(16)
340 .input_stride(19)
341 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
342 }
343 }
344
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_eq_16_multipass_fulltile)345 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_multipass_fulltile) {
346 TEST_REQUIRES_ARM_NEON;
347 for (size_t rows = 14; rows <= 35; rows += 7) {
348 GAvgPoolMicrokernelTester()
349 .rows(rows)
350 .channels(16)
351 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
352 }
353 }
354
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_eq_16_multipass_fulltile_with_input_stride)355 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
356 TEST_REQUIRES_ARM_NEON;
357 for (size_t rows = 14; rows <= 35; rows += 7) {
358 GAvgPoolMicrokernelTester()
359 .rows(rows)
360 .channels(16)
361 .input_stride(19)
362 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
363 }
364 }
365
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_div_16_2pass_fulltile)366 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_div_16_2pass_fulltile) {
367 TEST_REQUIRES_ARM_NEON;
368 for (size_t channels = 32; channels < 128; channels += 16) {
369 GAvgPoolMicrokernelTester()
370 .rows(14)
371 .channels(channels)
372 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
373 }
374 }
375
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_div_16_2pass_subtile)376 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_div_16_2pass_subtile) {
377 TEST_REQUIRES_ARM_NEON;
378 for (size_t channels = 32; channels < 128; channels += 16) {
379 for (size_t rows = 8; rows < 14; rows++) {
380 GAvgPoolMicrokernelTester()
381 .rows(rows)
382 .channels(channels)
383 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
384 }
385 }
386 }
387
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_div_16_multipass_fulltile)388 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_div_16_multipass_fulltile) {
389 TEST_REQUIRES_ARM_NEON;
390 for (size_t channels = 32; channels < 128; channels += 16) {
391 for (size_t rows = 14; rows <= 35; rows += 7) {
392 GAvgPoolMicrokernelTester()
393 .rows(rows)
394 .channels(channels)
395 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
396 }
397 }
398 }
399
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_div_16_multipass_fulltile_with_input_stride)400 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_div_16_multipass_fulltile_with_input_stride) {
401 TEST_REQUIRES_ARM_NEON;
402 for (size_t channels = 32; channels < 128; channels += 16) {
403 for (size_t rows = 14; rows <= 35; rows += 7) {
404 GAvgPoolMicrokernelTester()
405 .rows(rows)
406 .channels(channels)
407 .input_stride(263)
408 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
409 }
410 }
411 }
412
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_lt_16_2pass_fulltile)413 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_2pass_fulltile) {
414 TEST_REQUIRES_ARM_NEON;
415 for (size_t channels = 1; channels < 16; channels++) {
416 GAvgPoolMicrokernelTester()
417 .rows(14)
418 .channels(channels)
419 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
420 }
421 }
422
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_lt_16_2pass_fulltile_with_qmax)423 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_2pass_fulltile_with_qmax) {
424 TEST_REQUIRES_ARM_NEON;
425 for (size_t channels = 1; channels < 16; channels++) {
426 GAvgPoolMicrokernelTester()
427 .rows(14)
428 .channels(channels)
429 .qmax(128)
430 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
431 }
432 }
433
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_lt_16_2pass_fulltile_with_qmin)434 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_2pass_fulltile_with_qmin) {
435 TEST_REQUIRES_ARM_NEON;
436 for (size_t channels = 1; channels < 16; channels++) {
437 GAvgPoolMicrokernelTester()
438 .rows(14)
439 .channels(channels)
440 .qmin(128)
441 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
442 }
443 }
444
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_lt_16_2pass_subtile)445 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_2pass_subtile) {
446 TEST_REQUIRES_ARM_NEON;
447 for (size_t channels = 1; channels < 16; channels++) {
448 for (size_t rows = 8; rows < 14; rows++) {
449 GAvgPoolMicrokernelTester()
450 .rows(rows)
451 .channels(channels)
452 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
453 }
454 }
455 }
456
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_lt_16_multipass_fulltile)457 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_multipass_fulltile) {
458 TEST_REQUIRES_ARM_NEON;
459 for (size_t channels = 1; channels < 16; channels++) {
460 for (size_t rows = 14; rows <= 35; rows += 7) {
461 GAvgPoolMicrokernelTester()
462 .rows(rows)
463 .channels(channels)
464 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
465 }
466 }
467 }
468
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_lt_16_multipass_fulltile_with_input_stride)469 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
470 TEST_REQUIRES_ARM_NEON;
471 for (size_t channels = 1; channels < 16; channels++) {
472 for (size_t rows = 14; rows <= 35; rows += 7) {
473 GAvgPoolMicrokernelTester()
474 .rows(rows)
475 .channels(channels)
476 .input_stride(19)
477 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
478 }
479 }
480 }
481
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_gt_16_2pass_fulltile)482 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_2pass_fulltile) {
483 TEST_REQUIRES_ARM_NEON;
484 for (size_t channels = 17; channels < 32; channels++) {
485 GAvgPoolMicrokernelTester()
486 .rows(14)
487 .channels(channels)
488 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
489 }
490 }
491
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_gt_16_2pass_fulltile_with_qmax)492 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_2pass_fulltile_with_qmax) {
493 TEST_REQUIRES_ARM_NEON;
494 for (size_t channels = 17; channels < 32; channels++) {
495 GAvgPoolMicrokernelTester()
496 .rows(14)
497 .channels(channels)
498 .qmax(128)
499 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
500 }
501 }
502
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_gt_16_2pass_fulltile_with_qmin)503 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_2pass_fulltile_with_qmin) {
504 TEST_REQUIRES_ARM_NEON;
505 for (size_t channels = 17; channels < 32; channels++) {
506 GAvgPoolMicrokernelTester()
507 .rows(14)
508 .channels(channels)
509 .qmin(128)
510 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
511 }
512 }
513
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_gt_16_2pass_subtile)514 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_2pass_subtile) {
515 TEST_REQUIRES_ARM_NEON;
516 for (size_t channels = 17; channels < 32; channels++) {
517 for (size_t rows = 8; rows < 14; rows++) {
518 GAvgPoolMicrokernelTester()
519 .rows(rows)
520 .channels(channels)
521 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
522 }
523 }
524 }
525
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_gt_16_multipass_fulltile)526 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_multipass_fulltile) {
527 TEST_REQUIRES_ARM_NEON;
528 for (size_t channels = 17; channels < 32; channels++) {
529 for (size_t rows = 14; rows < 35; rows += 14) {
530 GAvgPoolMicrokernelTester()
531 .rows(rows)
532 .channels(channels)
533 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
534 }
535 }
536 }
537
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16,channels_gt_16_multipass_fulltile_with_input_stride)538 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
539 TEST_REQUIRES_ARM_NEON;
540 for (size_t channels = 17; channels < 32; channels++) {
541 for (size_t rows = 14; rows < 35; rows += 14) {
542 GAvgPoolMicrokernelTester()
543 .rows(rows)
544 .channels(channels)
545 .input_stride(47)
546 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
547 }
548 }
549 }
550 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
551
552
553 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_eq_24_2pass_fulltile)554 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_fulltile) {
555 TEST_REQUIRES_ARM_NEON;
556 GAvgPoolMicrokernelTester()
557 .rows(14)
558 .channels(24)
559 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
560 }
561
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_eq_24_2pass_fulltile_with_input_stride)562 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
563 TEST_REQUIRES_ARM_NEON;
564 GAvgPoolMicrokernelTester()
565 .rows(14)
566 .channels(24)
567 .input_stride(29)
568 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
569 }
570
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_eq_24_2pass_fulltile_with_qmax)571 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_qmax) {
572 TEST_REQUIRES_ARM_NEON;
573 GAvgPoolMicrokernelTester()
574 .rows(14)
575 .channels(24)
576 .qmax(128)
577 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
578 }
579
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_eq_24_2pass_fulltile_with_qmin)580 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_qmin) {
581 TEST_REQUIRES_ARM_NEON;
582 GAvgPoolMicrokernelTester()
583 .rows(14)
584 .channels(24)
585 .qmin(128)
586 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
587 }
588
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_eq_24_2pass_subtile)589 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_subtile) {
590 TEST_REQUIRES_ARM_NEON;
591 for (size_t rows = 8; rows < 14; rows++) {
592 GAvgPoolMicrokernelTester()
593 .rows(rows)
594 .channels(24)
595 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
596 }
597 }
598
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_eq_24_2pass_subtile_with_input_stride)599 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_subtile_with_input_stride) {
600 TEST_REQUIRES_ARM_NEON;
601 for (size_t rows = 8; rows < 14; rows++) {
602 GAvgPoolMicrokernelTester()
603 .rows(rows)
604 .channels(24)
605 .input_stride(29)
606 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
607 }
608 }
609
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_eq_24_multipass_fulltile)610 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_multipass_fulltile) {
611 TEST_REQUIRES_ARM_NEON;
612 for (size_t rows = 14; rows <= 35; rows += 7) {
613 GAvgPoolMicrokernelTester()
614 .rows(rows)
615 .channels(24)
616 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
617 }
618 }
619
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_eq_24_multipass_fulltile_with_input_stride)620 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
621 TEST_REQUIRES_ARM_NEON;
622 for (size_t rows = 14; rows <= 35; rows += 7) {
623 GAvgPoolMicrokernelTester()
624 .rows(rows)
625 .channels(24)
626 .input_stride(29)
627 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
628 }
629 }
630
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_div_24_2pass_fulltile)631 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_div_24_2pass_fulltile) {
632 TEST_REQUIRES_ARM_NEON;
633 for (size_t channels = 48; channels < 192; channels += 24) {
634 GAvgPoolMicrokernelTester()
635 .rows(14)
636 .channels(channels)
637 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
638 }
639 }
640
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_div_24_2pass_subtile)641 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_div_24_2pass_subtile) {
642 TEST_REQUIRES_ARM_NEON;
643 for (size_t channels = 48; channels < 192; channels += 24) {
644 for (size_t rows = 8; rows < 14; rows++) {
645 GAvgPoolMicrokernelTester()
646 .rows(rows)
647 .channels(channels)
648 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
649 }
650 }
651 }
652
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_div_24_multipass_fulltile)653 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_div_24_multipass_fulltile) {
654 TEST_REQUIRES_ARM_NEON;
655 for (size_t channels = 48; channels < 192; channels += 24) {
656 for (size_t rows = 14; rows <= 35; rows += 7) {
657 GAvgPoolMicrokernelTester()
658 .rows(rows)
659 .channels(channels)
660 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
661 }
662 }
663 }
664
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_div_24_multipass_fulltile_with_input_stride)665 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_div_24_multipass_fulltile_with_input_stride) {
666 TEST_REQUIRES_ARM_NEON;
667 for (size_t channels = 48; channels < 192; channels += 24) {
668 for (size_t rows = 14; rows <= 35; rows += 7) {
669 GAvgPoolMicrokernelTester()
670 .rows(rows)
671 .channels(channels)
672 .input_stride(389)
673 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
674 }
675 }
676 }
677
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_lt_24_2pass_fulltile)678 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_2pass_fulltile) {
679 TEST_REQUIRES_ARM_NEON;
680 for (size_t channels = 1; channels < 24; channels++) {
681 GAvgPoolMicrokernelTester()
682 .rows(14)
683 .channels(channels)
684 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
685 }
686 }
687
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_lt_24_2pass_fulltile_with_qmax)688 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_2pass_fulltile_with_qmax) {
689 TEST_REQUIRES_ARM_NEON;
690 for (size_t channels = 1; channels < 24; channels++) {
691 GAvgPoolMicrokernelTester()
692 .rows(14)
693 .channels(channels)
694 .qmax(128)
695 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
696 }
697 }
698
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_lt_24_2pass_fulltile_with_qmin)699 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_2pass_fulltile_with_qmin) {
700 TEST_REQUIRES_ARM_NEON;
701 for (size_t channels = 1; channels < 24; channels++) {
702 GAvgPoolMicrokernelTester()
703 .rows(14)
704 .channels(channels)
705 .qmin(128)
706 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
707 }
708 }
709
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_lt_24_2pass_subtile)710 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_2pass_subtile) {
711 TEST_REQUIRES_ARM_NEON;
712 for (size_t channels = 1; channels < 24; channels++) {
713 for (size_t rows = 8; rows < 14; rows++) {
714 GAvgPoolMicrokernelTester()
715 .rows(rows)
716 .channels(channels)
717 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
718 }
719 }
720 }
721
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_lt_24_multipass_fulltile)722 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_multipass_fulltile) {
723 TEST_REQUIRES_ARM_NEON;
724 for (size_t channels = 1; channels < 24; channels++) {
725 for (size_t rows = 14; rows <= 35; rows += 7) {
726 GAvgPoolMicrokernelTester()
727 .rows(rows)
728 .channels(channels)
729 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
730 }
731 }
732 }
733
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_lt_24_multipass_fulltile_with_input_stride)734 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
735 TEST_REQUIRES_ARM_NEON;
736 for (size_t channels = 1; channels < 24; channels++) {
737 for (size_t rows = 14; rows <= 35; rows += 7) {
738 GAvgPoolMicrokernelTester()
739 .rows(rows)
740 .channels(channels)
741 .input_stride(29)
742 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
743 }
744 }
745 }
746
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_gt_24_2pass_fulltile)747 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_2pass_fulltile) {
748 TEST_REQUIRES_ARM_NEON;
749 for (size_t channels = 25; channels < 48; channels++) {
750 GAvgPoolMicrokernelTester()
751 .rows(14)
752 .channels(channels)
753 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
754 }
755 }
756
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_gt_24_2pass_fulltile_with_qmax)757 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_2pass_fulltile_with_qmax) {
758 TEST_REQUIRES_ARM_NEON;
759 for (size_t channels = 25; channels < 48; channels++) {
760 GAvgPoolMicrokernelTester()
761 .rows(14)
762 .channels(channels)
763 .qmax(128)
764 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
765 }
766 }
767
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_gt_24_2pass_fulltile_with_qmin)768 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_2pass_fulltile_with_qmin) {
769 TEST_REQUIRES_ARM_NEON;
770 for (size_t channels = 25; channels < 48; channels++) {
771 GAvgPoolMicrokernelTester()
772 .rows(14)
773 .channels(channels)
774 .qmin(128)
775 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
776 }
777 }
778
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_gt_24_2pass_subtile)779 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_2pass_subtile) {
780 TEST_REQUIRES_ARM_NEON;
781 for (size_t channels = 25; channels < 48; channels++) {
782 for (size_t rows = 8; rows < 14; rows++) {
783 GAvgPoolMicrokernelTester()
784 .rows(rows)
785 .channels(channels)
786 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
787 }
788 }
789 }
790
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_gt_24_multipass_fulltile)791 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_multipass_fulltile) {
792 TEST_REQUIRES_ARM_NEON;
793 for (size_t channels = 25; channels < 48; channels++) {
794 for (size_t rows = 14; rows < 35; rows += 14) {
795 GAvgPoolMicrokernelTester()
796 .rows(rows)
797 .channels(channels)
798 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
799 }
800 }
801 }
802
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24,channels_gt_24_multipass_fulltile_with_input_stride)803 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
804 TEST_REQUIRES_ARM_NEON;
805 for (size_t channels = 25; channels < 48; channels++) {
806 for (size_t rows = 14; rows < 35; rows += 14) {
807 GAvgPoolMicrokernelTester()
808 .rows(rows)
809 .channels(channels)
810 .input_stride(61)
811 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
812 }
813 }
814 }
815 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
816
817
818 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_eq_32_2pass_fulltile)819 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_fulltile) {
820 TEST_REQUIRES_ARM_NEON;
821 GAvgPoolMicrokernelTester()
822 .rows(14)
823 .channels(32)
824 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
825 }
826
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_eq_32_2pass_fulltile_with_input_stride)827 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_input_stride) {
828 TEST_REQUIRES_ARM_NEON;
829 GAvgPoolMicrokernelTester()
830 .rows(14)
831 .channels(32)
832 .input_stride(37)
833 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
834 }
835
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_eq_32_2pass_fulltile_with_qmax)836 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_qmax) {
837 TEST_REQUIRES_ARM_NEON;
838 GAvgPoolMicrokernelTester()
839 .rows(14)
840 .channels(32)
841 .qmax(128)
842 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
843 }
844
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_eq_32_2pass_fulltile_with_qmin)845 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_qmin) {
846 TEST_REQUIRES_ARM_NEON;
847 GAvgPoolMicrokernelTester()
848 .rows(14)
849 .channels(32)
850 .qmin(128)
851 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
852 }
853
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_eq_32_2pass_subtile)854 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_subtile) {
855 TEST_REQUIRES_ARM_NEON;
856 for (size_t rows = 8; rows < 14; rows++) {
857 GAvgPoolMicrokernelTester()
858 .rows(rows)
859 .channels(32)
860 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
861 }
862 }
863
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_eq_32_2pass_subtile_with_input_stride)864 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_subtile_with_input_stride) {
865 TEST_REQUIRES_ARM_NEON;
866 for (size_t rows = 8; rows < 14; rows++) {
867 GAvgPoolMicrokernelTester()
868 .rows(rows)
869 .channels(32)
870 .input_stride(37)
871 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
872 }
873 }
874
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_eq_32_multipass_fulltile)875 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_multipass_fulltile) {
876 TEST_REQUIRES_ARM_NEON;
877 for (size_t rows = 14; rows <= 35; rows += 7) {
878 GAvgPoolMicrokernelTester()
879 .rows(rows)
880 .channels(32)
881 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
882 }
883 }
884
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_eq_32_multipass_fulltile_with_input_stride)885 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_multipass_fulltile_with_input_stride) {
886 TEST_REQUIRES_ARM_NEON;
887 for (size_t rows = 14; rows <= 35; rows += 7) {
888 GAvgPoolMicrokernelTester()
889 .rows(rows)
890 .channels(32)
891 .input_stride(37)
892 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
893 }
894 }
895
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_div_32_2pass_fulltile)896 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_div_32_2pass_fulltile) {
897 TEST_REQUIRES_ARM_NEON;
898 for (size_t channels = 64; channels < 256; channels += 32) {
899 GAvgPoolMicrokernelTester()
900 .rows(14)
901 .channels(channels)
902 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
903 }
904 }
905
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_div_32_2pass_subtile)906 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_div_32_2pass_subtile) {
907 TEST_REQUIRES_ARM_NEON;
908 for (size_t channels = 64; channels < 256; channels += 32) {
909 for (size_t rows = 8; rows < 14; rows++) {
910 GAvgPoolMicrokernelTester()
911 .rows(rows)
912 .channels(channels)
913 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
914 }
915 }
916 }
917
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_div_32_multipass_fulltile)918 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_div_32_multipass_fulltile) {
919 TEST_REQUIRES_ARM_NEON;
920 for (size_t channels = 64; channels < 256; channels += 32) {
921 for (size_t rows = 14; rows <= 35; rows += 7) {
922 GAvgPoolMicrokernelTester()
923 .rows(rows)
924 .channels(channels)
925 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
926 }
927 }
928 }
929
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_div_32_multipass_fulltile_with_input_stride)930 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_div_32_multipass_fulltile_with_input_stride) {
931 TEST_REQUIRES_ARM_NEON;
932 for (size_t channels = 64; channels < 256; channels += 32) {
933 for (size_t rows = 14; rows <= 35; rows += 7) {
934 GAvgPoolMicrokernelTester()
935 .rows(rows)
936 .channels(channels)
937 .input_stride(521)
938 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
939 }
940 }
941 }
942
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_lt_32_2pass_fulltile)943 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_2pass_fulltile) {
944 TEST_REQUIRES_ARM_NEON;
945 for (size_t channels = 1; channels < 32; channels++) {
946 GAvgPoolMicrokernelTester()
947 .rows(14)
948 .channels(channels)
949 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
950 }
951 }
952
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_lt_32_2pass_fulltile_with_qmax)953 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_2pass_fulltile_with_qmax) {
954 TEST_REQUIRES_ARM_NEON;
955 for (size_t channels = 1; channels < 32; channels++) {
956 GAvgPoolMicrokernelTester()
957 .rows(14)
958 .channels(channels)
959 .qmax(128)
960 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
961 }
962 }
963
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_lt_32_2pass_fulltile_with_qmin)964 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_2pass_fulltile_with_qmin) {
965 TEST_REQUIRES_ARM_NEON;
966 for (size_t channels = 1; channels < 32; channels++) {
967 GAvgPoolMicrokernelTester()
968 .rows(14)
969 .channels(channels)
970 .qmin(128)
971 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
972 }
973 }
974
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_lt_32_2pass_subtile)975 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_2pass_subtile) {
976 TEST_REQUIRES_ARM_NEON;
977 for (size_t channels = 1; channels < 32; channels++) {
978 for (size_t rows = 8; rows < 14; rows++) {
979 GAvgPoolMicrokernelTester()
980 .rows(rows)
981 .channels(channels)
982 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
983 }
984 }
985 }
986
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_lt_32_multipass_fulltile)987 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_multipass_fulltile) {
988 TEST_REQUIRES_ARM_NEON;
989 for (size_t channels = 1; channels < 32; channels++) {
990 for (size_t rows = 14; rows <= 35; rows += 7) {
991 GAvgPoolMicrokernelTester()
992 .rows(rows)
993 .channels(channels)
994 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
995 }
996 }
997 }
998
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_lt_32_multipass_fulltile_with_input_stride)999 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_multipass_fulltile_with_input_stride) {
1000 TEST_REQUIRES_ARM_NEON;
1001 for (size_t channels = 1; channels < 32; channels++) {
1002 for (size_t rows = 14; rows <= 35; rows += 7) {
1003 GAvgPoolMicrokernelTester()
1004 .rows(rows)
1005 .channels(channels)
1006 .input_stride(37)
1007 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
1008 }
1009 }
1010 }
1011
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_gt_32_2pass_fulltile)1012 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_2pass_fulltile) {
1013 TEST_REQUIRES_ARM_NEON;
1014 for (size_t channels = 33; channels < 64; channels++) {
1015 GAvgPoolMicrokernelTester()
1016 .rows(14)
1017 .channels(channels)
1018 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
1019 }
1020 }
1021
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_gt_32_2pass_fulltile_with_qmax)1022 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_2pass_fulltile_with_qmax) {
1023 TEST_REQUIRES_ARM_NEON;
1024 for (size_t channels = 33; channels < 64; channels++) {
1025 GAvgPoolMicrokernelTester()
1026 .rows(14)
1027 .channels(channels)
1028 .qmax(128)
1029 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
1030 }
1031 }
1032
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_gt_32_2pass_fulltile_with_qmin)1033 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_2pass_fulltile_with_qmin) {
1034 TEST_REQUIRES_ARM_NEON;
1035 for (size_t channels = 33; channels < 64; channels++) {
1036 GAvgPoolMicrokernelTester()
1037 .rows(14)
1038 .channels(channels)
1039 .qmin(128)
1040 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
1041 }
1042 }
1043
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_gt_32_2pass_subtile)1044 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_2pass_subtile) {
1045 TEST_REQUIRES_ARM_NEON;
1046 for (size_t channels = 33; channels < 64; channels++) {
1047 for (size_t rows = 8; rows < 14; rows++) {
1048 GAvgPoolMicrokernelTester()
1049 .rows(rows)
1050 .channels(channels)
1051 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
1052 }
1053 }
1054 }
1055
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_gt_32_multipass_fulltile)1056 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_multipass_fulltile) {
1057 TEST_REQUIRES_ARM_NEON;
1058 for (size_t channels = 33; channels < 64; channels++) {
1059 for (size_t rows = 14; rows < 35; rows += 14) {
1060 GAvgPoolMicrokernelTester()
1061 .rows(rows)
1062 .channels(channels)
1063 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
1064 }
1065 }
1066 }
1067
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32,channels_gt_32_multipass_fulltile_with_input_stride)1068 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_multipass_fulltile_with_input_stride) {
1069 TEST_REQUIRES_ARM_NEON;
1070 for (size_t channels = 33; channels < 64; channels++) {
1071 for (size_t rows = 14; rows < 35; rows += 14) {
1072 GAvgPoolMicrokernelTester()
1073 .rows(rows)
1074 .channels(channels)
1075 .input_stride(79)
1076 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
1077 }
1078 }
1079 }
1080 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1081
1082
1083 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_eq_8_2pass_fulltile)1084 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_fulltile) {
1085 TEST_REQUIRES_ARM_NEON_V8;
1086 GAvgPoolMicrokernelTester()
1087 .rows(14)
1088 .channels(8)
1089 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1090 }
1091
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_eq_8_2pass_fulltile_with_input_stride)1092 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
1093 TEST_REQUIRES_ARM_NEON_V8;
1094 GAvgPoolMicrokernelTester()
1095 .rows(14)
1096 .channels(8)
1097 .input_stride(11)
1098 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1099 }
1100
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_eq_8_2pass_fulltile_with_qmax)1101 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_fulltile_with_qmax) {
1102 TEST_REQUIRES_ARM_NEON_V8;
1103 GAvgPoolMicrokernelTester()
1104 .rows(14)
1105 .channels(8)
1106 .qmax(128)
1107 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1108 }
1109
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_eq_8_2pass_fulltile_with_qmin)1110 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_fulltile_with_qmin) {
1111 TEST_REQUIRES_ARM_NEON_V8;
1112 GAvgPoolMicrokernelTester()
1113 .rows(14)
1114 .channels(8)
1115 .qmin(128)
1116 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1117 }
1118
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_eq_8_2pass_subtile)1119 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_subtile) {
1120 TEST_REQUIRES_ARM_NEON_V8;
1121 for (size_t rows = 8; rows < 14; rows++) {
1122 GAvgPoolMicrokernelTester()
1123 .rows(rows)
1124 .channels(8)
1125 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1126 }
1127 }
1128
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_eq_8_2pass_subtile_with_input_stride)1129 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_subtile_with_input_stride) {
1130 TEST_REQUIRES_ARM_NEON_V8;
1131 for (size_t rows = 8; rows < 14; rows++) {
1132 GAvgPoolMicrokernelTester()
1133 .rows(rows)
1134 .channels(8)
1135 .input_stride(11)
1136 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1137 }
1138 }
1139
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_eq_8_multipass_fulltile)1140 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_multipass_fulltile) {
1141 TEST_REQUIRES_ARM_NEON_V8;
1142 for (size_t rows = 14; rows <= 35; rows += 7) {
1143 GAvgPoolMicrokernelTester()
1144 .rows(rows)
1145 .channels(8)
1146 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1147 }
1148 }
1149
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_eq_8_multipass_fulltile_with_input_stride)1150 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
1151 TEST_REQUIRES_ARM_NEON_V8;
1152 for (size_t rows = 14; rows <= 35; rows += 7) {
1153 GAvgPoolMicrokernelTester()
1154 .rows(rows)
1155 .channels(8)
1156 .input_stride(11)
1157 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1158 }
1159 }
1160
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_div_8_2pass_fulltile)1161 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_div_8_2pass_fulltile) {
1162 TEST_REQUIRES_ARM_NEON_V8;
1163 for (size_t channels = 16; channels < 64; channels += 8) {
1164 GAvgPoolMicrokernelTester()
1165 .rows(14)
1166 .channels(channels)
1167 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1168 }
1169 }
1170
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_div_8_2pass_subtile)1171 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_div_8_2pass_subtile) {
1172 TEST_REQUIRES_ARM_NEON_V8;
1173 for (size_t channels = 16; channels < 64; channels += 8) {
1174 for (size_t rows = 8; rows < 14; rows++) {
1175 GAvgPoolMicrokernelTester()
1176 .rows(rows)
1177 .channels(channels)
1178 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1179 }
1180 }
1181 }
1182
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_div_8_multipass_fulltile)1183 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_div_8_multipass_fulltile) {
1184 TEST_REQUIRES_ARM_NEON_V8;
1185 for (size_t channels = 16; channels < 64; channels += 8) {
1186 for (size_t rows = 14; rows <= 35; rows += 7) {
1187 GAvgPoolMicrokernelTester()
1188 .rows(rows)
1189 .channels(channels)
1190 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1191 }
1192 }
1193 }
1194
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_div_8_multipass_fulltile_with_input_stride)1195 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_div_8_multipass_fulltile_with_input_stride) {
1196 TEST_REQUIRES_ARM_NEON_V8;
1197 for (size_t channels = 16; channels < 64; channels += 8) {
1198 for (size_t rows = 14; rows <= 35; rows += 7) {
1199 GAvgPoolMicrokernelTester()
1200 .rows(rows)
1201 .channels(channels)
1202 .input_stride(131)
1203 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1204 }
1205 }
1206 }
1207
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_lt_8_2pass_fulltile)1208 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_2pass_fulltile) {
1209 TEST_REQUIRES_ARM_NEON_V8;
1210 for (size_t channels = 1; channels < 8; channels++) {
1211 GAvgPoolMicrokernelTester()
1212 .rows(14)
1213 .channels(channels)
1214 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1215 }
1216 }
1217
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_lt_8_2pass_fulltile_with_qmax)1218 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_2pass_fulltile_with_qmax) {
1219 TEST_REQUIRES_ARM_NEON_V8;
1220 for (size_t channels = 1; channels < 8; channels++) {
1221 GAvgPoolMicrokernelTester()
1222 .rows(14)
1223 .channels(channels)
1224 .qmax(128)
1225 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1226 }
1227 }
1228
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_lt_8_2pass_fulltile_with_qmin)1229 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_2pass_fulltile_with_qmin) {
1230 TEST_REQUIRES_ARM_NEON_V8;
1231 for (size_t channels = 1; channels < 8; channels++) {
1232 GAvgPoolMicrokernelTester()
1233 .rows(14)
1234 .channels(channels)
1235 .qmin(128)
1236 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1237 }
1238 }
1239
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_lt_8_2pass_subtile)1240 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_2pass_subtile) {
1241 TEST_REQUIRES_ARM_NEON_V8;
1242 for (size_t channels = 1; channels < 8; channels++) {
1243 for (size_t rows = 8; rows < 14; rows++) {
1244 GAvgPoolMicrokernelTester()
1245 .rows(rows)
1246 .channels(channels)
1247 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1248 }
1249 }
1250 }
1251
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_lt_8_multipass_fulltile)1252 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_multipass_fulltile) {
1253 TEST_REQUIRES_ARM_NEON_V8;
1254 for (size_t channels = 1; channels < 8; channels++) {
1255 for (size_t rows = 14; rows <= 35; rows += 7) {
1256 GAvgPoolMicrokernelTester()
1257 .rows(rows)
1258 .channels(channels)
1259 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1260 }
1261 }
1262 }
1263
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_lt_8_multipass_fulltile_with_input_stride)1264 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
1265 TEST_REQUIRES_ARM_NEON_V8;
1266 for (size_t channels = 1; channels < 8; channels++) {
1267 for (size_t rows = 14; rows <= 35; rows += 7) {
1268 GAvgPoolMicrokernelTester()
1269 .rows(rows)
1270 .channels(channels)
1271 .input_stride(11)
1272 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1273 }
1274 }
1275 }
1276
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_gt_8_2pass_fulltile)1277 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_2pass_fulltile) {
1278 TEST_REQUIRES_ARM_NEON_V8;
1279 for (size_t channels = 9; channels < 16; channels++) {
1280 GAvgPoolMicrokernelTester()
1281 .rows(14)
1282 .channels(channels)
1283 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1284 }
1285 }
1286
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_gt_8_2pass_fulltile_with_qmax)1287 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_2pass_fulltile_with_qmax) {
1288 TEST_REQUIRES_ARM_NEON_V8;
1289 for (size_t channels = 9; channels < 16; channels++) {
1290 GAvgPoolMicrokernelTester()
1291 .rows(14)
1292 .channels(channels)
1293 .qmax(128)
1294 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1295 }
1296 }
1297
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_gt_8_2pass_fulltile_with_qmin)1298 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_2pass_fulltile_with_qmin) {
1299 TEST_REQUIRES_ARM_NEON_V8;
1300 for (size_t channels = 9; channels < 16; channels++) {
1301 GAvgPoolMicrokernelTester()
1302 .rows(14)
1303 .channels(channels)
1304 .qmin(128)
1305 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1306 }
1307 }
1308
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_gt_8_2pass_subtile)1309 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_2pass_subtile) {
1310 TEST_REQUIRES_ARM_NEON_V8;
1311 for (size_t channels = 9; channels < 16; channels++) {
1312 for (size_t rows = 8; rows < 14; rows++) {
1313 GAvgPoolMicrokernelTester()
1314 .rows(rows)
1315 .channels(channels)
1316 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1317 }
1318 }
1319 }
1320
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_gt_8_multipass_fulltile)1321 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_multipass_fulltile) {
1322 TEST_REQUIRES_ARM_NEON_V8;
1323 for (size_t channels = 9; channels < 16; channels++) {
1324 for (size_t rows = 14; rows < 35; rows += 14) {
1325 GAvgPoolMicrokernelTester()
1326 .rows(rows)
1327 .channels(channels)
1328 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1329 }
1330 }
1331 }
1332
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8,channels_gt_8_multipass_fulltile_with_input_stride)1333 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
1334 TEST_REQUIRES_ARM_NEON_V8;
1335 for (size_t channels = 9; channels < 16; channels++) {
1336 for (size_t rows = 14; rows < 35; rows += 14) {
1337 GAvgPoolMicrokernelTester()
1338 .rows(rows)
1339 .channels(channels)
1340 .input_stride(29)
1341 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1342 }
1343 }
1344 }
1345 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1346
1347
1348 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_eq_16_2pass_fulltile)1349 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_fulltile) {
1350 TEST_REQUIRES_ARM_NEON_V8;
1351 GAvgPoolMicrokernelTester()
1352 .rows(14)
1353 .channels(16)
1354 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1355 }
1356
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_eq_16_2pass_fulltile_with_input_stride)1357 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
1358 TEST_REQUIRES_ARM_NEON_V8;
1359 GAvgPoolMicrokernelTester()
1360 .rows(14)
1361 .channels(16)
1362 .input_stride(19)
1363 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1364 }
1365
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_eq_16_2pass_fulltile_with_qmax)1366 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_fulltile_with_qmax) {
1367 TEST_REQUIRES_ARM_NEON_V8;
1368 GAvgPoolMicrokernelTester()
1369 .rows(14)
1370 .channels(16)
1371 .qmax(128)
1372 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1373 }
1374
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_eq_16_2pass_fulltile_with_qmin)1375 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_fulltile_with_qmin) {
1376 TEST_REQUIRES_ARM_NEON_V8;
1377 GAvgPoolMicrokernelTester()
1378 .rows(14)
1379 .channels(16)
1380 .qmin(128)
1381 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1382 }
1383
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_eq_16_2pass_subtile)1384 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_subtile) {
1385 TEST_REQUIRES_ARM_NEON_V8;
1386 for (size_t rows = 8; rows < 14; rows++) {
1387 GAvgPoolMicrokernelTester()
1388 .rows(rows)
1389 .channels(16)
1390 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1391 }
1392 }
1393
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_eq_16_2pass_subtile_with_input_stride)1394 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_subtile_with_input_stride) {
1395 TEST_REQUIRES_ARM_NEON_V8;
1396 for (size_t rows = 8; rows < 14; rows++) {
1397 GAvgPoolMicrokernelTester()
1398 .rows(rows)
1399 .channels(16)
1400 .input_stride(19)
1401 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1402 }
1403 }
1404
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_eq_16_multipass_fulltile)1405 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_multipass_fulltile) {
1406 TEST_REQUIRES_ARM_NEON_V8;
1407 for (size_t rows = 14; rows <= 35; rows += 7) {
1408 GAvgPoolMicrokernelTester()
1409 .rows(rows)
1410 .channels(16)
1411 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1412 }
1413 }
1414
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_eq_16_multipass_fulltile_with_input_stride)1415 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
1416 TEST_REQUIRES_ARM_NEON_V8;
1417 for (size_t rows = 14; rows <= 35; rows += 7) {
1418 GAvgPoolMicrokernelTester()
1419 .rows(rows)
1420 .channels(16)
1421 .input_stride(19)
1422 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1423 }
1424 }
1425
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_div_16_2pass_fulltile)1426 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_div_16_2pass_fulltile) {
1427 TEST_REQUIRES_ARM_NEON_V8;
1428 for (size_t channels = 32; channels < 128; channels += 16) {
1429 GAvgPoolMicrokernelTester()
1430 .rows(14)
1431 .channels(channels)
1432 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1433 }
1434 }
1435
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_div_16_2pass_subtile)1436 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_div_16_2pass_subtile) {
1437 TEST_REQUIRES_ARM_NEON_V8;
1438 for (size_t channels = 32; channels < 128; channels += 16) {
1439 for (size_t rows = 8; rows < 14; rows++) {
1440 GAvgPoolMicrokernelTester()
1441 .rows(rows)
1442 .channels(channels)
1443 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1444 }
1445 }
1446 }
1447
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_div_16_multipass_fulltile)1448 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_div_16_multipass_fulltile) {
1449 TEST_REQUIRES_ARM_NEON_V8;
1450 for (size_t channels = 32; channels < 128; channels += 16) {
1451 for (size_t rows = 14; rows <= 35; rows += 7) {
1452 GAvgPoolMicrokernelTester()
1453 .rows(rows)
1454 .channels(channels)
1455 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1456 }
1457 }
1458 }
1459
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_div_16_multipass_fulltile_with_input_stride)1460 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_div_16_multipass_fulltile_with_input_stride) {
1461 TEST_REQUIRES_ARM_NEON_V8;
1462 for (size_t channels = 32; channels < 128; channels += 16) {
1463 for (size_t rows = 14; rows <= 35; rows += 7) {
1464 GAvgPoolMicrokernelTester()
1465 .rows(rows)
1466 .channels(channels)
1467 .input_stride(263)
1468 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1469 }
1470 }
1471 }
1472
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_lt_16_2pass_fulltile)1473 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_2pass_fulltile) {
1474 TEST_REQUIRES_ARM_NEON_V8;
1475 for (size_t channels = 1; channels < 16; channels++) {
1476 GAvgPoolMicrokernelTester()
1477 .rows(14)
1478 .channels(channels)
1479 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1480 }
1481 }
1482
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_lt_16_2pass_fulltile_with_qmax)1483 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_2pass_fulltile_with_qmax) {
1484 TEST_REQUIRES_ARM_NEON_V8;
1485 for (size_t channels = 1; channels < 16; channels++) {
1486 GAvgPoolMicrokernelTester()
1487 .rows(14)
1488 .channels(channels)
1489 .qmax(128)
1490 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1491 }
1492 }
1493
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_lt_16_2pass_fulltile_with_qmin)1494 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_2pass_fulltile_with_qmin) {
1495 TEST_REQUIRES_ARM_NEON_V8;
1496 for (size_t channels = 1; channels < 16; channels++) {
1497 GAvgPoolMicrokernelTester()
1498 .rows(14)
1499 .channels(channels)
1500 .qmin(128)
1501 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1502 }
1503 }
1504
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_lt_16_2pass_subtile)1505 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_2pass_subtile) {
1506 TEST_REQUIRES_ARM_NEON_V8;
1507 for (size_t channels = 1; channels < 16; channels++) {
1508 for (size_t rows = 8; rows < 14; rows++) {
1509 GAvgPoolMicrokernelTester()
1510 .rows(rows)
1511 .channels(channels)
1512 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1513 }
1514 }
1515 }
1516
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_lt_16_multipass_fulltile)1517 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_multipass_fulltile) {
1518 TEST_REQUIRES_ARM_NEON_V8;
1519 for (size_t channels = 1; channels < 16; channels++) {
1520 for (size_t rows = 14; rows <= 35; rows += 7) {
1521 GAvgPoolMicrokernelTester()
1522 .rows(rows)
1523 .channels(channels)
1524 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1525 }
1526 }
1527 }
1528
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_lt_16_multipass_fulltile_with_input_stride)1529 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
1530 TEST_REQUIRES_ARM_NEON_V8;
1531 for (size_t channels = 1; channels < 16; channels++) {
1532 for (size_t rows = 14; rows <= 35; rows += 7) {
1533 GAvgPoolMicrokernelTester()
1534 .rows(rows)
1535 .channels(channels)
1536 .input_stride(19)
1537 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1538 }
1539 }
1540 }
1541
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_gt_16_2pass_fulltile)1542 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_2pass_fulltile) {
1543 TEST_REQUIRES_ARM_NEON_V8;
1544 for (size_t channels = 17; channels < 32; channels++) {
1545 GAvgPoolMicrokernelTester()
1546 .rows(14)
1547 .channels(channels)
1548 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1549 }
1550 }
1551
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_gt_16_2pass_fulltile_with_qmax)1552 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_2pass_fulltile_with_qmax) {
1553 TEST_REQUIRES_ARM_NEON_V8;
1554 for (size_t channels = 17; channels < 32; channels++) {
1555 GAvgPoolMicrokernelTester()
1556 .rows(14)
1557 .channels(channels)
1558 .qmax(128)
1559 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1560 }
1561 }
1562
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_gt_16_2pass_fulltile_with_qmin)1563 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_2pass_fulltile_with_qmin) {
1564 TEST_REQUIRES_ARM_NEON_V8;
1565 for (size_t channels = 17; channels < 32; channels++) {
1566 GAvgPoolMicrokernelTester()
1567 .rows(14)
1568 .channels(channels)
1569 .qmin(128)
1570 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1571 }
1572 }
1573
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_gt_16_2pass_subtile)1574 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_2pass_subtile) {
1575 TEST_REQUIRES_ARM_NEON_V8;
1576 for (size_t channels = 17; channels < 32; channels++) {
1577 for (size_t rows = 8; rows < 14; rows++) {
1578 GAvgPoolMicrokernelTester()
1579 .rows(rows)
1580 .channels(channels)
1581 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1582 }
1583 }
1584 }
1585
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_gt_16_multipass_fulltile)1586 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_multipass_fulltile) {
1587 TEST_REQUIRES_ARM_NEON_V8;
1588 for (size_t channels = 17; channels < 32; channels++) {
1589 for (size_t rows = 14; rows < 35; rows += 14) {
1590 GAvgPoolMicrokernelTester()
1591 .rows(rows)
1592 .channels(channels)
1593 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1594 }
1595 }
1596 }
1597
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16,channels_gt_16_multipass_fulltile_with_input_stride)1598 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
1599 TEST_REQUIRES_ARM_NEON_V8;
1600 for (size_t channels = 17; channels < 32; channels++) {
1601 for (size_t rows = 14; rows < 35; rows += 14) {
1602 GAvgPoolMicrokernelTester()
1603 .rows(rows)
1604 .channels(channels)
1605 .input_stride(47)
1606 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1607 }
1608 }
1609 }
1610 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1611
1612
1613 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_eq_24_2pass_fulltile)1614 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_fulltile) {
1615 TEST_REQUIRES_ARM_NEON_V8;
1616 GAvgPoolMicrokernelTester()
1617 .rows(14)
1618 .channels(24)
1619 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1620 }
1621
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_eq_24_2pass_fulltile_with_input_stride)1622 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
1623 TEST_REQUIRES_ARM_NEON_V8;
1624 GAvgPoolMicrokernelTester()
1625 .rows(14)
1626 .channels(24)
1627 .input_stride(29)
1628 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1629 }
1630
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_eq_24_2pass_fulltile_with_qmax)1631 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_fulltile_with_qmax) {
1632 TEST_REQUIRES_ARM_NEON_V8;
1633 GAvgPoolMicrokernelTester()
1634 .rows(14)
1635 .channels(24)
1636 .qmax(128)
1637 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1638 }
1639
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_eq_24_2pass_fulltile_with_qmin)1640 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_fulltile_with_qmin) {
1641 TEST_REQUIRES_ARM_NEON_V8;
1642 GAvgPoolMicrokernelTester()
1643 .rows(14)
1644 .channels(24)
1645 .qmin(128)
1646 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1647 }
1648
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_eq_24_2pass_subtile)1649 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_subtile) {
1650 TEST_REQUIRES_ARM_NEON_V8;
1651 for (size_t rows = 8; rows < 14; rows++) {
1652 GAvgPoolMicrokernelTester()
1653 .rows(rows)
1654 .channels(24)
1655 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1656 }
1657 }
1658
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_eq_24_2pass_subtile_with_input_stride)1659 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_subtile_with_input_stride) {
1660 TEST_REQUIRES_ARM_NEON_V8;
1661 for (size_t rows = 8; rows < 14; rows++) {
1662 GAvgPoolMicrokernelTester()
1663 .rows(rows)
1664 .channels(24)
1665 .input_stride(29)
1666 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1667 }
1668 }
1669
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_eq_24_multipass_fulltile)1670 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_multipass_fulltile) {
1671 TEST_REQUIRES_ARM_NEON_V8;
1672 for (size_t rows = 14; rows <= 35; rows += 7) {
1673 GAvgPoolMicrokernelTester()
1674 .rows(rows)
1675 .channels(24)
1676 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1677 }
1678 }
1679
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_eq_24_multipass_fulltile_with_input_stride)1680 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
1681 TEST_REQUIRES_ARM_NEON_V8;
1682 for (size_t rows = 14; rows <= 35; rows += 7) {
1683 GAvgPoolMicrokernelTester()
1684 .rows(rows)
1685 .channels(24)
1686 .input_stride(29)
1687 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1688 }
1689 }
1690
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_div_24_2pass_fulltile)1691 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_div_24_2pass_fulltile) {
1692 TEST_REQUIRES_ARM_NEON_V8;
1693 for (size_t channels = 48; channels < 192; channels += 24) {
1694 GAvgPoolMicrokernelTester()
1695 .rows(14)
1696 .channels(channels)
1697 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1698 }
1699 }
1700
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_div_24_2pass_subtile)1701 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_div_24_2pass_subtile) {
1702 TEST_REQUIRES_ARM_NEON_V8;
1703 for (size_t channels = 48; channels < 192; channels += 24) {
1704 for (size_t rows = 8; rows < 14; rows++) {
1705 GAvgPoolMicrokernelTester()
1706 .rows(rows)
1707 .channels(channels)
1708 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1709 }
1710 }
1711 }
1712
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_div_24_multipass_fulltile)1713 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_div_24_multipass_fulltile) {
1714 TEST_REQUIRES_ARM_NEON_V8;
1715 for (size_t channels = 48; channels < 192; channels += 24) {
1716 for (size_t rows = 14; rows <= 35; rows += 7) {
1717 GAvgPoolMicrokernelTester()
1718 .rows(rows)
1719 .channels(channels)
1720 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1721 }
1722 }
1723 }
1724
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_div_24_multipass_fulltile_with_input_stride)1725 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_div_24_multipass_fulltile_with_input_stride) {
1726 TEST_REQUIRES_ARM_NEON_V8;
1727 for (size_t channels = 48; channels < 192; channels += 24) {
1728 for (size_t rows = 14; rows <= 35; rows += 7) {
1729 GAvgPoolMicrokernelTester()
1730 .rows(rows)
1731 .channels(channels)
1732 .input_stride(389)
1733 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1734 }
1735 }
1736 }
1737
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_lt_24_2pass_fulltile)1738 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_2pass_fulltile) {
1739 TEST_REQUIRES_ARM_NEON_V8;
1740 for (size_t channels = 1; channels < 24; channels++) {
1741 GAvgPoolMicrokernelTester()
1742 .rows(14)
1743 .channels(channels)
1744 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1745 }
1746 }
1747
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_lt_24_2pass_fulltile_with_qmax)1748 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_2pass_fulltile_with_qmax) {
1749 TEST_REQUIRES_ARM_NEON_V8;
1750 for (size_t channels = 1; channels < 24; channels++) {
1751 GAvgPoolMicrokernelTester()
1752 .rows(14)
1753 .channels(channels)
1754 .qmax(128)
1755 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1756 }
1757 }
1758
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_lt_24_2pass_fulltile_with_qmin)1759 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_2pass_fulltile_with_qmin) {
1760 TEST_REQUIRES_ARM_NEON_V8;
1761 for (size_t channels = 1; channels < 24; channels++) {
1762 GAvgPoolMicrokernelTester()
1763 .rows(14)
1764 .channels(channels)
1765 .qmin(128)
1766 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1767 }
1768 }
1769
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_lt_24_2pass_subtile)1770 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_2pass_subtile) {
1771 TEST_REQUIRES_ARM_NEON_V8;
1772 for (size_t channels = 1; channels < 24; channels++) {
1773 for (size_t rows = 8; rows < 14; rows++) {
1774 GAvgPoolMicrokernelTester()
1775 .rows(rows)
1776 .channels(channels)
1777 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1778 }
1779 }
1780 }
1781
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_lt_24_multipass_fulltile)1782 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_multipass_fulltile) {
1783 TEST_REQUIRES_ARM_NEON_V8;
1784 for (size_t channels = 1; channels < 24; channels++) {
1785 for (size_t rows = 14; rows <= 35; rows += 7) {
1786 GAvgPoolMicrokernelTester()
1787 .rows(rows)
1788 .channels(channels)
1789 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1790 }
1791 }
1792 }
1793
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_lt_24_multipass_fulltile_with_input_stride)1794 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
1795 TEST_REQUIRES_ARM_NEON_V8;
1796 for (size_t channels = 1; channels < 24; channels++) {
1797 for (size_t rows = 14; rows <= 35; rows += 7) {
1798 GAvgPoolMicrokernelTester()
1799 .rows(rows)
1800 .channels(channels)
1801 .input_stride(29)
1802 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1803 }
1804 }
1805 }
1806
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_gt_24_2pass_fulltile)1807 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_2pass_fulltile) {
1808 TEST_REQUIRES_ARM_NEON_V8;
1809 for (size_t channels = 25; channels < 48; channels++) {
1810 GAvgPoolMicrokernelTester()
1811 .rows(14)
1812 .channels(channels)
1813 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1814 }
1815 }
1816
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_gt_24_2pass_fulltile_with_qmax)1817 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_2pass_fulltile_with_qmax) {
1818 TEST_REQUIRES_ARM_NEON_V8;
1819 for (size_t channels = 25; channels < 48; channels++) {
1820 GAvgPoolMicrokernelTester()
1821 .rows(14)
1822 .channels(channels)
1823 .qmax(128)
1824 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1825 }
1826 }
1827
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_gt_24_2pass_fulltile_with_qmin)1828 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_2pass_fulltile_with_qmin) {
1829 TEST_REQUIRES_ARM_NEON_V8;
1830 for (size_t channels = 25; channels < 48; channels++) {
1831 GAvgPoolMicrokernelTester()
1832 .rows(14)
1833 .channels(channels)
1834 .qmin(128)
1835 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1836 }
1837 }
1838
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_gt_24_2pass_subtile)1839 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_2pass_subtile) {
1840 TEST_REQUIRES_ARM_NEON_V8;
1841 for (size_t channels = 25; channels < 48; channels++) {
1842 for (size_t rows = 8; rows < 14; rows++) {
1843 GAvgPoolMicrokernelTester()
1844 .rows(rows)
1845 .channels(channels)
1846 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1847 }
1848 }
1849 }
1850
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_gt_24_multipass_fulltile)1851 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_multipass_fulltile) {
1852 TEST_REQUIRES_ARM_NEON_V8;
1853 for (size_t channels = 25; channels < 48; channels++) {
1854 for (size_t rows = 14; rows < 35; rows += 14) {
1855 GAvgPoolMicrokernelTester()
1856 .rows(rows)
1857 .channels(channels)
1858 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1859 }
1860 }
1861 }
1862
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24,channels_gt_24_multipass_fulltile_with_input_stride)1863 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
1864 TEST_REQUIRES_ARM_NEON_V8;
1865 for (size_t channels = 25; channels < 48; channels++) {
1866 for (size_t rows = 14; rows < 35; rows += 14) {
1867 GAvgPoolMicrokernelTester()
1868 .rows(rows)
1869 .channels(channels)
1870 .input_stride(61)
1871 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1872 }
1873 }
1874 }
1875 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1876
1877
1878 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_eq_32_2pass_fulltile)1879 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_fulltile) {
1880 TEST_REQUIRES_ARM_NEON_V8;
1881 GAvgPoolMicrokernelTester()
1882 .rows(14)
1883 .channels(32)
1884 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1885 }
1886
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_eq_32_2pass_fulltile_with_input_stride)1887 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_fulltile_with_input_stride) {
1888 TEST_REQUIRES_ARM_NEON_V8;
1889 GAvgPoolMicrokernelTester()
1890 .rows(14)
1891 .channels(32)
1892 .input_stride(37)
1893 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1894 }
1895
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_eq_32_2pass_fulltile_with_qmax)1896 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_fulltile_with_qmax) {
1897 TEST_REQUIRES_ARM_NEON_V8;
1898 GAvgPoolMicrokernelTester()
1899 .rows(14)
1900 .channels(32)
1901 .qmax(128)
1902 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1903 }
1904
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_eq_32_2pass_fulltile_with_qmin)1905 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_fulltile_with_qmin) {
1906 TEST_REQUIRES_ARM_NEON_V8;
1907 GAvgPoolMicrokernelTester()
1908 .rows(14)
1909 .channels(32)
1910 .qmin(128)
1911 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1912 }
1913
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_eq_32_2pass_subtile)1914 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_subtile) {
1915 TEST_REQUIRES_ARM_NEON_V8;
1916 for (size_t rows = 8; rows < 14; rows++) {
1917 GAvgPoolMicrokernelTester()
1918 .rows(rows)
1919 .channels(32)
1920 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1921 }
1922 }
1923
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_eq_32_2pass_subtile_with_input_stride)1924 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_subtile_with_input_stride) {
1925 TEST_REQUIRES_ARM_NEON_V8;
1926 for (size_t rows = 8; rows < 14; rows++) {
1927 GAvgPoolMicrokernelTester()
1928 .rows(rows)
1929 .channels(32)
1930 .input_stride(37)
1931 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1932 }
1933 }
1934
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_eq_32_multipass_fulltile)1935 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_multipass_fulltile) {
1936 TEST_REQUIRES_ARM_NEON_V8;
1937 for (size_t rows = 14; rows <= 35; rows += 7) {
1938 GAvgPoolMicrokernelTester()
1939 .rows(rows)
1940 .channels(32)
1941 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1942 }
1943 }
1944
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_eq_32_multipass_fulltile_with_input_stride)1945 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_multipass_fulltile_with_input_stride) {
1946 TEST_REQUIRES_ARM_NEON_V8;
1947 for (size_t rows = 14; rows <= 35; rows += 7) {
1948 GAvgPoolMicrokernelTester()
1949 .rows(rows)
1950 .channels(32)
1951 .input_stride(37)
1952 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1953 }
1954 }
1955
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_div_32_2pass_fulltile)1956 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_div_32_2pass_fulltile) {
1957 TEST_REQUIRES_ARM_NEON_V8;
1958 for (size_t channels = 64; channels < 256; channels += 32) {
1959 GAvgPoolMicrokernelTester()
1960 .rows(14)
1961 .channels(channels)
1962 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1963 }
1964 }
1965
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_div_32_2pass_subtile)1966 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_div_32_2pass_subtile) {
1967 TEST_REQUIRES_ARM_NEON_V8;
1968 for (size_t channels = 64; channels < 256; channels += 32) {
1969 for (size_t rows = 8; rows < 14; rows++) {
1970 GAvgPoolMicrokernelTester()
1971 .rows(rows)
1972 .channels(channels)
1973 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1974 }
1975 }
1976 }
1977
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_div_32_multipass_fulltile)1978 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_div_32_multipass_fulltile) {
1979 TEST_REQUIRES_ARM_NEON_V8;
1980 for (size_t channels = 64; channels < 256; channels += 32) {
1981 for (size_t rows = 14; rows <= 35; rows += 7) {
1982 GAvgPoolMicrokernelTester()
1983 .rows(rows)
1984 .channels(channels)
1985 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1986 }
1987 }
1988 }
1989
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_div_32_multipass_fulltile_with_input_stride)1990 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_div_32_multipass_fulltile_with_input_stride) {
1991 TEST_REQUIRES_ARM_NEON_V8;
1992 for (size_t channels = 64; channels < 256; channels += 32) {
1993 for (size_t rows = 14; rows <= 35; rows += 7) {
1994 GAvgPoolMicrokernelTester()
1995 .rows(rows)
1996 .channels(channels)
1997 .input_stride(521)
1998 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
1999 }
2000 }
2001 }
2002
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_lt_32_2pass_fulltile)2003 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_2pass_fulltile) {
2004 TEST_REQUIRES_ARM_NEON_V8;
2005 for (size_t channels = 1; channels < 32; channels++) {
2006 GAvgPoolMicrokernelTester()
2007 .rows(14)
2008 .channels(channels)
2009 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2010 }
2011 }
2012
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_lt_32_2pass_fulltile_with_qmax)2013 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_2pass_fulltile_with_qmax) {
2014 TEST_REQUIRES_ARM_NEON_V8;
2015 for (size_t channels = 1; channels < 32; channels++) {
2016 GAvgPoolMicrokernelTester()
2017 .rows(14)
2018 .channels(channels)
2019 .qmax(128)
2020 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2021 }
2022 }
2023
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_lt_32_2pass_fulltile_with_qmin)2024 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_2pass_fulltile_with_qmin) {
2025 TEST_REQUIRES_ARM_NEON_V8;
2026 for (size_t channels = 1; channels < 32; channels++) {
2027 GAvgPoolMicrokernelTester()
2028 .rows(14)
2029 .channels(channels)
2030 .qmin(128)
2031 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2032 }
2033 }
2034
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_lt_32_2pass_subtile)2035 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_2pass_subtile) {
2036 TEST_REQUIRES_ARM_NEON_V8;
2037 for (size_t channels = 1; channels < 32; channels++) {
2038 for (size_t rows = 8; rows < 14; rows++) {
2039 GAvgPoolMicrokernelTester()
2040 .rows(rows)
2041 .channels(channels)
2042 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2043 }
2044 }
2045 }
2046
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_lt_32_multipass_fulltile)2047 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_multipass_fulltile) {
2048 TEST_REQUIRES_ARM_NEON_V8;
2049 for (size_t channels = 1; channels < 32; channels++) {
2050 for (size_t rows = 14; rows <= 35; rows += 7) {
2051 GAvgPoolMicrokernelTester()
2052 .rows(rows)
2053 .channels(channels)
2054 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2055 }
2056 }
2057 }
2058
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_lt_32_multipass_fulltile_with_input_stride)2059 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_multipass_fulltile_with_input_stride) {
2060 TEST_REQUIRES_ARM_NEON_V8;
2061 for (size_t channels = 1; channels < 32; channels++) {
2062 for (size_t rows = 14; rows <= 35; rows += 7) {
2063 GAvgPoolMicrokernelTester()
2064 .rows(rows)
2065 .channels(channels)
2066 .input_stride(37)
2067 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2068 }
2069 }
2070 }
2071
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_gt_32_2pass_fulltile)2072 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_2pass_fulltile) {
2073 TEST_REQUIRES_ARM_NEON_V8;
2074 for (size_t channels = 33; channels < 64; channels++) {
2075 GAvgPoolMicrokernelTester()
2076 .rows(14)
2077 .channels(channels)
2078 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2079 }
2080 }
2081
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_gt_32_2pass_fulltile_with_qmax)2082 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_2pass_fulltile_with_qmax) {
2083 TEST_REQUIRES_ARM_NEON_V8;
2084 for (size_t channels = 33; channels < 64; channels++) {
2085 GAvgPoolMicrokernelTester()
2086 .rows(14)
2087 .channels(channels)
2088 .qmax(128)
2089 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2090 }
2091 }
2092
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_gt_32_2pass_fulltile_with_qmin)2093 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_2pass_fulltile_with_qmin) {
2094 TEST_REQUIRES_ARM_NEON_V8;
2095 for (size_t channels = 33; channels < 64; channels++) {
2096 GAvgPoolMicrokernelTester()
2097 .rows(14)
2098 .channels(channels)
2099 .qmin(128)
2100 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2101 }
2102 }
2103
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_gt_32_2pass_subtile)2104 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_2pass_subtile) {
2105 TEST_REQUIRES_ARM_NEON_V8;
2106 for (size_t channels = 33; channels < 64; channels++) {
2107 for (size_t rows = 8; rows < 14; rows++) {
2108 GAvgPoolMicrokernelTester()
2109 .rows(rows)
2110 .channels(channels)
2111 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2112 }
2113 }
2114 }
2115
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_gt_32_multipass_fulltile)2116 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_multipass_fulltile) {
2117 TEST_REQUIRES_ARM_NEON_V8;
2118 for (size_t channels = 33; channels < 64; channels++) {
2119 for (size_t rows = 14; rows < 35; rows += 14) {
2120 GAvgPoolMicrokernelTester()
2121 .rows(rows)
2122 .channels(channels)
2123 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2124 }
2125 }
2126 }
2127
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32,channels_gt_32_multipass_fulltile_with_input_stride)2128 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_multipass_fulltile_with_input_stride) {
2129 TEST_REQUIRES_ARM_NEON_V8;
2130 for (size_t channels = 33; channels < 64; channels++) {
2131 for (size_t rows = 14; rows < 35; rows += 14) {
2132 GAvgPoolMicrokernelTester()
2133 .rows(rows)
2134 .channels(channels)
2135 .input_stride(79)
2136 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2137 }
2138 }
2139 }
2140 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2141
2142
2143 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_eq_8_fulltile)2144 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_fulltile) {
2145 TEST_REQUIRES_ARM_NEON;
2146 GAvgPoolMicrokernelTester()
2147 .rows(7)
2148 .channels(8)
2149 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2150 }
2151
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_eq_8_subtile)2152 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_subtile) {
2153 TEST_REQUIRES_ARM_NEON;
2154 for (size_t rows = 1; rows < 7; rows++) {
2155 GAvgPoolMicrokernelTester()
2156 .rows(rows)
2157 .channels(8)
2158 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2159 }
2160 }
2161
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_eq_8_fulltile_with_input_stride)2162 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_fulltile_with_input_stride) {
2163 TEST_REQUIRES_ARM_NEON;
2164 GAvgPoolMicrokernelTester()
2165 .rows(7)
2166 .channels(8)
2167 .input_stride(11)
2168 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2169 }
2170
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_eq_8_fulltile_with_qmax)2171 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_fulltile_with_qmax) {
2172 TEST_REQUIRES_ARM_NEON;
2173 GAvgPoolMicrokernelTester()
2174 .rows(7)
2175 .channels(8)
2176 .qmax(128)
2177 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2178 }
2179
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_eq_8_fulltile_with_qmin)2180 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_fulltile_with_qmin) {
2181 TEST_REQUIRES_ARM_NEON;
2182 GAvgPoolMicrokernelTester()
2183 .rows(7)
2184 .channels(8)
2185 .qmin(128)
2186 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2187 }
2188
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_div_8_fulltile)2189 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_div_8_fulltile) {
2190 TEST_REQUIRES_ARM_NEON;
2191 for (size_t channels = 16; channels < 64; channels += 8) {
2192 GAvgPoolMicrokernelTester()
2193 .rows(7)
2194 .channels(channels)
2195 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2196 }
2197 }
2198
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_div_8_subtile)2199 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_div_8_subtile) {
2200 TEST_REQUIRES_ARM_NEON;
2201 for (size_t channels = 16; channels < 64; channels += 8) {
2202 for (size_t rows = 1; rows < 7; rows++) {
2203 GAvgPoolMicrokernelTester()
2204 .rows(rows)
2205 .channels(channels)
2206 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2207 }
2208 }
2209 }
2210
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_lt_8_fulltile)2211 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_lt_8_fulltile) {
2212 TEST_REQUIRES_ARM_NEON;
2213 for (size_t channels = 1; channels < 8; channels++) {
2214 GAvgPoolMicrokernelTester()
2215 .rows(7)
2216 .channels(channels)
2217 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2218 }
2219 }
2220
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_lt_8_subtile)2221 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_lt_8_subtile) {
2222 TEST_REQUIRES_ARM_NEON;
2223 for (size_t channels = 1; channels < 8; channels++) {
2224 for (size_t rows = 1; rows < 7; rows++) {
2225 GAvgPoolMicrokernelTester()
2226 .rows(rows)
2227 .channels(channels)
2228 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2229 }
2230 }
2231 }
2232
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_lt_8_fulltile_with_qmax)2233 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_lt_8_fulltile_with_qmax) {
2234 TEST_REQUIRES_ARM_NEON;
2235 for (size_t channels = 1; channels < 8; channels++) {
2236 GAvgPoolMicrokernelTester()
2237 .rows(7)
2238 .channels(channels)
2239 .qmax(128)
2240 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2241 }
2242 }
2243
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_lt_8_fulltile_with_qmin)2244 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_lt_8_fulltile_with_qmin) {
2245 TEST_REQUIRES_ARM_NEON;
2246 for (size_t channels = 1; channels < 8; channels++) {
2247 GAvgPoolMicrokernelTester()
2248 .rows(7)
2249 .channels(channels)
2250 .qmin(128)
2251 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2252 }
2253 }
2254
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_gt_8_fulltile)2255 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_gt_8_fulltile) {
2256 TEST_REQUIRES_ARM_NEON;
2257 for (size_t channels = 9; channels < 16; channels++) {
2258 GAvgPoolMicrokernelTester()
2259 .rows(7)
2260 .channels(channels)
2261 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2262 }
2263 }
2264
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_gt_8_subtile)2265 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_gt_8_subtile) {
2266 TEST_REQUIRES_ARM_NEON;
2267 for (size_t channels = 9; channels < 16; channels++) {
2268 for (size_t rows = 1; rows < 7; rows++) {
2269 GAvgPoolMicrokernelTester()
2270 .rows(rows)
2271 .channels(channels)
2272 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2273 }
2274 }
2275 }
2276
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_gt_8_fulltile_with_qmax)2277 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_gt_8_fulltile_with_qmax) {
2278 TEST_REQUIRES_ARM_NEON;
2279 for (size_t channels = 9; channels < 16; channels++) {
2280 GAvgPoolMicrokernelTester()
2281 .rows(7)
2282 .channels(channels)
2283 .qmax(128)
2284 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2285 }
2286 }
2287
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8,channels_gt_8_fulltile_with_qmin)2288 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_gt_8_fulltile_with_qmin) {
2289 TEST_REQUIRES_ARM_NEON;
2290 for (size_t channels = 9; channels < 16; channels++) {
2291 GAvgPoolMicrokernelTester()
2292 .rows(7)
2293 .channels(channels)
2294 .qmin(128)
2295 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2296 }
2297 }
2298 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2299
2300
2301 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_eq_16_fulltile)2302 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_fulltile) {
2303 TEST_REQUIRES_ARM_NEON;
2304 GAvgPoolMicrokernelTester()
2305 .rows(7)
2306 .channels(16)
2307 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2308 }
2309
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_eq_16_subtile)2310 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_subtile) {
2311 TEST_REQUIRES_ARM_NEON;
2312 for (size_t rows = 1; rows < 7; rows++) {
2313 GAvgPoolMicrokernelTester()
2314 .rows(rows)
2315 .channels(16)
2316 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2317 }
2318 }
2319
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_eq_16_fulltile_with_input_stride)2320 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_fulltile_with_input_stride) {
2321 TEST_REQUIRES_ARM_NEON;
2322 GAvgPoolMicrokernelTester()
2323 .rows(7)
2324 .channels(16)
2325 .input_stride(19)
2326 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2327 }
2328
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_eq_16_fulltile_with_qmax)2329 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_fulltile_with_qmax) {
2330 TEST_REQUIRES_ARM_NEON;
2331 GAvgPoolMicrokernelTester()
2332 .rows(7)
2333 .channels(16)
2334 .qmax(128)
2335 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2336 }
2337
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_eq_16_fulltile_with_qmin)2338 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_fulltile_with_qmin) {
2339 TEST_REQUIRES_ARM_NEON;
2340 GAvgPoolMicrokernelTester()
2341 .rows(7)
2342 .channels(16)
2343 .qmin(128)
2344 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2345 }
2346
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_div_16_fulltile)2347 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_div_16_fulltile) {
2348 TEST_REQUIRES_ARM_NEON;
2349 for (size_t channels = 32; channels < 128; channels += 16) {
2350 GAvgPoolMicrokernelTester()
2351 .rows(7)
2352 .channels(channels)
2353 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2354 }
2355 }
2356
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_div_16_subtile)2357 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_div_16_subtile) {
2358 TEST_REQUIRES_ARM_NEON;
2359 for (size_t channels = 32; channels < 128; channels += 16) {
2360 for (size_t rows = 1; rows < 7; rows++) {
2361 GAvgPoolMicrokernelTester()
2362 .rows(rows)
2363 .channels(channels)
2364 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2365 }
2366 }
2367 }
2368
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_lt_16_fulltile)2369 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_lt_16_fulltile) {
2370 TEST_REQUIRES_ARM_NEON;
2371 for (size_t channels = 1; channels < 16; channels++) {
2372 GAvgPoolMicrokernelTester()
2373 .rows(7)
2374 .channels(channels)
2375 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2376 }
2377 }
2378
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_lt_16_subtile)2379 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_lt_16_subtile) {
2380 TEST_REQUIRES_ARM_NEON;
2381 for (size_t channels = 1; channels < 16; channels++) {
2382 for (size_t rows = 1; rows < 7; rows++) {
2383 GAvgPoolMicrokernelTester()
2384 .rows(rows)
2385 .channels(channels)
2386 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2387 }
2388 }
2389 }
2390
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_lt_16_fulltile_with_qmax)2391 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_lt_16_fulltile_with_qmax) {
2392 TEST_REQUIRES_ARM_NEON;
2393 for (size_t channels = 1; channels < 16; channels++) {
2394 GAvgPoolMicrokernelTester()
2395 .rows(7)
2396 .channels(channels)
2397 .qmax(128)
2398 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2399 }
2400 }
2401
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_lt_16_fulltile_with_qmin)2402 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_lt_16_fulltile_with_qmin) {
2403 TEST_REQUIRES_ARM_NEON;
2404 for (size_t channels = 1; channels < 16; channels++) {
2405 GAvgPoolMicrokernelTester()
2406 .rows(7)
2407 .channels(channels)
2408 .qmin(128)
2409 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2410 }
2411 }
2412
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_gt_16_fulltile)2413 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_gt_16_fulltile) {
2414 TEST_REQUIRES_ARM_NEON;
2415 for (size_t channels = 17; channels < 32; channels++) {
2416 GAvgPoolMicrokernelTester()
2417 .rows(7)
2418 .channels(channels)
2419 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2420 }
2421 }
2422
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_gt_16_subtile)2423 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_gt_16_subtile) {
2424 TEST_REQUIRES_ARM_NEON;
2425 for (size_t channels = 17; channels < 32; channels++) {
2426 for (size_t rows = 1; rows < 7; rows++) {
2427 GAvgPoolMicrokernelTester()
2428 .rows(rows)
2429 .channels(channels)
2430 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2431 }
2432 }
2433 }
2434
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_gt_16_fulltile_with_qmax)2435 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_gt_16_fulltile_with_qmax) {
2436 TEST_REQUIRES_ARM_NEON;
2437 for (size_t channels = 17; channels < 32; channels++) {
2438 GAvgPoolMicrokernelTester()
2439 .rows(7)
2440 .channels(channels)
2441 .qmax(128)
2442 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2443 }
2444 }
2445
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16,channels_gt_16_fulltile_with_qmin)2446 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_gt_16_fulltile_with_qmin) {
2447 TEST_REQUIRES_ARM_NEON;
2448 for (size_t channels = 17; channels < 32; channels++) {
2449 GAvgPoolMicrokernelTester()
2450 .rows(7)
2451 .channels(channels)
2452 .qmin(128)
2453 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2454 }
2455 }
2456 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2457
2458
2459 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_eq_24_fulltile)2460 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_fulltile) {
2461 TEST_REQUIRES_ARM_NEON;
2462 GAvgPoolMicrokernelTester()
2463 .rows(7)
2464 .channels(24)
2465 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2466 }
2467
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_eq_24_subtile)2468 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_subtile) {
2469 TEST_REQUIRES_ARM_NEON;
2470 for (size_t rows = 1; rows < 7; rows++) {
2471 GAvgPoolMicrokernelTester()
2472 .rows(rows)
2473 .channels(24)
2474 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2475 }
2476 }
2477
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_eq_24_fulltile_with_input_stride)2478 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_fulltile_with_input_stride) {
2479 TEST_REQUIRES_ARM_NEON;
2480 GAvgPoolMicrokernelTester()
2481 .rows(7)
2482 .channels(24)
2483 .input_stride(29)
2484 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2485 }
2486
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_eq_24_fulltile_with_qmax)2487 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_fulltile_with_qmax) {
2488 TEST_REQUIRES_ARM_NEON;
2489 GAvgPoolMicrokernelTester()
2490 .rows(7)
2491 .channels(24)
2492 .qmax(128)
2493 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2494 }
2495
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_eq_24_fulltile_with_qmin)2496 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_fulltile_with_qmin) {
2497 TEST_REQUIRES_ARM_NEON;
2498 GAvgPoolMicrokernelTester()
2499 .rows(7)
2500 .channels(24)
2501 .qmin(128)
2502 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2503 }
2504
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_div_24_fulltile)2505 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_div_24_fulltile) {
2506 TEST_REQUIRES_ARM_NEON;
2507 for (size_t channels = 48; channels < 192; channels += 24) {
2508 GAvgPoolMicrokernelTester()
2509 .rows(7)
2510 .channels(channels)
2511 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2512 }
2513 }
2514
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_div_24_subtile)2515 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_div_24_subtile) {
2516 TEST_REQUIRES_ARM_NEON;
2517 for (size_t channels = 48; channels < 192; channels += 24) {
2518 for (size_t rows = 1; rows < 7; rows++) {
2519 GAvgPoolMicrokernelTester()
2520 .rows(rows)
2521 .channels(channels)
2522 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2523 }
2524 }
2525 }
2526
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_lt_24_fulltile)2527 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_lt_24_fulltile) {
2528 TEST_REQUIRES_ARM_NEON;
2529 for (size_t channels = 1; channels < 24; channels++) {
2530 GAvgPoolMicrokernelTester()
2531 .rows(7)
2532 .channels(channels)
2533 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2534 }
2535 }
2536
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_lt_24_subtile)2537 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_lt_24_subtile) {
2538 TEST_REQUIRES_ARM_NEON;
2539 for (size_t channels = 1; channels < 24; channels++) {
2540 for (size_t rows = 1; rows < 7; rows++) {
2541 GAvgPoolMicrokernelTester()
2542 .rows(rows)
2543 .channels(channels)
2544 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2545 }
2546 }
2547 }
2548
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_lt_24_fulltile_with_qmax)2549 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_lt_24_fulltile_with_qmax) {
2550 TEST_REQUIRES_ARM_NEON;
2551 for (size_t channels = 1; channels < 24; channels++) {
2552 GAvgPoolMicrokernelTester()
2553 .rows(7)
2554 .channels(channels)
2555 .qmax(128)
2556 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2557 }
2558 }
2559
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_lt_24_fulltile_with_qmin)2560 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_lt_24_fulltile_with_qmin) {
2561 TEST_REQUIRES_ARM_NEON;
2562 for (size_t channels = 1; channels < 24; channels++) {
2563 GAvgPoolMicrokernelTester()
2564 .rows(7)
2565 .channels(channels)
2566 .qmin(128)
2567 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2568 }
2569 }
2570
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_gt_24_fulltile)2571 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_gt_24_fulltile) {
2572 TEST_REQUIRES_ARM_NEON;
2573 for (size_t channels = 25; channels < 48; channels++) {
2574 GAvgPoolMicrokernelTester()
2575 .rows(7)
2576 .channels(channels)
2577 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2578 }
2579 }
2580
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_gt_24_subtile)2581 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_gt_24_subtile) {
2582 TEST_REQUIRES_ARM_NEON;
2583 for (size_t channels = 25; channels < 48; channels++) {
2584 for (size_t rows = 1; rows < 7; rows++) {
2585 GAvgPoolMicrokernelTester()
2586 .rows(rows)
2587 .channels(channels)
2588 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2589 }
2590 }
2591 }
2592
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_gt_24_fulltile_with_qmax)2593 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_gt_24_fulltile_with_qmax) {
2594 TEST_REQUIRES_ARM_NEON;
2595 for (size_t channels = 25; channels < 48; channels++) {
2596 GAvgPoolMicrokernelTester()
2597 .rows(7)
2598 .channels(channels)
2599 .qmax(128)
2600 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2601 }
2602 }
2603
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24,channels_gt_24_fulltile_with_qmin)2604 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_gt_24_fulltile_with_qmin) {
2605 TEST_REQUIRES_ARM_NEON;
2606 for (size_t channels = 25; channels < 48; channels++) {
2607 GAvgPoolMicrokernelTester()
2608 .rows(7)
2609 .channels(channels)
2610 .qmin(128)
2611 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2612 }
2613 }
2614 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2615
2616
2617 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_eq_32_fulltile)2618 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_fulltile) {
2619 TEST_REQUIRES_ARM_NEON;
2620 GAvgPoolMicrokernelTester()
2621 .rows(7)
2622 .channels(32)
2623 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2624 }
2625
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_eq_32_subtile)2626 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_subtile) {
2627 TEST_REQUIRES_ARM_NEON;
2628 for (size_t rows = 1; rows < 7; rows++) {
2629 GAvgPoolMicrokernelTester()
2630 .rows(rows)
2631 .channels(32)
2632 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2633 }
2634 }
2635
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_eq_32_fulltile_with_input_stride)2636 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_fulltile_with_input_stride) {
2637 TEST_REQUIRES_ARM_NEON;
2638 GAvgPoolMicrokernelTester()
2639 .rows(7)
2640 .channels(32)
2641 .input_stride(37)
2642 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2643 }
2644
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_eq_32_fulltile_with_qmax)2645 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_fulltile_with_qmax) {
2646 TEST_REQUIRES_ARM_NEON;
2647 GAvgPoolMicrokernelTester()
2648 .rows(7)
2649 .channels(32)
2650 .qmax(128)
2651 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2652 }
2653
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_eq_32_fulltile_with_qmin)2654 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_fulltile_with_qmin) {
2655 TEST_REQUIRES_ARM_NEON;
2656 GAvgPoolMicrokernelTester()
2657 .rows(7)
2658 .channels(32)
2659 .qmin(128)
2660 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2661 }
2662
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_div_32_fulltile)2663 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_div_32_fulltile) {
2664 TEST_REQUIRES_ARM_NEON;
2665 for (size_t channels = 64; channels < 256; channels += 32) {
2666 GAvgPoolMicrokernelTester()
2667 .rows(7)
2668 .channels(channels)
2669 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2670 }
2671 }
2672
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_div_32_subtile)2673 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_div_32_subtile) {
2674 TEST_REQUIRES_ARM_NEON;
2675 for (size_t channels = 64; channels < 256; channels += 32) {
2676 for (size_t rows = 1; rows < 7; rows++) {
2677 GAvgPoolMicrokernelTester()
2678 .rows(rows)
2679 .channels(channels)
2680 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2681 }
2682 }
2683 }
2684
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_lt_32_fulltile)2685 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_lt_32_fulltile) {
2686 TEST_REQUIRES_ARM_NEON;
2687 for (size_t channels = 1; channels < 32; channels++) {
2688 GAvgPoolMicrokernelTester()
2689 .rows(7)
2690 .channels(channels)
2691 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2692 }
2693 }
2694
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_lt_32_subtile)2695 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_lt_32_subtile) {
2696 TEST_REQUIRES_ARM_NEON;
2697 for (size_t channels = 1; channels < 32; channels++) {
2698 for (size_t rows = 1; rows < 7; rows++) {
2699 GAvgPoolMicrokernelTester()
2700 .rows(rows)
2701 .channels(channels)
2702 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2703 }
2704 }
2705 }
2706
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_lt_32_fulltile_with_qmax)2707 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_lt_32_fulltile_with_qmax) {
2708 TEST_REQUIRES_ARM_NEON;
2709 for (size_t channels = 1; channels < 32; channels++) {
2710 GAvgPoolMicrokernelTester()
2711 .rows(7)
2712 .channels(channels)
2713 .qmax(128)
2714 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2715 }
2716 }
2717
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_lt_32_fulltile_with_qmin)2718 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_lt_32_fulltile_with_qmin) {
2719 TEST_REQUIRES_ARM_NEON;
2720 for (size_t channels = 1; channels < 32; channels++) {
2721 GAvgPoolMicrokernelTester()
2722 .rows(7)
2723 .channels(channels)
2724 .qmin(128)
2725 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2726 }
2727 }
2728
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_gt_32_fulltile)2729 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_gt_32_fulltile) {
2730 TEST_REQUIRES_ARM_NEON;
2731 for (size_t channels = 33; channels < 64; channels++) {
2732 GAvgPoolMicrokernelTester()
2733 .rows(7)
2734 .channels(channels)
2735 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2736 }
2737 }
2738
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_gt_32_subtile)2739 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_gt_32_subtile) {
2740 TEST_REQUIRES_ARM_NEON;
2741 for (size_t channels = 33; channels < 64; channels++) {
2742 for (size_t rows = 1; rows < 7; rows++) {
2743 GAvgPoolMicrokernelTester()
2744 .rows(rows)
2745 .channels(channels)
2746 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2747 }
2748 }
2749 }
2750
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_gt_32_fulltile_with_qmax)2751 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_gt_32_fulltile_with_qmax) {
2752 TEST_REQUIRES_ARM_NEON;
2753 for (size_t channels = 33; channels < 64; channels++) {
2754 GAvgPoolMicrokernelTester()
2755 .rows(7)
2756 .channels(channels)
2757 .qmax(128)
2758 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2759 }
2760 }
2761
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32,channels_gt_32_fulltile_with_qmin)2762 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_gt_32_fulltile_with_qmin) {
2763 TEST_REQUIRES_ARM_NEON;
2764 for (size_t channels = 33; channels < 64; channels++) {
2765 GAvgPoolMicrokernelTester()
2766 .rows(7)
2767 .channels(channels)
2768 .qmin(128)
2769 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qu8_avgpool_minmax_fp32_neon_params, xnn_qu8_requantize_fp32);
2770 }
2771 }
2772 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2773
2774
2775 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_eq_8_fulltile)2776 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_fulltile) {
2777 TEST_REQUIRES_ARM_NEON_V8;
2778 GAvgPoolMicrokernelTester()
2779 .rows(7)
2780 .channels(8)
2781 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2782 }
2783
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_eq_8_subtile)2784 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_subtile) {
2785 TEST_REQUIRES_ARM_NEON_V8;
2786 for (size_t rows = 1; rows < 7; rows++) {
2787 GAvgPoolMicrokernelTester()
2788 .rows(rows)
2789 .channels(8)
2790 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2791 }
2792 }
2793
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_eq_8_fulltile_with_input_stride)2794 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_fulltile_with_input_stride) {
2795 TEST_REQUIRES_ARM_NEON_V8;
2796 GAvgPoolMicrokernelTester()
2797 .rows(7)
2798 .channels(8)
2799 .input_stride(11)
2800 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2801 }
2802
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_eq_8_fulltile_with_qmax)2803 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_fulltile_with_qmax) {
2804 TEST_REQUIRES_ARM_NEON_V8;
2805 GAvgPoolMicrokernelTester()
2806 .rows(7)
2807 .channels(8)
2808 .qmax(128)
2809 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2810 }
2811
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_eq_8_fulltile_with_qmin)2812 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_fulltile_with_qmin) {
2813 TEST_REQUIRES_ARM_NEON_V8;
2814 GAvgPoolMicrokernelTester()
2815 .rows(7)
2816 .channels(8)
2817 .qmin(128)
2818 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2819 }
2820
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_div_8_fulltile)2821 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_div_8_fulltile) {
2822 TEST_REQUIRES_ARM_NEON_V8;
2823 for (size_t channels = 16; channels < 64; channels += 8) {
2824 GAvgPoolMicrokernelTester()
2825 .rows(7)
2826 .channels(channels)
2827 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2828 }
2829 }
2830
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_div_8_subtile)2831 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_div_8_subtile) {
2832 TEST_REQUIRES_ARM_NEON_V8;
2833 for (size_t channels = 16; channels < 64; channels += 8) {
2834 for (size_t rows = 1; rows < 7; rows++) {
2835 GAvgPoolMicrokernelTester()
2836 .rows(rows)
2837 .channels(channels)
2838 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2839 }
2840 }
2841 }
2842
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_lt_8_fulltile)2843 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_lt_8_fulltile) {
2844 TEST_REQUIRES_ARM_NEON_V8;
2845 for (size_t channels = 1; channels < 8; channels++) {
2846 GAvgPoolMicrokernelTester()
2847 .rows(7)
2848 .channels(channels)
2849 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2850 }
2851 }
2852
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_lt_8_subtile)2853 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_lt_8_subtile) {
2854 TEST_REQUIRES_ARM_NEON_V8;
2855 for (size_t channels = 1; channels < 8; channels++) {
2856 for (size_t rows = 1; rows < 7; rows++) {
2857 GAvgPoolMicrokernelTester()
2858 .rows(rows)
2859 .channels(channels)
2860 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2861 }
2862 }
2863 }
2864
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_lt_8_fulltile_with_qmax)2865 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_lt_8_fulltile_with_qmax) {
2866 TEST_REQUIRES_ARM_NEON_V8;
2867 for (size_t channels = 1; channels < 8; channels++) {
2868 GAvgPoolMicrokernelTester()
2869 .rows(7)
2870 .channels(channels)
2871 .qmax(128)
2872 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2873 }
2874 }
2875
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_lt_8_fulltile_with_qmin)2876 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_lt_8_fulltile_with_qmin) {
2877 TEST_REQUIRES_ARM_NEON_V8;
2878 for (size_t channels = 1; channels < 8; channels++) {
2879 GAvgPoolMicrokernelTester()
2880 .rows(7)
2881 .channels(channels)
2882 .qmin(128)
2883 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2884 }
2885 }
2886
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_gt_8_fulltile)2887 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_gt_8_fulltile) {
2888 TEST_REQUIRES_ARM_NEON_V8;
2889 for (size_t channels = 9; channels < 16; channels++) {
2890 GAvgPoolMicrokernelTester()
2891 .rows(7)
2892 .channels(channels)
2893 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2894 }
2895 }
2896
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_gt_8_subtile)2897 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_gt_8_subtile) {
2898 TEST_REQUIRES_ARM_NEON_V8;
2899 for (size_t channels = 9; channels < 16; channels++) {
2900 for (size_t rows = 1; rows < 7; rows++) {
2901 GAvgPoolMicrokernelTester()
2902 .rows(rows)
2903 .channels(channels)
2904 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2905 }
2906 }
2907 }
2908
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_gt_8_fulltile_with_qmax)2909 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_gt_8_fulltile_with_qmax) {
2910 TEST_REQUIRES_ARM_NEON_V8;
2911 for (size_t channels = 9; channels < 16; channels++) {
2912 GAvgPoolMicrokernelTester()
2913 .rows(7)
2914 .channels(channels)
2915 .qmax(128)
2916 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2917 }
2918 }
2919
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8,channels_gt_8_fulltile_with_qmin)2920 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_gt_8_fulltile_with_qmin) {
2921 TEST_REQUIRES_ARM_NEON_V8;
2922 for (size_t channels = 9; channels < 16; channels++) {
2923 GAvgPoolMicrokernelTester()
2924 .rows(7)
2925 .channels(channels)
2926 .qmin(128)
2927 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2928 }
2929 }
2930 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2931
2932
2933 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_eq_16_fulltile)2934 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_fulltile) {
2935 TEST_REQUIRES_ARM_NEON_V8;
2936 GAvgPoolMicrokernelTester()
2937 .rows(7)
2938 .channels(16)
2939 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2940 }
2941
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_eq_16_subtile)2942 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_subtile) {
2943 TEST_REQUIRES_ARM_NEON_V8;
2944 for (size_t rows = 1; rows < 7; rows++) {
2945 GAvgPoolMicrokernelTester()
2946 .rows(rows)
2947 .channels(16)
2948 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2949 }
2950 }
2951
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_eq_16_fulltile_with_input_stride)2952 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_fulltile_with_input_stride) {
2953 TEST_REQUIRES_ARM_NEON_V8;
2954 GAvgPoolMicrokernelTester()
2955 .rows(7)
2956 .channels(16)
2957 .input_stride(19)
2958 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2959 }
2960
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_eq_16_fulltile_with_qmax)2961 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_fulltile_with_qmax) {
2962 TEST_REQUIRES_ARM_NEON_V8;
2963 GAvgPoolMicrokernelTester()
2964 .rows(7)
2965 .channels(16)
2966 .qmax(128)
2967 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2968 }
2969
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_eq_16_fulltile_with_qmin)2970 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_fulltile_with_qmin) {
2971 TEST_REQUIRES_ARM_NEON_V8;
2972 GAvgPoolMicrokernelTester()
2973 .rows(7)
2974 .channels(16)
2975 .qmin(128)
2976 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2977 }
2978
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_div_16_fulltile)2979 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_div_16_fulltile) {
2980 TEST_REQUIRES_ARM_NEON_V8;
2981 for (size_t channels = 32; channels < 128; channels += 16) {
2982 GAvgPoolMicrokernelTester()
2983 .rows(7)
2984 .channels(channels)
2985 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2986 }
2987 }
2988
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_div_16_subtile)2989 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_div_16_subtile) {
2990 TEST_REQUIRES_ARM_NEON_V8;
2991 for (size_t channels = 32; channels < 128; channels += 16) {
2992 for (size_t rows = 1; rows < 7; rows++) {
2993 GAvgPoolMicrokernelTester()
2994 .rows(rows)
2995 .channels(channels)
2996 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
2997 }
2998 }
2999 }
3000
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_lt_16_fulltile)3001 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_lt_16_fulltile) {
3002 TEST_REQUIRES_ARM_NEON_V8;
3003 for (size_t channels = 1; channels < 16; channels++) {
3004 GAvgPoolMicrokernelTester()
3005 .rows(7)
3006 .channels(channels)
3007 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3008 }
3009 }
3010
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_lt_16_subtile)3011 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_lt_16_subtile) {
3012 TEST_REQUIRES_ARM_NEON_V8;
3013 for (size_t channels = 1; channels < 16; channels++) {
3014 for (size_t rows = 1; rows < 7; rows++) {
3015 GAvgPoolMicrokernelTester()
3016 .rows(rows)
3017 .channels(channels)
3018 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3019 }
3020 }
3021 }
3022
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_lt_16_fulltile_with_qmax)3023 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_lt_16_fulltile_with_qmax) {
3024 TEST_REQUIRES_ARM_NEON_V8;
3025 for (size_t channels = 1; channels < 16; channels++) {
3026 GAvgPoolMicrokernelTester()
3027 .rows(7)
3028 .channels(channels)
3029 .qmax(128)
3030 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3031 }
3032 }
3033
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_lt_16_fulltile_with_qmin)3034 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_lt_16_fulltile_with_qmin) {
3035 TEST_REQUIRES_ARM_NEON_V8;
3036 for (size_t channels = 1; channels < 16; channels++) {
3037 GAvgPoolMicrokernelTester()
3038 .rows(7)
3039 .channels(channels)
3040 .qmin(128)
3041 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3042 }
3043 }
3044
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_gt_16_fulltile)3045 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_gt_16_fulltile) {
3046 TEST_REQUIRES_ARM_NEON_V8;
3047 for (size_t channels = 17; channels < 32; channels++) {
3048 GAvgPoolMicrokernelTester()
3049 .rows(7)
3050 .channels(channels)
3051 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3052 }
3053 }
3054
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_gt_16_subtile)3055 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_gt_16_subtile) {
3056 TEST_REQUIRES_ARM_NEON_V8;
3057 for (size_t channels = 17; channels < 32; channels++) {
3058 for (size_t rows = 1; rows < 7; rows++) {
3059 GAvgPoolMicrokernelTester()
3060 .rows(rows)
3061 .channels(channels)
3062 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3063 }
3064 }
3065 }
3066
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_gt_16_fulltile_with_qmax)3067 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_gt_16_fulltile_with_qmax) {
3068 TEST_REQUIRES_ARM_NEON_V8;
3069 for (size_t channels = 17; channels < 32; channels++) {
3070 GAvgPoolMicrokernelTester()
3071 .rows(7)
3072 .channels(channels)
3073 .qmax(128)
3074 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3075 }
3076 }
3077
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16,channels_gt_16_fulltile_with_qmin)3078 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_gt_16_fulltile_with_qmin) {
3079 TEST_REQUIRES_ARM_NEON_V8;
3080 for (size_t channels = 17; channels < 32; channels++) {
3081 GAvgPoolMicrokernelTester()
3082 .rows(7)
3083 .channels(channels)
3084 .qmin(128)
3085 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3086 }
3087 }
3088 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3089
3090
3091 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_eq_24_fulltile)3092 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_fulltile) {
3093 TEST_REQUIRES_ARM_NEON_V8;
3094 GAvgPoolMicrokernelTester()
3095 .rows(7)
3096 .channels(24)
3097 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3098 }
3099
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_eq_24_subtile)3100 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_subtile) {
3101 TEST_REQUIRES_ARM_NEON_V8;
3102 for (size_t rows = 1; rows < 7; rows++) {
3103 GAvgPoolMicrokernelTester()
3104 .rows(rows)
3105 .channels(24)
3106 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3107 }
3108 }
3109
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_eq_24_fulltile_with_input_stride)3110 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_fulltile_with_input_stride) {
3111 TEST_REQUIRES_ARM_NEON_V8;
3112 GAvgPoolMicrokernelTester()
3113 .rows(7)
3114 .channels(24)
3115 .input_stride(29)
3116 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3117 }
3118
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_eq_24_fulltile_with_qmax)3119 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_fulltile_with_qmax) {
3120 TEST_REQUIRES_ARM_NEON_V8;
3121 GAvgPoolMicrokernelTester()
3122 .rows(7)
3123 .channels(24)
3124 .qmax(128)
3125 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3126 }
3127
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_eq_24_fulltile_with_qmin)3128 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_fulltile_with_qmin) {
3129 TEST_REQUIRES_ARM_NEON_V8;
3130 GAvgPoolMicrokernelTester()
3131 .rows(7)
3132 .channels(24)
3133 .qmin(128)
3134 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3135 }
3136
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_div_24_fulltile)3137 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_div_24_fulltile) {
3138 TEST_REQUIRES_ARM_NEON_V8;
3139 for (size_t channels = 48; channels < 192; channels += 24) {
3140 GAvgPoolMicrokernelTester()
3141 .rows(7)
3142 .channels(channels)
3143 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3144 }
3145 }
3146
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_div_24_subtile)3147 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_div_24_subtile) {
3148 TEST_REQUIRES_ARM_NEON_V8;
3149 for (size_t channels = 48; channels < 192; channels += 24) {
3150 for (size_t rows = 1; rows < 7; rows++) {
3151 GAvgPoolMicrokernelTester()
3152 .rows(rows)
3153 .channels(channels)
3154 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3155 }
3156 }
3157 }
3158
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_lt_24_fulltile)3159 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_lt_24_fulltile) {
3160 TEST_REQUIRES_ARM_NEON_V8;
3161 for (size_t channels = 1; channels < 24; channels++) {
3162 GAvgPoolMicrokernelTester()
3163 .rows(7)
3164 .channels(channels)
3165 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3166 }
3167 }
3168
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_lt_24_subtile)3169 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_lt_24_subtile) {
3170 TEST_REQUIRES_ARM_NEON_V8;
3171 for (size_t channels = 1; channels < 24; channels++) {
3172 for (size_t rows = 1; rows < 7; rows++) {
3173 GAvgPoolMicrokernelTester()
3174 .rows(rows)
3175 .channels(channels)
3176 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3177 }
3178 }
3179 }
3180
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_lt_24_fulltile_with_qmax)3181 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_lt_24_fulltile_with_qmax) {
3182 TEST_REQUIRES_ARM_NEON_V8;
3183 for (size_t channels = 1; channels < 24; channels++) {
3184 GAvgPoolMicrokernelTester()
3185 .rows(7)
3186 .channels(channels)
3187 .qmax(128)
3188 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3189 }
3190 }
3191
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_lt_24_fulltile_with_qmin)3192 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_lt_24_fulltile_with_qmin) {
3193 TEST_REQUIRES_ARM_NEON_V8;
3194 for (size_t channels = 1; channels < 24; channels++) {
3195 GAvgPoolMicrokernelTester()
3196 .rows(7)
3197 .channels(channels)
3198 .qmin(128)
3199 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3200 }
3201 }
3202
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_gt_24_fulltile)3203 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_gt_24_fulltile) {
3204 TEST_REQUIRES_ARM_NEON_V8;
3205 for (size_t channels = 25; channels < 48; channels++) {
3206 GAvgPoolMicrokernelTester()
3207 .rows(7)
3208 .channels(channels)
3209 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3210 }
3211 }
3212
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_gt_24_subtile)3213 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_gt_24_subtile) {
3214 TEST_REQUIRES_ARM_NEON_V8;
3215 for (size_t channels = 25; channels < 48; channels++) {
3216 for (size_t rows = 1; rows < 7; rows++) {
3217 GAvgPoolMicrokernelTester()
3218 .rows(rows)
3219 .channels(channels)
3220 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3221 }
3222 }
3223 }
3224
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_gt_24_fulltile_with_qmax)3225 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_gt_24_fulltile_with_qmax) {
3226 TEST_REQUIRES_ARM_NEON_V8;
3227 for (size_t channels = 25; channels < 48; channels++) {
3228 GAvgPoolMicrokernelTester()
3229 .rows(7)
3230 .channels(channels)
3231 .qmax(128)
3232 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3233 }
3234 }
3235
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24,channels_gt_24_fulltile_with_qmin)3236 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_gt_24_fulltile_with_qmin) {
3237 TEST_REQUIRES_ARM_NEON_V8;
3238 for (size_t channels = 25; channels < 48; channels++) {
3239 GAvgPoolMicrokernelTester()
3240 .rows(7)
3241 .channels(channels)
3242 .qmin(128)
3243 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3244 }
3245 }
3246 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3247
3248
3249 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_eq_32_fulltile)3250 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_fulltile) {
3251 TEST_REQUIRES_ARM_NEON_V8;
3252 GAvgPoolMicrokernelTester()
3253 .rows(7)
3254 .channels(32)
3255 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3256 }
3257
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_eq_32_subtile)3258 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_subtile) {
3259 TEST_REQUIRES_ARM_NEON_V8;
3260 for (size_t rows = 1; rows < 7; rows++) {
3261 GAvgPoolMicrokernelTester()
3262 .rows(rows)
3263 .channels(32)
3264 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3265 }
3266 }
3267
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_eq_32_fulltile_with_input_stride)3268 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_fulltile_with_input_stride) {
3269 TEST_REQUIRES_ARM_NEON_V8;
3270 GAvgPoolMicrokernelTester()
3271 .rows(7)
3272 .channels(32)
3273 .input_stride(37)
3274 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3275 }
3276
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_eq_32_fulltile_with_qmax)3277 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_fulltile_with_qmax) {
3278 TEST_REQUIRES_ARM_NEON_V8;
3279 GAvgPoolMicrokernelTester()
3280 .rows(7)
3281 .channels(32)
3282 .qmax(128)
3283 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3284 }
3285
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_eq_32_fulltile_with_qmin)3286 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_fulltile_with_qmin) {
3287 TEST_REQUIRES_ARM_NEON_V8;
3288 GAvgPoolMicrokernelTester()
3289 .rows(7)
3290 .channels(32)
3291 .qmin(128)
3292 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3293 }
3294
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_div_32_fulltile)3295 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_div_32_fulltile) {
3296 TEST_REQUIRES_ARM_NEON_V8;
3297 for (size_t channels = 64; channels < 256; channels += 32) {
3298 GAvgPoolMicrokernelTester()
3299 .rows(7)
3300 .channels(channels)
3301 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3302 }
3303 }
3304
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_div_32_subtile)3305 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_div_32_subtile) {
3306 TEST_REQUIRES_ARM_NEON_V8;
3307 for (size_t channels = 64; channels < 256; channels += 32) {
3308 for (size_t rows = 1; rows < 7; rows++) {
3309 GAvgPoolMicrokernelTester()
3310 .rows(rows)
3311 .channels(channels)
3312 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3313 }
3314 }
3315 }
3316
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_lt_32_fulltile)3317 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_lt_32_fulltile) {
3318 TEST_REQUIRES_ARM_NEON_V8;
3319 for (size_t channels = 1; channels < 32; channels++) {
3320 GAvgPoolMicrokernelTester()
3321 .rows(7)
3322 .channels(channels)
3323 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3324 }
3325 }
3326
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_lt_32_subtile)3327 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_lt_32_subtile) {
3328 TEST_REQUIRES_ARM_NEON_V8;
3329 for (size_t channels = 1; channels < 32; channels++) {
3330 for (size_t rows = 1; rows < 7; rows++) {
3331 GAvgPoolMicrokernelTester()
3332 .rows(rows)
3333 .channels(channels)
3334 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3335 }
3336 }
3337 }
3338
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_lt_32_fulltile_with_qmax)3339 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_lt_32_fulltile_with_qmax) {
3340 TEST_REQUIRES_ARM_NEON_V8;
3341 for (size_t channels = 1; channels < 32; channels++) {
3342 GAvgPoolMicrokernelTester()
3343 .rows(7)
3344 .channels(channels)
3345 .qmax(128)
3346 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3347 }
3348 }
3349
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_lt_32_fulltile_with_qmin)3350 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_lt_32_fulltile_with_qmin) {
3351 TEST_REQUIRES_ARM_NEON_V8;
3352 for (size_t channels = 1; channels < 32; channels++) {
3353 GAvgPoolMicrokernelTester()
3354 .rows(7)
3355 .channels(channels)
3356 .qmin(128)
3357 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3358 }
3359 }
3360
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_gt_32_fulltile)3361 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_gt_32_fulltile) {
3362 TEST_REQUIRES_ARM_NEON_V8;
3363 for (size_t channels = 33; channels < 64; channels++) {
3364 GAvgPoolMicrokernelTester()
3365 .rows(7)
3366 .channels(channels)
3367 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3368 }
3369 }
3370
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_gt_32_subtile)3371 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_gt_32_subtile) {
3372 TEST_REQUIRES_ARM_NEON_V8;
3373 for (size_t channels = 33; channels < 64; channels++) {
3374 for (size_t rows = 1; rows < 7; rows++) {
3375 GAvgPoolMicrokernelTester()
3376 .rows(rows)
3377 .channels(channels)
3378 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3379 }
3380 }
3381 }
3382
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_gt_32_fulltile_with_qmax)3383 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_gt_32_fulltile_with_qmax) {
3384 TEST_REQUIRES_ARM_NEON_V8;
3385 for (size_t channels = 33; channels < 64; channels++) {
3386 GAvgPoolMicrokernelTester()
3387 .rows(7)
3388 .channels(channels)
3389 .qmax(128)
3390 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3391 }
3392 }
3393
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32,channels_gt_32_fulltile_with_qmin)3394 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_gt_32_fulltile_with_qmin) {
3395 TEST_REQUIRES_ARM_NEON_V8;
3396 for (size_t channels = 33; channels < 64; channels++) {
3397 GAvgPoolMicrokernelTester()
3398 .rows(7)
3399 .channels(channels)
3400 .qmin(128)
3401 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qu8_avgpool_minmax_fp32_neonv8_params, xnn_qu8_requantize_fp32);
3402 }
3403 }
3404 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3405
3406
3407 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_eq_8_2pass_fulltile)3408 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_fulltile) {
3409 TEST_REQUIRES_X86_SSE2;
3410 GAvgPoolMicrokernelTester()
3411 .rows(14)
3412 .channels(8)
3413 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3414 }
3415
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_eq_8_2pass_fulltile_with_input_stride)3416 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
3417 TEST_REQUIRES_X86_SSE2;
3418 GAvgPoolMicrokernelTester()
3419 .rows(14)
3420 .channels(8)
3421 .input_stride(11)
3422 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3423 }
3424
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_eq_8_2pass_fulltile_with_qmax)3425 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_fulltile_with_qmax) {
3426 TEST_REQUIRES_X86_SSE2;
3427 GAvgPoolMicrokernelTester()
3428 .rows(14)
3429 .channels(8)
3430 .qmax(128)
3431 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3432 }
3433
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_eq_8_2pass_fulltile_with_qmin)3434 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_fulltile_with_qmin) {
3435 TEST_REQUIRES_X86_SSE2;
3436 GAvgPoolMicrokernelTester()
3437 .rows(14)
3438 .channels(8)
3439 .qmin(128)
3440 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3441 }
3442
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_eq_8_2pass_subtile)3443 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_subtile) {
3444 TEST_REQUIRES_X86_SSE2;
3445 for (size_t rows = 8; rows < 14; rows++) {
3446 GAvgPoolMicrokernelTester()
3447 .rows(rows)
3448 .channels(8)
3449 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3450 }
3451 }
3452
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_eq_8_2pass_subtile_with_input_stride)3453 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_subtile_with_input_stride) {
3454 TEST_REQUIRES_X86_SSE2;
3455 for (size_t rows = 8; rows < 14; rows++) {
3456 GAvgPoolMicrokernelTester()
3457 .rows(rows)
3458 .channels(8)
3459 .input_stride(11)
3460 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3461 }
3462 }
3463
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_eq_8_multipass_fulltile)3464 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_multipass_fulltile) {
3465 TEST_REQUIRES_X86_SSE2;
3466 for (size_t rows = 14; rows <= 35; rows += 7) {
3467 GAvgPoolMicrokernelTester()
3468 .rows(rows)
3469 .channels(8)
3470 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3471 }
3472 }
3473
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_eq_8_multipass_fulltile_with_input_stride)3474 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
3475 TEST_REQUIRES_X86_SSE2;
3476 for (size_t rows = 14; rows <= 35; rows += 7) {
3477 GAvgPoolMicrokernelTester()
3478 .rows(rows)
3479 .channels(8)
3480 .input_stride(11)
3481 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3482 }
3483 }
3484
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_div_8_2pass_fulltile)3485 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_div_8_2pass_fulltile) {
3486 TEST_REQUIRES_X86_SSE2;
3487 for (size_t channels = 16; channels < 64; channels += 8) {
3488 GAvgPoolMicrokernelTester()
3489 .rows(14)
3490 .channels(channels)
3491 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3492 }
3493 }
3494
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_div_8_2pass_subtile)3495 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_div_8_2pass_subtile) {
3496 TEST_REQUIRES_X86_SSE2;
3497 for (size_t channels = 16; channels < 64; channels += 8) {
3498 for (size_t rows = 8; rows < 14; rows++) {
3499 GAvgPoolMicrokernelTester()
3500 .rows(rows)
3501 .channels(channels)
3502 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3503 }
3504 }
3505 }
3506
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_div_8_multipass_fulltile)3507 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_div_8_multipass_fulltile) {
3508 TEST_REQUIRES_X86_SSE2;
3509 for (size_t channels = 16; channels < 64; channels += 8) {
3510 for (size_t rows = 14; rows <= 35; rows += 7) {
3511 GAvgPoolMicrokernelTester()
3512 .rows(rows)
3513 .channels(channels)
3514 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3515 }
3516 }
3517 }
3518
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_div_8_multipass_fulltile_with_input_stride)3519 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_div_8_multipass_fulltile_with_input_stride) {
3520 TEST_REQUIRES_X86_SSE2;
3521 for (size_t channels = 16; channels < 64; channels += 8) {
3522 for (size_t rows = 14; rows <= 35; rows += 7) {
3523 GAvgPoolMicrokernelTester()
3524 .rows(rows)
3525 .channels(channels)
3526 .input_stride(131)
3527 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3528 }
3529 }
3530 }
3531
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_lt_8_2pass_fulltile)3532 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_2pass_fulltile) {
3533 TEST_REQUIRES_X86_SSE2;
3534 for (size_t channels = 1; channels < 8; channels++) {
3535 GAvgPoolMicrokernelTester()
3536 .rows(14)
3537 .channels(channels)
3538 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3539 }
3540 }
3541
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_lt_8_2pass_fulltile_with_qmax)3542 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_2pass_fulltile_with_qmax) {
3543 TEST_REQUIRES_X86_SSE2;
3544 for (size_t channels = 1; channels < 8; channels++) {
3545 GAvgPoolMicrokernelTester()
3546 .rows(14)
3547 .channels(channels)
3548 .qmax(128)
3549 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3550 }
3551 }
3552
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_lt_8_2pass_fulltile_with_qmin)3553 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_2pass_fulltile_with_qmin) {
3554 TEST_REQUIRES_X86_SSE2;
3555 for (size_t channels = 1; channels < 8; channels++) {
3556 GAvgPoolMicrokernelTester()
3557 .rows(14)
3558 .channels(channels)
3559 .qmin(128)
3560 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3561 }
3562 }
3563
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_lt_8_2pass_subtile)3564 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_2pass_subtile) {
3565 TEST_REQUIRES_X86_SSE2;
3566 for (size_t channels = 1; channels < 8; channels++) {
3567 for (size_t rows = 8; rows < 14; rows++) {
3568 GAvgPoolMicrokernelTester()
3569 .rows(rows)
3570 .channels(channels)
3571 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3572 }
3573 }
3574 }
3575
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_lt_8_multipass_fulltile)3576 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_multipass_fulltile) {
3577 TEST_REQUIRES_X86_SSE2;
3578 for (size_t channels = 1; channels < 8; channels++) {
3579 for (size_t rows = 14; rows <= 35; rows += 7) {
3580 GAvgPoolMicrokernelTester()
3581 .rows(rows)
3582 .channels(channels)
3583 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3584 }
3585 }
3586 }
3587
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_lt_8_multipass_fulltile_with_input_stride)3588 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
3589 TEST_REQUIRES_X86_SSE2;
3590 for (size_t channels = 1; channels < 8; channels++) {
3591 for (size_t rows = 14; rows <= 35; rows += 7) {
3592 GAvgPoolMicrokernelTester()
3593 .rows(rows)
3594 .channels(channels)
3595 .input_stride(11)
3596 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3597 }
3598 }
3599 }
3600
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_gt_8_2pass_fulltile)3601 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_2pass_fulltile) {
3602 TEST_REQUIRES_X86_SSE2;
3603 for (size_t channels = 9; channels < 16; channels++) {
3604 GAvgPoolMicrokernelTester()
3605 .rows(14)
3606 .channels(channels)
3607 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3608 }
3609 }
3610
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_gt_8_2pass_fulltile_with_qmax)3611 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_2pass_fulltile_with_qmax) {
3612 TEST_REQUIRES_X86_SSE2;
3613 for (size_t channels = 9; channels < 16; channels++) {
3614 GAvgPoolMicrokernelTester()
3615 .rows(14)
3616 .channels(channels)
3617 .qmax(128)
3618 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3619 }
3620 }
3621
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_gt_8_2pass_fulltile_with_qmin)3622 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_2pass_fulltile_with_qmin) {
3623 TEST_REQUIRES_X86_SSE2;
3624 for (size_t channels = 9; channels < 16; channels++) {
3625 GAvgPoolMicrokernelTester()
3626 .rows(14)
3627 .channels(channels)
3628 .qmin(128)
3629 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3630 }
3631 }
3632
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_gt_8_2pass_subtile)3633 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_2pass_subtile) {
3634 TEST_REQUIRES_X86_SSE2;
3635 for (size_t channels = 9; channels < 16; channels++) {
3636 for (size_t rows = 8; rows < 14; rows++) {
3637 GAvgPoolMicrokernelTester()
3638 .rows(rows)
3639 .channels(channels)
3640 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3641 }
3642 }
3643 }
3644
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_gt_8_multipass_fulltile)3645 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_multipass_fulltile) {
3646 TEST_REQUIRES_X86_SSE2;
3647 for (size_t channels = 9; channels < 16; channels++) {
3648 for (size_t rows = 14; rows < 35; rows += 14) {
3649 GAvgPoolMicrokernelTester()
3650 .rows(rows)
3651 .channels(channels)
3652 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3653 }
3654 }
3655 }
3656
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8,channels_gt_8_multipass_fulltile_with_input_stride)3657 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
3658 TEST_REQUIRES_X86_SSE2;
3659 for (size_t channels = 9; channels < 16; channels++) {
3660 for (size_t rows = 14; rows < 35; rows += 14) {
3661 GAvgPoolMicrokernelTester()
3662 .rows(rows)
3663 .channels(channels)
3664 .input_stride(29)
3665 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3666 }
3667 }
3668 }
3669 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3670
3671
3672 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_eq_16_2pass_fulltile)3673 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_fulltile) {
3674 TEST_REQUIRES_X86_SSE2;
3675 GAvgPoolMicrokernelTester()
3676 .rows(14)
3677 .channels(16)
3678 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3679 }
3680
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_eq_16_2pass_fulltile_with_input_stride)3681 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
3682 TEST_REQUIRES_X86_SSE2;
3683 GAvgPoolMicrokernelTester()
3684 .rows(14)
3685 .channels(16)
3686 .input_stride(19)
3687 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3688 }
3689
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_eq_16_2pass_fulltile_with_qmax)3690 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_fulltile_with_qmax) {
3691 TEST_REQUIRES_X86_SSE2;
3692 GAvgPoolMicrokernelTester()
3693 .rows(14)
3694 .channels(16)
3695 .qmax(128)
3696 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3697 }
3698
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_eq_16_2pass_fulltile_with_qmin)3699 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_fulltile_with_qmin) {
3700 TEST_REQUIRES_X86_SSE2;
3701 GAvgPoolMicrokernelTester()
3702 .rows(14)
3703 .channels(16)
3704 .qmin(128)
3705 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3706 }
3707
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_eq_16_2pass_subtile)3708 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_subtile) {
3709 TEST_REQUIRES_X86_SSE2;
3710 for (size_t rows = 8; rows < 14; rows++) {
3711 GAvgPoolMicrokernelTester()
3712 .rows(rows)
3713 .channels(16)
3714 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3715 }
3716 }
3717
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_eq_16_2pass_subtile_with_input_stride)3718 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_subtile_with_input_stride) {
3719 TEST_REQUIRES_X86_SSE2;
3720 for (size_t rows = 8; rows < 14; rows++) {
3721 GAvgPoolMicrokernelTester()
3722 .rows(rows)
3723 .channels(16)
3724 .input_stride(19)
3725 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3726 }
3727 }
3728
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_eq_16_multipass_fulltile)3729 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_multipass_fulltile) {
3730 TEST_REQUIRES_X86_SSE2;
3731 for (size_t rows = 14; rows <= 35; rows += 7) {
3732 GAvgPoolMicrokernelTester()
3733 .rows(rows)
3734 .channels(16)
3735 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3736 }
3737 }
3738
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_eq_16_multipass_fulltile_with_input_stride)3739 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
3740 TEST_REQUIRES_X86_SSE2;
3741 for (size_t rows = 14; rows <= 35; rows += 7) {
3742 GAvgPoolMicrokernelTester()
3743 .rows(rows)
3744 .channels(16)
3745 .input_stride(19)
3746 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3747 }
3748 }
3749
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_div_16_2pass_fulltile)3750 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_div_16_2pass_fulltile) {
3751 TEST_REQUIRES_X86_SSE2;
3752 for (size_t channels = 32; channels < 128; channels += 16) {
3753 GAvgPoolMicrokernelTester()
3754 .rows(14)
3755 .channels(channels)
3756 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3757 }
3758 }
3759
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_div_16_2pass_subtile)3760 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_div_16_2pass_subtile) {
3761 TEST_REQUIRES_X86_SSE2;
3762 for (size_t channels = 32; channels < 128; channels += 16) {
3763 for (size_t rows = 8; rows < 14; rows++) {
3764 GAvgPoolMicrokernelTester()
3765 .rows(rows)
3766 .channels(channels)
3767 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3768 }
3769 }
3770 }
3771
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_div_16_multipass_fulltile)3772 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_div_16_multipass_fulltile) {
3773 TEST_REQUIRES_X86_SSE2;
3774 for (size_t channels = 32; channels < 128; channels += 16) {
3775 for (size_t rows = 14; rows <= 35; rows += 7) {
3776 GAvgPoolMicrokernelTester()
3777 .rows(rows)
3778 .channels(channels)
3779 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3780 }
3781 }
3782 }
3783
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_div_16_multipass_fulltile_with_input_stride)3784 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_div_16_multipass_fulltile_with_input_stride) {
3785 TEST_REQUIRES_X86_SSE2;
3786 for (size_t channels = 32; channels < 128; channels += 16) {
3787 for (size_t rows = 14; rows <= 35; rows += 7) {
3788 GAvgPoolMicrokernelTester()
3789 .rows(rows)
3790 .channels(channels)
3791 .input_stride(263)
3792 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3793 }
3794 }
3795 }
3796
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_lt_16_2pass_fulltile)3797 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_2pass_fulltile) {
3798 TEST_REQUIRES_X86_SSE2;
3799 for (size_t channels = 1; channels < 16; channels++) {
3800 GAvgPoolMicrokernelTester()
3801 .rows(14)
3802 .channels(channels)
3803 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3804 }
3805 }
3806
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_lt_16_2pass_fulltile_with_qmax)3807 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_2pass_fulltile_with_qmax) {
3808 TEST_REQUIRES_X86_SSE2;
3809 for (size_t channels = 1; channels < 16; channels++) {
3810 GAvgPoolMicrokernelTester()
3811 .rows(14)
3812 .channels(channels)
3813 .qmax(128)
3814 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3815 }
3816 }
3817
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_lt_16_2pass_fulltile_with_qmin)3818 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_2pass_fulltile_with_qmin) {
3819 TEST_REQUIRES_X86_SSE2;
3820 for (size_t channels = 1; channels < 16; channels++) {
3821 GAvgPoolMicrokernelTester()
3822 .rows(14)
3823 .channels(channels)
3824 .qmin(128)
3825 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3826 }
3827 }
3828
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_lt_16_2pass_subtile)3829 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_2pass_subtile) {
3830 TEST_REQUIRES_X86_SSE2;
3831 for (size_t channels = 1; channels < 16; channels++) {
3832 for (size_t rows = 8; rows < 14; rows++) {
3833 GAvgPoolMicrokernelTester()
3834 .rows(rows)
3835 .channels(channels)
3836 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3837 }
3838 }
3839 }
3840
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_lt_16_multipass_fulltile)3841 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_multipass_fulltile) {
3842 TEST_REQUIRES_X86_SSE2;
3843 for (size_t channels = 1; channels < 16; channels++) {
3844 for (size_t rows = 14; rows <= 35; rows += 7) {
3845 GAvgPoolMicrokernelTester()
3846 .rows(rows)
3847 .channels(channels)
3848 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3849 }
3850 }
3851 }
3852
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_lt_16_multipass_fulltile_with_input_stride)3853 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
3854 TEST_REQUIRES_X86_SSE2;
3855 for (size_t channels = 1; channels < 16; channels++) {
3856 for (size_t rows = 14; rows <= 35; rows += 7) {
3857 GAvgPoolMicrokernelTester()
3858 .rows(rows)
3859 .channels(channels)
3860 .input_stride(19)
3861 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3862 }
3863 }
3864 }
3865
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_gt_16_2pass_fulltile)3866 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_2pass_fulltile) {
3867 TEST_REQUIRES_X86_SSE2;
3868 for (size_t channels = 17; channels < 32; channels++) {
3869 GAvgPoolMicrokernelTester()
3870 .rows(14)
3871 .channels(channels)
3872 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3873 }
3874 }
3875
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_gt_16_2pass_fulltile_with_qmax)3876 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_2pass_fulltile_with_qmax) {
3877 TEST_REQUIRES_X86_SSE2;
3878 for (size_t channels = 17; channels < 32; channels++) {
3879 GAvgPoolMicrokernelTester()
3880 .rows(14)
3881 .channels(channels)
3882 .qmax(128)
3883 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3884 }
3885 }
3886
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_gt_16_2pass_fulltile_with_qmin)3887 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_2pass_fulltile_with_qmin) {
3888 TEST_REQUIRES_X86_SSE2;
3889 for (size_t channels = 17; channels < 32; channels++) {
3890 GAvgPoolMicrokernelTester()
3891 .rows(14)
3892 .channels(channels)
3893 .qmin(128)
3894 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3895 }
3896 }
3897
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_gt_16_2pass_subtile)3898 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_2pass_subtile) {
3899 TEST_REQUIRES_X86_SSE2;
3900 for (size_t channels = 17; channels < 32; channels++) {
3901 for (size_t rows = 8; rows < 14; rows++) {
3902 GAvgPoolMicrokernelTester()
3903 .rows(rows)
3904 .channels(channels)
3905 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3906 }
3907 }
3908 }
3909
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_gt_16_multipass_fulltile)3910 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_multipass_fulltile) {
3911 TEST_REQUIRES_X86_SSE2;
3912 for (size_t channels = 17; channels < 32; channels++) {
3913 for (size_t rows = 14; rows < 35; rows += 14) {
3914 GAvgPoolMicrokernelTester()
3915 .rows(rows)
3916 .channels(channels)
3917 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3918 }
3919 }
3920 }
3921
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16,channels_gt_16_multipass_fulltile_with_input_stride)3922 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
3923 TEST_REQUIRES_X86_SSE2;
3924 for (size_t channels = 17; channels < 32; channels++) {
3925 for (size_t rows = 14; rows < 35; rows += 14) {
3926 GAvgPoolMicrokernelTester()
3927 .rows(rows)
3928 .channels(channels)
3929 .input_stride(47)
3930 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3931 }
3932 }
3933 }
3934 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3935
3936
3937 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_eq_24_2pass_fulltile)3938 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_fulltile) {
3939 TEST_REQUIRES_X86_SSE2;
3940 GAvgPoolMicrokernelTester()
3941 .rows(14)
3942 .channels(24)
3943 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3944 }
3945
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_eq_24_2pass_fulltile_with_input_stride)3946 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
3947 TEST_REQUIRES_X86_SSE2;
3948 GAvgPoolMicrokernelTester()
3949 .rows(14)
3950 .channels(24)
3951 .input_stride(29)
3952 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3953 }
3954
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_eq_24_2pass_fulltile_with_qmax)3955 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_fulltile_with_qmax) {
3956 TEST_REQUIRES_X86_SSE2;
3957 GAvgPoolMicrokernelTester()
3958 .rows(14)
3959 .channels(24)
3960 .qmax(128)
3961 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3962 }
3963
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_eq_24_2pass_fulltile_with_qmin)3964 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_fulltile_with_qmin) {
3965 TEST_REQUIRES_X86_SSE2;
3966 GAvgPoolMicrokernelTester()
3967 .rows(14)
3968 .channels(24)
3969 .qmin(128)
3970 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3971 }
3972
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_eq_24_2pass_subtile)3973 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_subtile) {
3974 TEST_REQUIRES_X86_SSE2;
3975 for (size_t rows = 8; rows < 14; rows++) {
3976 GAvgPoolMicrokernelTester()
3977 .rows(rows)
3978 .channels(24)
3979 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3980 }
3981 }
3982
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_eq_24_2pass_subtile_with_input_stride)3983 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_subtile_with_input_stride) {
3984 TEST_REQUIRES_X86_SSE2;
3985 for (size_t rows = 8; rows < 14; rows++) {
3986 GAvgPoolMicrokernelTester()
3987 .rows(rows)
3988 .channels(24)
3989 .input_stride(29)
3990 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
3991 }
3992 }
3993
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_eq_24_multipass_fulltile)3994 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_multipass_fulltile) {
3995 TEST_REQUIRES_X86_SSE2;
3996 for (size_t rows = 14; rows <= 35; rows += 7) {
3997 GAvgPoolMicrokernelTester()
3998 .rows(rows)
3999 .channels(24)
4000 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4001 }
4002 }
4003
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_eq_24_multipass_fulltile_with_input_stride)4004 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
4005 TEST_REQUIRES_X86_SSE2;
4006 for (size_t rows = 14; rows <= 35; rows += 7) {
4007 GAvgPoolMicrokernelTester()
4008 .rows(rows)
4009 .channels(24)
4010 .input_stride(29)
4011 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4012 }
4013 }
4014
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_div_24_2pass_fulltile)4015 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_div_24_2pass_fulltile) {
4016 TEST_REQUIRES_X86_SSE2;
4017 for (size_t channels = 48; channels < 192; channels += 24) {
4018 GAvgPoolMicrokernelTester()
4019 .rows(14)
4020 .channels(channels)
4021 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4022 }
4023 }
4024
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_div_24_2pass_subtile)4025 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_div_24_2pass_subtile) {
4026 TEST_REQUIRES_X86_SSE2;
4027 for (size_t channels = 48; channels < 192; channels += 24) {
4028 for (size_t rows = 8; rows < 14; rows++) {
4029 GAvgPoolMicrokernelTester()
4030 .rows(rows)
4031 .channels(channels)
4032 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4033 }
4034 }
4035 }
4036
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_div_24_multipass_fulltile)4037 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_div_24_multipass_fulltile) {
4038 TEST_REQUIRES_X86_SSE2;
4039 for (size_t channels = 48; channels < 192; channels += 24) {
4040 for (size_t rows = 14; rows <= 35; rows += 7) {
4041 GAvgPoolMicrokernelTester()
4042 .rows(rows)
4043 .channels(channels)
4044 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4045 }
4046 }
4047 }
4048
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_div_24_multipass_fulltile_with_input_stride)4049 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_div_24_multipass_fulltile_with_input_stride) {
4050 TEST_REQUIRES_X86_SSE2;
4051 for (size_t channels = 48; channels < 192; channels += 24) {
4052 for (size_t rows = 14; rows <= 35; rows += 7) {
4053 GAvgPoolMicrokernelTester()
4054 .rows(rows)
4055 .channels(channels)
4056 .input_stride(389)
4057 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4058 }
4059 }
4060 }
4061
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_lt_24_2pass_fulltile)4062 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_2pass_fulltile) {
4063 TEST_REQUIRES_X86_SSE2;
4064 for (size_t channels = 1; channels < 24; channels++) {
4065 GAvgPoolMicrokernelTester()
4066 .rows(14)
4067 .channels(channels)
4068 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4069 }
4070 }
4071
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_lt_24_2pass_fulltile_with_qmax)4072 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_2pass_fulltile_with_qmax) {
4073 TEST_REQUIRES_X86_SSE2;
4074 for (size_t channels = 1; channels < 24; channels++) {
4075 GAvgPoolMicrokernelTester()
4076 .rows(14)
4077 .channels(channels)
4078 .qmax(128)
4079 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4080 }
4081 }
4082
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_lt_24_2pass_fulltile_with_qmin)4083 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_2pass_fulltile_with_qmin) {
4084 TEST_REQUIRES_X86_SSE2;
4085 for (size_t channels = 1; channels < 24; channels++) {
4086 GAvgPoolMicrokernelTester()
4087 .rows(14)
4088 .channels(channels)
4089 .qmin(128)
4090 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4091 }
4092 }
4093
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_lt_24_2pass_subtile)4094 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_2pass_subtile) {
4095 TEST_REQUIRES_X86_SSE2;
4096 for (size_t channels = 1; channels < 24; channels++) {
4097 for (size_t rows = 8; rows < 14; rows++) {
4098 GAvgPoolMicrokernelTester()
4099 .rows(rows)
4100 .channels(channels)
4101 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4102 }
4103 }
4104 }
4105
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_lt_24_multipass_fulltile)4106 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_multipass_fulltile) {
4107 TEST_REQUIRES_X86_SSE2;
4108 for (size_t channels = 1; channels < 24; channels++) {
4109 for (size_t rows = 14; rows <= 35; rows += 7) {
4110 GAvgPoolMicrokernelTester()
4111 .rows(rows)
4112 .channels(channels)
4113 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4114 }
4115 }
4116 }
4117
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_lt_24_multipass_fulltile_with_input_stride)4118 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
4119 TEST_REQUIRES_X86_SSE2;
4120 for (size_t channels = 1; channels < 24; channels++) {
4121 for (size_t rows = 14; rows <= 35; rows += 7) {
4122 GAvgPoolMicrokernelTester()
4123 .rows(rows)
4124 .channels(channels)
4125 .input_stride(29)
4126 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4127 }
4128 }
4129 }
4130
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_gt_24_2pass_fulltile)4131 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_2pass_fulltile) {
4132 TEST_REQUIRES_X86_SSE2;
4133 for (size_t channels = 25; channels < 48; channels++) {
4134 GAvgPoolMicrokernelTester()
4135 .rows(14)
4136 .channels(channels)
4137 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4138 }
4139 }
4140
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_gt_24_2pass_fulltile_with_qmax)4141 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_2pass_fulltile_with_qmax) {
4142 TEST_REQUIRES_X86_SSE2;
4143 for (size_t channels = 25; channels < 48; channels++) {
4144 GAvgPoolMicrokernelTester()
4145 .rows(14)
4146 .channels(channels)
4147 .qmax(128)
4148 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4149 }
4150 }
4151
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_gt_24_2pass_fulltile_with_qmin)4152 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_2pass_fulltile_with_qmin) {
4153 TEST_REQUIRES_X86_SSE2;
4154 for (size_t channels = 25; channels < 48; channels++) {
4155 GAvgPoolMicrokernelTester()
4156 .rows(14)
4157 .channels(channels)
4158 .qmin(128)
4159 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4160 }
4161 }
4162
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_gt_24_2pass_subtile)4163 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_2pass_subtile) {
4164 TEST_REQUIRES_X86_SSE2;
4165 for (size_t channels = 25; channels < 48; channels++) {
4166 for (size_t rows = 8; rows < 14; rows++) {
4167 GAvgPoolMicrokernelTester()
4168 .rows(rows)
4169 .channels(channels)
4170 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4171 }
4172 }
4173 }
4174
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_gt_24_multipass_fulltile)4175 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_multipass_fulltile) {
4176 TEST_REQUIRES_X86_SSE2;
4177 for (size_t channels = 25; channels < 48; channels++) {
4178 for (size_t rows = 14; rows < 35; rows += 14) {
4179 GAvgPoolMicrokernelTester()
4180 .rows(rows)
4181 .channels(channels)
4182 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4183 }
4184 }
4185 }
4186
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24,channels_gt_24_multipass_fulltile_with_input_stride)4187 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
4188 TEST_REQUIRES_X86_SSE2;
4189 for (size_t channels = 25; channels < 48; channels++) {
4190 for (size_t rows = 14; rows < 35; rows += 14) {
4191 GAvgPoolMicrokernelTester()
4192 .rows(rows)
4193 .channels(channels)
4194 .input_stride(61)
4195 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
4196 }
4197 }
4198 }
4199 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4200
4201
4202 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_eq_8_2pass_fulltile)4203 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_fulltile) {
4204 TEST_REQUIRES_X86_SSE41;
4205 GAvgPoolMicrokernelTester()
4206 .rows(14)
4207 .channels(8)
4208 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4209 }
4210
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_eq_8_2pass_fulltile_with_input_stride)4211 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
4212 TEST_REQUIRES_X86_SSE41;
4213 GAvgPoolMicrokernelTester()
4214 .rows(14)
4215 .channels(8)
4216 .input_stride(11)
4217 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4218 }
4219
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_eq_8_2pass_fulltile_with_qmax)4220 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_fulltile_with_qmax) {
4221 TEST_REQUIRES_X86_SSE41;
4222 GAvgPoolMicrokernelTester()
4223 .rows(14)
4224 .channels(8)
4225 .qmax(128)
4226 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4227 }
4228
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_eq_8_2pass_fulltile_with_qmin)4229 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_fulltile_with_qmin) {
4230 TEST_REQUIRES_X86_SSE41;
4231 GAvgPoolMicrokernelTester()
4232 .rows(14)
4233 .channels(8)
4234 .qmin(128)
4235 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4236 }
4237
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_eq_8_2pass_subtile)4238 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_subtile) {
4239 TEST_REQUIRES_X86_SSE41;
4240 for (size_t rows = 8; rows < 14; rows++) {
4241 GAvgPoolMicrokernelTester()
4242 .rows(rows)
4243 .channels(8)
4244 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4245 }
4246 }
4247
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_eq_8_2pass_subtile_with_input_stride)4248 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_subtile_with_input_stride) {
4249 TEST_REQUIRES_X86_SSE41;
4250 for (size_t rows = 8; rows < 14; rows++) {
4251 GAvgPoolMicrokernelTester()
4252 .rows(rows)
4253 .channels(8)
4254 .input_stride(11)
4255 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4256 }
4257 }
4258
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_eq_8_multipass_fulltile)4259 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_multipass_fulltile) {
4260 TEST_REQUIRES_X86_SSE41;
4261 for (size_t rows = 14; rows <= 35; rows += 7) {
4262 GAvgPoolMicrokernelTester()
4263 .rows(rows)
4264 .channels(8)
4265 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4266 }
4267 }
4268
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_eq_8_multipass_fulltile_with_input_stride)4269 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
4270 TEST_REQUIRES_X86_SSE41;
4271 for (size_t rows = 14; rows <= 35; rows += 7) {
4272 GAvgPoolMicrokernelTester()
4273 .rows(rows)
4274 .channels(8)
4275 .input_stride(11)
4276 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4277 }
4278 }
4279
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_div_8_2pass_fulltile)4280 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_div_8_2pass_fulltile) {
4281 TEST_REQUIRES_X86_SSE41;
4282 for (size_t channels = 16; channels < 64; channels += 8) {
4283 GAvgPoolMicrokernelTester()
4284 .rows(14)
4285 .channels(channels)
4286 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4287 }
4288 }
4289
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_div_8_2pass_subtile)4290 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_div_8_2pass_subtile) {
4291 TEST_REQUIRES_X86_SSE41;
4292 for (size_t channels = 16; channels < 64; channels += 8) {
4293 for (size_t rows = 8; rows < 14; rows++) {
4294 GAvgPoolMicrokernelTester()
4295 .rows(rows)
4296 .channels(channels)
4297 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4298 }
4299 }
4300 }
4301
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_div_8_multipass_fulltile)4302 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_div_8_multipass_fulltile) {
4303 TEST_REQUIRES_X86_SSE41;
4304 for (size_t channels = 16; channels < 64; channels += 8) {
4305 for (size_t rows = 14; rows <= 35; rows += 7) {
4306 GAvgPoolMicrokernelTester()
4307 .rows(rows)
4308 .channels(channels)
4309 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4310 }
4311 }
4312 }
4313
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_div_8_multipass_fulltile_with_input_stride)4314 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_div_8_multipass_fulltile_with_input_stride) {
4315 TEST_REQUIRES_X86_SSE41;
4316 for (size_t channels = 16; channels < 64; channels += 8) {
4317 for (size_t rows = 14; rows <= 35; rows += 7) {
4318 GAvgPoolMicrokernelTester()
4319 .rows(rows)
4320 .channels(channels)
4321 .input_stride(131)
4322 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4323 }
4324 }
4325 }
4326
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_lt_8_2pass_fulltile)4327 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_2pass_fulltile) {
4328 TEST_REQUIRES_X86_SSE41;
4329 for (size_t channels = 1; channels < 8; channels++) {
4330 GAvgPoolMicrokernelTester()
4331 .rows(14)
4332 .channels(channels)
4333 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4334 }
4335 }
4336
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_lt_8_2pass_fulltile_with_qmax)4337 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_2pass_fulltile_with_qmax) {
4338 TEST_REQUIRES_X86_SSE41;
4339 for (size_t channels = 1; channels < 8; channels++) {
4340 GAvgPoolMicrokernelTester()
4341 .rows(14)
4342 .channels(channels)
4343 .qmax(128)
4344 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4345 }
4346 }
4347
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_lt_8_2pass_fulltile_with_qmin)4348 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_2pass_fulltile_with_qmin) {
4349 TEST_REQUIRES_X86_SSE41;
4350 for (size_t channels = 1; channels < 8; channels++) {
4351 GAvgPoolMicrokernelTester()
4352 .rows(14)
4353 .channels(channels)
4354 .qmin(128)
4355 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4356 }
4357 }
4358
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_lt_8_2pass_subtile)4359 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_2pass_subtile) {
4360 TEST_REQUIRES_X86_SSE41;
4361 for (size_t channels = 1; channels < 8; channels++) {
4362 for (size_t rows = 8; rows < 14; rows++) {
4363 GAvgPoolMicrokernelTester()
4364 .rows(rows)
4365 .channels(channels)
4366 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4367 }
4368 }
4369 }
4370
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_lt_8_multipass_fulltile)4371 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_multipass_fulltile) {
4372 TEST_REQUIRES_X86_SSE41;
4373 for (size_t channels = 1; channels < 8; channels++) {
4374 for (size_t rows = 14; rows <= 35; rows += 7) {
4375 GAvgPoolMicrokernelTester()
4376 .rows(rows)
4377 .channels(channels)
4378 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4379 }
4380 }
4381 }
4382
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_lt_8_multipass_fulltile_with_input_stride)4383 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
4384 TEST_REQUIRES_X86_SSE41;
4385 for (size_t channels = 1; channels < 8; channels++) {
4386 for (size_t rows = 14; rows <= 35; rows += 7) {
4387 GAvgPoolMicrokernelTester()
4388 .rows(rows)
4389 .channels(channels)
4390 .input_stride(11)
4391 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4392 }
4393 }
4394 }
4395
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_gt_8_2pass_fulltile)4396 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_2pass_fulltile) {
4397 TEST_REQUIRES_X86_SSE41;
4398 for (size_t channels = 9; channels < 16; channels++) {
4399 GAvgPoolMicrokernelTester()
4400 .rows(14)
4401 .channels(channels)
4402 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4403 }
4404 }
4405
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_gt_8_2pass_fulltile_with_qmax)4406 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_2pass_fulltile_with_qmax) {
4407 TEST_REQUIRES_X86_SSE41;
4408 for (size_t channels = 9; channels < 16; channels++) {
4409 GAvgPoolMicrokernelTester()
4410 .rows(14)
4411 .channels(channels)
4412 .qmax(128)
4413 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4414 }
4415 }
4416
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_gt_8_2pass_fulltile_with_qmin)4417 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_2pass_fulltile_with_qmin) {
4418 TEST_REQUIRES_X86_SSE41;
4419 for (size_t channels = 9; channels < 16; channels++) {
4420 GAvgPoolMicrokernelTester()
4421 .rows(14)
4422 .channels(channels)
4423 .qmin(128)
4424 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4425 }
4426 }
4427
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_gt_8_2pass_subtile)4428 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_2pass_subtile) {
4429 TEST_REQUIRES_X86_SSE41;
4430 for (size_t channels = 9; channels < 16; channels++) {
4431 for (size_t rows = 8; rows < 14; rows++) {
4432 GAvgPoolMicrokernelTester()
4433 .rows(rows)
4434 .channels(channels)
4435 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4436 }
4437 }
4438 }
4439
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_gt_8_multipass_fulltile)4440 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_multipass_fulltile) {
4441 TEST_REQUIRES_X86_SSE41;
4442 for (size_t channels = 9; channels < 16; channels++) {
4443 for (size_t rows = 14; rows < 35; rows += 14) {
4444 GAvgPoolMicrokernelTester()
4445 .rows(rows)
4446 .channels(channels)
4447 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4448 }
4449 }
4450 }
4451
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8,channels_gt_8_multipass_fulltile_with_input_stride)4452 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
4453 TEST_REQUIRES_X86_SSE41;
4454 for (size_t channels = 9; channels < 16; channels++) {
4455 for (size_t rows = 14; rows < 35; rows += 14) {
4456 GAvgPoolMicrokernelTester()
4457 .rows(rows)
4458 .channels(channels)
4459 .input_stride(29)
4460 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4461 }
4462 }
4463 }
4464 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4465
4466
4467 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_eq_16_2pass_fulltile)4468 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_fulltile) {
4469 TEST_REQUIRES_X86_SSE41;
4470 GAvgPoolMicrokernelTester()
4471 .rows(14)
4472 .channels(16)
4473 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4474 }
4475
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_eq_16_2pass_fulltile_with_input_stride)4476 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
4477 TEST_REQUIRES_X86_SSE41;
4478 GAvgPoolMicrokernelTester()
4479 .rows(14)
4480 .channels(16)
4481 .input_stride(19)
4482 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4483 }
4484
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_eq_16_2pass_fulltile_with_qmax)4485 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_fulltile_with_qmax) {
4486 TEST_REQUIRES_X86_SSE41;
4487 GAvgPoolMicrokernelTester()
4488 .rows(14)
4489 .channels(16)
4490 .qmax(128)
4491 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4492 }
4493
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_eq_16_2pass_fulltile_with_qmin)4494 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_fulltile_with_qmin) {
4495 TEST_REQUIRES_X86_SSE41;
4496 GAvgPoolMicrokernelTester()
4497 .rows(14)
4498 .channels(16)
4499 .qmin(128)
4500 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4501 }
4502
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_eq_16_2pass_subtile)4503 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_subtile) {
4504 TEST_REQUIRES_X86_SSE41;
4505 for (size_t rows = 8; rows < 14; rows++) {
4506 GAvgPoolMicrokernelTester()
4507 .rows(rows)
4508 .channels(16)
4509 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4510 }
4511 }
4512
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_eq_16_2pass_subtile_with_input_stride)4513 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_subtile_with_input_stride) {
4514 TEST_REQUIRES_X86_SSE41;
4515 for (size_t rows = 8; rows < 14; rows++) {
4516 GAvgPoolMicrokernelTester()
4517 .rows(rows)
4518 .channels(16)
4519 .input_stride(19)
4520 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4521 }
4522 }
4523
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_eq_16_multipass_fulltile)4524 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_multipass_fulltile) {
4525 TEST_REQUIRES_X86_SSE41;
4526 for (size_t rows = 14; rows <= 35; rows += 7) {
4527 GAvgPoolMicrokernelTester()
4528 .rows(rows)
4529 .channels(16)
4530 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4531 }
4532 }
4533
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_eq_16_multipass_fulltile_with_input_stride)4534 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
4535 TEST_REQUIRES_X86_SSE41;
4536 for (size_t rows = 14; rows <= 35; rows += 7) {
4537 GAvgPoolMicrokernelTester()
4538 .rows(rows)
4539 .channels(16)
4540 .input_stride(19)
4541 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4542 }
4543 }
4544
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_div_16_2pass_fulltile)4545 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_div_16_2pass_fulltile) {
4546 TEST_REQUIRES_X86_SSE41;
4547 for (size_t channels = 32; channels < 128; channels += 16) {
4548 GAvgPoolMicrokernelTester()
4549 .rows(14)
4550 .channels(channels)
4551 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4552 }
4553 }
4554
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_div_16_2pass_subtile)4555 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_div_16_2pass_subtile) {
4556 TEST_REQUIRES_X86_SSE41;
4557 for (size_t channels = 32; channels < 128; channels += 16) {
4558 for (size_t rows = 8; rows < 14; rows++) {
4559 GAvgPoolMicrokernelTester()
4560 .rows(rows)
4561 .channels(channels)
4562 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4563 }
4564 }
4565 }
4566
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_div_16_multipass_fulltile)4567 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_div_16_multipass_fulltile) {
4568 TEST_REQUIRES_X86_SSE41;
4569 for (size_t channels = 32; channels < 128; channels += 16) {
4570 for (size_t rows = 14; rows <= 35; rows += 7) {
4571 GAvgPoolMicrokernelTester()
4572 .rows(rows)
4573 .channels(channels)
4574 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4575 }
4576 }
4577 }
4578
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_div_16_multipass_fulltile_with_input_stride)4579 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_div_16_multipass_fulltile_with_input_stride) {
4580 TEST_REQUIRES_X86_SSE41;
4581 for (size_t channels = 32; channels < 128; channels += 16) {
4582 for (size_t rows = 14; rows <= 35; rows += 7) {
4583 GAvgPoolMicrokernelTester()
4584 .rows(rows)
4585 .channels(channels)
4586 .input_stride(263)
4587 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4588 }
4589 }
4590 }
4591
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_lt_16_2pass_fulltile)4592 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_2pass_fulltile) {
4593 TEST_REQUIRES_X86_SSE41;
4594 for (size_t channels = 1; channels < 16; channels++) {
4595 GAvgPoolMicrokernelTester()
4596 .rows(14)
4597 .channels(channels)
4598 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4599 }
4600 }
4601
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_lt_16_2pass_fulltile_with_qmax)4602 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_2pass_fulltile_with_qmax) {
4603 TEST_REQUIRES_X86_SSE41;
4604 for (size_t channels = 1; channels < 16; channels++) {
4605 GAvgPoolMicrokernelTester()
4606 .rows(14)
4607 .channels(channels)
4608 .qmax(128)
4609 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4610 }
4611 }
4612
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_lt_16_2pass_fulltile_with_qmin)4613 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_2pass_fulltile_with_qmin) {
4614 TEST_REQUIRES_X86_SSE41;
4615 for (size_t channels = 1; channels < 16; channels++) {
4616 GAvgPoolMicrokernelTester()
4617 .rows(14)
4618 .channels(channels)
4619 .qmin(128)
4620 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4621 }
4622 }
4623
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_lt_16_2pass_subtile)4624 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_2pass_subtile) {
4625 TEST_REQUIRES_X86_SSE41;
4626 for (size_t channels = 1; channels < 16; channels++) {
4627 for (size_t rows = 8; rows < 14; rows++) {
4628 GAvgPoolMicrokernelTester()
4629 .rows(rows)
4630 .channels(channels)
4631 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4632 }
4633 }
4634 }
4635
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_lt_16_multipass_fulltile)4636 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_multipass_fulltile) {
4637 TEST_REQUIRES_X86_SSE41;
4638 for (size_t channels = 1; channels < 16; channels++) {
4639 for (size_t rows = 14; rows <= 35; rows += 7) {
4640 GAvgPoolMicrokernelTester()
4641 .rows(rows)
4642 .channels(channels)
4643 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4644 }
4645 }
4646 }
4647
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_lt_16_multipass_fulltile_with_input_stride)4648 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
4649 TEST_REQUIRES_X86_SSE41;
4650 for (size_t channels = 1; channels < 16; channels++) {
4651 for (size_t rows = 14; rows <= 35; rows += 7) {
4652 GAvgPoolMicrokernelTester()
4653 .rows(rows)
4654 .channels(channels)
4655 .input_stride(19)
4656 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4657 }
4658 }
4659 }
4660
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_gt_16_2pass_fulltile)4661 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_2pass_fulltile) {
4662 TEST_REQUIRES_X86_SSE41;
4663 for (size_t channels = 17; channels < 32; channels++) {
4664 GAvgPoolMicrokernelTester()
4665 .rows(14)
4666 .channels(channels)
4667 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4668 }
4669 }
4670
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_gt_16_2pass_fulltile_with_qmax)4671 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_2pass_fulltile_with_qmax) {
4672 TEST_REQUIRES_X86_SSE41;
4673 for (size_t channels = 17; channels < 32; channels++) {
4674 GAvgPoolMicrokernelTester()
4675 .rows(14)
4676 .channels(channels)
4677 .qmax(128)
4678 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4679 }
4680 }
4681
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_gt_16_2pass_fulltile_with_qmin)4682 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_2pass_fulltile_with_qmin) {
4683 TEST_REQUIRES_X86_SSE41;
4684 for (size_t channels = 17; channels < 32; channels++) {
4685 GAvgPoolMicrokernelTester()
4686 .rows(14)
4687 .channels(channels)
4688 .qmin(128)
4689 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4690 }
4691 }
4692
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_gt_16_2pass_subtile)4693 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_2pass_subtile) {
4694 TEST_REQUIRES_X86_SSE41;
4695 for (size_t channels = 17; channels < 32; channels++) {
4696 for (size_t rows = 8; rows < 14; rows++) {
4697 GAvgPoolMicrokernelTester()
4698 .rows(rows)
4699 .channels(channels)
4700 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4701 }
4702 }
4703 }
4704
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_gt_16_multipass_fulltile)4705 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_multipass_fulltile) {
4706 TEST_REQUIRES_X86_SSE41;
4707 for (size_t channels = 17; channels < 32; channels++) {
4708 for (size_t rows = 14; rows < 35; rows += 14) {
4709 GAvgPoolMicrokernelTester()
4710 .rows(rows)
4711 .channels(channels)
4712 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4713 }
4714 }
4715 }
4716
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16,channels_gt_16_multipass_fulltile_with_input_stride)4717 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
4718 TEST_REQUIRES_X86_SSE41;
4719 for (size_t channels = 17; channels < 32; channels++) {
4720 for (size_t rows = 14; rows < 35; rows += 14) {
4721 GAvgPoolMicrokernelTester()
4722 .rows(rows)
4723 .channels(channels)
4724 .input_stride(47)
4725 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4726 }
4727 }
4728 }
4729 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4730
4731
4732 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_eq_24_2pass_fulltile)4733 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_fulltile) {
4734 TEST_REQUIRES_X86_SSE41;
4735 GAvgPoolMicrokernelTester()
4736 .rows(14)
4737 .channels(24)
4738 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4739 }
4740
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_eq_24_2pass_fulltile_with_input_stride)4741 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
4742 TEST_REQUIRES_X86_SSE41;
4743 GAvgPoolMicrokernelTester()
4744 .rows(14)
4745 .channels(24)
4746 .input_stride(29)
4747 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4748 }
4749
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_eq_24_2pass_fulltile_with_qmax)4750 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_fulltile_with_qmax) {
4751 TEST_REQUIRES_X86_SSE41;
4752 GAvgPoolMicrokernelTester()
4753 .rows(14)
4754 .channels(24)
4755 .qmax(128)
4756 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4757 }
4758
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_eq_24_2pass_fulltile_with_qmin)4759 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_fulltile_with_qmin) {
4760 TEST_REQUIRES_X86_SSE41;
4761 GAvgPoolMicrokernelTester()
4762 .rows(14)
4763 .channels(24)
4764 .qmin(128)
4765 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4766 }
4767
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_eq_24_2pass_subtile)4768 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_subtile) {
4769 TEST_REQUIRES_X86_SSE41;
4770 for (size_t rows = 8; rows < 14; rows++) {
4771 GAvgPoolMicrokernelTester()
4772 .rows(rows)
4773 .channels(24)
4774 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4775 }
4776 }
4777
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_eq_24_2pass_subtile_with_input_stride)4778 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_subtile_with_input_stride) {
4779 TEST_REQUIRES_X86_SSE41;
4780 for (size_t rows = 8; rows < 14; rows++) {
4781 GAvgPoolMicrokernelTester()
4782 .rows(rows)
4783 .channels(24)
4784 .input_stride(29)
4785 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4786 }
4787 }
4788
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_eq_24_multipass_fulltile)4789 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_multipass_fulltile) {
4790 TEST_REQUIRES_X86_SSE41;
4791 for (size_t rows = 14; rows <= 35; rows += 7) {
4792 GAvgPoolMicrokernelTester()
4793 .rows(rows)
4794 .channels(24)
4795 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4796 }
4797 }
4798
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_eq_24_multipass_fulltile_with_input_stride)4799 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
4800 TEST_REQUIRES_X86_SSE41;
4801 for (size_t rows = 14; rows <= 35; rows += 7) {
4802 GAvgPoolMicrokernelTester()
4803 .rows(rows)
4804 .channels(24)
4805 .input_stride(29)
4806 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4807 }
4808 }
4809
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_div_24_2pass_fulltile)4810 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_div_24_2pass_fulltile) {
4811 TEST_REQUIRES_X86_SSE41;
4812 for (size_t channels = 48; channels < 192; channels += 24) {
4813 GAvgPoolMicrokernelTester()
4814 .rows(14)
4815 .channels(channels)
4816 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4817 }
4818 }
4819
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_div_24_2pass_subtile)4820 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_div_24_2pass_subtile) {
4821 TEST_REQUIRES_X86_SSE41;
4822 for (size_t channels = 48; channels < 192; channels += 24) {
4823 for (size_t rows = 8; rows < 14; rows++) {
4824 GAvgPoolMicrokernelTester()
4825 .rows(rows)
4826 .channels(channels)
4827 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4828 }
4829 }
4830 }
4831
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_div_24_multipass_fulltile)4832 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_div_24_multipass_fulltile) {
4833 TEST_REQUIRES_X86_SSE41;
4834 for (size_t channels = 48; channels < 192; channels += 24) {
4835 for (size_t rows = 14; rows <= 35; rows += 7) {
4836 GAvgPoolMicrokernelTester()
4837 .rows(rows)
4838 .channels(channels)
4839 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4840 }
4841 }
4842 }
4843
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_div_24_multipass_fulltile_with_input_stride)4844 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_div_24_multipass_fulltile_with_input_stride) {
4845 TEST_REQUIRES_X86_SSE41;
4846 for (size_t channels = 48; channels < 192; channels += 24) {
4847 for (size_t rows = 14; rows <= 35; rows += 7) {
4848 GAvgPoolMicrokernelTester()
4849 .rows(rows)
4850 .channels(channels)
4851 .input_stride(389)
4852 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4853 }
4854 }
4855 }
4856
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_lt_24_2pass_fulltile)4857 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_2pass_fulltile) {
4858 TEST_REQUIRES_X86_SSE41;
4859 for (size_t channels = 1; channels < 24; channels++) {
4860 GAvgPoolMicrokernelTester()
4861 .rows(14)
4862 .channels(channels)
4863 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4864 }
4865 }
4866
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_lt_24_2pass_fulltile_with_qmax)4867 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_2pass_fulltile_with_qmax) {
4868 TEST_REQUIRES_X86_SSE41;
4869 for (size_t channels = 1; channels < 24; channels++) {
4870 GAvgPoolMicrokernelTester()
4871 .rows(14)
4872 .channels(channels)
4873 .qmax(128)
4874 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4875 }
4876 }
4877
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_lt_24_2pass_fulltile_with_qmin)4878 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_2pass_fulltile_with_qmin) {
4879 TEST_REQUIRES_X86_SSE41;
4880 for (size_t channels = 1; channels < 24; channels++) {
4881 GAvgPoolMicrokernelTester()
4882 .rows(14)
4883 .channels(channels)
4884 .qmin(128)
4885 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4886 }
4887 }
4888
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_lt_24_2pass_subtile)4889 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_2pass_subtile) {
4890 TEST_REQUIRES_X86_SSE41;
4891 for (size_t channels = 1; channels < 24; channels++) {
4892 for (size_t rows = 8; rows < 14; rows++) {
4893 GAvgPoolMicrokernelTester()
4894 .rows(rows)
4895 .channels(channels)
4896 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4897 }
4898 }
4899 }
4900
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_lt_24_multipass_fulltile)4901 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_multipass_fulltile) {
4902 TEST_REQUIRES_X86_SSE41;
4903 for (size_t channels = 1; channels < 24; channels++) {
4904 for (size_t rows = 14; rows <= 35; rows += 7) {
4905 GAvgPoolMicrokernelTester()
4906 .rows(rows)
4907 .channels(channels)
4908 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4909 }
4910 }
4911 }
4912
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_lt_24_multipass_fulltile_with_input_stride)4913 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
4914 TEST_REQUIRES_X86_SSE41;
4915 for (size_t channels = 1; channels < 24; channels++) {
4916 for (size_t rows = 14; rows <= 35; rows += 7) {
4917 GAvgPoolMicrokernelTester()
4918 .rows(rows)
4919 .channels(channels)
4920 .input_stride(29)
4921 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4922 }
4923 }
4924 }
4925
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_gt_24_2pass_fulltile)4926 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_2pass_fulltile) {
4927 TEST_REQUIRES_X86_SSE41;
4928 for (size_t channels = 25; channels < 48; channels++) {
4929 GAvgPoolMicrokernelTester()
4930 .rows(14)
4931 .channels(channels)
4932 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4933 }
4934 }
4935
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_gt_24_2pass_fulltile_with_qmax)4936 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_2pass_fulltile_with_qmax) {
4937 TEST_REQUIRES_X86_SSE41;
4938 for (size_t channels = 25; channels < 48; channels++) {
4939 GAvgPoolMicrokernelTester()
4940 .rows(14)
4941 .channels(channels)
4942 .qmax(128)
4943 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4944 }
4945 }
4946
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_gt_24_2pass_fulltile_with_qmin)4947 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_2pass_fulltile_with_qmin) {
4948 TEST_REQUIRES_X86_SSE41;
4949 for (size_t channels = 25; channels < 48; channels++) {
4950 GAvgPoolMicrokernelTester()
4951 .rows(14)
4952 .channels(channels)
4953 .qmin(128)
4954 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4955 }
4956 }
4957
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_gt_24_2pass_subtile)4958 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_2pass_subtile) {
4959 TEST_REQUIRES_X86_SSE41;
4960 for (size_t channels = 25; channels < 48; channels++) {
4961 for (size_t rows = 8; rows < 14; rows++) {
4962 GAvgPoolMicrokernelTester()
4963 .rows(rows)
4964 .channels(channels)
4965 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4966 }
4967 }
4968 }
4969
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_gt_24_multipass_fulltile)4970 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_multipass_fulltile) {
4971 TEST_REQUIRES_X86_SSE41;
4972 for (size_t channels = 25; channels < 48; channels++) {
4973 for (size_t rows = 14; rows < 35; rows += 14) {
4974 GAvgPoolMicrokernelTester()
4975 .rows(rows)
4976 .channels(channels)
4977 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4978 }
4979 }
4980 }
4981
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24,channels_gt_24_multipass_fulltile_with_input_stride)4982 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
4983 TEST_REQUIRES_X86_SSE41;
4984 for (size_t channels = 25; channels < 48; channels++) {
4985 for (size_t rows = 14; rows < 35; rows += 14) {
4986 GAvgPoolMicrokernelTester()
4987 .rows(rows)
4988 .channels(channels)
4989 .input_stride(61)
4990 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
4991 }
4992 }
4993 }
4994 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4995
4996
4997 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_eq_8_fulltile)4998 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_fulltile) {
4999 TEST_REQUIRES_X86_SSE2;
5000 GAvgPoolMicrokernelTester()
5001 .rows(7)
5002 .channels(8)
5003 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5004 }
5005
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_eq_8_subtile)5006 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_subtile) {
5007 TEST_REQUIRES_X86_SSE2;
5008 for (size_t rows = 1; rows < 7; rows++) {
5009 GAvgPoolMicrokernelTester()
5010 .rows(rows)
5011 .channels(8)
5012 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5013 }
5014 }
5015
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_eq_8_fulltile_with_input_stride)5016 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_fulltile_with_input_stride) {
5017 TEST_REQUIRES_X86_SSE2;
5018 GAvgPoolMicrokernelTester()
5019 .rows(7)
5020 .channels(8)
5021 .input_stride(11)
5022 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5023 }
5024
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_eq_8_fulltile_with_qmax)5025 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_fulltile_with_qmax) {
5026 TEST_REQUIRES_X86_SSE2;
5027 GAvgPoolMicrokernelTester()
5028 .rows(7)
5029 .channels(8)
5030 .qmax(128)
5031 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5032 }
5033
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_eq_8_fulltile_with_qmin)5034 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_fulltile_with_qmin) {
5035 TEST_REQUIRES_X86_SSE2;
5036 GAvgPoolMicrokernelTester()
5037 .rows(7)
5038 .channels(8)
5039 .qmin(128)
5040 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5041 }
5042
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_div_8_fulltile)5043 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_div_8_fulltile) {
5044 TEST_REQUIRES_X86_SSE2;
5045 for (size_t channels = 16; channels < 64; channels += 8) {
5046 GAvgPoolMicrokernelTester()
5047 .rows(7)
5048 .channels(channels)
5049 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5050 }
5051 }
5052
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_div_8_subtile)5053 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_div_8_subtile) {
5054 TEST_REQUIRES_X86_SSE2;
5055 for (size_t channels = 16; channels < 64; channels += 8) {
5056 for (size_t rows = 1; rows < 7; rows++) {
5057 GAvgPoolMicrokernelTester()
5058 .rows(rows)
5059 .channels(channels)
5060 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5061 }
5062 }
5063 }
5064
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_lt_8_fulltile)5065 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_lt_8_fulltile) {
5066 TEST_REQUIRES_X86_SSE2;
5067 for (size_t channels = 1; channels < 8; channels++) {
5068 GAvgPoolMicrokernelTester()
5069 .rows(7)
5070 .channels(channels)
5071 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5072 }
5073 }
5074
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_lt_8_subtile)5075 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_lt_8_subtile) {
5076 TEST_REQUIRES_X86_SSE2;
5077 for (size_t channels = 1; channels < 8; channels++) {
5078 for (size_t rows = 1; rows < 7; rows++) {
5079 GAvgPoolMicrokernelTester()
5080 .rows(rows)
5081 .channels(channels)
5082 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5083 }
5084 }
5085 }
5086
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_lt_8_fulltile_with_qmax)5087 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_lt_8_fulltile_with_qmax) {
5088 TEST_REQUIRES_X86_SSE2;
5089 for (size_t channels = 1; channels < 8; channels++) {
5090 GAvgPoolMicrokernelTester()
5091 .rows(7)
5092 .channels(channels)
5093 .qmax(128)
5094 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5095 }
5096 }
5097
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_lt_8_fulltile_with_qmin)5098 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_lt_8_fulltile_with_qmin) {
5099 TEST_REQUIRES_X86_SSE2;
5100 for (size_t channels = 1; channels < 8; channels++) {
5101 GAvgPoolMicrokernelTester()
5102 .rows(7)
5103 .channels(channels)
5104 .qmin(128)
5105 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5106 }
5107 }
5108
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_gt_8_fulltile)5109 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_gt_8_fulltile) {
5110 TEST_REQUIRES_X86_SSE2;
5111 for (size_t channels = 9; channels < 16; channels++) {
5112 GAvgPoolMicrokernelTester()
5113 .rows(7)
5114 .channels(channels)
5115 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5116 }
5117 }
5118
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_gt_8_subtile)5119 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_gt_8_subtile) {
5120 TEST_REQUIRES_X86_SSE2;
5121 for (size_t channels = 9; channels < 16; channels++) {
5122 for (size_t rows = 1; rows < 7; rows++) {
5123 GAvgPoolMicrokernelTester()
5124 .rows(rows)
5125 .channels(channels)
5126 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5127 }
5128 }
5129 }
5130
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_gt_8_fulltile_with_qmax)5131 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_gt_8_fulltile_with_qmax) {
5132 TEST_REQUIRES_X86_SSE2;
5133 for (size_t channels = 9; channels < 16; channels++) {
5134 GAvgPoolMicrokernelTester()
5135 .rows(7)
5136 .channels(channels)
5137 .qmax(128)
5138 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5139 }
5140 }
5141
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8,channels_gt_8_fulltile_with_qmin)5142 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_gt_8_fulltile_with_qmin) {
5143 TEST_REQUIRES_X86_SSE2;
5144 for (size_t channels = 9; channels < 16; channels++) {
5145 GAvgPoolMicrokernelTester()
5146 .rows(7)
5147 .channels(channels)
5148 .qmin(128)
5149 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5150 }
5151 }
5152 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5153
5154
5155 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_eq_16_fulltile)5156 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_fulltile) {
5157 TEST_REQUIRES_X86_SSE2;
5158 GAvgPoolMicrokernelTester()
5159 .rows(7)
5160 .channels(16)
5161 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5162 }
5163
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_eq_16_subtile)5164 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_subtile) {
5165 TEST_REQUIRES_X86_SSE2;
5166 for (size_t rows = 1; rows < 7; rows++) {
5167 GAvgPoolMicrokernelTester()
5168 .rows(rows)
5169 .channels(16)
5170 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5171 }
5172 }
5173
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_eq_16_fulltile_with_input_stride)5174 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_fulltile_with_input_stride) {
5175 TEST_REQUIRES_X86_SSE2;
5176 GAvgPoolMicrokernelTester()
5177 .rows(7)
5178 .channels(16)
5179 .input_stride(19)
5180 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5181 }
5182
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_eq_16_fulltile_with_qmax)5183 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_fulltile_with_qmax) {
5184 TEST_REQUIRES_X86_SSE2;
5185 GAvgPoolMicrokernelTester()
5186 .rows(7)
5187 .channels(16)
5188 .qmax(128)
5189 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5190 }
5191
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_eq_16_fulltile_with_qmin)5192 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_fulltile_with_qmin) {
5193 TEST_REQUIRES_X86_SSE2;
5194 GAvgPoolMicrokernelTester()
5195 .rows(7)
5196 .channels(16)
5197 .qmin(128)
5198 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5199 }
5200
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_div_16_fulltile)5201 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_div_16_fulltile) {
5202 TEST_REQUIRES_X86_SSE2;
5203 for (size_t channels = 32; channels < 128; channels += 16) {
5204 GAvgPoolMicrokernelTester()
5205 .rows(7)
5206 .channels(channels)
5207 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5208 }
5209 }
5210
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_div_16_subtile)5211 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_div_16_subtile) {
5212 TEST_REQUIRES_X86_SSE2;
5213 for (size_t channels = 32; channels < 128; channels += 16) {
5214 for (size_t rows = 1; rows < 7; rows++) {
5215 GAvgPoolMicrokernelTester()
5216 .rows(rows)
5217 .channels(channels)
5218 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5219 }
5220 }
5221 }
5222
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_lt_16_fulltile)5223 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_lt_16_fulltile) {
5224 TEST_REQUIRES_X86_SSE2;
5225 for (size_t channels = 1; channels < 16; channels++) {
5226 GAvgPoolMicrokernelTester()
5227 .rows(7)
5228 .channels(channels)
5229 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5230 }
5231 }
5232
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_lt_16_subtile)5233 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_lt_16_subtile) {
5234 TEST_REQUIRES_X86_SSE2;
5235 for (size_t channels = 1; channels < 16; channels++) {
5236 for (size_t rows = 1; rows < 7; rows++) {
5237 GAvgPoolMicrokernelTester()
5238 .rows(rows)
5239 .channels(channels)
5240 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5241 }
5242 }
5243 }
5244
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_lt_16_fulltile_with_qmax)5245 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_lt_16_fulltile_with_qmax) {
5246 TEST_REQUIRES_X86_SSE2;
5247 for (size_t channels = 1; channels < 16; channels++) {
5248 GAvgPoolMicrokernelTester()
5249 .rows(7)
5250 .channels(channels)
5251 .qmax(128)
5252 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5253 }
5254 }
5255
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_lt_16_fulltile_with_qmin)5256 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_lt_16_fulltile_with_qmin) {
5257 TEST_REQUIRES_X86_SSE2;
5258 for (size_t channels = 1; channels < 16; channels++) {
5259 GAvgPoolMicrokernelTester()
5260 .rows(7)
5261 .channels(channels)
5262 .qmin(128)
5263 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5264 }
5265 }
5266
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_gt_16_fulltile)5267 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_gt_16_fulltile) {
5268 TEST_REQUIRES_X86_SSE2;
5269 for (size_t channels = 17; channels < 32; channels++) {
5270 GAvgPoolMicrokernelTester()
5271 .rows(7)
5272 .channels(channels)
5273 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5274 }
5275 }
5276
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_gt_16_subtile)5277 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_gt_16_subtile) {
5278 TEST_REQUIRES_X86_SSE2;
5279 for (size_t channels = 17; channels < 32; channels++) {
5280 for (size_t rows = 1; rows < 7; rows++) {
5281 GAvgPoolMicrokernelTester()
5282 .rows(rows)
5283 .channels(channels)
5284 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5285 }
5286 }
5287 }
5288
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_gt_16_fulltile_with_qmax)5289 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_gt_16_fulltile_with_qmax) {
5290 TEST_REQUIRES_X86_SSE2;
5291 for (size_t channels = 17; channels < 32; channels++) {
5292 GAvgPoolMicrokernelTester()
5293 .rows(7)
5294 .channels(channels)
5295 .qmax(128)
5296 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5297 }
5298 }
5299
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16,channels_gt_16_fulltile_with_qmin)5300 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_gt_16_fulltile_with_qmin) {
5301 TEST_REQUIRES_X86_SSE2;
5302 for (size_t channels = 17; channels < 32; channels++) {
5303 GAvgPoolMicrokernelTester()
5304 .rows(7)
5305 .channels(channels)
5306 .qmin(128)
5307 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5308 }
5309 }
5310 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5311
5312
5313 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_eq_24_fulltile)5314 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_fulltile) {
5315 TEST_REQUIRES_X86_SSE2;
5316 GAvgPoolMicrokernelTester()
5317 .rows(7)
5318 .channels(24)
5319 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5320 }
5321
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_eq_24_subtile)5322 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_subtile) {
5323 TEST_REQUIRES_X86_SSE2;
5324 for (size_t rows = 1; rows < 7; rows++) {
5325 GAvgPoolMicrokernelTester()
5326 .rows(rows)
5327 .channels(24)
5328 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5329 }
5330 }
5331
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_eq_24_fulltile_with_input_stride)5332 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_fulltile_with_input_stride) {
5333 TEST_REQUIRES_X86_SSE2;
5334 GAvgPoolMicrokernelTester()
5335 .rows(7)
5336 .channels(24)
5337 .input_stride(29)
5338 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5339 }
5340
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_eq_24_fulltile_with_qmax)5341 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_fulltile_with_qmax) {
5342 TEST_REQUIRES_X86_SSE2;
5343 GAvgPoolMicrokernelTester()
5344 .rows(7)
5345 .channels(24)
5346 .qmax(128)
5347 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5348 }
5349
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_eq_24_fulltile_with_qmin)5350 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_fulltile_with_qmin) {
5351 TEST_REQUIRES_X86_SSE2;
5352 GAvgPoolMicrokernelTester()
5353 .rows(7)
5354 .channels(24)
5355 .qmin(128)
5356 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5357 }
5358
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_div_24_fulltile)5359 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_div_24_fulltile) {
5360 TEST_REQUIRES_X86_SSE2;
5361 for (size_t channels = 48; channels < 192; channels += 24) {
5362 GAvgPoolMicrokernelTester()
5363 .rows(7)
5364 .channels(channels)
5365 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5366 }
5367 }
5368
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_div_24_subtile)5369 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_div_24_subtile) {
5370 TEST_REQUIRES_X86_SSE2;
5371 for (size_t channels = 48; channels < 192; channels += 24) {
5372 for (size_t rows = 1; rows < 7; rows++) {
5373 GAvgPoolMicrokernelTester()
5374 .rows(rows)
5375 .channels(channels)
5376 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5377 }
5378 }
5379 }
5380
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_lt_24_fulltile)5381 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_lt_24_fulltile) {
5382 TEST_REQUIRES_X86_SSE2;
5383 for (size_t channels = 1; channels < 24; channels++) {
5384 GAvgPoolMicrokernelTester()
5385 .rows(7)
5386 .channels(channels)
5387 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5388 }
5389 }
5390
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_lt_24_subtile)5391 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_lt_24_subtile) {
5392 TEST_REQUIRES_X86_SSE2;
5393 for (size_t channels = 1; channels < 24; channels++) {
5394 for (size_t rows = 1; rows < 7; rows++) {
5395 GAvgPoolMicrokernelTester()
5396 .rows(rows)
5397 .channels(channels)
5398 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5399 }
5400 }
5401 }
5402
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_lt_24_fulltile_with_qmax)5403 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_lt_24_fulltile_with_qmax) {
5404 TEST_REQUIRES_X86_SSE2;
5405 for (size_t channels = 1; channels < 24; channels++) {
5406 GAvgPoolMicrokernelTester()
5407 .rows(7)
5408 .channels(channels)
5409 .qmax(128)
5410 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5411 }
5412 }
5413
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_lt_24_fulltile_with_qmin)5414 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_lt_24_fulltile_with_qmin) {
5415 TEST_REQUIRES_X86_SSE2;
5416 for (size_t channels = 1; channels < 24; channels++) {
5417 GAvgPoolMicrokernelTester()
5418 .rows(7)
5419 .channels(channels)
5420 .qmin(128)
5421 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5422 }
5423 }
5424
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_gt_24_fulltile)5425 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_gt_24_fulltile) {
5426 TEST_REQUIRES_X86_SSE2;
5427 for (size_t channels = 25; channels < 48; channels++) {
5428 GAvgPoolMicrokernelTester()
5429 .rows(7)
5430 .channels(channels)
5431 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5432 }
5433 }
5434
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_gt_24_subtile)5435 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_gt_24_subtile) {
5436 TEST_REQUIRES_X86_SSE2;
5437 for (size_t channels = 25; channels < 48; channels++) {
5438 for (size_t rows = 1; rows < 7; rows++) {
5439 GAvgPoolMicrokernelTester()
5440 .rows(rows)
5441 .channels(channels)
5442 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5443 }
5444 }
5445 }
5446
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_gt_24_fulltile_with_qmax)5447 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_gt_24_fulltile_with_qmax) {
5448 TEST_REQUIRES_X86_SSE2;
5449 for (size_t channels = 25; channels < 48; channels++) {
5450 GAvgPoolMicrokernelTester()
5451 .rows(7)
5452 .channels(channels)
5453 .qmax(128)
5454 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5455 }
5456 }
5457
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24,channels_gt_24_fulltile_with_qmin)5458 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_gt_24_fulltile_with_qmin) {
5459 TEST_REQUIRES_X86_SSE2;
5460 for (size_t channels = 25; channels < 48; channels++) {
5461 GAvgPoolMicrokernelTester()
5462 .rows(7)
5463 .channels(channels)
5464 .qmin(128)
5465 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qu8_avgpool_minmax_fp32_sse2_params, xnn_qu8_requantize_fp32);
5466 }
5467 }
5468 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5469
5470
5471 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_eq_8_fulltile)5472 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_fulltile) {
5473 TEST_REQUIRES_X86_SSE41;
5474 GAvgPoolMicrokernelTester()
5475 .rows(7)
5476 .channels(8)
5477 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5478 }
5479
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_eq_8_subtile)5480 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_subtile) {
5481 TEST_REQUIRES_X86_SSE41;
5482 for (size_t rows = 1; rows < 7; rows++) {
5483 GAvgPoolMicrokernelTester()
5484 .rows(rows)
5485 .channels(8)
5486 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5487 }
5488 }
5489
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_eq_8_fulltile_with_input_stride)5490 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_fulltile_with_input_stride) {
5491 TEST_REQUIRES_X86_SSE41;
5492 GAvgPoolMicrokernelTester()
5493 .rows(7)
5494 .channels(8)
5495 .input_stride(11)
5496 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5497 }
5498
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_eq_8_fulltile_with_qmax)5499 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_fulltile_with_qmax) {
5500 TEST_REQUIRES_X86_SSE41;
5501 GAvgPoolMicrokernelTester()
5502 .rows(7)
5503 .channels(8)
5504 .qmax(128)
5505 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5506 }
5507
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_eq_8_fulltile_with_qmin)5508 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_fulltile_with_qmin) {
5509 TEST_REQUIRES_X86_SSE41;
5510 GAvgPoolMicrokernelTester()
5511 .rows(7)
5512 .channels(8)
5513 .qmin(128)
5514 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5515 }
5516
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_div_8_fulltile)5517 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_div_8_fulltile) {
5518 TEST_REQUIRES_X86_SSE41;
5519 for (size_t channels = 16; channels < 64; channels += 8) {
5520 GAvgPoolMicrokernelTester()
5521 .rows(7)
5522 .channels(channels)
5523 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5524 }
5525 }
5526
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_div_8_subtile)5527 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_div_8_subtile) {
5528 TEST_REQUIRES_X86_SSE41;
5529 for (size_t channels = 16; channels < 64; channels += 8) {
5530 for (size_t rows = 1; rows < 7; rows++) {
5531 GAvgPoolMicrokernelTester()
5532 .rows(rows)
5533 .channels(channels)
5534 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5535 }
5536 }
5537 }
5538
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_lt_8_fulltile)5539 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_lt_8_fulltile) {
5540 TEST_REQUIRES_X86_SSE41;
5541 for (size_t channels = 1; channels < 8; channels++) {
5542 GAvgPoolMicrokernelTester()
5543 .rows(7)
5544 .channels(channels)
5545 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5546 }
5547 }
5548
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_lt_8_subtile)5549 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_lt_8_subtile) {
5550 TEST_REQUIRES_X86_SSE41;
5551 for (size_t channels = 1; channels < 8; channels++) {
5552 for (size_t rows = 1; rows < 7; rows++) {
5553 GAvgPoolMicrokernelTester()
5554 .rows(rows)
5555 .channels(channels)
5556 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5557 }
5558 }
5559 }
5560
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_lt_8_fulltile_with_qmax)5561 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_lt_8_fulltile_with_qmax) {
5562 TEST_REQUIRES_X86_SSE41;
5563 for (size_t channels = 1; channels < 8; channels++) {
5564 GAvgPoolMicrokernelTester()
5565 .rows(7)
5566 .channels(channels)
5567 .qmax(128)
5568 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5569 }
5570 }
5571
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_lt_8_fulltile_with_qmin)5572 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_lt_8_fulltile_with_qmin) {
5573 TEST_REQUIRES_X86_SSE41;
5574 for (size_t channels = 1; channels < 8; channels++) {
5575 GAvgPoolMicrokernelTester()
5576 .rows(7)
5577 .channels(channels)
5578 .qmin(128)
5579 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5580 }
5581 }
5582
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_gt_8_fulltile)5583 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_gt_8_fulltile) {
5584 TEST_REQUIRES_X86_SSE41;
5585 for (size_t channels = 9; channels < 16; channels++) {
5586 GAvgPoolMicrokernelTester()
5587 .rows(7)
5588 .channels(channels)
5589 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5590 }
5591 }
5592
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_gt_8_subtile)5593 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_gt_8_subtile) {
5594 TEST_REQUIRES_X86_SSE41;
5595 for (size_t channels = 9; channels < 16; channels++) {
5596 for (size_t rows = 1; rows < 7; rows++) {
5597 GAvgPoolMicrokernelTester()
5598 .rows(rows)
5599 .channels(channels)
5600 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5601 }
5602 }
5603 }
5604
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_gt_8_fulltile_with_qmax)5605 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_gt_8_fulltile_with_qmax) {
5606 TEST_REQUIRES_X86_SSE41;
5607 for (size_t channels = 9; channels < 16; channels++) {
5608 GAvgPoolMicrokernelTester()
5609 .rows(7)
5610 .channels(channels)
5611 .qmax(128)
5612 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5613 }
5614 }
5615
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8,channels_gt_8_fulltile_with_qmin)5616 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_gt_8_fulltile_with_qmin) {
5617 TEST_REQUIRES_X86_SSE41;
5618 for (size_t channels = 9; channels < 16; channels++) {
5619 GAvgPoolMicrokernelTester()
5620 .rows(7)
5621 .channels(channels)
5622 .qmin(128)
5623 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5624 }
5625 }
5626 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5627
5628
5629 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_eq_16_fulltile)5630 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_fulltile) {
5631 TEST_REQUIRES_X86_SSE41;
5632 GAvgPoolMicrokernelTester()
5633 .rows(7)
5634 .channels(16)
5635 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5636 }
5637
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_eq_16_subtile)5638 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_subtile) {
5639 TEST_REQUIRES_X86_SSE41;
5640 for (size_t rows = 1; rows < 7; rows++) {
5641 GAvgPoolMicrokernelTester()
5642 .rows(rows)
5643 .channels(16)
5644 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5645 }
5646 }
5647
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_eq_16_fulltile_with_input_stride)5648 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_fulltile_with_input_stride) {
5649 TEST_REQUIRES_X86_SSE41;
5650 GAvgPoolMicrokernelTester()
5651 .rows(7)
5652 .channels(16)
5653 .input_stride(19)
5654 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5655 }
5656
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_eq_16_fulltile_with_qmax)5657 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_fulltile_with_qmax) {
5658 TEST_REQUIRES_X86_SSE41;
5659 GAvgPoolMicrokernelTester()
5660 .rows(7)
5661 .channels(16)
5662 .qmax(128)
5663 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5664 }
5665
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_eq_16_fulltile_with_qmin)5666 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_fulltile_with_qmin) {
5667 TEST_REQUIRES_X86_SSE41;
5668 GAvgPoolMicrokernelTester()
5669 .rows(7)
5670 .channels(16)
5671 .qmin(128)
5672 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5673 }
5674
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_div_16_fulltile)5675 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_div_16_fulltile) {
5676 TEST_REQUIRES_X86_SSE41;
5677 for (size_t channels = 32; channels < 128; channels += 16) {
5678 GAvgPoolMicrokernelTester()
5679 .rows(7)
5680 .channels(channels)
5681 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5682 }
5683 }
5684
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_div_16_subtile)5685 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_div_16_subtile) {
5686 TEST_REQUIRES_X86_SSE41;
5687 for (size_t channels = 32; channels < 128; channels += 16) {
5688 for (size_t rows = 1; rows < 7; rows++) {
5689 GAvgPoolMicrokernelTester()
5690 .rows(rows)
5691 .channels(channels)
5692 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5693 }
5694 }
5695 }
5696
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_lt_16_fulltile)5697 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_lt_16_fulltile) {
5698 TEST_REQUIRES_X86_SSE41;
5699 for (size_t channels = 1; channels < 16; channels++) {
5700 GAvgPoolMicrokernelTester()
5701 .rows(7)
5702 .channels(channels)
5703 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5704 }
5705 }
5706
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_lt_16_subtile)5707 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_lt_16_subtile) {
5708 TEST_REQUIRES_X86_SSE41;
5709 for (size_t channels = 1; channels < 16; channels++) {
5710 for (size_t rows = 1; rows < 7; rows++) {
5711 GAvgPoolMicrokernelTester()
5712 .rows(rows)
5713 .channels(channels)
5714 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5715 }
5716 }
5717 }
5718
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_lt_16_fulltile_with_qmax)5719 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_lt_16_fulltile_with_qmax) {
5720 TEST_REQUIRES_X86_SSE41;
5721 for (size_t channels = 1; channels < 16; channels++) {
5722 GAvgPoolMicrokernelTester()
5723 .rows(7)
5724 .channels(channels)
5725 .qmax(128)
5726 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5727 }
5728 }
5729
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_lt_16_fulltile_with_qmin)5730 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_lt_16_fulltile_with_qmin) {
5731 TEST_REQUIRES_X86_SSE41;
5732 for (size_t channels = 1; channels < 16; channels++) {
5733 GAvgPoolMicrokernelTester()
5734 .rows(7)
5735 .channels(channels)
5736 .qmin(128)
5737 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5738 }
5739 }
5740
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_gt_16_fulltile)5741 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_gt_16_fulltile) {
5742 TEST_REQUIRES_X86_SSE41;
5743 for (size_t channels = 17; channels < 32; channels++) {
5744 GAvgPoolMicrokernelTester()
5745 .rows(7)
5746 .channels(channels)
5747 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5748 }
5749 }
5750
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_gt_16_subtile)5751 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_gt_16_subtile) {
5752 TEST_REQUIRES_X86_SSE41;
5753 for (size_t channels = 17; channels < 32; channels++) {
5754 for (size_t rows = 1; rows < 7; rows++) {
5755 GAvgPoolMicrokernelTester()
5756 .rows(rows)
5757 .channels(channels)
5758 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5759 }
5760 }
5761 }
5762
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_gt_16_fulltile_with_qmax)5763 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_gt_16_fulltile_with_qmax) {
5764 TEST_REQUIRES_X86_SSE41;
5765 for (size_t channels = 17; channels < 32; channels++) {
5766 GAvgPoolMicrokernelTester()
5767 .rows(7)
5768 .channels(channels)
5769 .qmax(128)
5770 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5771 }
5772 }
5773
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16,channels_gt_16_fulltile_with_qmin)5774 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_gt_16_fulltile_with_qmin) {
5775 TEST_REQUIRES_X86_SSE41;
5776 for (size_t channels = 17; channels < 32; channels++) {
5777 GAvgPoolMicrokernelTester()
5778 .rows(7)
5779 .channels(channels)
5780 .qmin(128)
5781 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5782 }
5783 }
5784 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5785
5786
5787 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_eq_24_fulltile)5788 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_fulltile) {
5789 TEST_REQUIRES_X86_SSE41;
5790 GAvgPoolMicrokernelTester()
5791 .rows(7)
5792 .channels(24)
5793 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5794 }
5795
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_eq_24_subtile)5796 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_subtile) {
5797 TEST_REQUIRES_X86_SSE41;
5798 for (size_t rows = 1; rows < 7; rows++) {
5799 GAvgPoolMicrokernelTester()
5800 .rows(rows)
5801 .channels(24)
5802 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5803 }
5804 }
5805
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_eq_24_fulltile_with_input_stride)5806 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_fulltile_with_input_stride) {
5807 TEST_REQUIRES_X86_SSE41;
5808 GAvgPoolMicrokernelTester()
5809 .rows(7)
5810 .channels(24)
5811 .input_stride(29)
5812 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5813 }
5814
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_eq_24_fulltile_with_qmax)5815 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_fulltile_with_qmax) {
5816 TEST_REQUIRES_X86_SSE41;
5817 GAvgPoolMicrokernelTester()
5818 .rows(7)
5819 .channels(24)
5820 .qmax(128)
5821 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5822 }
5823
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_eq_24_fulltile_with_qmin)5824 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_fulltile_with_qmin) {
5825 TEST_REQUIRES_X86_SSE41;
5826 GAvgPoolMicrokernelTester()
5827 .rows(7)
5828 .channels(24)
5829 .qmin(128)
5830 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5831 }
5832
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_div_24_fulltile)5833 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_div_24_fulltile) {
5834 TEST_REQUIRES_X86_SSE41;
5835 for (size_t channels = 48; channels < 192; channels += 24) {
5836 GAvgPoolMicrokernelTester()
5837 .rows(7)
5838 .channels(channels)
5839 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5840 }
5841 }
5842
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_div_24_subtile)5843 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_div_24_subtile) {
5844 TEST_REQUIRES_X86_SSE41;
5845 for (size_t channels = 48; channels < 192; channels += 24) {
5846 for (size_t rows = 1; rows < 7; rows++) {
5847 GAvgPoolMicrokernelTester()
5848 .rows(rows)
5849 .channels(channels)
5850 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5851 }
5852 }
5853 }
5854
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_lt_24_fulltile)5855 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_lt_24_fulltile) {
5856 TEST_REQUIRES_X86_SSE41;
5857 for (size_t channels = 1; channels < 24; channels++) {
5858 GAvgPoolMicrokernelTester()
5859 .rows(7)
5860 .channels(channels)
5861 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5862 }
5863 }
5864
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_lt_24_subtile)5865 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_lt_24_subtile) {
5866 TEST_REQUIRES_X86_SSE41;
5867 for (size_t channels = 1; channels < 24; channels++) {
5868 for (size_t rows = 1; rows < 7; rows++) {
5869 GAvgPoolMicrokernelTester()
5870 .rows(rows)
5871 .channels(channels)
5872 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5873 }
5874 }
5875 }
5876
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_lt_24_fulltile_with_qmax)5877 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_lt_24_fulltile_with_qmax) {
5878 TEST_REQUIRES_X86_SSE41;
5879 for (size_t channels = 1; channels < 24; channels++) {
5880 GAvgPoolMicrokernelTester()
5881 .rows(7)
5882 .channels(channels)
5883 .qmax(128)
5884 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5885 }
5886 }
5887
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_lt_24_fulltile_with_qmin)5888 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_lt_24_fulltile_with_qmin) {
5889 TEST_REQUIRES_X86_SSE41;
5890 for (size_t channels = 1; channels < 24; channels++) {
5891 GAvgPoolMicrokernelTester()
5892 .rows(7)
5893 .channels(channels)
5894 .qmin(128)
5895 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5896 }
5897 }
5898
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_gt_24_fulltile)5899 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_gt_24_fulltile) {
5900 TEST_REQUIRES_X86_SSE41;
5901 for (size_t channels = 25; channels < 48; channels++) {
5902 GAvgPoolMicrokernelTester()
5903 .rows(7)
5904 .channels(channels)
5905 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5906 }
5907 }
5908
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_gt_24_subtile)5909 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_gt_24_subtile) {
5910 TEST_REQUIRES_X86_SSE41;
5911 for (size_t channels = 25; channels < 48; channels++) {
5912 for (size_t rows = 1; rows < 7; rows++) {
5913 GAvgPoolMicrokernelTester()
5914 .rows(rows)
5915 .channels(channels)
5916 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5917 }
5918 }
5919 }
5920
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_gt_24_fulltile_with_qmax)5921 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_gt_24_fulltile_with_qmax) {
5922 TEST_REQUIRES_X86_SSE41;
5923 for (size_t channels = 25; channels < 48; channels++) {
5924 GAvgPoolMicrokernelTester()
5925 .rows(7)
5926 .channels(channels)
5927 .qmax(128)
5928 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5929 }
5930 }
5931
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24,channels_gt_24_fulltile_with_qmin)5932 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_gt_24_fulltile_with_qmin) {
5933 TEST_REQUIRES_X86_SSE41;
5934 for (size_t channels = 25; channels < 48; channels++) {
5935 GAvgPoolMicrokernelTester()
5936 .rows(7)
5937 .channels(channels)
5938 .qmin(128)
5939 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qu8_avgpool_minmax_fp32_sse4_params, xnn_qu8_requantize_fp32);
5940 }
5941 }
5942 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5943
5944
5945 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_eq_8_2pass_fulltile)5946 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_fulltile) {
5947 GAvgPoolMicrokernelTester()
5948 .rows(14)
5949 .channels(8)
5950 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
5951 }
5952
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_eq_8_2pass_fulltile_with_input_stride)5953 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
5954 GAvgPoolMicrokernelTester()
5955 .rows(14)
5956 .channels(8)
5957 .input_stride(11)
5958 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
5959 }
5960
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_eq_8_2pass_fulltile_with_qmax)5961 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_fulltile_with_qmax) {
5962 GAvgPoolMicrokernelTester()
5963 .rows(14)
5964 .channels(8)
5965 .qmax(128)
5966 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
5967 }
5968
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_eq_8_2pass_fulltile_with_qmin)5969 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_fulltile_with_qmin) {
5970 GAvgPoolMicrokernelTester()
5971 .rows(14)
5972 .channels(8)
5973 .qmin(128)
5974 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
5975 }
5976
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_eq_8_2pass_subtile)5977 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_subtile) {
5978 for (size_t rows = 8; rows < 14; rows++) {
5979 GAvgPoolMicrokernelTester()
5980 .rows(rows)
5981 .channels(8)
5982 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
5983 }
5984 }
5985
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_eq_8_2pass_subtile_with_input_stride)5986 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_subtile_with_input_stride) {
5987 for (size_t rows = 8; rows < 14; rows++) {
5988 GAvgPoolMicrokernelTester()
5989 .rows(rows)
5990 .channels(8)
5991 .input_stride(11)
5992 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
5993 }
5994 }
5995
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_eq_8_multipass_fulltile)5996 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_multipass_fulltile) {
5997 for (size_t rows = 14; rows <= 35; rows += 7) {
5998 GAvgPoolMicrokernelTester()
5999 .rows(rows)
6000 .channels(8)
6001 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6002 }
6003 }
6004
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_eq_8_multipass_fulltile_with_input_stride)6005 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
6006 for (size_t rows = 14; rows <= 35; rows += 7) {
6007 GAvgPoolMicrokernelTester()
6008 .rows(rows)
6009 .channels(8)
6010 .input_stride(11)
6011 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6012 }
6013 }
6014
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_div_8_2pass_fulltile)6015 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_div_8_2pass_fulltile) {
6016 for (size_t channels = 16; channels < 64; channels += 8) {
6017 GAvgPoolMicrokernelTester()
6018 .rows(14)
6019 .channels(channels)
6020 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6021 }
6022 }
6023
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_div_8_2pass_subtile)6024 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_div_8_2pass_subtile) {
6025 for (size_t channels = 16; channels < 64; channels += 8) {
6026 for (size_t rows = 8; rows < 14; rows++) {
6027 GAvgPoolMicrokernelTester()
6028 .rows(rows)
6029 .channels(channels)
6030 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6031 }
6032 }
6033 }
6034
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_div_8_multipass_fulltile)6035 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_div_8_multipass_fulltile) {
6036 for (size_t channels = 16; channels < 64; channels += 8) {
6037 for (size_t rows = 14; rows <= 35; rows += 7) {
6038 GAvgPoolMicrokernelTester()
6039 .rows(rows)
6040 .channels(channels)
6041 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6042 }
6043 }
6044 }
6045
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_div_8_multipass_fulltile_with_input_stride)6046 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_div_8_multipass_fulltile_with_input_stride) {
6047 for (size_t channels = 16; channels < 64; channels += 8) {
6048 for (size_t rows = 14; rows <= 35; rows += 7) {
6049 GAvgPoolMicrokernelTester()
6050 .rows(rows)
6051 .channels(channels)
6052 .input_stride(131)
6053 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6054 }
6055 }
6056 }
6057
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_lt_8_2pass_fulltile)6058 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_2pass_fulltile) {
6059 for (size_t channels = 1; channels < 8; channels++) {
6060 GAvgPoolMicrokernelTester()
6061 .rows(14)
6062 .channels(channels)
6063 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6064 }
6065 }
6066
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_lt_8_2pass_fulltile_with_qmax)6067 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_2pass_fulltile_with_qmax) {
6068 for (size_t channels = 1; channels < 8; channels++) {
6069 GAvgPoolMicrokernelTester()
6070 .rows(14)
6071 .channels(channels)
6072 .qmax(128)
6073 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6074 }
6075 }
6076
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_lt_8_2pass_fulltile_with_qmin)6077 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_2pass_fulltile_with_qmin) {
6078 for (size_t channels = 1; channels < 8; channels++) {
6079 GAvgPoolMicrokernelTester()
6080 .rows(14)
6081 .channels(channels)
6082 .qmin(128)
6083 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6084 }
6085 }
6086
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_lt_8_2pass_subtile)6087 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_2pass_subtile) {
6088 for (size_t channels = 1; channels < 8; channels++) {
6089 for (size_t rows = 8; rows < 14; rows++) {
6090 GAvgPoolMicrokernelTester()
6091 .rows(rows)
6092 .channels(channels)
6093 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6094 }
6095 }
6096 }
6097
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_lt_8_multipass_fulltile)6098 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_multipass_fulltile) {
6099 for (size_t channels = 1; channels < 8; channels++) {
6100 for (size_t rows = 14; rows <= 35; rows += 7) {
6101 GAvgPoolMicrokernelTester()
6102 .rows(rows)
6103 .channels(channels)
6104 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6105 }
6106 }
6107 }
6108
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_lt_8_multipass_fulltile_with_input_stride)6109 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
6110 for (size_t channels = 1; channels < 8; channels++) {
6111 for (size_t rows = 14; rows <= 35; rows += 7) {
6112 GAvgPoolMicrokernelTester()
6113 .rows(rows)
6114 .channels(channels)
6115 .input_stride(11)
6116 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6117 }
6118 }
6119 }
6120
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_gt_8_2pass_fulltile)6121 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_2pass_fulltile) {
6122 for (size_t channels = 9; channels < 16; channels++) {
6123 GAvgPoolMicrokernelTester()
6124 .rows(14)
6125 .channels(channels)
6126 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6127 }
6128 }
6129
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_gt_8_2pass_fulltile_with_qmax)6130 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_2pass_fulltile_with_qmax) {
6131 for (size_t channels = 9; channels < 16; channels++) {
6132 GAvgPoolMicrokernelTester()
6133 .rows(14)
6134 .channels(channels)
6135 .qmax(128)
6136 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6137 }
6138 }
6139
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_gt_8_2pass_fulltile_with_qmin)6140 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_2pass_fulltile_with_qmin) {
6141 for (size_t channels = 9; channels < 16; channels++) {
6142 GAvgPoolMicrokernelTester()
6143 .rows(14)
6144 .channels(channels)
6145 .qmin(128)
6146 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6147 }
6148 }
6149
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_gt_8_2pass_subtile)6150 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_2pass_subtile) {
6151 for (size_t channels = 9; channels < 16; channels++) {
6152 for (size_t rows = 8; rows < 14; rows++) {
6153 GAvgPoolMicrokernelTester()
6154 .rows(rows)
6155 .channels(channels)
6156 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6157 }
6158 }
6159 }
6160
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_gt_8_multipass_fulltile)6161 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_multipass_fulltile) {
6162 for (size_t channels = 9; channels < 16; channels++) {
6163 for (size_t rows = 14; rows < 35; rows += 14) {
6164 GAvgPoolMicrokernelTester()
6165 .rows(rows)
6166 .channels(channels)
6167 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6168 }
6169 }
6170 }
6171
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8,channels_gt_8_multipass_fulltile_with_input_stride)6172 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
6173 for (size_t channels = 9; channels < 16; channels++) {
6174 for (size_t rows = 14; rows < 35; rows += 14) {
6175 GAvgPoolMicrokernelTester()
6176 .rows(rows)
6177 .channels(channels)
6178 .input_stride(29)
6179 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6180 }
6181 }
6182 }
6183 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6184
6185
6186 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_eq_16_2pass_fulltile)6187 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_fulltile) {
6188 GAvgPoolMicrokernelTester()
6189 .rows(14)
6190 .channels(16)
6191 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6192 }
6193
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_eq_16_2pass_fulltile_with_input_stride)6194 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
6195 GAvgPoolMicrokernelTester()
6196 .rows(14)
6197 .channels(16)
6198 .input_stride(19)
6199 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6200 }
6201
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_eq_16_2pass_fulltile_with_qmax)6202 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_fulltile_with_qmax) {
6203 GAvgPoolMicrokernelTester()
6204 .rows(14)
6205 .channels(16)
6206 .qmax(128)
6207 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6208 }
6209
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_eq_16_2pass_fulltile_with_qmin)6210 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_fulltile_with_qmin) {
6211 GAvgPoolMicrokernelTester()
6212 .rows(14)
6213 .channels(16)
6214 .qmin(128)
6215 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6216 }
6217
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_eq_16_2pass_subtile)6218 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_subtile) {
6219 for (size_t rows = 8; rows < 14; rows++) {
6220 GAvgPoolMicrokernelTester()
6221 .rows(rows)
6222 .channels(16)
6223 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6224 }
6225 }
6226
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_eq_16_2pass_subtile_with_input_stride)6227 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_subtile_with_input_stride) {
6228 for (size_t rows = 8; rows < 14; rows++) {
6229 GAvgPoolMicrokernelTester()
6230 .rows(rows)
6231 .channels(16)
6232 .input_stride(19)
6233 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6234 }
6235 }
6236
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_eq_16_multipass_fulltile)6237 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_multipass_fulltile) {
6238 for (size_t rows = 14; rows <= 35; rows += 7) {
6239 GAvgPoolMicrokernelTester()
6240 .rows(rows)
6241 .channels(16)
6242 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6243 }
6244 }
6245
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_eq_16_multipass_fulltile_with_input_stride)6246 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
6247 for (size_t rows = 14; rows <= 35; rows += 7) {
6248 GAvgPoolMicrokernelTester()
6249 .rows(rows)
6250 .channels(16)
6251 .input_stride(19)
6252 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6253 }
6254 }
6255
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_div_16_2pass_fulltile)6256 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_div_16_2pass_fulltile) {
6257 for (size_t channels = 32; channels < 128; channels += 16) {
6258 GAvgPoolMicrokernelTester()
6259 .rows(14)
6260 .channels(channels)
6261 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6262 }
6263 }
6264
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_div_16_2pass_subtile)6265 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_div_16_2pass_subtile) {
6266 for (size_t channels = 32; channels < 128; channels += 16) {
6267 for (size_t rows = 8; rows < 14; rows++) {
6268 GAvgPoolMicrokernelTester()
6269 .rows(rows)
6270 .channels(channels)
6271 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6272 }
6273 }
6274 }
6275
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_div_16_multipass_fulltile)6276 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_div_16_multipass_fulltile) {
6277 for (size_t channels = 32; channels < 128; channels += 16) {
6278 for (size_t rows = 14; rows <= 35; rows += 7) {
6279 GAvgPoolMicrokernelTester()
6280 .rows(rows)
6281 .channels(channels)
6282 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6283 }
6284 }
6285 }
6286
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_div_16_multipass_fulltile_with_input_stride)6287 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_div_16_multipass_fulltile_with_input_stride) {
6288 for (size_t channels = 32; channels < 128; channels += 16) {
6289 for (size_t rows = 14; rows <= 35; rows += 7) {
6290 GAvgPoolMicrokernelTester()
6291 .rows(rows)
6292 .channels(channels)
6293 .input_stride(263)
6294 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6295 }
6296 }
6297 }
6298
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_lt_16_2pass_fulltile)6299 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_2pass_fulltile) {
6300 for (size_t channels = 1; channels < 16; channels++) {
6301 GAvgPoolMicrokernelTester()
6302 .rows(14)
6303 .channels(channels)
6304 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6305 }
6306 }
6307
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_lt_16_2pass_fulltile_with_qmax)6308 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_2pass_fulltile_with_qmax) {
6309 for (size_t channels = 1; channels < 16; channels++) {
6310 GAvgPoolMicrokernelTester()
6311 .rows(14)
6312 .channels(channels)
6313 .qmax(128)
6314 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6315 }
6316 }
6317
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_lt_16_2pass_fulltile_with_qmin)6318 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_2pass_fulltile_with_qmin) {
6319 for (size_t channels = 1; channels < 16; channels++) {
6320 GAvgPoolMicrokernelTester()
6321 .rows(14)
6322 .channels(channels)
6323 .qmin(128)
6324 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6325 }
6326 }
6327
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_lt_16_2pass_subtile)6328 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_2pass_subtile) {
6329 for (size_t channels = 1; channels < 16; channels++) {
6330 for (size_t rows = 8; rows < 14; rows++) {
6331 GAvgPoolMicrokernelTester()
6332 .rows(rows)
6333 .channels(channels)
6334 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6335 }
6336 }
6337 }
6338
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_lt_16_multipass_fulltile)6339 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_multipass_fulltile) {
6340 for (size_t channels = 1; channels < 16; channels++) {
6341 for (size_t rows = 14; rows <= 35; rows += 7) {
6342 GAvgPoolMicrokernelTester()
6343 .rows(rows)
6344 .channels(channels)
6345 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6346 }
6347 }
6348 }
6349
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_lt_16_multipass_fulltile_with_input_stride)6350 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
6351 for (size_t channels = 1; channels < 16; channels++) {
6352 for (size_t rows = 14; rows <= 35; rows += 7) {
6353 GAvgPoolMicrokernelTester()
6354 .rows(rows)
6355 .channels(channels)
6356 .input_stride(19)
6357 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6358 }
6359 }
6360 }
6361
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_gt_16_2pass_fulltile)6362 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_2pass_fulltile) {
6363 for (size_t channels = 17; channels < 32; channels++) {
6364 GAvgPoolMicrokernelTester()
6365 .rows(14)
6366 .channels(channels)
6367 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6368 }
6369 }
6370
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_gt_16_2pass_fulltile_with_qmax)6371 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_2pass_fulltile_with_qmax) {
6372 for (size_t channels = 17; channels < 32; channels++) {
6373 GAvgPoolMicrokernelTester()
6374 .rows(14)
6375 .channels(channels)
6376 .qmax(128)
6377 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6378 }
6379 }
6380
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_gt_16_2pass_fulltile_with_qmin)6381 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_2pass_fulltile_with_qmin) {
6382 for (size_t channels = 17; channels < 32; channels++) {
6383 GAvgPoolMicrokernelTester()
6384 .rows(14)
6385 .channels(channels)
6386 .qmin(128)
6387 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6388 }
6389 }
6390
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_gt_16_2pass_subtile)6391 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_2pass_subtile) {
6392 for (size_t channels = 17; channels < 32; channels++) {
6393 for (size_t rows = 8; rows < 14; rows++) {
6394 GAvgPoolMicrokernelTester()
6395 .rows(rows)
6396 .channels(channels)
6397 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6398 }
6399 }
6400 }
6401
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_gt_16_multipass_fulltile)6402 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_multipass_fulltile) {
6403 for (size_t channels = 17; channels < 32; channels++) {
6404 for (size_t rows = 14; rows < 35; rows += 14) {
6405 GAvgPoolMicrokernelTester()
6406 .rows(rows)
6407 .channels(channels)
6408 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6409 }
6410 }
6411 }
6412
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16,channels_gt_16_multipass_fulltile_with_input_stride)6413 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
6414 for (size_t channels = 17; channels < 32; channels++) {
6415 for (size_t rows = 14; rows < 35; rows += 14) {
6416 GAvgPoolMicrokernelTester()
6417 .rows(rows)
6418 .channels(channels)
6419 .input_stride(47)
6420 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6421 }
6422 }
6423 }
6424 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6425
6426
6427 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_eq_24_2pass_fulltile)6428 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_fulltile) {
6429 GAvgPoolMicrokernelTester()
6430 .rows(14)
6431 .channels(24)
6432 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6433 }
6434
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_eq_24_2pass_fulltile_with_input_stride)6435 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
6436 GAvgPoolMicrokernelTester()
6437 .rows(14)
6438 .channels(24)
6439 .input_stride(29)
6440 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6441 }
6442
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_eq_24_2pass_fulltile_with_qmax)6443 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_fulltile_with_qmax) {
6444 GAvgPoolMicrokernelTester()
6445 .rows(14)
6446 .channels(24)
6447 .qmax(128)
6448 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6449 }
6450
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_eq_24_2pass_fulltile_with_qmin)6451 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_fulltile_with_qmin) {
6452 GAvgPoolMicrokernelTester()
6453 .rows(14)
6454 .channels(24)
6455 .qmin(128)
6456 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6457 }
6458
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_eq_24_2pass_subtile)6459 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_subtile) {
6460 for (size_t rows = 8; rows < 14; rows++) {
6461 GAvgPoolMicrokernelTester()
6462 .rows(rows)
6463 .channels(24)
6464 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6465 }
6466 }
6467
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_eq_24_2pass_subtile_with_input_stride)6468 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_subtile_with_input_stride) {
6469 for (size_t rows = 8; rows < 14; rows++) {
6470 GAvgPoolMicrokernelTester()
6471 .rows(rows)
6472 .channels(24)
6473 .input_stride(29)
6474 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6475 }
6476 }
6477
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_eq_24_multipass_fulltile)6478 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_multipass_fulltile) {
6479 for (size_t rows = 14; rows <= 35; rows += 7) {
6480 GAvgPoolMicrokernelTester()
6481 .rows(rows)
6482 .channels(24)
6483 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6484 }
6485 }
6486
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_eq_24_multipass_fulltile_with_input_stride)6487 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
6488 for (size_t rows = 14; rows <= 35; rows += 7) {
6489 GAvgPoolMicrokernelTester()
6490 .rows(rows)
6491 .channels(24)
6492 .input_stride(29)
6493 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6494 }
6495 }
6496
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_div_24_2pass_fulltile)6497 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_div_24_2pass_fulltile) {
6498 for (size_t channels = 48; channels < 192; channels += 24) {
6499 GAvgPoolMicrokernelTester()
6500 .rows(14)
6501 .channels(channels)
6502 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6503 }
6504 }
6505
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_div_24_2pass_subtile)6506 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_div_24_2pass_subtile) {
6507 for (size_t channels = 48; channels < 192; channels += 24) {
6508 for (size_t rows = 8; rows < 14; rows++) {
6509 GAvgPoolMicrokernelTester()
6510 .rows(rows)
6511 .channels(channels)
6512 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6513 }
6514 }
6515 }
6516
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_div_24_multipass_fulltile)6517 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_div_24_multipass_fulltile) {
6518 for (size_t channels = 48; channels < 192; channels += 24) {
6519 for (size_t rows = 14; rows <= 35; rows += 7) {
6520 GAvgPoolMicrokernelTester()
6521 .rows(rows)
6522 .channels(channels)
6523 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6524 }
6525 }
6526 }
6527
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_div_24_multipass_fulltile_with_input_stride)6528 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_div_24_multipass_fulltile_with_input_stride) {
6529 for (size_t channels = 48; channels < 192; channels += 24) {
6530 for (size_t rows = 14; rows <= 35; rows += 7) {
6531 GAvgPoolMicrokernelTester()
6532 .rows(rows)
6533 .channels(channels)
6534 .input_stride(389)
6535 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6536 }
6537 }
6538 }
6539
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_lt_24_2pass_fulltile)6540 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_2pass_fulltile) {
6541 for (size_t channels = 1; channels < 24; channels++) {
6542 GAvgPoolMicrokernelTester()
6543 .rows(14)
6544 .channels(channels)
6545 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6546 }
6547 }
6548
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_lt_24_2pass_fulltile_with_qmax)6549 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_2pass_fulltile_with_qmax) {
6550 for (size_t channels = 1; channels < 24; channels++) {
6551 GAvgPoolMicrokernelTester()
6552 .rows(14)
6553 .channels(channels)
6554 .qmax(128)
6555 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6556 }
6557 }
6558
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_lt_24_2pass_fulltile_with_qmin)6559 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_2pass_fulltile_with_qmin) {
6560 for (size_t channels = 1; channels < 24; channels++) {
6561 GAvgPoolMicrokernelTester()
6562 .rows(14)
6563 .channels(channels)
6564 .qmin(128)
6565 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6566 }
6567 }
6568
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_lt_24_2pass_subtile)6569 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_2pass_subtile) {
6570 for (size_t channels = 1; channels < 24; channels++) {
6571 for (size_t rows = 8; rows < 14; rows++) {
6572 GAvgPoolMicrokernelTester()
6573 .rows(rows)
6574 .channels(channels)
6575 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6576 }
6577 }
6578 }
6579
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_lt_24_multipass_fulltile)6580 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_multipass_fulltile) {
6581 for (size_t channels = 1; channels < 24; channels++) {
6582 for (size_t rows = 14; rows <= 35; rows += 7) {
6583 GAvgPoolMicrokernelTester()
6584 .rows(rows)
6585 .channels(channels)
6586 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6587 }
6588 }
6589 }
6590
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_lt_24_multipass_fulltile_with_input_stride)6591 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
6592 for (size_t channels = 1; channels < 24; channels++) {
6593 for (size_t rows = 14; rows <= 35; rows += 7) {
6594 GAvgPoolMicrokernelTester()
6595 .rows(rows)
6596 .channels(channels)
6597 .input_stride(29)
6598 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6599 }
6600 }
6601 }
6602
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_gt_24_2pass_fulltile)6603 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_2pass_fulltile) {
6604 for (size_t channels = 25; channels < 48; channels++) {
6605 GAvgPoolMicrokernelTester()
6606 .rows(14)
6607 .channels(channels)
6608 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6609 }
6610 }
6611
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_gt_24_2pass_fulltile_with_qmax)6612 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_2pass_fulltile_with_qmax) {
6613 for (size_t channels = 25; channels < 48; channels++) {
6614 GAvgPoolMicrokernelTester()
6615 .rows(14)
6616 .channels(channels)
6617 .qmax(128)
6618 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6619 }
6620 }
6621
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_gt_24_2pass_fulltile_with_qmin)6622 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_2pass_fulltile_with_qmin) {
6623 for (size_t channels = 25; channels < 48; channels++) {
6624 GAvgPoolMicrokernelTester()
6625 .rows(14)
6626 .channels(channels)
6627 .qmin(128)
6628 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6629 }
6630 }
6631
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_gt_24_2pass_subtile)6632 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_2pass_subtile) {
6633 for (size_t channels = 25; channels < 48; channels++) {
6634 for (size_t rows = 8; rows < 14; rows++) {
6635 GAvgPoolMicrokernelTester()
6636 .rows(rows)
6637 .channels(channels)
6638 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6639 }
6640 }
6641 }
6642
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_gt_24_multipass_fulltile)6643 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_multipass_fulltile) {
6644 for (size_t channels = 25; channels < 48; channels++) {
6645 for (size_t rows = 14; rows < 35; rows += 14) {
6646 GAvgPoolMicrokernelTester()
6647 .rows(rows)
6648 .channels(channels)
6649 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6650 }
6651 }
6652 }
6653
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24,channels_gt_24_multipass_fulltile_with_input_stride)6654 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
6655 for (size_t channels = 25; channels < 48; channels++) {
6656 for (size_t rows = 14; rows < 35; rows += 14) {
6657 GAvgPoolMicrokernelTester()
6658 .rows(rows)
6659 .channels(channels)
6660 .input_stride(61)
6661 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6662 }
6663 }
6664 }
6665 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6666
6667
6668 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_eq_32_2pass_fulltile)6669 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_fulltile) {
6670 GAvgPoolMicrokernelTester()
6671 .rows(14)
6672 .channels(32)
6673 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6674 }
6675
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_eq_32_2pass_fulltile_with_input_stride)6676 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_fulltile_with_input_stride) {
6677 GAvgPoolMicrokernelTester()
6678 .rows(14)
6679 .channels(32)
6680 .input_stride(37)
6681 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6682 }
6683
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_eq_32_2pass_fulltile_with_qmax)6684 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_fulltile_with_qmax) {
6685 GAvgPoolMicrokernelTester()
6686 .rows(14)
6687 .channels(32)
6688 .qmax(128)
6689 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6690 }
6691
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_eq_32_2pass_fulltile_with_qmin)6692 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_fulltile_with_qmin) {
6693 GAvgPoolMicrokernelTester()
6694 .rows(14)
6695 .channels(32)
6696 .qmin(128)
6697 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6698 }
6699
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_eq_32_2pass_subtile)6700 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_subtile) {
6701 for (size_t rows = 8; rows < 14; rows++) {
6702 GAvgPoolMicrokernelTester()
6703 .rows(rows)
6704 .channels(32)
6705 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6706 }
6707 }
6708
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_eq_32_2pass_subtile_with_input_stride)6709 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_subtile_with_input_stride) {
6710 for (size_t rows = 8; rows < 14; rows++) {
6711 GAvgPoolMicrokernelTester()
6712 .rows(rows)
6713 .channels(32)
6714 .input_stride(37)
6715 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6716 }
6717 }
6718
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_eq_32_multipass_fulltile)6719 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_multipass_fulltile) {
6720 for (size_t rows = 14; rows <= 35; rows += 7) {
6721 GAvgPoolMicrokernelTester()
6722 .rows(rows)
6723 .channels(32)
6724 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6725 }
6726 }
6727
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_eq_32_multipass_fulltile_with_input_stride)6728 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_multipass_fulltile_with_input_stride) {
6729 for (size_t rows = 14; rows <= 35; rows += 7) {
6730 GAvgPoolMicrokernelTester()
6731 .rows(rows)
6732 .channels(32)
6733 .input_stride(37)
6734 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6735 }
6736 }
6737
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_div_32_2pass_fulltile)6738 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_div_32_2pass_fulltile) {
6739 for (size_t channels = 64; channels < 256; channels += 32) {
6740 GAvgPoolMicrokernelTester()
6741 .rows(14)
6742 .channels(channels)
6743 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6744 }
6745 }
6746
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_div_32_2pass_subtile)6747 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_div_32_2pass_subtile) {
6748 for (size_t channels = 64; channels < 256; channels += 32) {
6749 for (size_t rows = 8; rows < 14; rows++) {
6750 GAvgPoolMicrokernelTester()
6751 .rows(rows)
6752 .channels(channels)
6753 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6754 }
6755 }
6756 }
6757
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_div_32_multipass_fulltile)6758 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_div_32_multipass_fulltile) {
6759 for (size_t channels = 64; channels < 256; channels += 32) {
6760 for (size_t rows = 14; rows <= 35; rows += 7) {
6761 GAvgPoolMicrokernelTester()
6762 .rows(rows)
6763 .channels(channels)
6764 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6765 }
6766 }
6767 }
6768
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_div_32_multipass_fulltile_with_input_stride)6769 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_div_32_multipass_fulltile_with_input_stride) {
6770 for (size_t channels = 64; channels < 256; channels += 32) {
6771 for (size_t rows = 14; rows <= 35; rows += 7) {
6772 GAvgPoolMicrokernelTester()
6773 .rows(rows)
6774 .channels(channels)
6775 .input_stride(521)
6776 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6777 }
6778 }
6779 }
6780
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_lt_32_2pass_fulltile)6781 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_2pass_fulltile) {
6782 for (size_t channels = 1; channels < 32; channels++) {
6783 GAvgPoolMicrokernelTester()
6784 .rows(14)
6785 .channels(channels)
6786 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6787 }
6788 }
6789
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_lt_32_2pass_fulltile_with_qmax)6790 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_2pass_fulltile_with_qmax) {
6791 for (size_t channels = 1; channels < 32; channels++) {
6792 GAvgPoolMicrokernelTester()
6793 .rows(14)
6794 .channels(channels)
6795 .qmax(128)
6796 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6797 }
6798 }
6799
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_lt_32_2pass_fulltile_with_qmin)6800 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_2pass_fulltile_with_qmin) {
6801 for (size_t channels = 1; channels < 32; channels++) {
6802 GAvgPoolMicrokernelTester()
6803 .rows(14)
6804 .channels(channels)
6805 .qmin(128)
6806 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6807 }
6808 }
6809
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_lt_32_2pass_subtile)6810 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_2pass_subtile) {
6811 for (size_t channels = 1; channels < 32; channels++) {
6812 for (size_t rows = 8; rows < 14; rows++) {
6813 GAvgPoolMicrokernelTester()
6814 .rows(rows)
6815 .channels(channels)
6816 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6817 }
6818 }
6819 }
6820
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_lt_32_multipass_fulltile)6821 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_multipass_fulltile) {
6822 for (size_t channels = 1; channels < 32; channels++) {
6823 for (size_t rows = 14; rows <= 35; rows += 7) {
6824 GAvgPoolMicrokernelTester()
6825 .rows(rows)
6826 .channels(channels)
6827 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6828 }
6829 }
6830 }
6831
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_lt_32_multipass_fulltile_with_input_stride)6832 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_multipass_fulltile_with_input_stride) {
6833 for (size_t channels = 1; channels < 32; channels++) {
6834 for (size_t rows = 14; rows <= 35; rows += 7) {
6835 GAvgPoolMicrokernelTester()
6836 .rows(rows)
6837 .channels(channels)
6838 .input_stride(37)
6839 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6840 }
6841 }
6842 }
6843
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_gt_32_2pass_fulltile)6844 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_2pass_fulltile) {
6845 for (size_t channels = 33; channels < 64; channels++) {
6846 GAvgPoolMicrokernelTester()
6847 .rows(14)
6848 .channels(channels)
6849 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6850 }
6851 }
6852
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_gt_32_2pass_fulltile_with_qmax)6853 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_2pass_fulltile_with_qmax) {
6854 for (size_t channels = 33; channels < 64; channels++) {
6855 GAvgPoolMicrokernelTester()
6856 .rows(14)
6857 .channels(channels)
6858 .qmax(128)
6859 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6860 }
6861 }
6862
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_gt_32_2pass_fulltile_with_qmin)6863 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_2pass_fulltile_with_qmin) {
6864 for (size_t channels = 33; channels < 64; channels++) {
6865 GAvgPoolMicrokernelTester()
6866 .rows(14)
6867 .channels(channels)
6868 .qmin(128)
6869 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6870 }
6871 }
6872
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_gt_32_2pass_subtile)6873 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_2pass_subtile) {
6874 for (size_t channels = 33; channels < 64; channels++) {
6875 for (size_t rows = 8; rows < 14; rows++) {
6876 GAvgPoolMicrokernelTester()
6877 .rows(rows)
6878 .channels(channels)
6879 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6880 }
6881 }
6882 }
6883
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_gt_32_multipass_fulltile)6884 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_multipass_fulltile) {
6885 for (size_t channels = 33; channels < 64; channels++) {
6886 for (size_t rows = 14; rows < 35; rows += 14) {
6887 GAvgPoolMicrokernelTester()
6888 .rows(rows)
6889 .channels(channels)
6890 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6891 }
6892 }
6893 }
6894
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32,channels_gt_32_multipass_fulltile_with_input_stride)6895 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_multipass_fulltile_with_input_stride) {
6896 for (size_t channels = 33; channels < 64; channels++) {
6897 for (size_t rows = 14; rows < 35; rows += 14) {
6898 GAvgPoolMicrokernelTester()
6899 .rows(rows)
6900 .channels(channels)
6901 .input_stride(79)
6902 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6903 }
6904 }
6905 }
6906 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6907
6908
6909 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_eq_8_fulltile)6910 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_fulltile) {
6911 GAvgPoolMicrokernelTester()
6912 .rows(7)
6913 .channels(8)
6914 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6915 }
6916
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_eq_8_subtile)6917 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_subtile) {
6918 for (size_t rows = 1; rows < 7; rows++) {
6919 GAvgPoolMicrokernelTester()
6920 .rows(rows)
6921 .channels(8)
6922 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6923 }
6924 }
6925
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_eq_8_fulltile_with_input_stride)6926 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_fulltile_with_input_stride) {
6927 GAvgPoolMicrokernelTester()
6928 .rows(7)
6929 .channels(8)
6930 .input_stride(11)
6931 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6932 }
6933
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_eq_8_fulltile_with_qmax)6934 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_fulltile_with_qmax) {
6935 GAvgPoolMicrokernelTester()
6936 .rows(7)
6937 .channels(8)
6938 .qmax(128)
6939 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6940 }
6941
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_eq_8_fulltile_with_qmin)6942 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_fulltile_with_qmin) {
6943 GAvgPoolMicrokernelTester()
6944 .rows(7)
6945 .channels(8)
6946 .qmin(128)
6947 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6948 }
6949
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_div_8_fulltile)6950 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_div_8_fulltile) {
6951 for (size_t channels = 16; channels < 64; channels += 8) {
6952 GAvgPoolMicrokernelTester()
6953 .rows(7)
6954 .channels(channels)
6955 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6956 }
6957 }
6958
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_div_8_subtile)6959 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_div_8_subtile) {
6960 for (size_t channels = 16; channels < 64; channels += 8) {
6961 for (size_t rows = 1; rows < 7; rows++) {
6962 GAvgPoolMicrokernelTester()
6963 .rows(rows)
6964 .channels(channels)
6965 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6966 }
6967 }
6968 }
6969
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_lt_8_fulltile)6970 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_lt_8_fulltile) {
6971 for (size_t channels = 1; channels < 8; channels++) {
6972 GAvgPoolMicrokernelTester()
6973 .rows(7)
6974 .channels(channels)
6975 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6976 }
6977 }
6978
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_lt_8_subtile)6979 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_lt_8_subtile) {
6980 for (size_t channels = 1; channels < 8; channels++) {
6981 for (size_t rows = 1; rows < 7; rows++) {
6982 GAvgPoolMicrokernelTester()
6983 .rows(rows)
6984 .channels(channels)
6985 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6986 }
6987 }
6988 }
6989
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_lt_8_fulltile_with_qmax)6990 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_lt_8_fulltile_with_qmax) {
6991 for (size_t channels = 1; channels < 8; channels++) {
6992 GAvgPoolMicrokernelTester()
6993 .rows(7)
6994 .channels(channels)
6995 .qmax(128)
6996 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
6997 }
6998 }
6999
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_lt_8_fulltile_with_qmin)7000 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_lt_8_fulltile_with_qmin) {
7001 for (size_t channels = 1; channels < 8; channels++) {
7002 GAvgPoolMicrokernelTester()
7003 .rows(7)
7004 .channels(channels)
7005 .qmin(128)
7006 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7007 }
7008 }
7009
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_gt_8_fulltile)7010 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_gt_8_fulltile) {
7011 for (size_t channels = 9; channels < 16; channels++) {
7012 GAvgPoolMicrokernelTester()
7013 .rows(7)
7014 .channels(channels)
7015 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7016 }
7017 }
7018
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_gt_8_subtile)7019 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_gt_8_subtile) {
7020 for (size_t channels = 9; channels < 16; channels++) {
7021 for (size_t rows = 1; rows < 7; rows++) {
7022 GAvgPoolMicrokernelTester()
7023 .rows(rows)
7024 .channels(channels)
7025 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7026 }
7027 }
7028 }
7029
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_gt_8_fulltile_with_qmax)7030 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_gt_8_fulltile_with_qmax) {
7031 for (size_t channels = 9; channels < 16; channels++) {
7032 GAvgPoolMicrokernelTester()
7033 .rows(7)
7034 .channels(channels)
7035 .qmax(128)
7036 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7037 }
7038 }
7039
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8,channels_gt_8_fulltile_with_qmin)7040 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_gt_8_fulltile_with_qmin) {
7041 for (size_t channels = 9; channels < 16; channels++) {
7042 GAvgPoolMicrokernelTester()
7043 .rows(7)
7044 .channels(channels)
7045 .qmin(128)
7046 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7047 }
7048 }
7049 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
7050
7051
7052 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_eq_16_fulltile)7053 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_fulltile) {
7054 GAvgPoolMicrokernelTester()
7055 .rows(7)
7056 .channels(16)
7057 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7058 }
7059
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_eq_16_subtile)7060 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_subtile) {
7061 for (size_t rows = 1; rows < 7; rows++) {
7062 GAvgPoolMicrokernelTester()
7063 .rows(rows)
7064 .channels(16)
7065 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7066 }
7067 }
7068
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_eq_16_fulltile_with_input_stride)7069 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_fulltile_with_input_stride) {
7070 GAvgPoolMicrokernelTester()
7071 .rows(7)
7072 .channels(16)
7073 .input_stride(19)
7074 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7075 }
7076
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_eq_16_fulltile_with_qmax)7077 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_fulltile_with_qmax) {
7078 GAvgPoolMicrokernelTester()
7079 .rows(7)
7080 .channels(16)
7081 .qmax(128)
7082 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7083 }
7084
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_eq_16_fulltile_with_qmin)7085 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_fulltile_with_qmin) {
7086 GAvgPoolMicrokernelTester()
7087 .rows(7)
7088 .channels(16)
7089 .qmin(128)
7090 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7091 }
7092
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_div_16_fulltile)7093 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_div_16_fulltile) {
7094 for (size_t channels = 32; channels < 128; channels += 16) {
7095 GAvgPoolMicrokernelTester()
7096 .rows(7)
7097 .channels(channels)
7098 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7099 }
7100 }
7101
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_div_16_subtile)7102 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_div_16_subtile) {
7103 for (size_t channels = 32; channels < 128; channels += 16) {
7104 for (size_t rows = 1; rows < 7; rows++) {
7105 GAvgPoolMicrokernelTester()
7106 .rows(rows)
7107 .channels(channels)
7108 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7109 }
7110 }
7111 }
7112
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_lt_16_fulltile)7113 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_lt_16_fulltile) {
7114 for (size_t channels = 1; channels < 16; channels++) {
7115 GAvgPoolMicrokernelTester()
7116 .rows(7)
7117 .channels(channels)
7118 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7119 }
7120 }
7121
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_lt_16_subtile)7122 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_lt_16_subtile) {
7123 for (size_t channels = 1; channels < 16; channels++) {
7124 for (size_t rows = 1; rows < 7; rows++) {
7125 GAvgPoolMicrokernelTester()
7126 .rows(rows)
7127 .channels(channels)
7128 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7129 }
7130 }
7131 }
7132
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_lt_16_fulltile_with_qmax)7133 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_lt_16_fulltile_with_qmax) {
7134 for (size_t channels = 1; channels < 16; channels++) {
7135 GAvgPoolMicrokernelTester()
7136 .rows(7)
7137 .channels(channels)
7138 .qmax(128)
7139 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7140 }
7141 }
7142
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_lt_16_fulltile_with_qmin)7143 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_lt_16_fulltile_with_qmin) {
7144 for (size_t channels = 1; channels < 16; channels++) {
7145 GAvgPoolMicrokernelTester()
7146 .rows(7)
7147 .channels(channels)
7148 .qmin(128)
7149 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7150 }
7151 }
7152
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_gt_16_fulltile)7153 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_gt_16_fulltile) {
7154 for (size_t channels = 17; channels < 32; channels++) {
7155 GAvgPoolMicrokernelTester()
7156 .rows(7)
7157 .channels(channels)
7158 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7159 }
7160 }
7161
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_gt_16_subtile)7162 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_gt_16_subtile) {
7163 for (size_t channels = 17; channels < 32; channels++) {
7164 for (size_t rows = 1; rows < 7; rows++) {
7165 GAvgPoolMicrokernelTester()
7166 .rows(rows)
7167 .channels(channels)
7168 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7169 }
7170 }
7171 }
7172
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_gt_16_fulltile_with_qmax)7173 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_gt_16_fulltile_with_qmax) {
7174 for (size_t channels = 17; channels < 32; channels++) {
7175 GAvgPoolMicrokernelTester()
7176 .rows(7)
7177 .channels(channels)
7178 .qmax(128)
7179 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7180 }
7181 }
7182
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16,channels_gt_16_fulltile_with_qmin)7183 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_gt_16_fulltile_with_qmin) {
7184 for (size_t channels = 17; channels < 32; channels++) {
7185 GAvgPoolMicrokernelTester()
7186 .rows(7)
7187 .channels(channels)
7188 .qmin(128)
7189 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7190 }
7191 }
7192 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
7193
7194
7195 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_eq_24_fulltile)7196 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_fulltile) {
7197 GAvgPoolMicrokernelTester()
7198 .rows(7)
7199 .channels(24)
7200 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7201 }
7202
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_eq_24_subtile)7203 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_subtile) {
7204 for (size_t rows = 1; rows < 7; rows++) {
7205 GAvgPoolMicrokernelTester()
7206 .rows(rows)
7207 .channels(24)
7208 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7209 }
7210 }
7211
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_eq_24_fulltile_with_input_stride)7212 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_fulltile_with_input_stride) {
7213 GAvgPoolMicrokernelTester()
7214 .rows(7)
7215 .channels(24)
7216 .input_stride(29)
7217 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7218 }
7219
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_eq_24_fulltile_with_qmax)7220 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_fulltile_with_qmax) {
7221 GAvgPoolMicrokernelTester()
7222 .rows(7)
7223 .channels(24)
7224 .qmax(128)
7225 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7226 }
7227
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_eq_24_fulltile_with_qmin)7228 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_fulltile_with_qmin) {
7229 GAvgPoolMicrokernelTester()
7230 .rows(7)
7231 .channels(24)
7232 .qmin(128)
7233 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7234 }
7235
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_div_24_fulltile)7236 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_div_24_fulltile) {
7237 for (size_t channels = 48; channels < 192; channels += 24) {
7238 GAvgPoolMicrokernelTester()
7239 .rows(7)
7240 .channels(channels)
7241 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7242 }
7243 }
7244
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_div_24_subtile)7245 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_div_24_subtile) {
7246 for (size_t channels = 48; channels < 192; channels += 24) {
7247 for (size_t rows = 1; rows < 7; rows++) {
7248 GAvgPoolMicrokernelTester()
7249 .rows(rows)
7250 .channels(channels)
7251 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7252 }
7253 }
7254 }
7255
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_lt_24_fulltile)7256 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_lt_24_fulltile) {
7257 for (size_t channels = 1; channels < 24; channels++) {
7258 GAvgPoolMicrokernelTester()
7259 .rows(7)
7260 .channels(channels)
7261 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7262 }
7263 }
7264
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_lt_24_subtile)7265 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_lt_24_subtile) {
7266 for (size_t channels = 1; channels < 24; channels++) {
7267 for (size_t rows = 1; rows < 7; rows++) {
7268 GAvgPoolMicrokernelTester()
7269 .rows(rows)
7270 .channels(channels)
7271 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7272 }
7273 }
7274 }
7275
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_lt_24_fulltile_with_qmax)7276 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_lt_24_fulltile_with_qmax) {
7277 for (size_t channels = 1; channels < 24; channels++) {
7278 GAvgPoolMicrokernelTester()
7279 .rows(7)
7280 .channels(channels)
7281 .qmax(128)
7282 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7283 }
7284 }
7285
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_lt_24_fulltile_with_qmin)7286 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_lt_24_fulltile_with_qmin) {
7287 for (size_t channels = 1; channels < 24; channels++) {
7288 GAvgPoolMicrokernelTester()
7289 .rows(7)
7290 .channels(channels)
7291 .qmin(128)
7292 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7293 }
7294 }
7295
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_gt_24_fulltile)7296 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_gt_24_fulltile) {
7297 for (size_t channels = 25; channels < 48; channels++) {
7298 GAvgPoolMicrokernelTester()
7299 .rows(7)
7300 .channels(channels)
7301 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7302 }
7303 }
7304
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_gt_24_subtile)7305 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_gt_24_subtile) {
7306 for (size_t channels = 25; channels < 48; channels++) {
7307 for (size_t rows = 1; rows < 7; rows++) {
7308 GAvgPoolMicrokernelTester()
7309 .rows(rows)
7310 .channels(channels)
7311 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7312 }
7313 }
7314 }
7315
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_gt_24_fulltile_with_qmax)7316 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_gt_24_fulltile_with_qmax) {
7317 for (size_t channels = 25; channels < 48; channels++) {
7318 GAvgPoolMicrokernelTester()
7319 .rows(7)
7320 .channels(channels)
7321 .qmax(128)
7322 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7323 }
7324 }
7325
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24,channels_gt_24_fulltile_with_qmin)7326 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_gt_24_fulltile_with_qmin) {
7327 for (size_t channels = 25; channels < 48; channels++) {
7328 GAvgPoolMicrokernelTester()
7329 .rows(7)
7330 .channels(channels)
7331 .qmin(128)
7332 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7333 }
7334 }
7335 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
7336
7337
7338 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_eq_32_fulltile)7339 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_fulltile) {
7340 GAvgPoolMicrokernelTester()
7341 .rows(7)
7342 .channels(32)
7343 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7344 }
7345
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_eq_32_subtile)7346 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_subtile) {
7347 for (size_t rows = 1; rows < 7; rows++) {
7348 GAvgPoolMicrokernelTester()
7349 .rows(rows)
7350 .channels(32)
7351 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7352 }
7353 }
7354
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_eq_32_fulltile_with_input_stride)7355 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_fulltile_with_input_stride) {
7356 GAvgPoolMicrokernelTester()
7357 .rows(7)
7358 .channels(32)
7359 .input_stride(37)
7360 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7361 }
7362
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_eq_32_fulltile_with_qmax)7363 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_fulltile_with_qmax) {
7364 GAvgPoolMicrokernelTester()
7365 .rows(7)
7366 .channels(32)
7367 .qmax(128)
7368 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7369 }
7370
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_eq_32_fulltile_with_qmin)7371 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_fulltile_with_qmin) {
7372 GAvgPoolMicrokernelTester()
7373 .rows(7)
7374 .channels(32)
7375 .qmin(128)
7376 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7377 }
7378
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_div_32_fulltile)7379 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_div_32_fulltile) {
7380 for (size_t channels = 64; channels < 256; channels += 32) {
7381 GAvgPoolMicrokernelTester()
7382 .rows(7)
7383 .channels(channels)
7384 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7385 }
7386 }
7387
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_div_32_subtile)7388 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_div_32_subtile) {
7389 for (size_t channels = 64; channels < 256; channels += 32) {
7390 for (size_t rows = 1; rows < 7; rows++) {
7391 GAvgPoolMicrokernelTester()
7392 .rows(rows)
7393 .channels(channels)
7394 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7395 }
7396 }
7397 }
7398
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_lt_32_fulltile)7399 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_lt_32_fulltile) {
7400 for (size_t channels = 1; channels < 32; channels++) {
7401 GAvgPoolMicrokernelTester()
7402 .rows(7)
7403 .channels(channels)
7404 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7405 }
7406 }
7407
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_lt_32_subtile)7408 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_lt_32_subtile) {
7409 for (size_t channels = 1; channels < 32; channels++) {
7410 for (size_t rows = 1; rows < 7; rows++) {
7411 GAvgPoolMicrokernelTester()
7412 .rows(rows)
7413 .channels(channels)
7414 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7415 }
7416 }
7417 }
7418
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_lt_32_fulltile_with_qmax)7419 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_lt_32_fulltile_with_qmax) {
7420 for (size_t channels = 1; channels < 32; channels++) {
7421 GAvgPoolMicrokernelTester()
7422 .rows(7)
7423 .channels(channels)
7424 .qmax(128)
7425 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7426 }
7427 }
7428
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_lt_32_fulltile_with_qmin)7429 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_lt_32_fulltile_with_qmin) {
7430 for (size_t channels = 1; channels < 32; channels++) {
7431 GAvgPoolMicrokernelTester()
7432 .rows(7)
7433 .channels(channels)
7434 .qmin(128)
7435 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7436 }
7437 }
7438
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_gt_32_fulltile)7439 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_gt_32_fulltile) {
7440 for (size_t channels = 33; channels < 64; channels++) {
7441 GAvgPoolMicrokernelTester()
7442 .rows(7)
7443 .channels(channels)
7444 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7445 }
7446 }
7447
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_gt_32_subtile)7448 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_gt_32_subtile) {
7449 for (size_t channels = 33; channels < 64; channels++) {
7450 for (size_t rows = 1; rows < 7; rows++) {
7451 GAvgPoolMicrokernelTester()
7452 .rows(rows)
7453 .channels(channels)
7454 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7455 }
7456 }
7457 }
7458
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_gt_32_fulltile_with_qmax)7459 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_gt_32_fulltile_with_qmax) {
7460 for (size_t channels = 33; channels < 64; channels++) {
7461 GAvgPoolMicrokernelTester()
7462 .rows(7)
7463 .channels(channels)
7464 .qmax(128)
7465 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7466 }
7467 }
7468
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32,channels_gt_32_fulltile_with_qmin)7469 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_gt_32_fulltile_with_qmin) {
7470 for (size_t channels = 33; channels < 64; channels++) {
7471 GAvgPoolMicrokernelTester()
7472 .rows(7)
7473 .channels(channels)
7474 .qmin(128)
7475 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params, xnn_qu8_requantize_fp32);
7476 }
7477 }
7478 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
7479
7480
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_eq_1_2pass_fulltile)7481 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_fulltile) {
7482 GAvgPoolMicrokernelTester()
7483 .rows(14)
7484 .channels(1)
7485 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7486 }
7487
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_eq_1_2pass_fulltile_with_input_stride)7488 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
7489 GAvgPoolMicrokernelTester()
7490 .rows(14)
7491 .channels(1)
7492 .input_stride(3)
7493 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7494 }
7495
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_eq_1_2pass_fulltile_with_qmax)7496 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_fulltile_with_qmax) {
7497 GAvgPoolMicrokernelTester()
7498 .rows(14)
7499 .channels(1)
7500 .qmax(128)
7501 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7502 }
7503
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_eq_1_2pass_fulltile_with_qmin)7504 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_fulltile_with_qmin) {
7505 GAvgPoolMicrokernelTester()
7506 .rows(14)
7507 .channels(1)
7508 .qmin(128)
7509 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7510 }
7511
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_eq_1_2pass_subtile)7512 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_subtile) {
7513 for (size_t rows = 8; rows < 14; rows++) {
7514 GAvgPoolMicrokernelTester()
7515 .rows(rows)
7516 .channels(1)
7517 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7518 }
7519 }
7520
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_eq_1_2pass_subtile_with_input_stride)7521 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_subtile_with_input_stride) {
7522 for (size_t rows = 8; rows < 14; rows++) {
7523 GAvgPoolMicrokernelTester()
7524 .rows(rows)
7525 .channels(1)
7526 .input_stride(3)
7527 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7528 }
7529 }
7530
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_eq_1_multipass_fulltile)7531 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_multipass_fulltile) {
7532 for (size_t rows = 14; rows <= 35; rows += 7) {
7533 GAvgPoolMicrokernelTester()
7534 .rows(rows)
7535 .channels(1)
7536 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7537 }
7538 }
7539
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_eq_1_multipass_fulltile_with_input_stride)7540 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_multipass_fulltile_with_input_stride) {
7541 for (size_t rows = 14; rows <= 35; rows += 7) {
7542 GAvgPoolMicrokernelTester()
7543 .rows(rows)
7544 .channels(1)
7545 .input_stride(3)
7546 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7547 }
7548 }
7549
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_div_1_2pass_fulltile)7550 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_div_1_2pass_fulltile) {
7551 for (size_t channels = 2; channels < 8; channels += 1) {
7552 GAvgPoolMicrokernelTester()
7553 .rows(14)
7554 .channels(channels)
7555 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7556 }
7557 }
7558
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_div_1_2pass_subtile)7559 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_div_1_2pass_subtile) {
7560 for (size_t channels = 2; channels < 8; channels += 1) {
7561 for (size_t rows = 8; rows < 14; rows++) {
7562 GAvgPoolMicrokernelTester()
7563 .rows(rows)
7564 .channels(channels)
7565 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7566 }
7567 }
7568 }
7569
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_div_1_multipass_fulltile)7570 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_div_1_multipass_fulltile) {
7571 for (size_t channels = 2; channels < 8; channels += 1) {
7572 for (size_t rows = 14; rows <= 35; rows += 7) {
7573 GAvgPoolMicrokernelTester()
7574 .rows(rows)
7575 .channels(channels)
7576 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7577 }
7578 }
7579 }
7580
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_div_1_multipass_fulltile_with_input_stride)7581 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_div_1_multipass_fulltile_with_input_stride) {
7582 for (size_t channels = 2; channels < 8; channels += 1) {
7583 for (size_t rows = 14; rows <= 35; rows += 7) {
7584 GAvgPoolMicrokernelTester()
7585 .rows(rows)
7586 .channels(channels)
7587 .input_stride(19)
7588 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7589 }
7590 }
7591 }
7592
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_gt_1_2pass_fulltile)7593 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_2pass_fulltile) {
7594 for (size_t channels = 2; channels < 10; channels++) {
7595 GAvgPoolMicrokernelTester()
7596 .rows(14)
7597 .channels(channels)
7598 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7599 }
7600 }
7601
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_gt_1_2pass_fulltile_with_qmax)7602 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_2pass_fulltile_with_qmax) {
7603 for (size_t channels = 2; channels < 10; channels++) {
7604 GAvgPoolMicrokernelTester()
7605 .rows(14)
7606 .channels(channels)
7607 .qmax(128)
7608 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7609 }
7610 }
7611
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_gt_1_2pass_fulltile_with_qmin)7612 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_2pass_fulltile_with_qmin) {
7613 for (size_t channels = 2; channels < 10; channels++) {
7614 GAvgPoolMicrokernelTester()
7615 .rows(14)
7616 .channels(channels)
7617 .qmin(128)
7618 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7619 }
7620 }
7621
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_gt_1_2pass_subtile)7622 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_2pass_subtile) {
7623 for (size_t channels = 2; channels < 10; channels++) {
7624 for (size_t rows = 8; rows < 14; rows++) {
7625 GAvgPoolMicrokernelTester()
7626 .rows(rows)
7627 .channels(channels)
7628 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7629 }
7630 }
7631 }
7632
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_gt_1_multipass_fulltile)7633 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_multipass_fulltile) {
7634 for (size_t channels = 2; channels < 10; channels++) {
7635 for (size_t rows = 14; rows < 35; rows += 14) {
7636 GAvgPoolMicrokernelTester()
7637 .rows(rows)
7638 .channels(channels)
7639 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7640 }
7641 }
7642 }
7643
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1,channels_gt_1_multipass_fulltile_with_input_stride)7644 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
7645 for (size_t channels = 2; channels < 10; channels++) {
7646 for (size_t rows = 14; rows < 35; rows += 14) {
7647 GAvgPoolMicrokernelTester()
7648 .rows(rows)
7649 .channels(channels)
7650 .input_stride(17)
7651 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7652 }
7653 }
7654 }
7655
7656
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_eq_2_2pass_fulltile)7657 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_fulltile) {
7658 GAvgPoolMicrokernelTester()
7659 .rows(14)
7660 .channels(2)
7661 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7662 }
7663
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_eq_2_2pass_fulltile_with_input_stride)7664 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_fulltile_with_input_stride) {
7665 GAvgPoolMicrokernelTester()
7666 .rows(14)
7667 .channels(2)
7668 .input_stride(5)
7669 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7670 }
7671
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_eq_2_2pass_fulltile_with_qmax)7672 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_fulltile_with_qmax) {
7673 GAvgPoolMicrokernelTester()
7674 .rows(14)
7675 .channels(2)
7676 .qmax(128)
7677 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7678 }
7679
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_eq_2_2pass_fulltile_with_qmin)7680 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_fulltile_with_qmin) {
7681 GAvgPoolMicrokernelTester()
7682 .rows(14)
7683 .channels(2)
7684 .qmin(128)
7685 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7686 }
7687
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_eq_2_2pass_subtile)7688 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_subtile) {
7689 for (size_t rows = 8; rows < 14; rows++) {
7690 GAvgPoolMicrokernelTester()
7691 .rows(rows)
7692 .channels(2)
7693 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7694 }
7695 }
7696
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_eq_2_2pass_subtile_with_input_stride)7697 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_subtile_with_input_stride) {
7698 for (size_t rows = 8; rows < 14; rows++) {
7699 GAvgPoolMicrokernelTester()
7700 .rows(rows)
7701 .channels(2)
7702 .input_stride(5)
7703 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7704 }
7705 }
7706
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_eq_2_multipass_fulltile)7707 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_multipass_fulltile) {
7708 for (size_t rows = 14; rows <= 35; rows += 7) {
7709 GAvgPoolMicrokernelTester()
7710 .rows(rows)
7711 .channels(2)
7712 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7713 }
7714 }
7715
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_eq_2_multipass_fulltile_with_input_stride)7716 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_multipass_fulltile_with_input_stride) {
7717 for (size_t rows = 14; rows <= 35; rows += 7) {
7718 GAvgPoolMicrokernelTester()
7719 .rows(rows)
7720 .channels(2)
7721 .input_stride(5)
7722 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7723 }
7724 }
7725
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_div_2_2pass_fulltile)7726 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_div_2_2pass_fulltile) {
7727 for (size_t channels = 4; channels < 16; channels += 2) {
7728 GAvgPoolMicrokernelTester()
7729 .rows(14)
7730 .channels(channels)
7731 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7732 }
7733 }
7734
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_div_2_2pass_subtile)7735 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_div_2_2pass_subtile) {
7736 for (size_t channels = 4; channels < 16; channels += 2) {
7737 for (size_t rows = 8; rows < 14; rows++) {
7738 GAvgPoolMicrokernelTester()
7739 .rows(rows)
7740 .channels(channels)
7741 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7742 }
7743 }
7744 }
7745
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_div_2_multipass_fulltile)7746 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_div_2_multipass_fulltile) {
7747 for (size_t channels = 4; channels < 16; channels += 2) {
7748 for (size_t rows = 14; rows <= 35; rows += 7) {
7749 GAvgPoolMicrokernelTester()
7750 .rows(rows)
7751 .channels(channels)
7752 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7753 }
7754 }
7755 }
7756
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_div_2_multipass_fulltile_with_input_stride)7757 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_div_2_multipass_fulltile_with_input_stride) {
7758 for (size_t channels = 4; channels < 16; channels += 2) {
7759 for (size_t rows = 14; rows <= 35; rows += 7) {
7760 GAvgPoolMicrokernelTester()
7761 .rows(rows)
7762 .channels(channels)
7763 .input_stride(37)
7764 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7765 }
7766 }
7767 }
7768
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_lt_2_2pass_fulltile)7769 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_2pass_fulltile) {
7770 for (size_t channels = 1; channels < 2; channels++) {
7771 GAvgPoolMicrokernelTester()
7772 .rows(14)
7773 .channels(channels)
7774 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7775 }
7776 }
7777
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_lt_2_2pass_fulltile_with_qmax)7778 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_2pass_fulltile_with_qmax) {
7779 for (size_t channels = 1; channels < 2; channels++) {
7780 GAvgPoolMicrokernelTester()
7781 .rows(14)
7782 .channels(channels)
7783 .qmax(128)
7784 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7785 }
7786 }
7787
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_lt_2_2pass_fulltile_with_qmin)7788 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_2pass_fulltile_with_qmin) {
7789 for (size_t channels = 1; channels < 2; channels++) {
7790 GAvgPoolMicrokernelTester()
7791 .rows(14)
7792 .channels(channels)
7793 .qmin(128)
7794 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7795 }
7796 }
7797
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_lt_2_2pass_subtile)7798 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_2pass_subtile) {
7799 for (size_t channels = 1; channels < 2; channels++) {
7800 for (size_t rows = 8; rows < 14; rows++) {
7801 GAvgPoolMicrokernelTester()
7802 .rows(rows)
7803 .channels(channels)
7804 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7805 }
7806 }
7807 }
7808
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_lt_2_multipass_fulltile)7809 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_multipass_fulltile) {
7810 for (size_t channels = 1; channels < 2; channels++) {
7811 for (size_t rows = 14; rows <= 35; rows += 7) {
7812 GAvgPoolMicrokernelTester()
7813 .rows(rows)
7814 .channels(channels)
7815 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7816 }
7817 }
7818 }
7819
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_lt_2_multipass_fulltile_with_input_stride)7820 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_multipass_fulltile_with_input_stride) {
7821 for (size_t channels = 1; channels < 2; channels++) {
7822 for (size_t rows = 14; rows <= 35; rows += 7) {
7823 GAvgPoolMicrokernelTester()
7824 .rows(rows)
7825 .channels(channels)
7826 .input_stride(5)
7827 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7828 }
7829 }
7830 }
7831
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_gt_2_2pass_fulltile)7832 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_2pass_fulltile) {
7833 for (size_t channels = 3; channels < 4; channels++) {
7834 GAvgPoolMicrokernelTester()
7835 .rows(14)
7836 .channels(channels)
7837 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7838 }
7839 }
7840
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_gt_2_2pass_fulltile_with_qmax)7841 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_2pass_fulltile_with_qmax) {
7842 for (size_t channels = 3; channels < 4; channels++) {
7843 GAvgPoolMicrokernelTester()
7844 .rows(14)
7845 .channels(channels)
7846 .qmax(128)
7847 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7848 }
7849 }
7850
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_gt_2_2pass_fulltile_with_qmin)7851 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_2pass_fulltile_with_qmin) {
7852 for (size_t channels = 3; channels < 4; channels++) {
7853 GAvgPoolMicrokernelTester()
7854 .rows(14)
7855 .channels(channels)
7856 .qmin(128)
7857 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7858 }
7859 }
7860
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_gt_2_2pass_subtile)7861 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_2pass_subtile) {
7862 for (size_t channels = 3; channels < 4; channels++) {
7863 for (size_t rows = 8; rows < 14; rows++) {
7864 GAvgPoolMicrokernelTester()
7865 .rows(rows)
7866 .channels(channels)
7867 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7868 }
7869 }
7870 }
7871
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_gt_2_multipass_fulltile)7872 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_multipass_fulltile) {
7873 for (size_t channels = 3; channels < 4; channels++) {
7874 for (size_t rows = 14; rows < 35; rows += 14) {
7875 GAvgPoolMicrokernelTester()
7876 .rows(rows)
7877 .channels(channels)
7878 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7879 }
7880 }
7881 }
7882
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2,channels_gt_2_multipass_fulltile_with_input_stride)7883 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_multipass_fulltile_with_input_stride) {
7884 for (size_t channels = 3; channels < 4; channels++) {
7885 for (size_t rows = 14; rows < 35; rows += 14) {
7886 GAvgPoolMicrokernelTester()
7887 .rows(rows)
7888 .channels(channels)
7889 .input_stride(17)
7890 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7891 }
7892 }
7893 }
7894
7895
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_eq_4_2pass_fulltile)7896 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_fulltile) {
7897 GAvgPoolMicrokernelTester()
7898 .rows(14)
7899 .channels(4)
7900 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7901 }
7902
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_eq_4_2pass_fulltile_with_input_stride)7903 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
7904 GAvgPoolMicrokernelTester()
7905 .rows(14)
7906 .channels(4)
7907 .input_stride(7)
7908 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7909 }
7910
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_eq_4_2pass_fulltile_with_qmax)7911 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_fulltile_with_qmax) {
7912 GAvgPoolMicrokernelTester()
7913 .rows(14)
7914 .channels(4)
7915 .qmax(128)
7916 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7917 }
7918
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_eq_4_2pass_fulltile_with_qmin)7919 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_fulltile_with_qmin) {
7920 GAvgPoolMicrokernelTester()
7921 .rows(14)
7922 .channels(4)
7923 .qmin(128)
7924 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7925 }
7926
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_eq_4_2pass_subtile)7927 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_subtile) {
7928 for (size_t rows = 8; rows < 14; rows++) {
7929 GAvgPoolMicrokernelTester()
7930 .rows(rows)
7931 .channels(4)
7932 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7933 }
7934 }
7935
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_eq_4_2pass_subtile_with_input_stride)7936 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_subtile_with_input_stride) {
7937 for (size_t rows = 8; rows < 14; rows++) {
7938 GAvgPoolMicrokernelTester()
7939 .rows(rows)
7940 .channels(4)
7941 .input_stride(7)
7942 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7943 }
7944 }
7945
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_eq_4_multipass_fulltile)7946 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_multipass_fulltile) {
7947 for (size_t rows = 14; rows <= 35; rows += 7) {
7948 GAvgPoolMicrokernelTester()
7949 .rows(rows)
7950 .channels(4)
7951 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7952 }
7953 }
7954
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_eq_4_multipass_fulltile_with_input_stride)7955 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
7956 for (size_t rows = 14; rows <= 35; rows += 7) {
7957 GAvgPoolMicrokernelTester()
7958 .rows(rows)
7959 .channels(4)
7960 .input_stride(7)
7961 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7962 }
7963 }
7964
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_div_4_2pass_fulltile)7965 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_div_4_2pass_fulltile) {
7966 for (size_t channels = 8; channels < 32; channels += 4) {
7967 GAvgPoolMicrokernelTester()
7968 .rows(14)
7969 .channels(channels)
7970 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7971 }
7972 }
7973
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_div_4_2pass_subtile)7974 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_div_4_2pass_subtile) {
7975 for (size_t channels = 8; channels < 32; channels += 4) {
7976 for (size_t rows = 8; rows < 14; rows++) {
7977 GAvgPoolMicrokernelTester()
7978 .rows(rows)
7979 .channels(channels)
7980 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7981 }
7982 }
7983 }
7984
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_div_4_multipass_fulltile)7985 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_div_4_multipass_fulltile) {
7986 for (size_t channels = 8; channels < 32; channels += 4) {
7987 for (size_t rows = 14; rows <= 35; rows += 7) {
7988 GAvgPoolMicrokernelTester()
7989 .rows(rows)
7990 .channels(channels)
7991 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
7992 }
7993 }
7994 }
7995
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_div_4_multipass_fulltile_with_input_stride)7996 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_div_4_multipass_fulltile_with_input_stride) {
7997 for (size_t channels = 8; channels < 32; channels += 4) {
7998 for (size_t rows = 14; rows <= 35; rows += 7) {
7999 GAvgPoolMicrokernelTester()
8000 .rows(rows)
8001 .channels(channels)
8002 .input_stride(67)
8003 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8004 }
8005 }
8006 }
8007
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_lt_4_2pass_fulltile)8008 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_2pass_fulltile) {
8009 for (size_t channels = 1; channels < 4; channels++) {
8010 GAvgPoolMicrokernelTester()
8011 .rows(14)
8012 .channels(channels)
8013 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8014 }
8015 }
8016
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_lt_4_2pass_fulltile_with_qmax)8017 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_2pass_fulltile_with_qmax) {
8018 for (size_t channels = 1; channels < 4; channels++) {
8019 GAvgPoolMicrokernelTester()
8020 .rows(14)
8021 .channels(channels)
8022 .qmax(128)
8023 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8024 }
8025 }
8026
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_lt_4_2pass_fulltile_with_qmin)8027 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_2pass_fulltile_with_qmin) {
8028 for (size_t channels = 1; channels < 4; channels++) {
8029 GAvgPoolMicrokernelTester()
8030 .rows(14)
8031 .channels(channels)
8032 .qmin(128)
8033 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8034 }
8035 }
8036
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_lt_4_2pass_subtile)8037 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_2pass_subtile) {
8038 for (size_t channels = 1; channels < 4; channels++) {
8039 for (size_t rows = 8; rows < 14; rows++) {
8040 GAvgPoolMicrokernelTester()
8041 .rows(rows)
8042 .channels(channels)
8043 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8044 }
8045 }
8046 }
8047
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_lt_4_multipass_fulltile)8048 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_multipass_fulltile) {
8049 for (size_t channels = 1; channels < 4; channels++) {
8050 for (size_t rows = 14; rows <= 35; rows += 7) {
8051 GAvgPoolMicrokernelTester()
8052 .rows(rows)
8053 .channels(channels)
8054 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8055 }
8056 }
8057 }
8058
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_lt_4_multipass_fulltile_with_input_stride)8059 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
8060 for (size_t channels = 1; channels < 4; channels++) {
8061 for (size_t rows = 14; rows <= 35; rows += 7) {
8062 GAvgPoolMicrokernelTester()
8063 .rows(rows)
8064 .channels(channels)
8065 .input_stride(7)
8066 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8067 }
8068 }
8069 }
8070
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_gt_4_2pass_fulltile)8071 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_2pass_fulltile) {
8072 for (size_t channels = 5; channels < 8; channels++) {
8073 GAvgPoolMicrokernelTester()
8074 .rows(14)
8075 .channels(channels)
8076 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8077 }
8078 }
8079
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_gt_4_2pass_fulltile_with_qmax)8080 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_2pass_fulltile_with_qmax) {
8081 for (size_t channels = 5; channels < 8; channels++) {
8082 GAvgPoolMicrokernelTester()
8083 .rows(14)
8084 .channels(channels)
8085 .qmax(128)
8086 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8087 }
8088 }
8089
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_gt_4_2pass_fulltile_with_qmin)8090 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_2pass_fulltile_with_qmin) {
8091 for (size_t channels = 5; channels < 8; channels++) {
8092 GAvgPoolMicrokernelTester()
8093 .rows(14)
8094 .channels(channels)
8095 .qmin(128)
8096 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8097 }
8098 }
8099
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_gt_4_2pass_subtile)8100 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_2pass_subtile) {
8101 for (size_t channels = 5; channels < 8; channels++) {
8102 for (size_t rows = 8; rows < 14; rows++) {
8103 GAvgPoolMicrokernelTester()
8104 .rows(rows)
8105 .channels(channels)
8106 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8107 }
8108 }
8109 }
8110
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_gt_4_multipass_fulltile)8111 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_multipass_fulltile) {
8112 for (size_t channels = 5; channels < 8; channels++) {
8113 for (size_t rows = 14; rows < 35; rows += 14) {
8114 GAvgPoolMicrokernelTester()
8115 .rows(rows)
8116 .channels(channels)
8117 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8118 }
8119 }
8120 }
8121
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4,channels_gt_4_multipass_fulltile_with_input_stride)8122 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
8123 for (size_t channels = 5; channels < 8; channels++) {
8124 for (size_t rows = 14; rows < 35; rows += 14) {
8125 GAvgPoolMicrokernelTester()
8126 .rows(rows)
8127 .channels(channels)
8128 .input_stride(23)
8129 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
8130 }
8131 }
8132 }
8133
8134
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_eq_1_2pass_fulltile)8135 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_fulltile) {
8136 GAvgPoolMicrokernelTester()
8137 .rows(14)
8138 .channels(1)
8139 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8140 }
8141
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_eq_1_2pass_fulltile_with_input_stride)8142 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
8143 GAvgPoolMicrokernelTester()
8144 .rows(14)
8145 .channels(1)
8146 .input_stride(3)
8147 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8148 }
8149
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_eq_1_2pass_fulltile_with_qmax)8150 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_fulltile_with_qmax) {
8151 GAvgPoolMicrokernelTester()
8152 .rows(14)
8153 .channels(1)
8154 .qmax(128)
8155 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8156 }
8157
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_eq_1_2pass_fulltile_with_qmin)8158 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_fulltile_with_qmin) {
8159 GAvgPoolMicrokernelTester()
8160 .rows(14)
8161 .channels(1)
8162 .qmin(128)
8163 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8164 }
8165
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_eq_1_2pass_subtile)8166 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_subtile) {
8167 for (size_t rows = 8; rows < 14; rows++) {
8168 GAvgPoolMicrokernelTester()
8169 .rows(rows)
8170 .channels(1)
8171 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8172 }
8173 }
8174
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_eq_1_2pass_subtile_with_input_stride)8175 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_subtile_with_input_stride) {
8176 for (size_t rows = 8; rows < 14; rows++) {
8177 GAvgPoolMicrokernelTester()
8178 .rows(rows)
8179 .channels(1)
8180 .input_stride(3)
8181 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8182 }
8183 }
8184
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_eq_1_multipass_fulltile)8185 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_multipass_fulltile) {
8186 for (size_t rows = 14; rows <= 35; rows += 7) {
8187 GAvgPoolMicrokernelTester()
8188 .rows(rows)
8189 .channels(1)
8190 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8191 }
8192 }
8193
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_eq_1_multipass_fulltile_with_input_stride)8194 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_multipass_fulltile_with_input_stride) {
8195 for (size_t rows = 14; rows <= 35; rows += 7) {
8196 GAvgPoolMicrokernelTester()
8197 .rows(rows)
8198 .channels(1)
8199 .input_stride(3)
8200 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8201 }
8202 }
8203
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_div_1_2pass_fulltile)8204 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_div_1_2pass_fulltile) {
8205 for (size_t channels = 2; channels < 8; channels += 1) {
8206 GAvgPoolMicrokernelTester()
8207 .rows(14)
8208 .channels(channels)
8209 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8210 }
8211 }
8212
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_div_1_2pass_subtile)8213 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_div_1_2pass_subtile) {
8214 for (size_t channels = 2; channels < 8; channels += 1) {
8215 for (size_t rows = 8; rows < 14; rows++) {
8216 GAvgPoolMicrokernelTester()
8217 .rows(rows)
8218 .channels(channels)
8219 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8220 }
8221 }
8222 }
8223
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_div_1_multipass_fulltile)8224 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_div_1_multipass_fulltile) {
8225 for (size_t channels = 2; channels < 8; channels += 1) {
8226 for (size_t rows = 14; rows <= 35; rows += 7) {
8227 GAvgPoolMicrokernelTester()
8228 .rows(rows)
8229 .channels(channels)
8230 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8231 }
8232 }
8233 }
8234
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_div_1_multipass_fulltile_with_input_stride)8235 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_div_1_multipass_fulltile_with_input_stride) {
8236 for (size_t channels = 2; channels < 8; channels += 1) {
8237 for (size_t rows = 14; rows <= 35; rows += 7) {
8238 GAvgPoolMicrokernelTester()
8239 .rows(rows)
8240 .channels(channels)
8241 .input_stride(19)
8242 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8243 }
8244 }
8245 }
8246
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_gt_1_2pass_fulltile)8247 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_2pass_fulltile) {
8248 for (size_t channels = 2; channels < 10; channels++) {
8249 GAvgPoolMicrokernelTester()
8250 .rows(14)
8251 .channels(channels)
8252 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8253 }
8254 }
8255
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_gt_1_2pass_fulltile_with_qmax)8256 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_2pass_fulltile_with_qmax) {
8257 for (size_t channels = 2; channels < 10; channels++) {
8258 GAvgPoolMicrokernelTester()
8259 .rows(14)
8260 .channels(channels)
8261 .qmax(128)
8262 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8263 }
8264 }
8265
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_gt_1_2pass_fulltile_with_qmin)8266 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_2pass_fulltile_with_qmin) {
8267 for (size_t channels = 2; channels < 10; channels++) {
8268 GAvgPoolMicrokernelTester()
8269 .rows(14)
8270 .channels(channels)
8271 .qmin(128)
8272 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8273 }
8274 }
8275
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_gt_1_2pass_subtile)8276 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_2pass_subtile) {
8277 for (size_t channels = 2; channels < 10; channels++) {
8278 for (size_t rows = 8; rows < 14; rows++) {
8279 GAvgPoolMicrokernelTester()
8280 .rows(rows)
8281 .channels(channels)
8282 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8283 }
8284 }
8285 }
8286
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_gt_1_multipass_fulltile)8287 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_multipass_fulltile) {
8288 for (size_t channels = 2; channels < 10; channels++) {
8289 for (size_t rows = 14; rows < 35; rows += 14) {
8290 GAvgPoolMicrokernelTester()
8291 .rows(rows)
8292 .channels(channels)
8293 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8294 }
8295 }
8296 }
8297
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1,channels_gt_1_multipass_fulltile_with_input_stride)8298 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
8299 for (size_t channels = 2; channels < 10; channels++) {
8300 for (size_t rows = 14; rows < 35; rows += 14) {
8301 GAvgPoolMicrokernelTester()
8302 .rows(rows)
8303 .channels(channels)
8304 .input_stride(17)
8305 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8306 }
8307 }
8308 }
8309
8310
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_eq_2_2pass_fulltile)8311 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_fulltile) {
8312 GAvgPoolMicrokernelTester()
8313 .rows(14)
8314 .channels(2)
8315 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8316 }
8317
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_eq_2_2pass_fulltile_with_input_stride)8318 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_fulltile_with_input_stride) {
8319 GAvgPoolMicrokernelTester()
8320 .rows(14)
8321 .channels(2)
8322 .input_stride(5)
8323 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8324 }
8325
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_eq_2_2pass_fulltile_with_qmax)8326 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_fulltile_with_qmax) {
8327 GAvgPoolMicrokernelTester()
8328 .rows(14)
8329 .channels(2)
8330 .qmax(128)
8331 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8332 }
8333
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_eq_2_2pass_fulltile_with_qmin)8334 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_fulltile_with_qmin) {
8335 GAvgPoolMicrokernelTester()
8336 .rows(14)
8337 .channels(2)
8338 .qmin(128)
8339 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8340 }
8341
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_eq_2_2pass_subtile)8342 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_subtile) {
8343 for (size_t rows = 8; rows < 14; rows++) {
8344 GAvgPoolMicrokernelTester()
8345 .rows(rows)
8346 .channels(2)
8347 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8348 }
8349 }
8350
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_eq_2_2pass_subtile_with_input_stride)8351 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_subtile_with_input_stride) {
8352 for (size_t rows = 8; rows < 14; rows++) {
8353 GAvgPoolMicrokernelTester()
8354 .rows(rows)
8355 .channels(2)
8356 .input_stride(5)
8357 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8358 }
8359 }
8360
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_eq_2_multipass_fulltile)8361 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_multipass_fulltile) {
8362 for (size_t rows = 14; rows <= 35; rows += 7) {
8363 GAvgPoolMicrokernelTester()
8364 .rows(rows)
8365 .channels(2)
8366 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8367 }
8368 }
8369
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_eq_2_multipass_fulltile_with_input_stride)8370 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_multipass_fulltile_with_input_stride) {
8371 for (size_t rows = 14; rows <= 35; rows += 7) {
8372 GAvgPoolMicrokernelTester()
8373 .rows(rows)
8374 .channels(2)
8375 .input_stride(5)
8376 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8377 }
8378 }
8379
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_div_2_2pass_fulltile)8380 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_div_2_2pass_fulltile) {
8381 for (size_t channels = 4; channels < 16; channels += 2) {
8382 GAvgPoolMicrokernelTester()
8383 .rows(14)
8384 .channels(channels)
8385 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8386 }
8387 }
8388
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_div_2_2pass_subtile)8389 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_div_2_2pass_subtile) {
8390 for (size_t channels = 4; channels < 16; channels += 2) {
8391 for (size_t rows = 8; rows < 14; rows++) {
8392 GAvgPoolMicrokernelTester()
8393 .rows(rows)
8394 .channels(channels)
8395 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8396 }
8397 }
8398 }
8399
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_div_2_multipass_fulltile)8400 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_div_2_multipass_fulltile) {
8401 for (size_t channels = 4; channels < 16; channels += 2) {
8402 for (size_t rows = 14; rows <= 35; rows += 7) {
8403 GAvgPoolMicrokernelTester()
8404 .rows(rows)
8405 .channels(channels)
8406 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8407 }
8408 }
8409 }
8410
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_div_2_multipass_fulltile_with_input_stride)8411 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_div_2_multipass_fulltile_with_input_stride) {
8412 for (size_t channels = 4; channels < 16; channels += 2) {
8413 for (size_t rows = 14; rows <= 35; rows += 7) {
8414 GAvgPoolMicrokernelTester()
8415 .rows(rows)
8416 .channels(channels)
8417 .input_stride(37)
8418 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8419 }
8420 }
8421 }
8422
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_lt_2_2pass_fulltile)8423 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_2pass_fulltile) {
8424 for (size_t channels = 1; channels < 2; channels++) {
8425 GAvgPoolMicrokernelTester()
8426 .rows(14)
8427 .channels(channels)
8428 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8429 }
8430 }
8431
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_lt_2_2pass_fulltile_with_qmax)8432 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_2pass_fulltile_with_qmax) {
8433 for (size_t channels = 1; channels < 2; channels++) {
8434 GAvgPoolMicrokernelTester()
8435 .rows(14)
8436 .channels(channels)
8437 .qmax(128)
8438 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8439 }
8440 }
8441
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_lt_2_2pass_fulltile_with_qmin)8442 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_2pass_fulltile_with_qmin) {
8443 for (size_t channels = 1; channels < 2; channels++) {
8444 GAvgPoolMicrokernelTester()
8445 .rows(14)
8446 .channels(channels)
8447 .qmin(128)
8448 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8449 }
8450 }
8451
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_lt_2_2pass_subtile)8452 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_2pass_subtile) {
8453 for (size_t channels = 1; channels < 2; channels++) {
8454 for (size_t rows = 8; rows < 14; rows++) {
8455 GAvgPoolMicrokernelTester()
8456 .rows(rows)
8457 .channels(channels)
8458 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8459 }
8460 }
8461 }
8462
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_lt_2_multipass_fulltile)8463 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_multipass_fulltile) {
8464 for (size_t channels = 1; channels < 2; channels++) {
8465 for (size_t rows = 14; rows <= 35; rows += 7) {
8466 GAvgPoolMicrokernelTester()
8467 .rows(rows)
8468 .channels(channels)
8469 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8470 }
8471 }
8472 }
8473
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_lt_2_multipass_fulltile_with_input_stride)8474 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_multipass_fulltile_with_input_stride) {
8475 for (size_t channels = 1; channels < 2; channels++) {
8476 for (size_t rows = 14; rows <= 35; rows += 7) {
8477 GAvgPoolMicrokernelTester()
8478 .rows(rows)
8479 .channels(channels)
8480 .input_stride(5)
8481 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8482 }
8483 }
8484 }
8485
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_gt_2_2pass_fulltile)8486 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_2pass_fulltile) {
8487 for (size_t channels = 3; channels < 4; channels++) {
8488 GAvgPoolMicrokernelTester()
8489 .rows(14)
8490 .channels(channels)
8491 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8492 }
8493 }
8494
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_gt_2_2pass_fulltile_with_qmax)8495 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_2pass_fulltile_with_qmax) {
8496 for (size_t channels = 3; channels < 4; channels++) {
8497 GAvgPoolMicrokernelTester()
8498 .rows(14)
8499 .channels(channels)
8500 .qmax(128)
8501 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8502 }
8503 }
8504
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_gt_2_2pass_fulltile_with_qmin)8505 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_2pass_fulltile_with_qmin) {
8506 for (size_t channels = 3; channels < 4; channels++) {
8507 GAvgPoolMicrokernelTester()
8508 .rows(14)
8509 .channels(channels)
8510 .qmin(128)
8511 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8512 }
8513 }
8514
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_gt_2_2pass_subtile)8515 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_2pass_subtile) {
8516 for (size_t channels = 3; channels < 4; channels++) {
8517 for (size_t rows = 8; rows < 14; rows++) {
8518 GAvgPoolMicrokernelTester()
8519 .rows(rows)
8520 .channels(channels)
8521 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8522 }
8523 }
8524 }
8525
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_gt_2_multipass_fulltile)8526 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_multipass_fulltile) {
8527 for (size_t channels = 3; channels < 4; channels++) {
8528 for (size_t rows = 14; rows < 35; rows += 14) {
8529 GAvgPoolMicrokernelTester()
8530 .rows(rows)
8531 .channels(channels)
8532 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8533 }
8534 }
8535 }
8536
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2,channels_gt_2_multipass_fulltile_with_input_stride)8537 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_multipass_fulltile_with_input_stride) {
8538 for (size_t channels = 3; channels < 4; channels++) {
8539 for (size_t rows = 14; rows < 35; rows += 14) {
8540 GAvgPoolMicrokernelTester()
8541 .rows(rows)
8542 .channels(channels)
8543 .input_stride(17)
8544 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8545 }
8546 }
8547 }
8548
8549
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_eq_4_2pass_fulltile)8550 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_fulltile) {
8551 GAvgPoolMicrokernelTester()
8552 .rows(14)
8553 .channels(4)
8554 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8555 }
8556
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_eq_4_2pass_fulltile_with_input_stride)8557 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
8558 GAvgPoolMicrokernelTester()
8559 .rows(14)
8560 .channels(4)
8561 .input_stride(7)
8562 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8563 }
8564
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_eq_4_2pass_fulltile_with_qmax)8565 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_fulltile_with_qmax) {
8566 GAvgPoolMicrokernelTester()
8567 .rows(14)
8568 .channels(4)
8569 .qmax(128)
8570 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8571 }
8572
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_eq_4_2pass_fulltile_with_qmin)8573 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_fulltile_with_qmin) {
8574 GAvgPoolMicrokernelTester()
8575 .rows(14)
8576 .channels(4)
8577 .qmin(128)
8578 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8579 }
8580
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_eq_4_2pass_subtile)8581 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_subtile) {
8582 for (size_t rows = 8; rows < 14; rows++) {
8583 GAvgPoolMicrokernelTester()
8584 .rows(rows)
8585 .channels(4)
8586 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8587 }
8588 }
8589
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_eq_4_2pass_subtile_with_input_stride)8590 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_subtile_with_input_stride) {
8591 for (size_t rows = 8; rows < 14; rows++) {
8592 GAvgPoolMicrokernelTester()
8593 .rows(rows)
8594 .channels(4)
8595 .input_stride(7)
8596 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8597 }
8598 }
8599
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_eq_4_multipass_fulltile)8600 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_multipass_fulltile) {
8601 for (size_t rows = 14; rows <= 35; rows += 7) {
8602 GAvgPoolMicrokernelTester()
8603 .rows(rows)
8604 .channels(4)
8605 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8606 }
8607 }
8608
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_eq_4_multipass_fulltile_with_input_stride)8609 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
8610 for (size_t rows = 14; rows <= 35; rows += 7) {
8611 GAvgPoolMicrokernelTester()
8612 .rows(rows)
8613 .channels(4)
8614 .input_stride(7)
8615 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8616 }
8617 }
8618
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_div_4_2pass_fulltile)8619 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_div_4_2pass_fulltile) {
8620 for (size_t channels = 8; channels < 32; channels += 4) {
8621 GAvgPoolMicrokernelTester()
8622 .rows(14)
8623 .channels(channels)
8624 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8625 }
8626 }
8627
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_div_4_2pass_subtile)8628 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_div_4_2pass_subtile) {
8629 for (size_t channels = 8; channels < 32; channels += 4) {
8630 for (size_t rows = 8; rows < 14; rows++) {
8631 GAvgPoolMicrokernelTester()
8632 .rows(rows)
8633 .channels(channels)
8634 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8635 }
8636 }
8637 }
8638
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_div_4_multipass_fulltile)8639 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_div_4_multipass_fulltile) {
8640 for (size_t channels = 8; channels < 32; channels += 4) {
8641 for (size_t rows = 14; rows <= 35; rows += 7) {
8642 GAvgPoolMicrokernelTester()
8643 .rows(rows)
8644 .channels(channels)
8645 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8646 }
8647 }
8648 }
8649
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_div_4_multipass_fulltile_with_input_stride)8650 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_div_4_multipass_fulltile_with_input_stride) {
8651 for (size_t channels = 8; channels < 32; channels += 4) {
8652 for (size_t rows = 14; rows <= 35; rows += 7) {
8653 GAvgPoolMicrokernelTester()
8654 .rows(rows)
8655 .channels(channels)
8656 .input_stride(67)
8657 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8658 }
8659 }
8660 }
8661
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_lt_4_2pass_fulltile)8662 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_2pass_fulltile) {
8663 for (size_t channels = 1; channels < 4; channels++) {
8664 GAvgPoolMicrokernelTester()
8665 .rows(14)
8666 .channels(channels)
8667 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8668 }
8669 }
8670
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_lt_4_2pass_fulltile_with_qmax)8671 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_2pass_fulltile_with_qmax) {
8672 for (size_t channels = 1; channels < 4; channels++) {
8673 GAvgPoolMicrokernelTester()
8674 .rows(14)
8675 .channels(channels)
8676 .qmax(128)
8677 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8678 }
8679 }
8680
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_lt_4_2pass_fulltile_with_qmin)8681 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_2pass_fulltile_with_qmin) {
8682 for (size_t channels = 1; channels < 4; channels++) {
8683 GAvgPoolMicrokernelTester()
8684 .rows(14)
8685 .channels(channels)
8686 .qmin(128)
8687 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8688 }
8689 }
8690
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_lt_4_2pass_subtile)8691 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_2pass_subtile) {
8692 for (size_t channels = 1; channels < 4; channels++) {
8693 for (size_t rows = 8; rows < 14; rows++) {
8694 GAvgPoolMicrokernelTester()
8695 .rows(rows)
8696 .channels(channels)
8697 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8698 }
8699 }
8700 }
8701
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_lt_4_multipass_fulltile)8702 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_multipass_fulltile) {
8703 for (size_t channels = 1; channels < 4; channels++) {
8704 for (size_t rows = 14; rows <= 35; rows += 7) {
8705 GAvgPoolMicrokernelTester()
8706 .rows(rows)
8707 .channels(channels)
8708 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8709 }
8710 }
8711 }
8712
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_lt_4_multipass_fulltile_with_input_stride)8713 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
8714 for (size_t channels = 1; channels < 4; channels++) {
8715 for (size_t rows = 14; rows <= 35; rows += 7) {
8716 GAvgPoolMicrokernelTester()
8717 .rows(rows)
8718 .channels(channels)
8719 .input_stride(7)
8720 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8721 }
8722 }
8723 }
8724
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_gt_4_2pass_fulltile)8725 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_2pass_fulltile) {
8726 for (size_t channels = 5; channels < 8; channels++) {
8727 GAvgPoolMicrokernelTester()
8728 .rows(14)
8729 .channels(channels)
8730 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8731 }
8732 }
8733
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_gt_4_2pass_fulltile_with_qmax)8734 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_2pass_fulltile_with_qmax) {
8735 for (size_t channels = 5; channels < 8; channels++) {
8736 GAvgPoolMicrokernelTester()
8737 .rows(14)
8738 .channels(channels)
8739 .qmax(128)
8740 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8741 }
8742 }
8743
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_gt_4_2pass_fulltile_with_qmin)8744 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_2pass_fulltile_with_qmin) {
8745 for (size_t channels = 5; channels < 8; channels++) {
8746 GAvgPoolMicrokernelTester()
8747 .rows(14)
8748 .channels(channels)
8749 .qmin(128)
8750 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8751 }
8752 }
8753
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_gt_4_2pass_subtile)8754 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_2pass_subtile) {
8755 for (size_t channels = 5; channels < 8; channels++) {
8756 for (size_t rows = 8; rows < 14; rows++) {
8757 GAvgPoolMicrokernelTester()
8758 .rows(rows)
8759 .channels(channels)
8760 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8761 }
8762 }
8763 }
8764
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_gt_4_multipass_fulltile)8765 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_multipass_fulltile) {
8766 for (size_t channels = 5; channels < 8; channels++) {
8767 for (size_t rows = 14; rows < 35; rows += 14) {
8768 GAvgPoolMicrokernelTester()
8769 .rows(rows)
8770 .channels(channels)
8771 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8772 }
8773 }
8774 }
8775
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4,channels_gt_4_multipass_fulltile_with_input_stride)8776 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
8777 for (size_t channels = 5; channels < 8; channels++) {
8778 for (size_t rows = 14; rows < 35; rows += 14) {
8779 GAvgPoolMicrokernelTester()
8780 .rows(rows)
8781 .channels(channels)
8782 .input_stride(23)
8783 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
8784 }
8785 }
8786 }
8787
8788
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_eq_1_2pass_fulltile)8789 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_fulltile) {
8790 GAvgPoolMicrokernelTester()
8791 .rows(14)
8792 .channels(1)
8793 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8794 }
8795
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_eq_1_2pass_fulltile_with_input_stride)8796 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
8797 GAvgPoolMicrokernelTester()
8798 .rows(14)
8799 .channels(1)
8800 .input_stride(3)
8801 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8802 }
8803
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_eq_1_2pass_fulltile_with_qmax)8804 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_fulltile_with_qmax) {
8805 GAvgPoolMicrokernelTester()
8806 .rows(14)
8807 .channels(1)
8808 .qmax(128)
8809 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8810 }
8811
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_eq_1_2pass_fulltile_with_qmin)8812 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_fulltile_with_qmin) {
8813 GAvgPoolMicrokernelTester()
8814 .rows(14)
8815 .channels(1)
8816 .qmin(128)
8817 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8818 }
8819
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_eq_1_2pass_subtile)8820 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_subtile) {
8821 for (size_t rows = 8; rows < 14; rows++) {
8822 GAvgPoolMicrokernelTester()
8823 .rows(rows)
8824 .channels(1)
8825 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8826 }
8827 }
8828
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_eq_1_2pass_subtile_with_input_stride)8829 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_subtile_with_input_stride) {
8830 for (size_t rows = 8; rows < 14; rows++) {
8831 GAvgPoolMicrokernelTester()
8832 .rows(rows)
8833 .channels(1)
8834 .input_stride(3)
8835 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8836 }
8837 }
8838
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_eq_1_multipass_fulltile)8839 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_multipass_fulltile) {
8840 for (size_t rows = 14; rows <= 35; rows += 7) {
8841 GAvgPoolMicrokernelTester()
8842 .rows(rows)
8843 .channels(1)
8844 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8845 }
8846 }
8847
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_eq_1_multipass_fulltile_with_input_stride)8848 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_multipass_fulltile_with_input_stride) {
8849 for (size_t rows = 14; rows <= 35; rows += 7) {
8850 GAvgPoolMicrokernelTester()
8851 .rows(rows)
8852 .channels(1)
8853 .input_stride(3)
8854 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8855 }
8856 }
8857
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_div_1_2pass_fulltile)8858 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_div_1_2pass_fulltile) {
8859 for (size_t channels = 2; channels < 8; channels += 1) {
8860 GAvgPoolMicrokernelTester()
8861 .rows(14)
8862 .channels(channels)
8863 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8864 }
8865 }
8866
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_div_1_2pass_subtile)8867 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_div_1_2pass_subtile) {
8868 for (size_t channels = 2; channels < 8; channels += 1) {
8869 for (size_t rows = 8; rows < 14; rows++) {
8870 GAvgPoolMicrokernelTester()
8871 .rows(rows)
8872 .channels(channels)
8873 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8874 }
8875 }
8876 }
8877
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_div_1_multipass_fulltile)8878 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_div_1_multipass_fulltile) {
8879 for (size_t channels = 2; channels < 8; channels += 1) {
8880 for (size_t rows = 14; rows <= 35; rows += 7) {
8881 GAvgPoolMicrokernelTester()
8882 .rows(rows)
8883 .channels(channels)
8884 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8885 }
8886 }
8887 }
8888
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_div_1_multipass_fulltile_with_input_stride)8889 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_div_1_multipass_fulltile_with_input_stride) {
8890 for (size_t channels = 2; channels < 8; channels += 1) {
8891 for (size_t rows = 14; rows <= 35; rows += 7) {
8892 GAvgPoolMicrokernelTester()
8893 .rows(rows)
8894 .channels(channels)
8895 .input_stride(19)
8896 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8897 }
8898 }
8899 }
8900
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_gt_1_2pass_fulltile)8901 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_2pass_fulltile) {
8902 for (size_t channels = 2; channels < 10; channels++) {
8903 GAvgPoolMicrokernelTester()
8904 .rows(14)
8905 .channels(channels)
8906 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8907 }
8908 }
8909
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_gt_1_2pass_fulltile_with_qmax)8910 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_2pass_fulltile_with_qmax) {
8911 for (size_t channels = 2; channels < 10; channels++) {
8912 GAvgPoolMicrokernelTester()
8913 .rows(14)
8914 .channels(channels)
8915 .qmax(128)
8916 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8917 }
8918 }
8919
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_gt_1_2pass_fulltile_with_qmin)8920 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_2pass_fulltile_with_qmin) {
8921 for (size_t channels = 2; channels < 10; channels++) {
8922 GAvgPoolMicrokernelTester()
8923 .rows(14)
8924 .channels(channels)
8925 .qmin(128)
8926 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8927 }
8928 }
8929
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_gt_1_2pass_subtile)8930 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_2pass_subtile) {
8931 for (size_t channels = 2; channels < 10; channels++) {
8932 for (size_t rows = 8; rows < 14; rows++) {
8933 GAvgPoolMicrokernelTester()
8934 .rows(rows)
8935 .channels(channels)
8936 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8937 }
8938 }
8939 }
8940
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_gt_1_multipass_fulltile)8941 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_multipass_fulltile) {
8942 for (size_t channels = 2; channels < 10; channels++) {
8943 for (size_t rows = 14; rows < 35; rows += 14) {
8944 GAvgPoolMicrokernelTester()
8945 .rows(rows)
8946 .channels(channels)
8947 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8948 }
8949 }
8950 }
8951
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1,channels_gt_1_multipass_fulltile_with_input_stride)8952 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
8953 for (size_t channels = 2; channels < 10; channels++) {
8954 for (size_t rows = 14; rows < 35; rows += 14) {
8955 GAvgPoolMicrokernelTester()
8956 .rows(rows)
8957 .channels(channels)
8958 .input_stride(17)
8959 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8960 }
8961 }
8962 }
8963
8964
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_eq_2_2pass_fulltile)8965 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_fulltile) {
8966 GAvgPoolMicrokernelTester()
8967 .rows(14)
8968 .channels(2)
8969 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8970 }
8971
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_eq_2_2pass_fulltile_with_input_stride)8972 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_fulltile_with_input_stride) {
8973 GAvgPoolMicrokernelTester()
8974 .rows(14)
8975 .channels(2)
8976 .input_stride(5)
8977 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8978 }
8979
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_eq_2_2pass_fulltile_with_qmax)8980 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_fulltile_with_qmax) {
8981 GAvgPoolMicrokernelTester()
8982 .rows(14)
8983 .channels(2)
8984 .qmax(128)
8985 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8986 }
8987
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_eq_2_2pass_fulltile_with_qmin)8988 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_fulltile_with_qmin) {
8989 GAvgPoolMicrokernelTester()
8990 .rows(14)
8991 .channels(2)
8992 .qmin(128)
8993 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
8994 }
8995
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_eq_2_2pass_subtile)8996 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_subtile) {
8997 for (size_t rows = 8; rows < 14; rows++) {
8998 GAvgPoolMicrokernelTester()
8999 .rows(rows)
9000 .channels(2)
9001 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9002 }
9003 }
9004
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_eq_2_2pass_subtile_with_input_stride)9005 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_subtile_with_input_stride) {
9006 for (size_t rows = 8; rows < 14; rows++) {
9007 GAvgPoolMicrokernelTester()
9008 .rows(rows)
9009 .channels(2)
9010 .input_stride(5)
9011 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9012 }
9013 }
9014
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_eq_2_multipass_fulltile)9015 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_multipass_fulltile) {
9016 for (size_t rows = 14; rows <= 35; rows += 7) {
9017 GAvgPoolMicrokernelTester()
9018 .rows(rows)
9019 .channels(2)
9020 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9021 }
9022 }
9023
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_eq_2_multipass_fulltile_with_input_stride)9024 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_multipass_fulltile_with_input_stride) {
9025 for (size_t rows = 14; rows <= 35; rows += 7) {
9026 GAvgPoolMicrokernelTester()
9027 .rows(rows)
9028 .channels(2)
9029 .input_stride(5)
9030 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9031 }
9032 }
9033
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_div_2_2pass_fulltile)9034 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_div_2_2pass_fulltile) {
9035 for (size_t channels = 4; channels < 16; channels += 2) {
9036 GAvgPoolMicrokernelTester()
9037 .rows(14)
9038 .channels(channels)
9039 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9040 }
9041 }
9042
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_div_2_2pass_subtile)9043 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_div_2_2pass_subtile) {
9044 for (size_t channels = 4; channels < 16; channels += 2) {
9045 for (size_t rows = 8; rows < 14; rows++) {
9046 GAvgPoolMicrokernelTester()
9047 .rows(rows)
9048 .channels(channels)
9049 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9050 }
9051 }
9052 }
9053
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_div_2_multipass_fulltile)9054 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_div_2_multipass_fulltile) {
9055 for (size_t channels = 4; channels < 16; channels += 2) {
9056 for (size_t rows = 14; rows <= 35; rows += 7) {
9057 GAvgPoolMicrokernelTester()
9058 .rows(rows)
9059 .channels(channels)
9060 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9061 }
9062 }
9063 }
9064
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_div_2_multipass_fulltile_with_input_stride)9065 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_div_2_multipass_fulltile_with_input_stride) {
9066 for (size_t channels = 4; channels < 16; channels += 2) {
9067 for (size_t rows = 14; rows <= 35; rows += 7) {
9068 GAvgPoolMicrokernelTester()
9069 .rows(rows)
9070 .channels(channels)
9071 .input_stride(37)
9072 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9073 }
9074 }
9075 }
9076
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_lt_2_2pass_fulltile)9077 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_2pass_fulltile) {
9078 for (size_t channels = 1; channels < 2; channels++) {
9079 GAvgPoolMicrokernelTester()
9080 .rows(14)
9081 .channels(channels)
9082 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9083 }
9084 }
9085
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_lt_2_2pass_fulltile_with_qmax)9086 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_2pass_fulltile_with_qmax) {
9087 for (size_t channels = 1; channels < 2; channels++) {
9088 GAvgPoolMicrokernelTester()
9089 .rows(14)
9090 .channels(channels)
9091 .qmax(128)
9092 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9093 }
9094 }
9095
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_lt_2_2pass_fulltile_with_qmin)9096 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_2pass_fulltile_with_qmin) {
9097 for (size_t channels = 1; channels < 2; channels++) {
9098 GAvgPoolMicrokernelTester()
9099 .rows(14)
9100 .channels(channels)
9101 .qmin(128)
9102 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9103 }
9104 }
9105
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_lt_2_2pass_subtile)9106 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_2pass_subtile) {
9107 for (size_t channels = 1; channels < 2; channels++) {
9108 for (size_t rows = 8; rows < 14; rows++) {
9109 GAvgPoolMicrokernelTester()
9110 .rows(rows)
9111 .channels(channels)
9112 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9113 }
9114 }
9115 }
9116
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_lt_2_multipass_fulltile)9117 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_multipass_fulltile) {
9118 for (size_t channels = 1; channels < 2; channels++) {
9119 for (size_t rows = 14; rows <= 35; rows += 7) {
9120 GAvgPoolMicrokernelTester()
9121 .rows(rows)
9122 .channels(channels)
9123 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9124 }
9125 }
9126 }
9127
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_lt_2_multipass_fulltile_with_input_stride)9128 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_multipass_fulltile_with_input_stride) {
9129 for (size_t channels = 1; channels < 2; channels++) {
9130 for (size_t rows = 14; rows <= 35; rows += 7) {
9131 GAvgPoolMicrokernelTester()
9132 .rows(rows)
9133 .channels(channels)
9134 .input_stride(5)
9135 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9136 }
9137 }
9138 }
9139
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_gt_2_2pass_fulltile)9140 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_2pass_fulltile) {
9141 for (size_t channels = 3; channels < 4; channels++) {
9142 GAvgPoolMicrokernelTester()
9143 .rows(14)
9144 .channels(channels)
9145 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9146 }
9147 }
9148
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_gt_2_2pass_fulltile_with_qmax)9149 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_2pass_fulltile_with_qmax) {
9150 for (size_t channels = 3; channels < 4; channels++) {
9151 GAvgPoolMicrokernelTester()
9152 .rows(14)
9153 .channels(channels)
9154 .qmax(128)
9155 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9156 }
9157 }
9158
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_gt_2_2pass_fulltile_with_qmin)9159 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_2pass_fulltile_with_qmin) {
9160 for (size_t channels = 3; channels < 4; channels++) {
9161 GAvgPoolMicrokernelTester()
9162 .rows(14)
9163 .channels(channels)
9164 .qmin(128)
9165 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9166 }
9167 }
9168
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_gt_2_2pass_subtile)9169 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_2pass_subtile) {
9170 for (size_t channels = 3; channels < 4; channels++) {
9171 for (size_t rows = 8; rows < 14; rows++) {
9172 GAvgPoolMicrokernelTester()
9173 .rows(rows)
9174 .channels(channels)
9175 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9176 }
9177 }
9178 }
9179
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_gt_2_multipass_fulltile)9180 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_multipass_fulltile) {
9181 for (size_t channels = 3; channels < 4; channels++) {
9182 for (size_t rows = 14; rows < 35; rows += 14) {
9183 GAvgPoolMicrokernelTester()
9184 .rows(rows)
9185 .channels(channels)
9186 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9187 }
9188 }
9189 }
9190
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2,channels_gt_2_multipass_fulltile_with_input_stride)9191 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_multipass_fulltile_with_input_stride) {
9192 for (size_t channels = 3; channels < 4; channels++) {
9193 for (size_t rows = 14; rows < 35; rows += 14) {
9194 GAvgPoolMicrokernelTester()
9195 .rows(rows)
9196 .channels(channels)
9197 .input_stride(17)
9198 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9199 }
9200 }
9201 }
9202
9203
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_eq_4_2pass_fulltile)9204 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_fulltile) {
9205 GAvgPoolMicrokernelTester()
9206 .rows(14)
9207 .channels(4)
9208 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9209 }
9210
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_eq_4_2pass_fulltile_with_input_stride)9211 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
9212 GAvgPoolMicrokernelTester()
9213 .rows(14)
9214 .channels(4)
9215 .input_stride(7)
9216 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9217 }
9218
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_eq_4_2pass_fulltile_with_qmax)9219 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_fulltile_with_qmax) {
9220 GAvgPoolMicrokernelTester()
9221 .rows(14)
9222 .channels(4)
9223 .qmax(128)
9224 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9225 }
9226
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_eq_4_2pass_fulltile_with_qmin)9227 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_fulltile_with_qmin) {
9228 GAvgPoolMicrokernelTester()
9229 .rows(14)
9230 .channels(4)
9231 .qmin(128)
9232 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9233 }
9234
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_eq_4_2pass_subtile)9235 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_subtile) {
9236 for (size_t rows = 8; rows < 14; rows++) {
9237 GAvgPoolMicrokernelTester()
9238 .rows(rows)
9239 .channels(4)
9240 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9241 }
9242 }
9243
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_eq_4_2pass_subtile_with_input_stride)9244 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_subtile_with_input_stride) {
9245 for (size_t rows = 8; rows < 14; rows++) {
9246 GAvgPoolMicrokernelTester()
9247 .rows(rows)
9248 .channels(4)
9249 .input_stride(7)
9250 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9251 }
9252 }
9253
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_eq_4_multipass_fulltile)9254 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_multipass_fulltile) {
9255 for (size_t rows = 14; rows <= 35; rows += 7) {
9256 GAvgPoolMicrokernelTester()
9257 .rows(rows)
9258 .channels(4)
9259 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9260 }
9261 }
9262
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_eq_4_multipass_fulltile_with_input_stride)9263 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
9264 for (size_t rows = 14; rows <= 35; rows += 7) {
9265 GAvgPoolMicrokernelTester()
9266 .rows(rows)
9267 .channels(4)
9268 .input_stride(7)
9269 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9270 }
9271 }
9272
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_div_4_2pass_fulltile)9273 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_div_4_2pass_fulltile) {
9274 for (size_t channels = 8; channels < 32; channels += 4) {
9275 GAvgPoolMicrokernelTester()
9276 .rows(14)
9277 .channels(channels)
9278 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9279 }
9280 }
9281
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_div_4_2pass_subtile)9282 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_div_4_2pass_subtile) {
9283 for (size_t channels = 8; channels < 32; channels += 4) {
9284 for (size_t rows = 8; rows < 14; rows++) {
9285 GAvgPoolMicrokernelTester()
9286 .rows(rows)
9287 .channels(channels)
9288 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9289 }
9290 }
9291 }
9292
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_div_4_multipass_fulltile)9293 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_div_4_multipass_fulltile) {
9294 for (size_t channels = 8; channels < 32; channels += 4) {
9295 for (size_t rows = 14; rows <= 35; rows += 7) {
9296 GAvgPoolMicrokernelTester()
9297 .rows(rows)
9298 .channels(channels)
9299 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9300 }
9301 }
9302 }
9303
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_div_4_multipass_fulltile_with_input_stride)9304 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_div_4_multipass_fulltile_with_input_stride) {
9305 for (size_t channels = 8; channels < 32; channels += 4) {
9306 for (size_t rows = 14; rows <= 35; rows += 7) {
9307 GAvgPoolMicrokernelTester()
9308 .rows(rows)
9309 .channels(channels)
9310 .input_stride(67)
9311 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9312 }
9313 }
9314 }
9315
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_lt_4_2pass_fulltile)9316 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_2pass_fulltile) {
9317 for (size_t channels = 1; channels < 4; channels++) {
9318 GAvgPoolMicrokernelTester()
9319 .rows(14)
9320 .channels(channels)
9321 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9322 }
9323 }
9324
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_lt_4_2pass_fulltile_with_qmax)9325 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_2pass_fulltile_with_qmax) {
9326 for (size_t channels = 1; channels < 4; channels++) {
9327 GAvgPoolMicrokernelTester()
9328 .rows(14)
9329 .channels(channels)
9330 .qmax(128)
9331 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9332 }
9333 }
9334
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_lt_4_2pass_fulltile_with_qmin)9335 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_2pass_fulltile_with_qmin) {
9336 for (size_t channels = 1; channels < 4; channels++) {
9337 GAvgPoolMicrokernelTester()
9338 .rows(14)
9339 .channels(channels)
9340 .qmin(128)
9341 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9342 }
9343 }
9344
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_lt_4_2pass_subtile)9345 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_2pass_subtile) {
9346 for (size_t channels = 1; channels < 4; channels++) {
9347 for (size_t rows = 8; rows < 14; rows++) {
9348 GAvgPoolMicrokernelTester()
9349 .rows(rows)
9350 .channels(channels)
9351 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9352 }
9353 }
9354 }
9355
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_lt_4_multipass_fulltile)9356 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_multipass_fulltile) {
9357 for (size_t channels = 1; channels < 4; channels++) {
9358 for (size_t rows = 14; rows <= 35; rows += 7) {
9359 GAvgPoolMicrokernelTester()
9360 .rows(rows)
9361 .channels(channels)
9362 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9363 }
9364 }
9365 }
9366
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_lt_4_multipass_fulltile_with_input_stride)9367 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
9368 for (size_t channels = 1; channels < 4; channels++) {
9369 for (size_t rows = 14; rows <= 35; rows += 7) {
9370 GAvgPoolMicrokernelTester()
9371 .rows(rows)
9372 .channels(channels)
9373 .input_stride(7)
9374 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9375 }
9376 }
9377 }
9378
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_gt_4_2pass_fulltile)9379 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_2pass_fulltile) {
9380 for (size_t channels = 5; channels < 8; channels++) {
9381 GAvgPoolMicrokernelTester()
9382 .rows(14)
9383 .channels(channels)
9384 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9385 }
9386 }
9387
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_gt_4_2pass_fulltile_with_qmax)9388 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_2pass_fulltile_with_qmax) {
9389 for (size_t channels = 5; channels < 8; channels++) {
9390 GAvgPoolMicrokernelTester()
9391 .rows(14)
9392 .channels(channels)
9393 .qmax(128)
9394 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9395 }
9396 }
9397
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_gt_4_2pass_fulltile_with_qmin)9398 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_2pass_fulltile_with_qmin) {
9399 for (size_t channels = 5; channels < 8; channels++) {
9400 GAvgPoolMicrokernelTester()
9401 .rows(14)
9402 .channels(channels)
9403 .qmin(128)
9404 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9405 }
9406 }
9407
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_gt_4_2pass_subtile)9408 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_2pass_subtile) {
9409 for (size_t channels = 5; channels < 8; channels++) {
9410 for (size_t rows = 8; rows < 14; rows++) {
9411 GAvgPoolMicrokernelTester()
9412 .rows(rows)
9413 .channels(channels)
9414 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9415 }
9416 }
9417 }
9418
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_gt_4_multipass_fulltile)9419 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_multipass_fulltile) {
9420 for (size_t channels = 5; channels < 8; channels++) {
9421 for (size_t rows = 14; rows < 35; rows += 14) {
9422 GAvgPoolMicrokernelTester()
9423 .rows(rows)
9424 .channels(channels)
9425 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9426 }
9427 }
9428 }
9429
TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4,channels_gt_4_multipass_fulltile_with_input_stride)9430 TEST(QU8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
9431 for (size_t channels = 5; channels < 8; channels++) {
9432 for (size_t rows = 14; rows < 35; rows += 14) {
9433 GAvgPoolMicrokernelTester()
9434 .rows(rows)
9435 .channels(channels)
9436 .input_stride(23)
9437 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
9438 }
9439 }
9440 }
9441
9442
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_eq_1_fulltile)9443 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_fulltile) {
9444 GAvgPoolMicrokernelTester()
9445 .rows(7)
9446 .channels(1)
9447 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9448 }
9449
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_eq_1_subtile)9450 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_subtile) {
9451 for (size_t rows = 1; rows < 7; rows++) {
9452 GAvgPoolMicrokernelTester()
9453 .rows(rows)
9454 .channels(1)
9455 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9456 }
9457 }
9458
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_eq_1_fulltile_with_input_stride)9459 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_fulltile_with_input_stride) {
9460 GAvgPoolMicrokernelTester()
9461 .rows(7)
9462 .channels(1)
9463 .input_stride(3)
9464 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9465 }
9466
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_eq_1_fulltile_with_qmax)9467 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_fulltile_with_qmax) {
9468 GAvgPoolMicrokernelTester()
9469 .rows(7)
9470 .channels(1)
9471 .qmax(128)
9472 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9473 }
9474
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_eq_1_fulltile_with_qmin)9475 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_fulltile_with_qmin) {
9476 GAvgPoolMicrokernelTester()
9477 .rows(7)
9478 .channels(1)
9479 .qmin(128)
9480 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9481 }
9482
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_gt_1_fulltile)9483 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_gt_1_fulltile) {
9484 for (size_t channels = 2; channels < 10; channels++) {
9485 GAvgPoolMicrokernelTester()
9486 .rows(7)
9487 .channels(channels)
9488 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9489 }
9490 }
9491
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_gt_1_subtile)9492 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_gt_1_subtile) {
9493 for (size_t channels = 2; channels < 10; channels++) {
9494 for (size_t rows = 1; rows < 7; rows++) {
9495 GAvgPoolMicrokernelTester()
9496 .rows(rows)
9497 .channels(channels)
9498 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9499 }
9500 }
9501 }
9502
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_gt_1_fulltile_with_qmax)9503 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_gt_1_fulltile_with_qmax) {
9504 for (size_t channels = 2; channels < 10; channels++) {
9505 GAvgPoolMicrokernelTester()
9506 .rows(7)
9507 .channels(channels)
9508 .qmax(128)
9509 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9510 }
9511 }
9512
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1,channels_gt_1_fulltile_with_qmin)9513 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_gt_1_fulltile_with_qmin) {
9514 for (size_t channels = 2; channels < 10; channels++) {
9515 GAvgPoolMicrokernelTester()
9516 .rows(7)
9517 .channels(channels)
9518 .qmin(128)
9519 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9520 }
9521 }
9522
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_eq_2_fulltile)9523 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_fulltile) {
9524 GAvgPoolMicrokernelTester()
9525 .rows(7)
9526 .channels(2)
9527 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9528 }
9529
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_eq_2_subtile)9530 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_subtile) {
9531 for (size_t rows = 1; rows < 7; rows++) {
9532 GAvgPoolMicrokernelTester()
9533 .rows(rows)
9534 .channels(2)
9535 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9536 }
9537 }
9538
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_eq_2_fulltile_with_input_stride)9539 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_fulltile_with_input_stride) {
9540 GAvgPoolMicrokernelTester()
9541 .rows(7)
9542 .channels(2)
9543 .input_stride(5)
9544 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9545 }
9546
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_eq_2_fulltile_with_qmax)9547 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_fulltile_with_qmax) {
9548 GAvgPoolMicrokernelTester()
9549 .rows(7)
9550 .channels(2)
9551 .qmax(128)
9552 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9553 }
9554
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_eq_2_fulltile_with_qmin)9555 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_fulltile_with_qmin) {
9556 GAvgPoolMicrokernelTester()
9557 .rows(7)
9558 .channels(2)
9559 .qmin(128)
9560 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9561 }
9562
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_div_2_fulltile)9563 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_div_2_fulltile) {
9564 for (size_t channels = 4; channels < 16; channels += 2) {
9565 GAvgPoolMicrokernelTester()
9566 .rows(7)
9567 .channels(channels)
9568 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9569 }
9570 }
9571
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_div_2_subtile)9572 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_div_2_subtile) {
9573 for (size_t channels = 4; channels < 16; channels += 2) {
9574 for (size_t rows = 1; rows < 7; rows++) {
9575 GAvgPoolMicrokernelTester()
9576 .rows(rows)
9577 .channels(channels)
9578 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9579 }
9580 }
9581 }
9582
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_lt_2_fulltile)9583 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_lt_2_fulltile) {
9584 for (size_t channels = 1; channels < 2; channels++) {
9585 GAvgPoolMicrokernelTester()
9586 .rows(7)
9587 .channels(channels)
9588 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9589 }
9590 }
9591
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_lt_2_subtile)9592 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_lt_2_subtile) {
9593 for (size_t channels = 1; channels < 2; channels++) {
9594 for (size_t rows = 1; rows < 7; rows++) {
9595 GAvgPoolMicrokernelTester()
9596 .rows(rows)
9597 .channels(channels)
9598 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9599 }
9600 }
9601 }
9602
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_lt_2_fulltile_with_qmax)9603 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_lt_2_fulltile_with_qmax) {
9604 for (size_t channels = 1; channels < 2; channels++) {
9605 GAvgPoolMicrokernelTester()
9606 .rows(7)
9607 .channels(channels)
9608 .qmax(128)
9609 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9610 }
9611 }
9612
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_lt_2_fulltile_with_qmin)9613 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_lt_2_fulltile_with_qmin) {
9614 for (size_t channels = 1; channels < 2; channels++) {
9615 GAvgPoolMicrokernelTester()
9616 .rows(7)
9617 .channels(channels)
9618 .qmin(128)
9619 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9620 }
9621 }
9622
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_gt_2_fulltile)9623 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_gt_2_fulltile) {
9624 for (size_t channels = 3; channels < 4; channels++) {
9625 GAvgPoolMicrokernelTester()
9626 .rows(7)
9627 .channels(channels)
9628 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9629 }
9630 }
9631
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_gt_2_subtile)9632 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_gt_2_subtile) {
9633 for (size_t channels = 3; channels < 4; channels++) {
9634 for (size_t rows = 1; rows < 7; rows++) {
9635 GAvgPoolMicrokernelTester()
9636 .rows(rows)
9637 .channels(channels)
9638 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9639 }
9640 }
9641 }
9642
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_gt_2_fulltile_with_qmax)9643 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_gt_2_fulltile_with_qmax) {
9644 for (size_t channels = 3; channels < 4; channels++) {
9645 GAvgPoolMicrokernelTester()
9646 .rows(7)
9647 .channels(channels)
9648 .qmax(128)
9649 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9650 }
9651 }
9652
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2,channels_gt_2_fulltile_with_qmin)9653 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_gt_2_fulltile_with_qmin) {
9654 for (size_t channels = 3; channels < 4; channels++) {
9655 GAvgPoolMicrokernelTester()
9656 .rows(7)
9657 .channels(channels)
9658 .qmin(128)
9659 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9660 }
9661 }
9662
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_eq_4_fulltile)9663 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_fulltile) {
9664 GAvgPoolMicrokernelTester()
9665 .rows(7)
9666 .channels(4)
9667 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9668 }
9669
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_eq_4_subtile)9670 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_subtile) {
9671 for (size_t rows = 1; rows < 7; rows++) {
9672 GAvgPoolMicrokernelTester()
9673 .rows(rows)
9674 .channels(4)
9675 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9676 }
9677 }
9678
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_eq_4_fulltile_with_input_stride)9679 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_fulltile_with_input_stride) {
9680 GAvgPoolMicrokernelTester()
9681 .rows(7)
9682 .channels(4)
9683 .input_stride(7)
9684 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9685 }
9686
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_eq_4_fulltile_with_qmax)9687 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_fulltile_with_qmax) {
9688 GAvgPoolMicrokernelTester()
9689 .rows(7)
9690 .channels(4)
9691 .qmax(128)
9692 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9693 }
9694
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_eq_4_fulltile_with_qmin)9695 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_fulltile_with_qmin) {
9696 GAvgPoolMicrokernelTester()
9697 .rows(7)
9698 .channels(4)
9699 .qmin(128)
9700 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9701 }
9702
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_div_4_fulltile)9703 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_div_4_fulltile) {
9704 for (size_t channels = 8; channels < 32; channels += 4) {
9705 GAvgPoolMicrokernelTester()
9706 .rows(7)
9707 .channels(channels)
9708 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9709 }
9710 }
9711
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_div_4_subtile)9712 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_div_4_subtile) {
9713 for (size_t channels = 8; channels < 32; channels += 4) {
9714 for (size_t rows = 1; rows < 7; rows++) {
9715 GAvgPoolMicrokernelTester()
9716 .rows(rows)
9717 .channels(channels)
9718 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9719 }
9720 }
9721 }
9722
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_lt_4_fulltile)9723 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_lt_4_fulltile) {
9724 for (size_t channels = 1; channels < 4; channels++) {
9725 GAvgPoolMicrokernelTester()
9726 .rows(7)
9727 .channels(channels)
9728 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9729 }
9730 }
9731
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_lt_4_subtile)9732 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_lt_4_subtile) {
9733 for (size_t channels = 1; channels < 4; channels++) {
9734 for (size_t rows = 1; rows < 7; rows++) {
9735 GAvgPoolMicrokernelTester()
9736 .rows(rows)
9737 .channels(channels)
9738 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9739 }
9740 }
9741 }
9742
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_lt_4_fulltile_with_qmax)9743 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_lt_4_fulltile_with_qmax) {
9744 for (size_t channels = 1; channels < 4; channels++) {
9745 GAvgPoolMicrokernelTester()
9746 .rows(7)
9747 .channels(channels)
9748 .qmax(128)
9749 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9750 }
9751 }
9752
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_lt_4_fulltile_with_qmin)9753 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_lt_4_fulltile_with_qmin) {
9754 for (size_t channels = 1; channels < 4; channels++) {
9755 GAvgPoolMicrokernelTester()
9756 .rows(7)
9757 .channels(channels)
9758 .qmin(128)
9759 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9760 }
9761 }
9762
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_gt_4_fulltile)9763 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_gt_4_fulltile) {
9764 for (size_t channels = 5; channels < 8; channels++) {
9765 GAvgPoolMicrokernelTester()
9766 .rows(7)
9767 .channels(channels)
9768 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9769 }
9770 }
9771
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_gt_4_subtile)9772 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_gt_4_subtile) {
9773 for (size_t channels = 5; channels < 8; channels++) {
9774 for (size_t rows = 1; rows < 7; rows++) {
9775 GAvgPoolMicrokernelTester()
9776 .rows(rows)
9777 .channels(channels)
9778 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9779 }
9780 }
9781 }
9782
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_gt_4_fulltile_with_qmax)9783 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_gt_4_fulltile_with_qmax) {
9784 for (size_t channels = 5; channels < 8; channels++) {
9785 GAvgPoolMicrokernelTester()
9786 .rows(7)
9787 .channels(channels)
9788 .qmax(128)
9789 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9790 }
9791 }
9792
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4,channels_gt_4_fulltile_with_qmin)9793 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_gt_4_fulltile_with_qmin) {
9794 for (size_t channels = 5; channels < 8; channels++) {
9795 GAvgPoolMicrokernelTester()
9796 .rows(7)
9797 .channels(channels)
9798 .qmin(128)
9799 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qu8_requantize_fp32);
9800 }
9801 }
9802
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_eq_1_fulltile)9803 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_fulltile) {
9804 GAvgPoolMicrokernelTester()
9805 .rows(7)
9806 .channels(1)
9807 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9808 }
9809
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_eq_1_subtile)9810 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_subtile) {
9811 for (size_t rows = 1; rows < 7; rows++) {
9812 GAvgPoolMicrokernelTester()
9813 .rows(rows)
9814 .channels(1)
9815 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9816 }
9817 }
9818
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_eq_1_fulltile_with_input_stride)9819 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_fulltile_with_input_stride) {
9820 GAvgPoolMicrokernelTester()
9821 .rows(7)
9822 .channels(1)
9823 .input_stride(3)
9824 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9825 }
9826
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_eq_1_fulltile_with_qmax)9827 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_fulltile_with_qmax) {
9828 GAvgPoolMicrokernelTester()
9829 .rows(7)
9830 .channels(1)
9831 .qmax(128)
9832 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9833 }
9834
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_eq_1_fulltile_with_qmin)9835 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_fulltile_with_qmin) {
9836 GAvgPoolMicrokernelTester()
9837 .rows(7)
9838 .channels(1)
9839 .qmin(128)
9840 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9841 }
9842
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_gt_1_fulltile)9843 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_gt_1_fulltile) {
9844 for (size_t channels = 2; channels < 10; channels++) {
9845 GAvgPoolMicrokernelTester()
9846 .rows(7)
9847 .channels(channels)
9848 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9849 }
9850 }
9851
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_gt_1_subtile)9852 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_gt_1_subtile) {
9853 for (size_t channels = 2; channels < 10; channels++) {
9854 for (size_t rows = 1; rows < 7; rows++) {
9855 GAvgPoolMicrokernelTester()
9856 .rows(rows)
9857 .channels(channels)
9858 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9859 }
9860 }
9861 }
9862
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_gt_1_fulltile_with_qmax)9863 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_gt_1_fulltile_with_qmax) {
9864 for (size_t channels = 2; channels < 10; channels++) {
9865 GAvgPoolMicrokernelTester()
9866 .rows(7)
9867 .channels(channels)
9868 .qmax(128)
9869 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9870 }
9871 }
9872
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1,channels_gt_1_fulltile_with_qmin)9873 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_gt_1_fulltile_with_qmin) {
9874 for (size_t channels = 2; channels < 10; channels++) {
9875 GAvgPoolMicrokernelTester()
9876 .rows(7)
9877 .channels(channels)
9878 .qmin(128)
9879 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9880 }
9881 }
9882
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_eq_2_fulltile)9883 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_fulltile) {
9884 GAvgPoolMicrokernelTester()
9885 .rows(7)
9886 .channels(2)
9887 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9888 }
9889
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_eq_2_subtile)9890 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_subtile) {
9891 for (size_t rows = 1; rows < 7; rows++) {
9892 GAvgPoolMicrokernelTester()
9893 .rows(rows)
9894 .channels(2)
9895 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9896 }
9897 }
9898
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_eq_2_fulltile_with_input_stride)9899 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_fulltile_with_input_stride) {
9900 GAvgPoolMicrokernelTester()
9901 .rows(7)
9902 .channels(2)
9903 .input_stride(5)
9904 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9905 }
9906
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_eq_2_fulltile_with_qmax)9907 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_fulltile_with_qmax) {
9908 GAvgPoolMicrokernelTester()
9909 .rows(7)
9910 .channels(2)
9911 .qmax(128)
9912 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9913 }
9914
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_eq_2_fulltile_with_qmin)9915 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_fulltile_with_qmin) {
9916 GAvgPoolMicrokernelTester()
9917 .rows(7)
9918 .channels(2)
9919 .qmin(128)
9920 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9921 }
9922
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_div_2_fulltile)9923 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_div_2_fulltile) {
9924 for (size_t channels = 4; channels < 16; channels += 2) {
9925 GAvgPoolMicrokernelTester()
9926 .rows(7)
9927 .channels(channels)
9928 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9929 }
9930 }
9931
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_div_2_subtile)9932 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_div_2_subtile) {
9933 for (size_t channels = 4; channels < 16; channels += 2) {
9934 for (size_t rows = 1; rows < 7; rows++) {
9935 GAvgPoolMicrokernelTester()
9936 .rows(rows)
9937 .channels(channels)
9938 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9939 }
9940 }
9941 }
9942
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_lt_2_fulltile)9943 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_lt_2_fulltile) {
9944 for (size_t channels = 1; channels < 2; channels++) {
9945 GAvgPoolMicrokernelTester()
9946 .rows(7)
9947 .channels(channels)
9948 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9949 }
9950 }
9951
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_lt_2_subtile)9952 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_lt_2_subtile) {
9953 for (size_t channels = 1; channels < 2; channels++) {
9954 for (size_t rows = 1; rows < 7; rows++) {
9955 GAvgPoolMicrokernelTester()
9956 .rows(rows)
9957 .channels(channels)
9958 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9959 }
9960 }
9961 }
9962
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_lt_2_fulltile_with_qmax)9963 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_lt_2_fulltile_with_qmax) {
9964 for (size_t channels = 1; channels < 2; channels++) {
9965 GAvgPoolMicrokernelTester()
9966 .rows(7)
9967 .channels(channels)
9968 .qmax(128)
9969 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9970 }
9971 }
9972
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_lt_2_fulltile_with_qmin)9973 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_lt_2_fulltile_with_qmin) {
9974 for (size_t channels = 1; channels < 2; channels++) {
9975 GAvgPoolMicrokernelTester()
9976 .rows(7)
9977 .channels(channels)
9978 .qmin(128)
9979 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9980 }
9981 }
9982
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_gt_2_fulltile)9983 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_gt_2_fulltile) {
9984 for (size_t channels = 3; channels < 4; channels++) {
9985 GAvgPoolMicrokernelTester()
9986 .rows(7)
9987 .channels(channels)
9988 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9989 }
9990 }
9991
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_gt_2_subtile)9992 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_gt_2_subtile) {
9993 for (size_t channels = 3; channels < 4; channels++) {
9994 for (size_t rows = 1; rows < 7; rows++) {
9995 GAvgPoolMicrokernelTester()
9996 .rows(rows)
9997 .channels(channels)
9998 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
9999 }
10000 }
10001 }
10002
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_gt_2_fulltile_with_qmax)10003 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_gt_2_fulltile_with_qmax) {
10004 for (size_t channels = 3; channels < 4; channels++) {
10005 GAvgPoolMicrokernelTester()
10006 .rows(7)
10007 .channels(channels)
10008 .qmax(128)
10009 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10010 }
10011 }
10012
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2,channels_gt_2_fulltile_with_qmin)10013 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_gt_2_fulltile_with_qmin) {
10014 for (size_t channels = 3; channels < 4; channels++) {
10015 GAvgPoolMicrokernelTester()
10016 .rows(7)
10017 .channels(channels)
10018 .qmin(128)
10019 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10020 }
10021 }
10022
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_eq_4_fulltile)10023 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_fulltile) {
10024 GAvgPoolMicrokernelTester()
10025 .rows(7)
10026 .channels(4)
10027 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10028 }
10029
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_eq_4_subtile)10030 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_subtile) {
10031 for (size_t rows = 1; rows < 7; rows++) {
10032 GAvgPoolMicrokernelTester()
10033 .rows(rows)
10034 .channels(4)
10035 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10036 }
10037 }
10038
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_eq_4_fulltile_with_input_stride)10039 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_fulltile_with_input_stride) {
10040 GAvgPoolMicrokernelTester()
10041 .rows(7)
10042 .channels(4)
10043 .input_stride(7)
10044 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10045 }
10046
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_eq_4_fulltile_with_qmax)10047 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_fulltile_with_qmax) {
10048 GAvgPoolMicrokernelTester()
10049 .rows(7)
10050 .channels(4)
10051 .qmax(128)
10052 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10053 }
10054
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_eq_4_fulltile_with_qmin)10055 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_fulltile_with_qmin) {
10056 GAvgPoolMicrokernelTester()
10057 .rows(7)
10058 .channels(4)
10059 .qmin(128)
10060 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10061 }
10062
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_div_4_fulltile)10063 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_div_4_fulltile) {
10064 for (size_t channels = 8; channels < 32; channels += 4) {
10065 GAvgPoolMicrokernelTester()
10066 .rows(7)
10067 .channels(channels)
10068 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10069 }
10070 }
10071
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_div_4_subtile)10072 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_div_4_subtile) {
10073 for (size_t channels = 8; channels < 32; channels += 4) {
10074 for (size_t rows = 1; rows < 7; rows++) {
10075 GAvgPoolMicrokernelTester()
10076 .rows(rows)
10077 .channels(channels)
10078 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10079 }
10080 }
10081 }
10082
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_lt_4_fulltile)10083 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_lt_4_fulltile) {
10084 for (size_t channels = 1; channels < 4; channels++) {
10085 GAvgPoolMicrokernelTester()
10086 .rows(7)
10087 .channels(channels)
10088 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10089 }
10090 }
10091
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_lt_4_subtile)10092 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_lt_4_subtile) {
10093 for (size_t channels = 1; channels < 4; channels++) {
10094 for (size_t rows = 1; rows < 7; rows++) {
10095 GAvgPoolMicrokernelTester()
10096 .rows(rows)
10097 .channels(channels)
10098 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10099 }
10100 }
10101 }
10102
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_lt_4_fulltile_with_qmax)10103 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_lt_4_fulltile_with_qmax) {
10104 for (size_t channels = 1; channels < 4; channels++) {
10105 GAvgPoolMicrokernelTester()
10106 .rows(7)
10107 .channels(channels)
10108 .qmax(128)
10109 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10110 }
10111 }
10112
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_lt_4_fulltile_with_qmin)10113 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_lt_4_fulltile_with_qmin) {
10114 for (size_t channels = 1; channels < 4; channels++) {
10115 GAvgPoolMicrokernelTester()
10116 .rows(7)
10117 .channels(channels)
10118 .qmin(128)
10119 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10120 }
10121 }
10122
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_gt_4_fulltile)10123 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_gt_4_fulltile) {
10124 for (size_t channels = 5; channels < 8; channels++) {
10125 GAvgPoolMicrokernelTester()
10126 .rows(7)
10127 .channels(channels)
10128 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10129 }
10130 }
10131
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_gt_4_subtile)10132 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_gt_4_subtile) {
10133 for (size_t channels = 5; channels < 8; channels++) {
10134 for (size_t rows = 1; rows < 7; rows++) {
10135 GAvgPoolMicrokernelTester()
10136 .rows(rows)
10137 .channels(channels)
10138 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10139 }
10140 }
10141 }
10142
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_gt_4_fulltile_with_qmax)10143 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_gt_4_fulltile_with_qmax) {
10144 for (size_t channels = 5; channels < 8; channels++) {
10145 GAvgPoolMicrokernelTester()
10146 .rows(7)
10147 .channels(channels)
10148 .qmax(128)
10149 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10150 }
10151 }
10152
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4,channels_gt_4_fulltile_with_qmin)10153 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_gt_4_fulltile_with_qmin) {
10154 for (size_t channels = 5; channels < 8; channels++) {
10155 GAvgPoolMicrokernelTester()
10156 .rows(7)
10157 .channels(channels)
10158 .qmin(128)
10159 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qu8_requantize_fp32);
10160 }
10161 }
10162
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_eq_1_fulltile)10163 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_fulltile) {
10164 GAvgPoolMicrokernelTester()
10165 .rows(7)
10166 .channels(1)
10167 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10168 }
10169
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_eq_1_subtile)10170 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_subtile) {
10171 for (size_t rows = 1; rows < 7; rows++) {
10172 GAvgPoolMicrokernelTester()
10173 .rows(rows)
10174 .channels(1)
10175 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10176 }
10177 }
10178
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_eq_1_fulltile_with_input_stride)10179 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_fulltile_with_input_stride) {
10180 GAvgPoolMicrokernelTester()
10181 .rows(7)
10182 .channels(1)
10183 .input_stride(3)
10184 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10185 }
10186
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_eq_1_fulltile_with_qmax)10187 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_fulltile_with_qmax) {
10188 GAvgPoolMicrokernelTester()
10189 .rows(7)
10190 .channels(1)
10191 .qmax(128)
10192 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10193 }
10194
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_eq_1_fulltile_with_qmin)10195 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_fulltile_with_qmin) {
10196 GAvgPoolMicrokernelTester()
10197 .rows(7)
10198 .channels(1)
10199 .qmin(128)
10200 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10201 }
10202
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_gt_1_fulltile)10203 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_gt_1_fulltile) {
10204 for (size_t channels = 2; channels < 10; channels++) {
10205 GAvgPoolMicrokernelTester()
10206 .rows(7)
10207 .channels(channels)
10208 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10209 }
10210 }
10211
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_gt_1_subtile)10212 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_gt_1_subtile) {
10213 for (size_t channels = 2; channels < 10; channels++) {
10214 for (size_t rows = 1; rows < 7; rows++) {
10215 GAvgPoolMicrokernelTester()
10216 .rows(rows)
10217 .channels(channels)
10218 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10219 }
10220 }
10221 }
10222
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_gt_1_fulltile_with_qmax)10223 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_gt_1_fulltile_with_qmax) {
10224 for (size_t channels = 2; channels < 10; channels++) {
10225 GAvgPoolMicrokernelTester()
10226 .rows(7)
10227 .channels(channels)
10228 .qmax(128)
10229 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10230 }
10231 }
10232
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1,channels_gt_1_fulltile_with_qmin)10233 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_gt_1_fulltile_with_qmin) {
10234 for (size_t channels = 2; channels < 10; channels++) {
10235 GAvgPoolMicrokernelTester()
10236 .rows(7)
10237 .channels(channels)
10238 .qmin(128)
10239 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10240 }
10241 }
10242
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_eq_2_fulltile)10243 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_fulltile) {
10244 GAvgPoolMicrokernelTester()
10245 .rows(7)
10246 .channels(2)
10247 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10248 }
10249
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_eq_2_subtile)10250 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_subtile) {
10251 for (size_t rows = 1; rows < 7; rows++) {
10252 GAvgPoolMicrokernelTester()
10253 .rows(rows)
10254 .channels(2)
10255 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10256 }
10257 }
10258
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_eq_2_fulltile_with_input_stride)10259 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_fulltile_with_input_stride) {
10260 GAvgPoolMicrokernelTester()
10261 .rows(7)
10262 .channels(2)
10263 .input_stride(5)
10264 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10265 }
10266
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_eq_2_fulltile_with_qmax)10267 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_fulltile_with_qmax) {
10268 GAvgPoolMicrokernelTester()
10269 .rows(7)
10270 .channels(2)
10271 .qmax(128)
10272 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10273 }
10274
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_eq_2_fulltile_with_qmin)10275 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_fulltile_with_qmin) {
10276 GAvgPoolMicrokernelTester()
10277 .rows(7)
10278 .channels(2)
10279 .qmin(128)
10280 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10281 }
10282
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_div_2_fulltile)10283 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_div_2_fulltile) {
10284 for (size_t channels = 4; channels < 16; channels += 2) {
10285 GAvgPoolMicrokernelTester()
10286 .rows(7)
10287 .channels(channels)
10288 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10289 }
10290 }
10291
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_div_2_subtile)10292 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_div_2_subtile) {
10293 for (size_t channels = 4; channels < 16; channels += 2) {
10294 for (size_t rows = 1; rows < 7; rows++) {
10295 GAvgPoolMicrokernelTester()
10296 .rows(rows)
10297 .channels(channels)
10298 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10299 }
10300 }
10301 }
10302
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_lt_2_fulltile)10303 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_lt_2_fulltile) {
10304 for (size_t channels = 1; channels < 2; channels++) {
10305 GAvgPoolMicrokernelTester()
10306 .rows(7)
10307 .channels(channels)
10308 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10309 }
10310 }
10311
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_lt_2_subtile)10312 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_lt_2_subtile) {
10313 for (size_t channels = 1; channels < 2; channels++) {
10314 for (size_t rows = 1; rows < 7; rows++) {
10315 GAvgPoolMicrokernelTester()
10316 .rows(rows)
10317 .channels(channels)
10318 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10319 }
10320 }
10321 }
10322
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_lt_2_fulltile_with_qmax)10323 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_lt_2_fulltile_with_qmax) {
10324 for (size_t channels = 1; channels < 2; channels++) {
10325 GAvgPoolMicrokernelTester()
10326 .rows(7)
10327 .channels(channels)
10328 .qmax(128)
10329 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10330 }
10331 }
10332
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_lt_2_fulltile_with_qmin)10333 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_lt_2_fulltile_with_qmin) {
10334 for (size_t channels = 1; channels < 2; channels++) {
10335 GAvgPoolMicrokernelTester()
10336 .rows(7)
10337 .channels(channels)
10338 .qmin(128)
10339 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10340 }
10341 }
10342
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_gt_2_fulltile)10343 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_gt_2_fulltile) {
10344 for (size_t channels = 3; channels < 4; channels++) {
10345 GAvgPoolMicrokernelTester()
10346 .rows(7)
10347 .channels(channels)
10348 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10349 }
10350 }
10351
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_gt_2_subtile)10352 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_gt_2_subtile) {
10353 for (size_t channels = 3; channels < 4; channels++) {
10354 for (size_t rows = 1; rows < 7; rows++) {
10355 GAvgPoolMicrokernelTester()
10356 .rows(rows)
10357 .channels(channels)
10358 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10359 }
10360 }
10361 }
10362
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_gt_2_fulltile_with_qmax)10363 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_gt_2_fulltile_with_qmax) {
10364 for (size_t channels = 3; channels < 4; channels++) {
10365 GAvgPoolMicrokernelTester()
10366 .rows(7)
10367 .channels(channels)
10368 .qmax(128)
10369 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10370 }
10371 }
10372
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2,channels_gt_2_fulltile_with_qmin)10373 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_gt_2_fulltile_with_qmin) {
10374 for (size_t channels = 3; channels < 4; channels++) {
10375 GAvgPoolMicrokernelTester()
10376 .rows(7)
10377 .channels(channels)
10378 .qmin(128)
10379 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10380 }
10381 }
10382
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_eq_4_fulltile)10383 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_fulltile) {
10384 GAvgPoolMicrokernelTester()
10385 .rows(7)
10386 .channels(4)
10387 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10388 }
10389
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_eq_4_subtile)10390 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_subtile) {
10391 for (size_t rows = 1; rows < 7; rows++) {
10392 GAvgPoolMicrokernelTester()
10393 .rows(rows)
10394 .channels(4)
10395 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10396 }
10397 }
10398
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_eq_4_fulltile_with_input_stride)10399 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_fulltile_with_input_stride) {
10400 GAvgPoolMicrokernelTester()
10401 .rows(7)
10402 .channels(4)
10403 .input_stride(7)
10404 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10405 }
10406
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_eq_4_fulltile_with_qmax)10407 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_fulltile_with_qmax) {
10408 GAvgPoolMicrokernelTester()
10409 .rows(7)
10410 .channels(4)
10411 .qmax(128)
10412 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10413 }
10414
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_eq_4_fulltile_with_qmin)10415 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_fulltile_with_qmin) {
10416 GAvgPoolMicrokernelTester()
10417 .rows(7)
10418 .channels(4)
10419 .qmin(128)
10420 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10421 }
10422
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_div_4_fulltile)10423 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_div_4_fulltile) {
10424 for (size_t channels = 8; channels < 32; channels += 4) {
10425 GAvgPoolMicrokernelTester()
10426 .rows(7)
10427 .channels(channels)
10428 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10429 }
10430 }
10431
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_div_4_subtile)10432 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_div_4_subtile) {
10433 for (size_t channels = 8; channels < 32; channels += 4) {
10434 for (size_t rows = 1; rows < 7; rows++) {
10435 GAvgPoolMicrokernelTester()
10436 .rows(rows)
10437 .channels(channels)
10438 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10439 }
10440 }
10441 }
10442
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_lt_4_fulltile)10443 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_lt_4_fulltile) {
10444 for (size_t channels = 1; channels < 4; channels++) {
10445 GAvgPoolMicrokernelTester()
10446 .rows(7)
10447 .channels(channels)
10448 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10449 }
10450 }
10451
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_lt_4_subtile)10452 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_lt_4_subtile) {
10453 for (size_t channels = 1; channels < 4; channels++) {
10454 for (size_t rows = 1; rows < 7; rows++) {
10455 GAvgPoolMicrokernelTester()
10456 .rows(rows)
10457 .channels(channels)
10458 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10459 }
10460 }
10461 }
10462
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_lt_4_fulltile_with_qmax)10463 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_lt_4_fulltile_with_qmax) {
10464 for (size_t channels = 1; channels < 4; channels++) {
10465 GAvgPoolMicrokernelTester()
10466 .rows(7)
10467 .channels(channels)
10468 .qmax(128)
10469 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10470 }
10471 }
10472
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_lt_4_fulltile_with_qmin)10473 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_lt_4_fulltile_with_qmin) {
10474 for (size_t channels = 1; channels < 4; channels++) {
10475 GAvgPoolMicrokernelTester()
10476 .rows(7)
10477 .channels(channels)
10478 .qmin(128)
10479 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10480 }
10481 }
10482
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_gt_4_fulltile)10483 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_gt_4_fulltile) {
10484 for (size_t channels = 5; channels < 8; channels++) {
10485 GAvgPoolMicrokernelTester()
10486 .rows(7)
10487 .channels(channels)
10488 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10489 }
10490 }
10491
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_gt_4_subtile)10492 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_gt_4_subtile) {
10493 for (size_t channels = 5; channels < 8; channels++) {
10494 for (size_t rows = 1; rows < 7; rows++) {
10495 GAvgPoolMicrokernelTester()
10496 .rows(rows)
10497 .channels(channels)
10498 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10499 }
10500 }
10501 }
10502
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_gt_4_fulltile_with_qmax)10503 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_gt_4_fulltile_with_qmax) {
10504 for (size_t channels = 5; channels < 8; channels++) {
10505 GAvgPoolMicrokernelTester()
10506 .rows(7)
10507 .channels(channels)
10508 .qmax(128)
10509 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10510 }
10511 }
10512
TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4,channels_gt_4_fulltile_with_qmin)10513 TEST(QU8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_gt_4_fulltile_with_qmin) {
10514 for (size_t channels = 5; channels < 8; channels++) {
10515 GAvgPoolMicrokernelTester()
10516 .rows(7)
10517 .channels(channels)
10518 .qmin(128)
10519 .Test(xnn_qu8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qu8_requantize_fp32);
10520 }
10521 }