blob: 99ca1f10416244a4c1f61af755e7d6b4a92c1e2e [file] [log] [blame]
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001// 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/qs8-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
Marat Dukhan9e258d62022-01-12 10:50:51 -080024 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -080025 TEST_REQUIRES_ARM_NEON;
26 GAvgPoolMicrokernelTester()
27 .rows(14)
28 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -080029 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -080030 }
31
Marat Dukhan9e258d62022-01-12 10:50:51 -080032 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -080033 TEST_REQUIRES_ARM_NEON;
34 GAvgPoolMicrokernelTester()
35 .rows(14)
36 .channels(8)
37 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -080038 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -080039 }
40
Marat Dukhan9e258d62022-01-12 10:50:51 -080041 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -080042 TEST_REQUIRES_ARM_NEON;
43 GAvgPoolMicrokernelTester()
44 .rows(14)
45 .channels(8)
46 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -080047 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -080048 }
49
Marat Dukhan9e258d62022-01-12 10:50:51 -080050 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -080051 TEST_REQUIRES_ARM_NEON;
52 GAvgPoolMicrokernelTester()
53 .rows(14)
54 .channels(8)
55 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -080056 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -080057 }
58
Marat Dukhan9e258d62022-01-12 10:50:51 -080059 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -080060 TEST_REQUIRES_ARM_NEON;
61 for (size_t rows = 8; rows < 14; rows++) {
62 GAvgPoolMicrokernelTester()
63 .rows(rows)
64 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -080065 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -080066 }
67 }
68
Marat Dukhan9e258d62022-01-12 10:50:51 -080069 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -080070 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)
Marat Dukhan85755042022-01-13 01:46:05 -080076 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -080077 }
78 }
79
Marat Dukhan9e258d62022-01-12 10:50:51 -080080 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -080081 TEST_REQUIRES_ARM_NEON;
82 for (size_t rows = 14; rows <= 35; rows += 7) {
83 GAvgPoolMicrokernelTester()
84 .rows(rows)
85 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -080086 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -080087 }
88 }
89
Marat Dukhan9e258d62022-01-12 10:50:51 -080090 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -080091 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)
Marat Dukhan85755042022-01-13 01:46:05 -080097 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -080098 }
99 }
100
Marat Dukhan9e258d62022-01-12 10:50:51 -0800101 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_div_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800102 TEST_REQUIRES_ARM_NEON;
103 for (size_t channels = 16; channels < 64; channels += 8) {
104 GAvgPoolMicrokernelTester()
105 .rows(14)
106 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800107 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800108 }
109 }
110
Marat Dukhan9e258d62022-01-12 10:50:51 -0800111 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_div_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800112 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800118 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800119 }
120 }
121 }
122
Marat Dukhan9e258d62022-01-12 10:50:51 -0800123 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_div_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800124 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800130 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800131 }
132 }
133 }
134
Marat Dukhan9e258d62022-01-12 10:50:51 -0800135 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_div_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800136 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800143 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800144 }
145 }
146 }
147
Marat Dukhan9e258d62022-01-12 10:50:51 -0800148 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800149 TEST_REQUIRES_ARM_NEON;
150 for (size_t channels = 1; channels < 8; channels++) {
151 GAvgPoolMicrokernelTester()
152 .rows(14)
153 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800154 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800155 }
156 }
157
Marat Dukhan9e258d62022-01-12 10:50:51 -0800158 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800159 TEST_REQUIRES_ARM_NEON;
160 for (size_t channels = 1; channels < 8; channels++) {
161 GAvgPoolMicrokernelTester()
162 .rows(14)
163 .channels(channels)
164 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800165 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800166 }
167 }
168
Marat Dukhan9e258d62022-01-12 10:50:51 -0800169 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800170 TEST_REQUIRES_ARM_NEON;
171 for (size_t channels = 1; channels < 8; channels++) {
172 GAvgPoolMicrokernelTester()
173 .rows(14)
174 .channels(channels)
175 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800176 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800177 }
178 }
179
Marat Dukhan9e258d62022-01-12 10:50:51 -0800180 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800181 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800187 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800188 }
189 }
190 }
191
Marat Dukhan9e258d62022-01-12 10:50:51 -0800192 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800193 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800199 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800200 }
201 }
202 }
203
Marat Dukhan9e258d62022-01-12 10:50:51 -0800204 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800205 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800212 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800213 }
214 }
215 }
216
Marat Dukhan9e258d62022-01-12 10:50:51 -0800217 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800218 TEST_REQUIRES_ARM_NEON;
219 for (size_t channels = 9; channels < 16; channels++) {
220 GAvgPoolMicrokernelTester()
221 .rows(14)
222 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800223 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800224 }
225 }
226
Marat Dukhan9e258d62022-01-12 10:50:51 -0800227 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800228 TEST_REQUIRES_ARM_NEON;
229 for (size_t channels = 9; channels < 16; channels++) {
230 GAvgPoolMicrokernelTester()
231 .rows(14)
232 .channels(channels)
233 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800234 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800235 }
236 }
237
Marat Dukhan9e258d62022-01-12 10:50:51 -0800238 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800239 TEST_REQUIRES_ARM_NEON;
240 for (size_t channels = 9; channels < 16; channels++) {
241 GAvgPoolMicrokernelTester()
242 .rows(14)
243 .channels(channels)
244 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800245 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800246 }
247 }
248
Marat Dukhan9e258d62022-01-12 10:50:51 -0800249 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800250 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800256 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800257 }
258 }
259 }
260
Marat Dukhan9e258d62022-01-12 10:50:51 -0800261 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800262 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800268 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800269 }
270 }
271 }
272
Marat Dukhan9e258d62022-01-12 10:50:51 -0800273 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800274 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800281 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800282 }
283 }
284 }
285#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
286
287
288#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -0800289 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800290 TEST_REQUIRES_ARM_NEON;
291 GAvgPoolMicrokernelTester()
292 .rows(14)
293 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -0800294 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800295 }
296
Marat Dukhan9e258d62022-01-12 10:50:51 -0800297 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800298 TEST_REQUIRES_ARM_NEON;
299 GAvgPoolMicrokernelTester()
300 .rows(14)
301 .channels(16)
302 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -0800303 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800304 }
305
Marat Dukhan9e258d62022-01-12 10:50:51 -0800306 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800307 TEST_REQUIRES_ARM_NEON;
308 GAvgPoolMicrokernelTester()
309 .rows(14)
310 .channels(16)
311 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800312 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800313 }
314
Marat Dukhan9e258d62022-01-12 10:50:51 -0800315 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800316 TEST_REQUIRES_ARM_NEON;
317 GAvgPoolMicrokernelTester()
318 .rows(14)
319 .channels(16)
320 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800321 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800322 }
323
Marat Dukhan9e258d62022-01-12 10:50:51 -0800324 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800325 TEST_REQUIRES_ARM_NEON;
326 for (size_t rows = 8; rows < 14; rows++) {
327 GAvgPoolMicrokernelTester()
328 .rows(rows)
329 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -0800330 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800331 }
332 }
333
Marat Dukhan9e258d62022-01-12 10:50:51 -0800334 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800335 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800341 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800342 }
343 }
344
Marat Dukhan9e258d62022-01-12 10:50:51 -0800345 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800346 TEST_REQUIRES_ARM_NEON;
347 for (size_t rows = 14; rows <= 35; rows += 7) {
348 GAvgPoolMicrokernelTester()
349 .rows(rows)
350 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -0800351 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800352 }
353 }
354
Marat Dukhan9e258d62022-01-12 10:50:51 -0800355 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800356 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800362 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800363 }
364 }
365
Marat Dukhan9e258d62022-01-12 10:50:51 -0800366 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_div_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800367 TEST_REQUIRES_ARM_NEON;
368 for (size_t channels = 32; channels < 128; channels += 16) {
369 GAvgPoolMicrokernelTester()
370 .rows(14)
371 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800372 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800373 }
374 }
375
Marat Dukhan9e258d62022-01-12 10:50:51 -0800376 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_div_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800377 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800383 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800384 }
385 }
386 }
387
Marat Dukhan9e258d62022-01-12 10:50:51 -0800388 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_div_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800389 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800395 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800396 }
397 }
398 }
399
Marat Dukhan9e258d62022-01-12 10:50:51 -0800400 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_div_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800401 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800408 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800409 }
410 }
411 }
412
Marat Dukhan9e258d62022-01-12 10:50:51 -0800413 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800414 TEST_REQUIRES_ARM_NEON;
415 for (size_t channels = 1; channels < 16; channels++) {
416 GAvgPoolMicrokernelTester()
417 .rows(14)
418 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800419 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800420 }
421 }
422
Marat Dukhan9e258d62022-01-12 10:50:51 -0800423 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800424 TEST_REQUIRES_ARM_NEON;
425 for (size_t channels = 1; channels < 16; channels++) {
426 GAvgPoolMicrokernelTester()
427 .rows(14)
428 .channels(channels)
429 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800430 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800431 }
432 }
433
Marat Dukhan9e258d62022-01-12 10:50:51 -0800434 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800435 TEST_REQUIRES_ARM_NEON;
436 for (size_t channels = 1; channels < 16; channels++) {
437 GAvgPoolMicrokernelTester()
438 .rows(14)
439 .channels(channels)
440 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800441 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800442 }
443 }
444
Marat Dukhan9e258d62022-01-12 10:50:51 -0800445 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800446 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800452 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800453 }
454 }
455 }
456
Marat Dukhan9e258d62022-01-12 10:50:51 -0800457 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800458 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800464 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800465 }
466 }
467 }
468
Marat Dukhan9e258d62022-01-12 10:50:51 -0800469 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800470 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800477 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800478 }
479 }
480 }
481
Marat Dukhan9e258d62022-01-12 10:50:51 -0800482 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800483 TEST_REQUIRES_ARM_NEON;
484 for (size_t channels = 17; channels < 32; channels++) {
485 GAvgPoolMicrokernelTester()
486 .rows(14)
487 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800488 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800489 }
490 }
491
Marat Dukhan9e258d62022-01-12 10:50:51 -0800492 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800493 TEST_REQUIRES_ARM_NEON;
494 for (size_t channels = 17; channels < 32; channels++) {
495 GAvgPoolMicrokernelTester()
496 .rows(14)
497 .channels(channels)
498 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800499 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800500 }
501 }
502
Marat Dukhan9e258d62022-01-12 10:50:51 -0800503 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800504 TEST_REQUIRES_ARM_NEON;
505 for (size_t channels = 17; channels < 32; channels++) {
506 GAvgPoolMicrokernelTester()
507 .rows(14)
508 .channels(channels)
509 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800510 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800511 }
512 }
513
Marat Dukhan9e258d62022-01-12 10:50:51 -0800514 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800515 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800521 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800522 }
523 }
524 }
525
Marat Dukhan9e258d62022-01-12 10:50:51 -0800526 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800527 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800533 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800534 }
535 }
536 }
537
Marat Dukhan9e258d62022-01-12 10:50:51 -0800538 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800539 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800546 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800547 }
548 }
549 }
550#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
551
552
553#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -0800554 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800555 TEST_REQUIRES_ARM_NEON;
556 GAvgPoolMicrokernelTester()
557 .rows(14)
558 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -0800559 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800560 }
561
Marat Dukhan9e258d62022-01-12 10:50:51 -0800562 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800563 TEST_REQUIRES_ARM_NEON;
564 GAvgPoolMicrokernelTester()
565 .rows(14)
566 .channels(24)
567 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -0800568 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800569 }
570
Marat Dukhan9e258d62022-01-12 10:50:51 -0800571 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800572 TEST_REQUIRES_ARM_NEON;
573 GAvgPoolMicrokernelTester()
574 .rows(14)
575 .channels(24)
576 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800577 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800578 }
579
Marat Dukhan9e258d62022-01-12 10:50:51 -0800580 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800581 TEST_REQUIRES_ARM_NEON;
582 GAvgPoolMicrokernelTester()
583 .rows(14)
584 .channels(24)
585 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800586 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800587 }
588
Marat Dukhan9e258d62022-01-12 10:50:51 -0800589 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800590 TEST_REQUIRES_ARM_NEON;
591 for (size_t rows = 8; rows < 14; rows++) {
592 GAvgPoolMicrokernelTester()
593 .rows(rows)
594 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -0800595 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800596 }
597 }
598
Marat Dukhan9e258d62022-01-12 10:50:51 -0800599 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800600 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800606 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800607 }
608 }
609
Marat Dukhan9e258d62022-01-12 10:50:51 -0800610 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800611 TEST_REQUIRES_ARM_NEON;
612 for (size_t rows = 14; rows <= 35; rows += 7) {
613 GAvgPoolMicrokernelTester()
614 .rows(rows)
615 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -0800616 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800617 }
618 }
619
Marat Dukhan9e258d62022-01-12 10:50:51 -0800620 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800621 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800627 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800628 }
629 }
630
Marat Dukhan9e258d62022-01-12 10:50:51 -0800631 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_div_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800632 TEST_REQUIRES_ARM_NEON;
633 for (size_t channels = 48; channels < 192; channels += 24) {
634 GAvgPoolMicrokernelTester()
635 .rows(14)
636 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800637 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800638 }
639 }
640
Marat Dukhan9e258d62022-01-12 10:50:51 -0800641 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_div_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800642 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800648 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800649 }
650 }
651 }
652
Marat Dukhan9e258d62022-01-12 10:50:51 -0800653 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_div_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800654 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800660 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800661 }
662 }
663 }
664
Marat Dukhan9e258d62022-01-12 10:50:51 -0800665 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_div_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800666 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800673 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800674 }
675 }
676 }
677
Marat Dukhan9e258d62022-01-12 10:50:51 -0800678 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800679 TEST_REQUIRES_ARM_NEON;
680 for (size_t channels = 1; channels < 24; channels++) {
681 GAvgPoolMicrokernelTester()
682 .rows(14)
683 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800684 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800685 }
686 }
687
Marat Dukhan9e258d62022-01-12 10:50:51 -0800688 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800689 TEST_REQUIRES_ARM_NEON;
690 for (size_t channels = 1; channels < 24; channels++) {
691 GAvgPoolMicrokernelTester()
692 .rows(14)
693 .channels(channels)
694 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800695 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800696 }
697 }
698
Marat Dukhan9e258d62022-01-12 10:50:51 -0800699 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800700 TEST_REQUIRES_ARM_NEON;
701 for (size_t channels = 1; channels < 24; channels++) {
702 GAvgPoolMicrokernelTester()
703 .rows(14)
704 .channels(channels)
705 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800706 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800707 }
708 }
709
Marat Dukhan9e258d62022-01-12 10:50:51 -0800710 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800711 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800717 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800718 }
719 }
720 }
721
Marat Dukhan9e258d62022-01-12 10:50:51 -0800722 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800723 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800729 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800730 }
731 }
732 }
733
Marat Dukhan9e258d62022-01-12 10:50:51 -0800734 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800735 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800742 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800743 }
744 }
745 }
746
Marat Dukhan9e258d62022-01-12 10:50:51 -0800747 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800748 TEST_REQUIRES_ARM_NEON;
749 for (size_t channels = 25; channels < 48; channels++) {
750 GAvgPoolMicrokernelTester()
751 .rows(14)
752 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800753 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800754 }
755 }
756
Marat Dukhan9e258d62022-01-12 10:50:51 -0800757 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800758 TEST_REQUIRES_ARM_NEON;
759 for (size_t channels = 25; channels < 48; channels++) {
760 GAvgPoolMicrokernelTester()
761 .rows(14)
762 .channels(channels)
763 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800764 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800765 }
766 }
767
Marat Dukhan9e258d62022-01-12 10:50:51 -0800768 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800769 TEST_REQUIRES_ARM_NEON;
770 for (size_t channels = 25; channels < 48; channels++) {
771 GAvgPoolMicrokernelTester()
772 .rows(14)
773 .channels(channels)
774 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800775 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800776 }
777 }
778
Marat Dukhan9e258d62022-01-12 10:50:51 -0800779 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800780 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800786 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800787 }
788 }
789 }
790
Marat Dukhan9e258d62022-01-12 10:50:51 -0800791 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800792 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800798 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800799 }
800 }
801 }
802
Marat Dukhan9e258d62022-01-12 10:50:51 -0800803 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800804 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800811 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800812 }
813 }
814 }
815#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
816
817
818#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -0800819 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800820 TEST_REQUIRES_ARM_NEON;
821 GAvgPoolMicrokernelTester()
822 .rows(14)
823 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -0800824 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800825 }
826
Marat Dukhan9e258d62022-01-12 10:50:51 -0800827 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800828 TEST_REQUIRES_ARM_NEON;
829 GAvgPoolMicrokernelTester()
830 .rows(14)
831 .channels(32)
832 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -0800833 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800834 }
835
Marat Dukhan9e258d62022-01-12 10:50:51 -0800836 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800837 TEST_REQUIRES_ARM_NEON;
838 GAvgPoolMicrokernelTester()
839 .rows(14)
840 .channels(32)
841 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800842 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800843 }
844
Marat Dukhan9e258d62022-01-12 10:50:51 -0800845 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800846 TEST_REQUIRES_ARM_NEON;
847 GAvgPoolMicrokernelTester()
848 .rows(14)
849 .channels(32)
850 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800851 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800852 }
853
Marat Dukhan9e258d62022-01-12 10:50:51 -0800854 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800855 TEST_REQUIRES_ARM_NEON;
856 for (size_t rows = 8; rows < 14; rows++) {
857 GAvgPoolMicrokernelTester()
858 .rows(rows)
859 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -0800860 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800861 }
862 }
863
Marat Dukhan9e258d62022-01-12 10:50:51 -0800864 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800865 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800871 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800872 }
873 }
874
Marat Dukhan9e258d62022-01-12 10:50:51 -0800875 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800876 TEST_REQUIRES_ARM_NEON;
877 for (size_t rows = 14; rows <= 35; rows += 7) {
878 GAvgPoolMicrokernelTester()
879 .rows(rows)
880 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -0800881 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800882 }
883 }
884
Marat Dukhan9e258d62022-01-12 10:50:51 -0800885 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_eq_32_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800886 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800892 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800893 }
894 }
895
Marat Dukhan9e258d62022-01-12 10:50:51 -0800896 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_div_32_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800897 TEST_REQUIRES_ARM_NEON;
898 for (size_t channels = 64; channels < 256; channels += 32) {
899 GAvgPoolMicrokernelTester()
900 .rows(14)
901 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800902 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800903 }
904 }
905
Marat Dukhan9e258d62022-01-12 10:50:51 -0800906 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_div_32_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800907 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800913 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800914 }
915 }
916 }
917
Marat Dukhan9e258d62022-01-12 10:50:51 -0800918 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_div_32_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800919 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800925 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800926 }
927 }
928 }
929
Marat Dukhan9e258d62022-01-12 10:50:51 -0800930 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_div_32_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800931 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800938 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800939 }
940 }
941 }
942
Marat Dukhan9e258d62022-01-12 10:50:51 -0800943 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800944 TEST_REQUIRES_ARM_NEON;
945 for (size_t channels = 1; channels < 32; channels++) {
946 GAvgPoolMicrokernelTester()
947 .rows(14)
948 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -0800949 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800950 }
951 }
952
Marat Dukhan9e258d62022-01-12 10:50:51 -0800953 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800954 TEST_REQUIRES_ARM_NEON;
955 for (size_t channels = 1; channels < 32; channels++) {
956 GAvgPoolMicrokernelTester()
957 .rows(14)
958 .channels(channels)
959 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800960 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800961 }
962 }
963
Marat Dukhan9e258d62022-01-12 10:50:51 -0800964 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800965 TEST_REQUIRES_ARM_NEON;
966 for (size_t channels = 1; channels < 32; channels++) {
967 GAvgPoolMicrokernelTester()
968 .rows(14)
969 .channels(channels)
970 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -0800971 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800972 }
973 }
974
Marat Dukhan9e258d62022-01-12 10:50:51 -0800975 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800976 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800982 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800983 }
984 }
985 }
986
Marat Dukhan9e258d62022-01-12 10:50:51 -0800987 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800988 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)
Marat Dukhan85755042022-01-13 01:46:05 -0800994 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -0800995 }
996 }
997 }
998
Marat Dukhan9e258d62022-01-12 10:50:51 -0800999 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_lt_32_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001000 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)
Marat Dukhan85755042022-01-13 01:46:05 -08001007 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001008 }
1009 }
1010 }
1011
Marat Dukhan9e258d62022-01-12 10:50:51 -08001012 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001013 TEST_REQUIRES_ARM_NEON;
1014 for (size_t channels = 33; channels < 64; channels++) {
1015 GAvgPoolMicrokernelTester()
1016 .rows(14)
1017 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001018 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001019 }
1020 }
1021
Marat Dukhan9e258d62022-01-12 10:50:51 -08001022 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001023 TEST_REQUIRES_ARM_NEON;
1024 for (size_t channels = 33; channels < 64; channels++) {
1025 GAvgPoolMicrokernelTester()
1026 .rows(14)
1027 .channels(channels)
1028 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001029 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001030 }
1031 }
1032
Marat Dukhan9e258d62022-01-12 10:50:51 -08001033 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001034 TEST_REQUIRES_ARM_NEON;
1035 for (size_t channels = 33; channels < 64; channels++) {
1036 GAvgPoolMicrokernelTester()
1037 .rows(14)
1038 .channels(channels)
1039 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001040 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001041 }
1042 }
1043
Marat Dukhan9e258d62022-01-12 10:50:51 -08001044 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001045 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)
Marat Dukhan85755042022-01-13 01:46:05 -08001051 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001052 }
1053 }
1054 }
1055
Marat Dukhan9e258d62022-01-12 10:50:51 -08001056 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001057 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)
Marat Dukhan85755042022-01-13 01:46:05 -08001063 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001064 }
1065 }
1066 }
1067
Marat Dukhan9e258d62022-01-12 10:50:51 -08001068 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEON_C32, channels_gt_32_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001069 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)
Marat Dukhan85755042022-01-13 01:46:05 -08001076 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001077 }
1078 }
1079 }
1080#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1081
1082
1083#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08001084 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001085 TEST_REQUIRES_ARM_NEON;
1086 GAvgPoolMicrokernelTester()
1087 .rows(7)
1088 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08001089 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001090 }
1091
Marat Dukhan9e258d62022-01-12 10:50:51 -08001092 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001093 TEST_REQUIRES_ARM_NEON;
1094 for (size_t rows = 1; rows < 7; rows++) {
1095 GAvgPoolMicrokernelTester()
1096 .rows(rows)
1097 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08001098 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001099 }
1100 }
1101
Marat Dukhan9e258d62022-01-12 10:50:51 -08001102 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001103 TEST_REQUIRES_ARM_NEON;
1104 GAvgPoolMicrokernelTester()
1105 .rows(7)
1106 .channels(8)
1107 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08001108 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001109 }
1110
Marat Dukhan9e258d62022-01-12 10:50:51 -08001111 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001112 TEST_REQUIRES_ARM_NEON;
1113 GAvgPoolMicrokernelTester()
1114 .rows(7)
1115 .channels(8)
1116 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001117 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001118 }
1119
Marat Dukhan9e258d62022-01-12 10:50:51 -08001120 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_eq_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001121 TEST_REQUIRES_ARM_NEON;
1122 GAvgPoolMicrokernelTester()
1123 .rows(7)
1124 .channels(8)
1125 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001126 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001127 }
1128
Marat Dukhan9e258d62022-01-12 10:50:51 -08001129 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_div_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001130 TEST_REQUIRES_ARM_NEON;
1131 for (size_t channels = 16; channels < 64; channels += 8) {
1132 GAvgPoolMicrokernelTester()
1133 .rows(7)
1134 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001135 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001136 }
1137 }
1138
Marat Dukhan9e258d62022-01-12 10:50:51 -08001139 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_div_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001140 TEST_REQUIRES_ARM_NEON;
1141 for (size_t channels = 16; channels < 64; channels += 8) {
1142 for (size_t rows = 1; rows < 7; rows++) {
1143 GAvgPoolMicrokernelTester()
1144 .rows(rows)
1145 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001146 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001147 }
1148 }
1149 }
1150
Marat Dukhan9e258d62022-01-12 10:50:51 -08001151 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_lt_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001152 TEST_REQUIRES_ARM_NEON;
1153 for (size_t channels = 1; channels < 8; channels++) {
1154 GAvgPoolMicrokernelTester()
1155 .rows(7)
1156 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001157 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001158 }
1159 }
1160
Marat Dukhan9e258d62022-01-12 10:50:51 -08001161 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_lt_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001162 TEST_REQUIRES_ARM_NEON;
1163 for (size_t channels = 1; channels < 8; channels++) {
1164 for (size_t rows = 1; rows < 7; rows++) {
1165 GAvgPoolMicrokernelTester()
1166 .rows(rows)
1167 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001168 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001169 }
1170 }
1171 }
1172
Marat Dukhan9e258d62022-01-12 10:50:51 -08001173 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_lt_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001174 TEST_REQUIRES_ARM_NEON;
1175 for (size_t channels = 1; channels < 8; channels++) {
1176 GAvgPoolMicrokernelTester()
1177 .rows(7)
1178 .channels(channels)
1179 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001180 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001181 }
1182 }
1183
Marat Dukhan9e258d62022-01-12 10:50:51 -08001184 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_lt_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001185 TEST_REQUIRES_ARM_NEON;
1186 for (size_t channels = 1; channels < 8; channels++) {
1187 GAvgPoolMicrokernelTester()
1188 .rows(7)
1189 .channels(channels)
1190 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001191 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001192 }
1193 }
1194
Marat Dukhan9e258d62022-01-12 10:50:51 -08001195 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_gt_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001196 TEST_REQUIRES_ARM_NEON;
1197 for (size_t channels = 9; channels < 16; channels++) {
1198 GAvgPoolMicrokernelTester()
1199 .rows(7)
1200 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001201 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001202 }
1203 }
1204
Marat Dukhan9e258d62022-01-12 10:50:51 -08001205 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_gt_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001206 TEST_REQUIRES_ARM_NEON;
1207 for (size_t channels = 9; channels < 16; channels++) {
1208 for (size_t rows = 1; rows < 7; rows++) {
1209 GAvgPoolMicrokernelTester()
1210 .rows(rows)
1211 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001212 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001213 }
1214 }
1215 }
1216
Marat Dukhan9e258d62022-01-12 10:50:51 -08001217 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_gt_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001218 TEST_REQUIRES_ARM_NEON;
1219 for (size_t channels = 9; channels < 16; channels++) {
1220 GAvgPoolMicrokernelTester()
1221 .rows(7)
1222 .channels(channels)
1223 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001224 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001225 }
1226 }
1227
Marat Dukhan9e258d62022-01-12 10:50:51 -08001228 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C8, channels_gt_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001229 TEST_REQUIRES_ARM_NEON;
1230 for (size_t channels = 9; channels < 16; channels++) {
1231 GAvgPoolMicrokernelTester()
1232 .rows(7)
1233 .channels(channels)
1234 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001235 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001236 }
1237 }
1238#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1239
1240
1241#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08001242 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001243 TEST_REQUIRES_ARM_NEON;
1244 GAvgPoolMicrokernelTester()
1245 .rows(7)
1246 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08001247 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001248 }
1249
Marat Dukhan9e258d62022-01-12 10:50:51 -08001250 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001251 TEST_REQUIRES_ARM_NEON;
1252 for (size_t rows = 1; rows < 7; rows++) {
1253 GAvgPoolMicrokernelTester()
1254 .rows(rows)
1255 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08001256 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001257 }
1258 }
1259
Marat Dukhan9e258d62022-01-12 10:50:51 -08001260 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001261 TEST_REQUIRES_ARM_NEON;
1262 GAvgPoolMicrokernelTester()
1263 .rows(7)
1264 .channels(16)
1265 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08001266 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001267 }
1268
Marat Dukhan9e258d62022-01-12 10:50:51 -08001269 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001270 TEST_REQUIRES_ARM_NEON;
1271 GAvgPoolMicrokernelTester()
1272 .rows(7)
1273 .channels(16)
1274 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001275 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001276 }
1277
Marat Dukhan9e258d62022-01-12 10:50:51 -08001278 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_eq_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001279 TEST_REQUIRES_ARM_NEON;
1280 GAvgPoolMicrokernelTester()
1281 .rows(7)
1282 .channels(16)
1283 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001284 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001285 }
1286
Marat Dukhan9e258d62022-01-12 10:50:51 -08001287 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_div_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001288 TEST_REQUIRES_ARM_NEON;
1289 for (size_t channels = 32; channels < 128; channels += 16) {
1290 GAvgPoolMicrokernelTester()
1291 .rows(7)
1292 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001293 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001294 }
1295 }
1296
Marat Dukhan9e258d62022-01-12 10:50:51 -08001297 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_div_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001298 TEST_REQUIRES_ARM_NEON;
1299 for (size_t channels = 32; channels < 128; channels += 16) {
1300 for (size_t rows = 1; rows < 7; rows++) {
1301 GAvgPoolMicrokernelTester()
1302 .rows(rows)
1303 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001304 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001305 }
1306 }
1307 }
1308
Marat Dukhan9e258d62022-01-12 10:50:51 -08001309 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_lt_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001310 TEST_REQUIRES_ARM_NEON;
1311 for (size_t channels = 1; channels < 16; channels++) {
1312 GAvgPoolMicrokernelTester()
1313 .rows(7)
1314 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001315 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001316 }
1317 }
1318
Marat Dukhan9e258d62022-01-12 10:50:51 -08001319 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_lt_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001320 TEST_REQUIRES_ARM_NEON;
1321 for (size_t channels = 1; channels < 16; channels++) {
1322 for (size_t rows = 1; rows < 7; rows++) {
1323 GAvgPoolMicrokernelTester()
1324 .rows(rows)
1325 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001326 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001327 }
1328 }
1329 }
1330
Marat Dukhan9e258d62022-01-12 10:50:51 -08001331 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_lt_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001332 TEST_REQUIRES_ARM_NEON;
1333 for (size_t channels = 1; channels < 16; channels++) {
1334 GAvgPoolMicrokernelTester()
1335 .rows(7)
1336 .channels(channels)
1337 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001338 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001339 }
1340 }
1341
Marat Dukhan9e258d62022-01-12 10:50:51 -08001342 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_lt_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001343 TEST_REQUIRES_ARM_NEON;
1344 for (size_t channels = 1; channels < 16; channels++) {
1345 GAvgPoolMicrokernelTester()
1346 .rows(7)
1347 .channels(channels)
1348 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001349 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001350 }
1351 }
1352
Marat Dukhan9e258d62022-01-12 10:50:51 -08001353 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_gt_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001354 TEST_REQUIRES_ARM_NEON;
1355 for (size_t channels = 17; channels < 32; channels++) {
1356 GAvgPoolMicrokernelTester()
1357 .rows(7)
1358 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001359 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001360 }
1361 }
1362
Marat Dukhan9e258d62022-01-12 10:50:51 -08001363 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_gt_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001364 TEST_REQUIRES_ARM_NEON;
1365 for (size_t channels = 17; channels < 32; channels++) {
1366 for (size_t rows = 1; rows < 7; rows++) {
1367 GAvgPoolMicrokernelTester()
1368 .rows(rows)
1369 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001370 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001371 }
1372 }
1373 }
1374
Marat Dukhan9e258d62022-01-12 10:50:51 -08001375 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_gt_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001376 TEST_REQUIRES_ARM_NEON;
1377 for (size_t channels = 17; channels < 32; channels++) {
1378 GAvgPoolMicrokernelTester()
1379 .rows(7)
1380 .channels(channels)
1381 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001382 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001383 }
1384 }
1385
Marat Dukhan9e258d62022-01-12 10:50:51 -08001386 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C16, channels_gt_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001387 TEST_REQUIRES_ARM_NEON;
1388 for (size_t channels = 17; channels < 32; channels++) {
1389 GAvgPoolMicrokernelTester()
1390 .rows(7)
1391 .channels(channels)
1392 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001393 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001394 }
1395 }
1396#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1397
1398
1399#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08001400 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001401 TEST_REQUIRES_ARM_NEON;
1402 GAvgPoolMicrokernelTester()
1403 .rows(7)
1404 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08001405 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001406 }
1407
Marat Dukhan9e258d62022-01-12 10:50:51 -08001408 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001409 TEST_REQUIRES_ARM_NEON;
1410 for (size_t rows = 1; rows < 7; rows++) {
1411 GAvgPoolMicrokernelTester()
1412 .rows(rows)
1413 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08001414 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001415 }
1416 }
1417
Marat Dukhan9e258d62022-01-12 10:50:51 -08001418 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001419 TEST_REQUIRES_ARM_NEON;
1420 GAvgPoolMicrokernelTester()
1421 .rows(7)
1422 .channels(24)
1423 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08001424 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001425 }
1426
Marat Dukhan9e258d62022-01-12 10:50:51 -08001427 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001428 TEST_REQUIRES_ARM_NEON;
1429 GAvgPoolMicrokernelTester()
1430 .rows(7)
1431 .channels(24)
1432 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001433 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001434 }
1435
Marat Dukhan9e258d62022-01-12 10:50:51 -08001436 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_eq_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001437 TEST_REQUIRES_ARM_NEON;
1438 GAvgPoolMicrokernelTester()
1439 .rows(7)
1440 .channels(24)
1441 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001442 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001443 }
1444
Marat Dukhan9e258d62022-01-12 10:50:51 -08001445 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_div_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001446 TEST_REQUIRES_ARM_NEON;
1447 for (size_t channels = 48; channels < 192; channels += 24) {
1448 GAvgPoolMicrokernelTester()
1449 .rows(7)
1450 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001451 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001452 }
1453 }
1454
Marat Dukhan9e258d62022-01-12 10:50:51 -08001455 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_div_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001456 TEST_REQUIRES_ARM_NEON;
1457 for (size_t channels = 48; channels < 192; channels += 24) {
1458 for (size_t rows = 1; rows < 7; rows++) {
1459 GAvgPoolMicrokernelTester()
1460 .rows(rows)
1461 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001462 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001463 }
1464 }
1465 }
1466
Marat Dukhan9e258d62022-01-12 10:50:51 -08001467 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_lt_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001468 TEST_REQUIRES_ARM_NEON;
1469 for (size_t channels = 1; channels < 24; channels++) {
1470 GAvgPoolMicrokernelTester()
1471 .rows(7)
1472 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001473 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001474 }
1475 }
1476
Marat Dukhan9e258d62022-01-12 10:50:51 -08001477 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_lt_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001478 TEST_REQUIRES_ARM_NEON;
1479 for (size_t channels = 1; channels < 24; channels++) {
1480 for (size_t rows = 1; rows < 7; rows++) {
1481 GAvgPoolMicrokernelTester()
1482 .rows(rows)
1483 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001484 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001485 }
1486 }
1487 }
1488
Marat Dukhan9e258d62022-01-12 10:50:51 -08001489 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_lt_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001490 TEST_REQUIRES_ARM_NEON;
1491 for (size_t channels = 1; channels < 24; channels++) {
1492 GAvgPoolMicrokernelTester()
1493 .rows(7)
1494 .channels(channels)
1495 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001496 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001497 }
1498 }
1499
Marat Dukhan9e258d62022-01-12 10:50:51 -08001500 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_lt_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001501 TEST_REQUIRES_ARM_NEON;
1502 for (size_t channels = 1; channels < 24; channels++) {
1503 GAvgPoolMicrokernelTester()
1504 .rows(7)
1505 .channels(channels)
1506 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001507 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001508 }
1509 }
1510
Marat Dukhan9e258d62022-01-12 10:50:51 -08001511 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_gt_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001512 TEST_REQUIRES_ARM_NEON;
1513 for (size_t channels = 25; channels < 48; channels++) {
1514 GAvgPoolMicrokernelTester()
1515 .rows(7)
1516 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001517 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001518 }
1519 }
1520
Marat Dukhan9e258d62022-01-12 10:50:51 -08001521 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_gt_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001522 TEST_REQUIRES_ARM_NEON;
1523 for (size_t channels = 25; channels < 48; channels++) {
1524 for (size_t rows = 1; rows < 7; rows++) {
1525 GAvgPoolMicrokernelTester()
1526 .rows(rows)
1527 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001528 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001529 }
1530 }
1531 }
1532
Marat Dukhan9e258d62022-01-12 10:50:51 -08001533 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_gt_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001534 TEST_REQUIRES_ARM_NEON;
1535 for (size_t channels = 25; channels < 48; channels++) {
1536 GAvgPoolMicrokernelTester()
1537 .rows(7)
1538 .channels(channels)
1539 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001540 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001541 }
1542 }
1543
Marat Dukhan9e258d62022-01-12 10:50:51 -08001544 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C24, channels_gt_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001545 TEST_REQUIRES_ARM_NEON;
1546 for (size_t channels = 25; channels < 48; channels++) {
1547 GAvgPoolMicrokernelTester()
1548 .rows(7)
1549 .channels(channels)
1550 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001551 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001552 }
1553 }
1554#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1555
1556
1557#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08001558 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001559 TEST_REQUIRES_ARM_NEON;
1560 GAvgPoolMicrokernelTester()
1561 .rows(7)
1562 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08001563 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001564 }
1565
Marat Dukhan9e258d62022-01-12 10:50:51 -08001566 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001567 TEST_REQUIRES_ARM_NEON;
1568 for (size_t rows = 1; rows < 7; rows++) {
1569 GAvgPoolMicrokernelTester()
1570 .rows(rows)
1571 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08001572 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001573 }
1574 }
1575
Marat Dukhan9e258d62022-01-12 10:50:51 -08001576 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001577 TEST_REQUIRES_ARM_NEON;
1578 GAvgPoolMicrokernelTester()
1579 .rows(7)
1580 .channels(32)
1581 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08001582 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001583 }
1584
Marat Dukhan9e258d62022-01-12 10:50:51 -08001585 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001586 TEST_REQUIRES_ARM_NEON;
1587 GAvgPoolMicrokernelTester()
1588 .rows(7)
1589 .channels(32)
1590 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001591 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001592 }
1593
Marat Dukhan9e258d62022-01-12 10:50:51 -08001594 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_eq_32_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001595 TEST_REQUIRES_ARM_NEON;
1596 GAvgPoolMicrokernelTester()
1597 .rows(7)
1598 .channels(32)
1599 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001600 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001601 }
1602
Marat Dukhan9e258d62022-01-12 10:50:51 -08001603 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_div_32_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001604 TEST_REQUIRES_ARM_NEON;
1605 for (size_t channels = 64; channels < 256; channels += 32) {
1606 GAvgPoolMicrokernelTester()
1607 .rows(7)
1608 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001609 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001610 }
1611 }
1612
Marat Dukhan9e258d62022-01-12 10:50:51 -08001613 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_div_32_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001614 TEST_REQUIRES_ARM_NEON;
1615 for (size_t channels = 64; channels < 256; channels += 32) {
1616 for (size_t rows = 1; rows < 7; rows++) {
1617 GAvgPoolMicrokernelTester()
1618 .rows(rows)
1619 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001620 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001621 }
1622 }
1623 }
1624
Marat Dukhan9e258d62022-01-12 10:50:51 -08001625 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_lt_32_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001626 TEST_REQUIRES_ARM_NEON;
1627 for (size_t channels = 1; channels < 32; channels++) {
1628 GAvgPoolMicrokernelTester()
1629 .rows(7)
1630 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001631 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001632 }
1633 }
1634
Marat Dukhan9e258d62022-01-12 10:50:51 -08001635 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_lt_32_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001636 TEST_REQUIRES_ARM_NEON;
1637 for (size_t channels = 1; channels < 32; channels++) {
1638 for (size_t rows = 1; rows < 7; rows++) {
1639 GAvgPoolMicrokernelTester()
1640 .rows(rows)
1641 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001642 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001643 }
1644 }
1645 }
1646
Marat Dukhan9e258d62022-01-12 10:50:51 -08001647 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_lt_32_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001648 TEST_REQUIRES_ARM_NEON;
1649 for (size_t channels = 1; channels < 32; channels++) {
1650 GAvgPoolMicrokernelTester()
1651 .rows(7)
1652 .channels(channels)
1653 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001654 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001655 }
1656 }
1657
Marat Dukhan9e258d62022-01-12 10:50:51 -08001658 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_lt_32_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001659 TEST_REQUIRES_ARM_NEON;
1660 for (size_t channels = 1; channels < 32; channels++) {
1661 GAvgPoolMicrokernelTester()
1662 .rows(7)
1663 .channels(channels)
1664 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001665 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001666 }
1667 }
1668
Marat Dukhan9e258d62022-01-12 10:50:51 -08001669 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_gt_32_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001670 TEST_REQUIRES_ARM_NEON;
1671 for (size_t channels = 33; channels < 64; channels++) {
1672 GAvgPoolMicrokernelTester()
1673 .rows(7)
1674 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001675 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001676 }
1677 }
1678
Marat Dukhan9e258d62022-01-12 10:50:51 -08001679 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_gt_32_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001680 TEST_REQUIRES_ARM_NEON;
1681 for (size_t channels = 33; channels < 64; channels++) {
1682 for (size_t rows = 1; rows < 7; rows++) {
1683 GAvgPoolMicrokernelTester()
1684 .rows(rows)
1685 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001686 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001687 }
1688 }
1689 }
1690
Marat Dukhan9e258d62022-01-12 10:50:51 -08001691 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_gt_32_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001692 TEST_REQUIRES_ARM_NEON;
1693 for (size_t channels = 33; channels < 64; channels++) {
1694 GAvgPoolMicrokernelTester()
1695 .rows(7)
1696 .channels(channels)
1697 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001698 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001699 }
1700 }
1701
Marat Dukhan9e258d62022-01-12 10:50:51 -08001702 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEON_C32, channels_gt_32_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001703 TEST_REQUIRES_ARM_NEON;
1704 for (size_t channels = 33; channels < 64; channels++) {
1705 GAvgPoolMicrokernelTester()
1706 .rows(7)
1707 .channels(channels)
1708 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001709 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_fp32_neon_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08001710 }
1711 }
1712#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1713
1714
Marat Dukhand7a4b222022-01-11 22:25:20 -08001715#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08001716 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001717 TEST_REQUIRES_ARM_NEON_V8;
1718 GAvgPoolMicrokernelTester()
1719 .rows(14)
1720 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08001721 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001722 }
1723
Marat Dukhan9e258d62022-01-12 10:50:51 -08001724 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001725 TEST_REQUIRES_ARM_NEON_V8;
1726 GAvgPoolMicrokernelTester()
1727 .rows(14)
1728 .channels(8)
1729 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08001730 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001731 }
1732
Marat Dukhan9e258d62022-01-12 10:50:51 -08001733 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001734 TEST_REQUIRES_ARM_NEON_V8;
1735 GAvgPoolMicrokernelTester()
1736 .rows(14)
1737 .channels(8)
1738 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001739 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001740 }
1741
Marat Dukhan9e258d62022-01-12 10:50:51 -08001742 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001743 TEST_REQUIRES_ARM_NEON_V8;
1744 GAvgPoolMicrokernelTester()
1745 .rows(14)
1746 .channels(8)
1747 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001748 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001749 }
1750
Marat Dukhan9e258d62022-01-12 10:50:51 -08001751 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001752 TEST_REQUIRES_ARM_NEON_V8;
1753 for (size_t rows = 8; rows < 14; rows++) {
1754 GAvgPoolMicrokernelTester()
1755 .rows(rows)
1756 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08001757 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001758 }
1759 }
1760
Marat Dukhan9e258d62022-01-12 10:50:51 -08001761 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_2pass_subtile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001762 TEST_REQUIRES_ARM_NEON_V8;
1763 for (size_t rows = 8; rows < 14; rows++) {
1764 GAvgPoolMicrokernelTester()
1765 .rows(rows)
1766 .channels(8)
1767 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08001768 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001769 }
1770 }
1771
Marat Dukhan9e258d62022-01-12 10:50:51 -08001772 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001773 TEST_REQUIRES_ARM_NEON_V8;
1774 for (size_t rows = 14; rows <= 35; rows += 7) {
1775 GAvgPoolMicrokernelTester()
1776 .rows(rows)
1777 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08001778 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001779 }
1780 }
1781
Marat Dukhan9e258d62022-01-12 10:50:51 -08001782 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001783 TEST_REQUIRES_ARM_NEON_V8;
1784 for (size_t rows = 14; rows <= 35; rows += 7) {
1785 GAvgPoolMicrokernelTester()
1786 .rows(rows)
1787 .channels(8)
1788 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08001789 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001790 }
1791 }
1792
Marat Dukhan9e258d62022-01-12 10:50:51 -08001793 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_div_8_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001794 TEST_REQUIRES_ARM_NEON_V8;
1795 for (size_t channels = 16; channels < 64; channels += 8) {
1796 GAvgPoolMicrokernelTester()
1797 .rows(14)
1798 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001799 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001800 }
1801 }
1802
Marat Dukhan9e258d62022-01-12 10:50:51 -08001803 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_div_8_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001804 TEST_REQUIRES_ARM_NEON_V8;
1805 for (size_t channels = 16; channels < 64; channels += 8) {
1806 for (size_t rows = 8; rows < 14; rows++) {
1807 GAvgPoolMicrokernelTester()
1808 .rows(rows)
1809 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001810 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001811 }
1812 }
1813 }
1814
Marat Dukhan9e258d62022-01-12 10:50:51 -08001815 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_div_8_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001816 TEST_REQUIRES_ARM_NEON_V8;
1817 for (size_t channels = 16; channels < 64; channels += 8) {
1818 for (size_t rows = 14; rows <= 35; rows += 7) {
1819 GAvgPoolMicrokernelTester()
1820 .rows(rows)
1821 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001822 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001823 }
1824 }
1825 }
1826
Marat Dukhan9e258d62022-01-12 10:50:51 -08001827 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_div_8_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001828 TEST_REQUIRES_ARM_NEON_V8;
1829 for (size_t channels = 16; channels < 64; channels += 8) {
1830 for (size_t rows = 14; rows <= 35; rows += 7) {
1831 GAvgPoolMicrokernelTester()
1832 .rows(rows)
1833 .channels(channels)
1834 .input_stride(131)
Marat Dukhan85755042022-01-13 01:46:05 -08001835 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001836 }
1837 }
1838 }
1839
Marat Dukhan9e258d62022-01-12 10:50:51 -08001840 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001841 TEST_REQUIRES_ARM_NEON_V8;
1842 for (size_t channels = 1; channels < 8; channels++) {
1843 GAvgPoolMicrokernelTester()
1844 .rows(14)
1845 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001846 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001847 }
1848 }
1849
Marat Dukhan9e258d62022-01-12 10:50:51 -08001850 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001851 TEST_REQUIRES_ARM_NEON_V8;
1852 for (size_t channels = 1; channels < 8; channels++) {
1853 GAvgPoolMicrokernelTester()
1854 .rows(14)
1855 .channels(channels)
1856 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001857 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001858 }
1859 }
1860
Marat Dukhan9e258d62022-01-12 10:50:51 -08001861 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001862 TEST_REQUIRES_ARM_NEON_V8;
1863 for (size_t channels = 1; channels < 8; channels++) {
1864 GAvgPoolMicrokernelTester()
1865 .rows(14)
1866 .channels(channels)
1867 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001868 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001869 }
1870 }
1871
Marat Dukhan9e258d62022-01-12 10:50:51 -08001872 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001873 TEST_REQUIRES_ARM_NEON_V8;
1874 for (size_t channels = 1; channels < 8; channels++) {
1875 for (size_t rows = 8; rows < 14; rows++) {
1876 GAvgPoolMicrokernelTester()
1877 .rows(rows)
1878 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001879 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001880 }
1881 }
1882 }
1883
Marat Dukhan9e258d62022-01-12 10:50:51 -08001884 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001885 TEST_REQUIRES_ARM_NEON_V8;
1886 for (size_t channels = 1; channels < 8; channels++) {
1887 for (size_t rows = 14; rows <= 35; rows += 7) {
1888 GAvgPoolMicrokernelTester()
1889 .rows(rows)
1890 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001891 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001892 }
1893 }
1894 }
1895
Marat Dukhan9e258d62022-01-12 10:50:51 -08001896 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001897 TEST_REQUIRES_ARM_NEON_V8;
1898 for (size_t channels = 1; channels < 8; channels++) {
1899 for (size_t rows = 14; rows <= 35; rows += 7) {
1900 GAvgPoolMicrokernelTester()
1901 .rows(rows)
1902 .channels(channels)
1903 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08001904 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001905 }
1906 }
1907 }
1908
Marat Dukhan9e258d62022-01-12 10:50:51 -08001909 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001910 TEST_REQUIRES_ARM_NEON_V8;
1911 for (size_t channels = 9; channels < 16; channels++) {
1912 GAvgPoolMicrokernelTester()
1913 .rows(14)
1914 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001915 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001916 }
1917 }
1918
Marat Dukhan9e258d62022-01-12 10:50:51 -08001919 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001920 TEST_REQUIRES_ARM_NEON_V8;
1921 for (size_t channels = 9; channels < 16; channels++) {
1922 GAvgPoolMicrokernelTester()
1923 .rows(14)
1924 .channels(channels)
1925 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001926 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001927 }
1928 }
1929
Marat Dukhan9e258d62022-01-12 10:50:51 -08001930 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001931 TEST_REQUIRES_ARM_NEON_V8;
1932 for (size_t channels = 9; channels < 16; channels++) {
1933 GAvgPoolMicrokernelTester()
1934 .rows(14)
1935 .channels(channels)
1936 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08001937 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001938 }
1939 }
1940
Marat Dukhan9e258d62022-01-12 10:50:51 -08001941 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001942 TEST_REQUIRES_ARM_NEON_V8;
1943 for (size_t channels = 9; channels < 16; channels++) {
1944 for (size_t rows = 8; rows < 14; rows++) {
1945 GAvgPoolMicrokernelTester()
1946 .rows(rows)
1947 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001948 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001949 }
1950 }
1951 }
1952
Marat Dukhan9e258d62022-01-12 10:50:51 -08001953 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001954 TEST_REQUIRES_ARM_NEON_V8;
1955 for (size_t channels = 9; channels < 16; channels++) {
1956 for (size_t rows = 14; rows < 35; rows += 14) {
1957 GAvgPoolMicrokernelTester()
1958 .rows(rows)
1959 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08001960 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001961 }
1962 }
1963 }
1964
Marat Dukhan9e258d62022-01-12 10:50:51 -08001965 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001966 TEST_REQUIRES_ARM_NEON_V8;
1967 for (size_t channels = 9; channels < 16; channels++) {
1968 for (size_t rows = 14; rows < 35; rows += 14) {
1969 GAvgPoolMicrokernelTester()
1970 .rows(rows)
1971 .channels(channels)
1972 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08001973 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001974 }
1975 }
1976 }
1977#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1978
1979
1980#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08001981 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001982 TEST_REQUIRES_ARM_NEON_V8;
1983 GAvgPoolMicrokernelTester()
1984 .rows(14)
1985 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08001986 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001987 }
1988
Marat Dukhan9e258d62022-01-12 10:50:51 -08001989 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001990 TEST_REQUIRES_ARM_NEON_V8;
1991 GAvgPoolMicrokernelTester()
1992 .rows(14)
1993 .channels(16)
1994 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08001995 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08001996 }
1997
Marat Dukhan9e258d62022-01-12 10:50:51 -08001998 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08001999 TEST_REQUIRES_ARM_NEON_V8;
2000 GAvgPoolMicrokernelTester()
2001 .rows(14)
2002 .channels(16)
2003 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002004 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002005 }
2006
Marat Dukhan9e258d62022-01-12 10:50:51 -08002007 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002008 TEST_REQUIRES_ARM_NEON_V8;
2009 GAvgPoolMicrokernelTester()
2010 .rows(14)
2011 .channels(16)
2012 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002013 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002014 }
2015
Marat Dukhan9e258d62022-01-12 10:50:51 -08002016 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002017 TEST_REQUIRES_ARM_NEON_V8;
2018 for (size_t rows = 8; rows < 14; rows++) {
2019 GAvgPoolMicrokernelTester()
2020 .rows(rows)
2021 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08002022 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002023 }
2024 }
2025
Marat Dukhan9e258d62022-01-12 10:50:51 -08002026 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_2pass_subtile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002027 TEST_REQUIRES_ARM_NEON_V8;
2028 for (size_t rows = 8; rows < 14; rows++) {
2029 GAvgPoolMicrokernelTester()
2030 .rows(rows)
2031 .channels(16)
2032 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08002033 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002034 }
2035 }
2036
Marat Dukhan9e258d62022-01-12 10:50:51 -08002037 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002038 TEST_REQUIRES_ARM_NEON_V8;
2039 for (size_t rows = 14; rows <= 35; rows += 7) {
2040 GAvgPoolMicrokernelTester()
2041 .rows(rows)
2042 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08002043 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002044 }
2045 }
2046
Marat Dukhan9e258d62022-01-12 10:50:51 -08002047 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002048 TEST_REQUIRES_ARM_NEON_V8;
2049 for (size_t rows = 14; rows <= 35; rows += 7) {
2050 GAvgPoolMicrokernelTester()
2051 .rows(rows)
2052 .channels(16)
2053 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08002054 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002055 }
2056 }
2057
Marat Dukhan9e258d62022-01-12 10:50:51 -08002058 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_div_16_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002059 TEST_REQUIRES_ARM_NEON_V8;
2060 for (size_t channels = 32; channels < 128; channels += 16) {
2061 GAvgPoolMicrokernelTester()
2062 .rows(14)
2063 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002064 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002065 }
2066 }
2067
Marat Dukhan9e258d62022-01-12 10:50:51 -08002068 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_div_16_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002069 TEST_REQUIRES_ARM_NEON_V8;
2070 for (size_t channels = 32; channels < 128; channels += 16) {
2071 for (size_t rows = 8; rows < 14; rows++) {
2072 GAvgPoolMicrokernelTester()
2073 .rows(rows)
2074 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002075 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002076 }
2077 }
2078 }
2079
Marat Dukhan9e258d62022-01-12 10:50:51 -08002080 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_div_16_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002081 TEST_REQUIRES_ARM_NEON_V8;
2082 for (size_t channels = 32; channels < 128; channels += 16) {
2083 for (size_t rows = 14; rows <= 35; rows += 7) {
2084 GAvgPoolMicrokernelTester()
2085 .rows(rows)
2086 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002087 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002088 }
2089 }
2090 }
2091
Marat Dukhan9e258d62022-01-12 10:50:51 -08002092 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_div_16_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002093 TEST_REQUIRES_ARM_NEON_V8;
2094 for (size_t channels = 32; channels < 128; channels += 16) {
2095 for (size_t rows = 14; rows <= 35; rows += 7) {
2096 GAvgPoolMicrokernelTester()
2097 .rows(rows)
2098 .channels(channels)
2099 .input_stride(263)
Marat Dukhan85755042022-01-13 01:46:05 -08002100 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002101 }
2102 }
2103 }
2104
Marat Dukhan9e258d62022-01-12 10:50:51 -08002105 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002106 TEST_REQUIRES_ARM_NEON_V8;
2107 for (size_t channels = 1; channels < 16; channels++) {
2108 GAvgPoolMicrokernelTester()
2109 .rows(14)
2110 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002111 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002112 }
2113 }
2114
Marat Dukhan9e258d62022-01-12 10:50:51 -08002115 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002116 TEST_REQUIRES_ARM_NEON_V8;
2117 for (size_t channels = 1; channels < 16; channels++) {
2118 GAvgPoolMicrokernelTester()
2119 .rows(14)
2120 .channels(channels)
2121 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002122 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002123 }
2124 }
2125
Marat Dukhan9e258d62022-01-12 10:50:51 -08002126 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002127 TEST_REQUIRES_ARM_NEON_V8;
2128 for (size_t channels = 1; channels < 16; channels++) {
2129 GAvgPoolMicrokernelTester()
2130 .rows(14)
2131 .channels(channels)
2132 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002133 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002134 }
2135 }
2136
Marat Dukhan9e258d62022-01-12 10:50:51 -08002137 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002138 TEST_REQUIRES_ARM_NEON_V8;
2139 for (size_t channels = 1; channels < 16; channels++) {
2140 for (size_t rows = 8; rows < 14; rows++) {
2141 GAvgPoolMicrokernelTester()
2142 .rows(rows)
2143 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002144 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002145 }
2146 }
2147 }
2148
Marat Dukhan9e258d62022-01-12 10:50:51 -08002149 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002150 TEST_REQUIRES_ARM_NEON_V8;
2151 for (size_t channels = 1; channels < 16; channels++) {
2152 for (size_t rows = 14; rows <= 35; rows += 7) {
2153 GAvgPoolMicrokernelTester()
2154 .rows(rows)
2155 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002156 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002157 }
2158 }
2159 }
2160
Marat Dukhan9e258d62022-01-12 10:50:51 -08002161 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002162 TEST_REQUIRES_ARM_NEON_V8;
2163 for (size_t channels = 1; channels < 16; channels++) {
2164 for (size_t rows = 14; rows <= 35; rows += 7) {
2165 GAvgPoolMicrokernelTester()
2166 .rows(rows)
2167 .channels(channels)
2168 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08002169 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002170 }
2171 }
2172 }
2173
Marat Dukhan9e258d62022-01-12 10:50:51 -08002174 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002175 TEST_REQUIRES_ARM_NEON_V8;
2176 for (size_t channels = 17; channels < 32; channels++) {
2177 GAvgPoolMicrokernelTester()
2178 .rows(14)
2179 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002180 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002181 }
2182 }
2183
Marat Dukhan9e258d62022-01-12 10:50:51 -08002184 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002185 TEST_REQUIRES_ARM_NEON_V8;
2186 for (size_t channels = 17; channels < 32; channels++) {
2187 GAvgPoolMicrokernelTester()
2188 .rows(14)
2189 .channels(channels)
2190 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002191 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002192 }
2193 }
2194
Marat Dukhan9e258d62022-01-12 10:50:51 -08002195 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002196 TEST_REQUIRES_ARM_NEON_V8;
2197 for (size_t channels = 17; channels < 32; channels++) {
2198 GAvgPoolMicrokernelTester()
2199 .rows(14)
2200 .channels(channels)
2201 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002202 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002203 }
2204 }
2205
Marat Dukhan9e258d62022-01-12 10:50:51 -08002206 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002207 TEST_REQUIRES_ARM_NEON_V8;
2208 for (size_t channels = 17; channels < 32; channels++) {
2209 for (size_t rows = 8; rows < 14; rows++) {
2210 GAvgPoolMicrokernelTester()
2211 .rows(rows)
2212 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002213 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002214 }
2215 }
2216 }
2217
Marat Dukhan9e258d62022-01-12 10:50:51 -08002218 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002219 TEST_REQUIRES_ARM_NEON_V8;
2220 for (size_t channels = 17; channels < 32; channels++) {
2221 for (size_t rows = 14; rows < 35; rows += 14) {
2222 GAvgPoolMicrokernelTester()
2223 .rows(rows)
2224 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002225 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002226 }
2227 }
2228 }
2229
Marat Dukhan9e258d62022-01-12 10:50:51 -08002230 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002231 TEST_REQUIRES_ARM_NEON_V8;
2232 for (size_t channels = 17; channels < 32; channels++) {
2233 for (size_t rows = 14; rows < 35; rows += 14) {
2234 GAvgPoolMicrokernelTester()
2235 .rows(rows)
2236 .channels(channels)
2237 .input_stride(47)
Marat Dukhan85755042022-01-13 01:46:05 -08002238 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002239 }
2240 }
2241 }
2242#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2243
2244
2245#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08002246 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002247 TEST_REQUIRES_ARM_NEON_V8;
2248 GAvgPoolMicrokernelTester()
2249 .rows(14)
2250 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08002251 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002252 }
2253
Marat Dukhan9e258d62022-01-12 10:50:51 -08002254 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002255 TEST_REQUIRES_ARM_NEON_V8;
2256 GAvgPoolMicrokernelTester()
2257 .rows(14)
2258 .channels(24)
2259 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08002260 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002261 }
2262
Marat Dukhan9e258d62022-01-12 10:50:51 -08002263 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002264 TEST_REQUIRES_ARM_NEON_V8;
2265 GAvgPoolMicrokernelTester()
2266 .rows(14)
2267 .channels(24)
2268 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002269 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002270 }
2271
Marat Dukhan9e258d62022-01-12 10:50:51 -08002272 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002273 TEST_REQUIRES_ARM_NEON_V8;
2274 GAvgPoolMicrokernelTester()
2275 .rows(14)
2276 .channels(24)
2277 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002278 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002279 }
2280
Marat Dukhan9e258d62022-01-12 10:50:51 -08002281 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002282 TEST_REQUIRES_ARM_NEON_V8;
2283 for (size_t rows = 8; rows < 14; rows++) {
2284 GAvgPoolMicrokernelTester()
2285 .rows(rows)
2286 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08002287 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002288 }
2289 }
2290
Marat Dukhan9e258d62022-01-12 10:50:51 -08002291 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_2pass_subtile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002292 TEST_REQUIRES_ARM_NEON_V8;
2293 for (size_t rows = 8; rows < 14; rows++) {
2294 GAvgPoolMicrokernelTester()
2295 .rows(rows)
2296 .channels(24)
2297 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08002298 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002299 }
2300 }
2301
Marat Dukhan9e258d62022-01-12 10:50:51 -08002302 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002303 TEST_REQUIRES_ARM_NEON_V8;
2304 for (size_t rows = 14; rows <= 35; rows += 7) {
2305 GAvgPoolMicrokernelTester()
2306 .rows(rows)
2307 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08002308 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002309 }
2310 }
2311
Marat Dukhan9e258d62022-01-12 10:50:51 -08002312 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002313 TEST_REQUIRES_ARM_NEON_V8;
2314 for (size_t rows = 14; rows <= 35; rows += 7) {
2315 GAvgPoolMicrokernelTester()
2316 .rows(rows)
2317 .channels(24)
2318 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08002319 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002320 }
2321 }
2322
Marat Dukhan9e258d62022-01-12 10:50:51 -08002323 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_div_24_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002324 TEST_REQUIRES_ARM_NEON_V8;
2325 for (size_t channels = 48; channels < 192; channels += 24) {
2326 GAvgPoolMicrokernelTester()
2327 .rows(14)
2328 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002329 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002330 }
2331 }
2332
Marat Dukhan9e258d62022-01-12 10:50:51 -08002333 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_div_24_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002334 TEST_REQUIRES_ARM_NEON_V8;
2335 for (size_t channels = 48; channels < 192; channels += 24) {
2336 for (size_t rows = 8; rows < 14; rows++) {
2337 GAvgPoolMicrokernelTester()
2338 .rows(rows)
2339 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002340 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002341 }
2342 }
2343 }
2344
Marat Dukhan9e258d62022-01-12 10:50:51 -08002345 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_div_24_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002346 TEST_REQUIRES_ARM_NEON_V8;
2347 for (size_t channels = 48; channels < 192; channels += 24) {
2348 for (size_t rows = 14; rows <= 35; rows += 7) {
2349 GAvgPoolMicrokernelTester()
2350 .rows(rows)
2351 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002352 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002353 }
2354 }
2355 }
2356
Marat Dukhan9e258d62022-01-12 10:50:51 -08002357 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_div_24_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002358 TEST_REQUIRES_ARM_NEON_V8;
2359 for (size_t channels = 48; channels < 192; channels += 24) {
2360 for (size_t rows = 14; rows <= 35; rows += 7) {
2361 GAvgPoolMicrokernelTester()
2362 .rows(rows)
2363 .channels(channels)
2364 .input_stride(389)
Marat Dukhan85755042022-01-13 01:46:05 -08002365 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002366 }
2367 }
2368 }
2369
Marat Dukhan9e258d62022-01-12 10:50:51 -08002370 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002371 TEST_REQUIRES_ARM_NEON_V8;
2372 for (size_t channels = 1; channels < 24; channels++) {
2373 GAvgPoolMicrokernelTester()
2374 .rows(14)
2375 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002376 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002377 }
2378 }
2379
Marat Dukhan9e258d62022-01-12 10:50:51 -08002380 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002381 TEST_REQUIRES_ARM_NEON_V8;
2382 for (size_t channels = 1; channels < 24; channels++) {
2383 GAvgPoolMicrokernelTester()
2384 .rows(14)
2385 .channels(channels)
2386 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002387 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002388 }
2389 }
2390
Marat Dukhan9e258d62022-01-12 10:50:51 -08002391 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002392 TEST_REQUIRES_ARM_NEON_V8;
2393 for (size_t channels = 1; channels < 24; channels++) {
2394 GAvgPoolMicrokernelTester()
2395 .rows(14)
2396 .channels(channels)
2397 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002398 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002399 }
2400 }
2401
Marat Dukhan9e258d62022-01-12 10:50:51 -08002402 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002403 TEST_REQUIRES_ARM_NEON_V8;
2404 for (size_t channels = 1; channels < 24; channels++) {
2405 for (size_t rows = 8; rows < 14; rows++) {
2406 GAvgPoolMicrokernelTester()
2407 .rows(rows)
2408 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002409 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002410 }
2411 }
2412 }
2413
Marat Dukhan9e258d62022-01-12 10:50:51 -08002414 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002415 TEST_REQUIRES_ARM_NEON_V8;
2416 for (size_t channels = 1; channels < 24; channels++) {
2417 for (size_t rows = 14; rows <= 35; rows += 7) {
2418 GAvgPoolMicrokernelTester()
2419 .rows(rows)
2420 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002421 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002422 }
2423 }
2424 }
2425
Marat Dukhan9e258d62022-01-12 10:50:51 -08002426 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002427 TEST_REQUIRES_ARM_NEON_V8;
2428 for (size_t channels = 1; channels < 24; channels++) {
2429 for (size_t rows = 14; rows <= 35; rows += 7) {
2430 GAvgPoolMicrokernelTester()
2431 .rows(rows)
2432 .channels(channels)
2433 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08002434 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002435 }
2436 }
2437 }
2438
Marat Dukhan9e258d62022-01-12 10:50:51 -08002439 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002440 TEST_REQUIRES_ARM_NEON_V8;
2441 for (size_t channels = 25; channels < 48; channels++) {
2442 GAvgPoolMicrokernelTester()
2443 .rows(14)
2444 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002445 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002446 }
2447 }
2448
Marat Dukhan9e258d62022-01-12 10:50:51 -08002449 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002450 TEST_REQUIRES_ARM_NEON_V8;
2451 for (size_t channels = 25; channels < 48; channels++) {
2452 GAvgPoolMicrokernelTester()
2453 .rows(14)
2454 .channels(channels)
2455 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002456 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002457 }
2458 }
2459
Marat Dukhan9e258d62022-01-12 10:50:51 -08002460 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002461 TEST_REQUIRES_ARM_NEON_V8;
2462 for (size_t channels = 25; channels < 48; channels++) {
2463 GAvgPoolMicrokernelTester()
2464 .rows(14)
2465 .channels(channels)
2466 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002467 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002468 }
2469 }
2470
Marat Dukhan9e258d62022-01-12 10:50:51 -08002471 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002472 TEST_REQUIRES_ARM_NEON_V8;
2473 for (size_t channels = 25; channels < 48; channels++) {
2474 for (size_t rows = 8; rows < 14; rows++) {
2475 GAvgPoolMicrokernelTester()
2476 .rows(rows)
2477 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002478 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002479 }
2480 }
2481 }
2482
Marat Dukhan9e258d62022-01-12 10:50:51 -08002483 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002484 TEST_REQUIRES_ARM_NEON_V8;
2485 for (size_t channels = 25; channels < 48; channels++) {
2486 for (size_t rows = 14; rows < 35; rows += 14) {
2487 GAvgPoolMicrokernelTester()
2488 .rows(rows)
2489 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002490 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002491 }
2492 }
2493 }
2494
Marat Dukhan9e258d62022-01-12 10:50:51 -08002495 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002496 TEST_REQUIRES_ARM_NEON_V8;
2497 for (size_t channels = 25; channels < 48; channels++) {
2498 for (size_t rows = 14; rows < 35; rows += 14) {
2499 GAvgPoolMicrokernelTester()
2500 .rows(rows)
2501 .channels(channels)
2502 .input_stride(61)
Marat Dukhan85755042022-01-13 01:46:05 -08002503 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002504 }
2505 }
2506 }
2507#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2508
2509
2510#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08002511 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002512 TEST_REQUIRES_ARM_NEON_V8;
2513 GAvgPoolMicrokernelTester()
2514 .rows(14)
2515 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08002516 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002517 }
2518
Marat Dukhan9e258d62022-01-12 10:50:51 -08002519 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002520 TEST_REQUIRES_ARM_NEON_V8;
2521 GAvgPoolMicrokernelTester()
2522 .rows(14)
2523 .channels(32)
2524 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08002525 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002526 }
2527
Marat Dukhan9e258d62022-01-12 10:50:51 -08002528 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002529 TEST_REQUIRES_ARM_NEON_V8;
2530 GAvgPoolMicrokernelTester()
2531 .rows(14)
2532 .channels(32)
2533 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002534 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002535 }
2536
Marat Dukhan9e258d62022-01-12 10:50:51 -08002537 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002538 TEST_REQUIRES_ARM_NEON_V8;
2539 GAvgPoolMicrokernelTester()
2540 .rows(14)
2541 .channels(32)
2542 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002543 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002544 }
2545
Marat Dukhan9e258d62022-01-12 10:50:51 -08002546 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002547 TEST_REQUIRES_ARM_NEON_V8;
2548 for (size_t rows = 8; rows < 14; rows++) {
2549 GAvgPoolMicrokernelTester()
2550 .rows(rows)
2551 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08002552 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002553 }
2554 }
2555
Marat Dukhan9e258d62022-01-12 10:50:51 -08002556 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_2pass_subtile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002557 TEST_REQUIRES_ARM_NEON_V8;
2558 for (size_t rows = 8; rows < 14; rows++) {
2559 GAvgPoolMicrokernelTester()
2560 .rows(rows)
2561 .channels(32)
2562 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08002563 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002564 }
2565 }
2566
Marat Dukhan9e258d62022-01-12 10:50:51 -08002567 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002568 TEST_REQUIRES_ARM_NEON_V8;
2569 for (size_t rows = 14; rows <= 35; rows += 7) {
2570 GAvgPoolMicrokernelTester()
2571 .rows(rows)
2572 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08002573 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002574 }
2575 }
2576
Marat Dukhan9e258d62022-01-12 10:50:51 -08002577 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_eq_32_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002578 TEST_REQUIRES_ARM_NEON_V8;
2579 for (size_t rows = 14; rows <= 35; rows += 7) {
2580 GAvgPoolMicrokernelTester()
2581 .rows(rows)
2582 .channels(32)
2583 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08002584 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002585 }
2586 }
2587
Marat Dukhan9e258d62022-01-12 10:50:51 -08002588 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_div_32_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002589 TEST_REQUIRES_ARM_NEON_V8;
2590 for (size_t channels = 64; channels < 256; channels += 32) {
2591 GAvgPoolMicrokernelTester()
2592 .rows(14)
2593 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002594 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002595 }
2596 }
2597
Marat Dukhan9e258d62022-01-12 10:50:51 -08002598 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_div_32_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002599 TEST_REQUIRES_ARM_NEON_V8;
2600 for (size_t channels = 64; channels < 256; channels += 32) {
2601 for (size_t rows = 8; rows < 14; rows++) {
2602 GAvgPoolMicrokernelTester()
2603 .rows(rows)
2604 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002605 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002606 }
2607 }
2608 }
2609
Marat Dukhan9e258d62022-01-12 10:50:51 -08002610 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_div_32_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002611 TEST_REQUIRES_ARM_NEON_V8;
2612 for (size_t channels = 64; channels < 256; channels += 32) {
2613 for (size_t rows = 14; rows <= 35; rows += 7) {
2614 GAvgPoolMicrokernelTester()
2615 .rows(rows)
2616 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002617 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002618 }
2619 }
2620 }
2621
Marat Dukhan9e258d62022-01-12 10:50:51 -08002622 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_div_32_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002623 TEST_REQUIRES_ARM_NEON_V8;
2624 for (size_t channels = 64; channels < 256; channels += 32) {
2625 for (size_t rows = 14; rows <= 35; rows += 7) {
2626 GAvgPoolMicrokernelTester()
2627 .rows(rows)
2628 .channels(channels)
2629 .input_stride(521)
Marat Dukhan85755042022-01-13 01:46:05 -08002630 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002631 }
2632 }
2633 }
2634
Marat Dukhan9e258d62022-01-12 10:50:51 -08002635 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002636 TEST_REQUIRES_ARM_NEON_V8;
2637 for (size_t channels = 1; channels < 32; channels++) {
2638 GAvgPoolMicrokernelTester()
2639 .rows(14)
2640 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002641 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002642 }
2643 }
2644
Marat Dukhan9e258d62022-01-12 10:50:51 -08002645 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002646 TEST_REQUIRES_ARM_NEON_V8;
2647 for (size_t channels = 1; channels < 32; channels++) {
2648 GAvgPoolMicrokernelTester()
2649 .rows(14)
2650 .channels(channels)
2651 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002652 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002653 }
2654 }
2655
Marat Dukhan9e258d62022-01-12 10:50:51 -08002656 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002657 TEST_REQUIRES_ARM_NEON_V8;
2658 for (size_t channels = 1; channels < 32; channels++) {
2659 GAvgPoolMicrokernelTester()
2660 .rows(14)
2661 .channels(channels)
2662 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002663 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002664 }
2665 }
2666
Marat Dukhan9e258d62022-01-12 10:50:51 -08002667 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002668 TEST_REQUIRES_ARM_NEON_V8;
2669 for (size_t channels = 1; channels < 32; channels++) {
2670 for (size_t rows = 8; rows < 14; rows++) {
2671 GAvgPoolMicrokernelTester()
2672 .rows(rows)
2673 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002674 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002675 }
2676 }
2677 }
2678
Marat Dukhan9e258d62022-01-12 10:50:51 -08002679 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002680 TEST_REQUIRES_ARM_NEON_V8;
2681 for (size_t channels = 1; channels < 32; channels++) {
2682 for (size_t rows = 14; rows <= 35; rows += 7) {
2683 GAvgPoolMicrokernelTester()
2684 .rows(rows)
2685 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002686 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002687 }
2688 }
2689 }
2690
Marat Dukhan9e258d62022-01-12 10:50:51 -08002691 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_lt_32_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002692 TEST_REQUIRES_ARM_NEON_V8;
2693 for (size_t channels = 1; channels < 32; channels++) {
2694 for (size_t rows = 14; rows <= 35; rows += 7) {
2695 GAvgPoolMicrokernelTester()
2696 .rows(rows)
2697 .channels(channels)
2698 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08002699 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002700 }
2701 }
2702 }
2703
Marat Dukhan9e258d62022-01-12 10:50:51 -08002704 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_2pass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002705 TEST_REQUIRES_ARM_NEON_V8;
2706 for (size_t channels = 33; channels < 64; channels++) {
2707 GAvgPoolMicrokernelTester()
2708 .rows(14)
2709 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002710 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002711 }
2712 }
2713
Marat Dukhan9e258d62022-01-12 10:50:51 -08002714 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_2pass_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002715 TEST_REQUIRES_ARM_NEON_V8;
2716 for (size_t channels = 33; channels < 64; channels++) {
2717 GAvgPoolMicrokernelTester()
2718 .rows(14)
2719 .channels(channels)
2720 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002721 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002722 }
2723 }
2724
Marat Dukhan9e258d62022-01-12 10:50:51 -08002725 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_2pass_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002726 TEST_REQUIRES_ARM_NEON_V8;
2727 for (size_t channels = 33; channels < 64; channels++) {
2728 GAvgPoolMicrokernelTester()
2729 .rows(14)
2730 .channels(channels)
2731 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002732 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002733 }
2734 }
2735
Marat Dukhan9e258d62022-01-12 10:50:51 -08002736 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_2pass_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002737 TEST_REQUIRES_ARM_NEON_V8;
2738 for (size_t channels = 33; channels < 64; channels++) {
2739 for (size_t rows = 8; rows < 14; rows++) {
2740 GAvgPoolMicrokernelTester()
2741 .rows(rows)
2742 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002743 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002744 }
2745 }
2746 }
2747
Marat Dukhan9e258d62022-01-12 10:50:51 -08002748 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_multipass_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002749 TEST_REQUIRES_ARM_NEON_V8;
2750 for (size_t channels = 33; channels < 64; channels++) {
2751 for (size_t rows = 14; rows < 35; rows += 14) {
2752 GAvgPoolMicrokernelTester()
2753 .rows(rows)
2754 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002755 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002756 }
2757 }
2758 }
2759
Marat Dukhan9e258d62022-01-12 10:50:51 -08002760 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__NEONV8_C32, channels_gt_32_multipass_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002761 TEST_REQUIRES_ARM_NEON_V8;
2762 for (size_t channels = 33; channels < 64; channels++) {
2763 for (size_t rows = 14; rows < 35; rows += 14) {
2764 GAvgPoolMicrokernelTester()
2765 .rows(rows)
2766 .channels(channels)
2767 .input_stride(79)
Marat Dukhan85755042022-01-13 01:46:05 -08002768 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002769 }
2770 }
2771 }
2772#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2773
2774
2775#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08002776 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002777 TEST_REQUIRES_ARM_NEON_V8;
2778 GAvgPoolMicrokernelTester()
2779 .rows(7)
2780 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08002781 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002782 }
2783
Marat Dukhan9e258d62022-01-12 10:50:51 -08002784 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002785 TEST_REQUIRES_ARM_NEON_V8;
2786 for (size_t rows = 1; rows < 7; rows++) {
2787 GAvgPoolMicrokernelTester()
2788 .rows(rows)
2789 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08002790 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002791 }
2792 }
2793
Marat Dukhan9e258d62022-01-12 10:50:51 -08002794 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002795 TEST_REQUIRES_ARM_NEON_V8;
2796 GAvgPoolMicrokernelTester()
2797 .rows(7)
2798 .channels(8)
2799 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08002800 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002801 }
2802
Marat Dukhan9e258d62022-01-12 10:50:51 -08002803 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002804 TEST_REQUIRES_ARM_NEON_V8;
2805 GAvgPoolMicrokernelTester()
2806 .rows(7)
2807 .channels(8)
2808 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002809 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002810 }
2811
Marat Dukhan9e258d62022-01-12 10:50:51 -08002812 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_eq_8_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002813 TEST_REQUIRES_ARM_NEON_V8;
2814 GAvgPoolMicrokernelTester()
2815 .rows(7)
2816 .channels(8)
2817 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002818 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002819 }
2820
Marat Dukhan9e258d62022-01-12 10:50:51 -08002821 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_div_8_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002822 TEST_REQUIRES_ARM_NEON_V8;
2823 for (size_t channels = 16; channels < 64; channels += 8) {
2824 GAvgPoolMicrokernelTester()
2825 .rows(7)
2826 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002827 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002828 }
2829 }
2830
Marat Dukhan9e258d62022-01-12 10:50:51 -08002831 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_div_8_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002832 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)
Marat Dukhan85755042022-01-13 01:46:05 -08002838 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002839 }
2840 }
2841 }
2842
Marat Dukhan9e258d62022-01-12 10:50:51 -08002843 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_lt_8_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002844 TEST_REQUIRES_ARM_NEON_V8;
2845 for (size_t channels = 1; channels < 8; channels++) {
2846 GAvgPoolMicrokernelTester()
2847 .rows(7)
2848 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002849 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002850 }
2851 }
2852
Marat Dukhan9e258d62022-01-12 10:50:51 -08002853 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_lt_8_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002854 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)
Marat Dukhan85755042022-01-13 01:46:05 -08002860 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002861 }
2862 }
2863 }
2864
Marat Dukhan9e258d62022-01-12 10:50:51 -08002865 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_lt_8_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002866 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)
Marat Dukhan85755042022-01-13 01:46:05 -08002872 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002873 }
2874 }
2875
Marat Dukhan9e258d62022-01-12 10:50:51 -08002876 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_lt_8_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002877 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)
Marat Dukhan85755042022-01-13 01:46:05 -08002883 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002884 }
2885 }
2886
Marat Dukhan9e258d62022-01-12 10:50:51 -08002887 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_gt_8_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002888 TEST_REQUIRES_ARM_NEON_V8;
2889 for (size_t channels = 9; channels < 16; channels++) {
2890 GAvgPoolMicrokernelTester()
2891 .rows(7)
2892 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002893 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002894 }
2895 }
2896
Marat Dukhan9e258d62022-01-12 10:50:51 -08002897 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_gt_8_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002898 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)
Marat Dukhan85755042022-01-13 01:46:05 -08002904 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002905 }
2906 }
2907 }
2908
Marat Dukhan9e258d62022-01-12 10:50:51 -08002909 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_gt_8_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002910 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)
Marat Dukhan85755042022-01-13 01:46:05 -08002916 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002917 }
2918 }
2919
Marat Dukhan9e258d62022-01-12 10:50:51 -08002920 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C8, channels_gt_8_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002921 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)
Marat Dukhan85755042022-01-13 01:46:05 -08002927 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c8, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002928 }
2929 }
2930#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2931
2932
2933#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08002934 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002935 TEST_REQUIRES_ARM_NEON_V8;
2936 GAvgPoolMicrokernelTester()
2937 .rows(7)
2938 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08002939 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002940 }
2941
Marat Dukhan9e258d62022-01-12 10:50:51 -08002942 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002943 TEST_REQUIRES_ARM_NEON_V8;
2944 for (size_t rows = 1; rows < 7; rows++) {
2945 GAvgPoolMicrokernelTester()
2946 .rows(rows)
2947 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08002948 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002949 }
2950 }
2951
Marat Dukhan9e258d62022-01-12 10:50:51 -08002952 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002953 TEST_REQUIRES_ARM_NEON_V8;
2954 GAvgPoolMicrokernelTester()
2955 .rows(7)
2956 .channels(16)
2957 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08002958 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002959 }
2960
Marat Dukhan9e258d62022-01-12 10:50:51 -08002961 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002962 TEST_REQUIRES_ARM_NEON_V8;
2963 GAvgPoolMicrokernelTester()
2964 .rows(7)
2965 .channels(16)
2966 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002967 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002968 }
2969
Marat Dukhan9e258d62022-01-12 10:50:51 -08002970 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_eq_16_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002971 TEST_REQUIRES_ARM_NEON_V8;
2972 GAvgPoolMicrokernelTester()
2973 .rows(7)
2974 .channels(16)
2975 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08002976 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002977 }
2978
Marat Dukhan9e258d62022-01-12 10:50:51 -08002979 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_div_16_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002980 TEST_REQUIRES_ARM_NEON_V8;
2981 for (size_t channels = 32; channels < 128; channels += 16) {
2982 GAvgPoolMicrokernelTester()
2983 .rows(7)
2984 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08002985 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002986 }
2987 }
2988
Marat Dukhan9e258d62022-01-12 10:50:51 -08002989 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_div_16_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08002990 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)
Marat Dukhan85755042022-01-13 01:46:05 -08002996 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08002997 }
2998 }
2999 }
3000
Marat Dukhan9e258d62022-01-12 10:50:51 -08003001 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_lt_16_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003002 TEST_REQUIRES_ARM_NEON_V8;
3003 for (size_t channels = 1; channels < 16; channels++) {
3004 GAvgPoolMicrokernelTester()
3005 .rows(7)
3006 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003007 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003008 }
3009 }
3010
Marat Dukhan9e258d62022-01-12 10:50:51 -08003011 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_lt_16_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003012 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003018 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003019 }
3020 }
3021 }
3022
Marat Dukhan9e258d62022-01-12 10:50:51 -08003023 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_lt_16_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003024 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003030 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003031 }
3032 }
3033
Marat Dukhan9e258d62022-01-12 10:50:51 -08003034 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_lt_16_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003035 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003041 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003042 }
3043 }
3044
Marat Dukhan9e258d62022-01-12 10:50:51 -08003045 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_gt_16_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003046 TEST_REQUIRES_ARM_NEON_V8;
3047 for (size_t channels = 17; channels < 32; channels++) {
3048 GAvgPoolMicrokernelTester()
3049 .rows(7)
3050 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003051 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003052 }
3053 }
3054
Marat Dukhan9e258d62022-01-12 10:50:51 -08003055 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_gt_16_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003056 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003062 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003063 }
3064 }
3065 }
3066
Marat Dukhan9e258d62022-01-12 10:50:51 -08003067 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_gt_16_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003068 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003074 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003075 }
3076 }
3077
Marat Dukhan9e258d62022-01-12 10:50:51 -08003078 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C16, channels_gt_16_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003079 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003085 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c16, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003086 }
3087 }
3088#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3089
3090
3091#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08003092 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003093 TEST_REQUIRES_ARM_NEON_V8;
3094 GAvgPoolMicrokernelTester()
3095 .rows(7)
3096 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08003097 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003098 }
3099
Marat Dukhan9e258d62022-01-12 10:50:51 -08003100 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003101 TEST_REQUIRES_ARM_NEON_V8;
3102 for (size_t rows = 1; rows < 7; rows++) {
3103 GAvgPoolMicrokernelTester()
3104 .rows(rows)
3105 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08003106 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003107 }
3108 }
3109
Marat Dukhan9e258d62022-01-12 10:50:51 -08003110 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003111 TEST_REQUIRES_ARM_NEON_V8;
3112 GAvgPoolMicrokernelTester()
3113 .rows(7)
3114 .channels(24)
3115 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08003116 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003117 }
3118
Marat Dukhan9e258d62022-01-12 10:50:51 -08003119 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003120 TEST_REQUIRES_ARM_NEON_V8;
3121 GAvgPoolMicrokernelTester()
3122 .rows(7)
3123 .channels(24)
3124 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003125 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003126 }
3127
Marat Dukhan9e258d62022-01-12 10:50:51 -08003128 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_eq_24_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003129 TEST_REQUIRES_ARM_NEON_V8;
3130 GAvgPoolMicrokernelTester()
3131 .rows(7)
3132 .channels(24)
3133 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003134 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003135 }
3136
Marat Dukhan9e258d62022-01-12 10:50:51 -08003137 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_div_24_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003138 TEST_REQUIRES_ARM_NEON_V8;
3139 for (size_t channels = 48; channels < 192; channels += 24) {
3140 GAvgPoolMicrokernelTester()
3141 .rows(7)
3142 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003143 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003144 }
3145 }
3146
Marat Dukhan9e258d62022-01-12 10:50:51 -08003147 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_div_24_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003148 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003154 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003155 }
3156 }
3157 }
3158
Marat Dukhan9e258d62022-01-12 10:50:51 -08003159 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_lt_24_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003160 TEST_REQUIRES_ARM_NEON_V8;
3161 for (size_t channels = 1; channels < 24; channels++) {
3162 GAvgPoolMicrokernelTester()
3163 .rows(7)
3164 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003165 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003166 }
3167 }
3168
Marat Dukhan9e258d62022-01-12 10:50:51 -08003169 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_lt_24_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003170 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003176 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003177 }
3178 }
3179 }
3180
Marat Dukhan9e258d62022-01-12 10:50:51 -08003181 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_lt_24_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003182 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003188 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003189 }
3190 }
3191
Marat Dukhan9e258d62022-01-12 10:50:51 -08003192 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_lt_24_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003193 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003199 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003200 }
3201 }
3202
Marat Dukhan9e258d62022-01-12 10:50:51 -08003203 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_gt_24_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003204 TEST_REQUIRES_ARM_NEON_V8;
3205 for (size_t channels = 25; channels < 48; channels++) {
3206 GAvgPoolMicrokernelTester()
3207 .rows(7)
3208 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003209 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003210 }
3211 }
3212
Marat Dukhan9e258d62022-01-12 10:50:51 -08003213 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_gt_24_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003214 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003220 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003221 }
3222 }
3223 }
3224
Marat Dukhan9e258d62022-01-12 10:50:51 -08003225 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_gt_24_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003226 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003232 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003233 }
3234 }
3235
Marat Dukhan9e258d62022-01-12 10:50:51 -08003236 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C24, channels_gt_24_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003237 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003243 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c24, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003244 }
3245 }
3246#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3247
3248
3249#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan9e258d62022-01-12 10:50:51 -08003250 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003251 TEST_REQUIRES_ARM_NEON_V8;
3252 GAvgPoolMicrokernelTester()
3253 .rows(7)
3254 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08003255 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003256 }
3257
Marat Dukhan9e258d62022-01-12 10:50:51 -08003258 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003259 TEST_REQUIRES_ARM_NEON_V8;
3260 for (size_t rows = 1; rows < 7; rows++) {
3261 GAvgPoolMicrokernelTester()
3262 .rows(rows)
3263 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08003264 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003265 }
3266 }
3267
Marat Dukhan9e258d62022-01-12 10:50:51 -08003268 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_fulltile_with_input_stride) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003269 TEST_REQUIRES_ARM_NEON_V8;
3270 GAvgPoolMicrokernelTester()
3271 .rows(7)
3272 .channels(32)
3273 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08003274 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003275 }
3276
Marat Dukhan9e258d62022-01-12 10:50:51 -08003277 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003278 TEST_REQUIRES_ARM_NEON_V8;
3279 GAvgPoolMicrokernelTester()
3280 .rows(7)
3281 .channels(32)
3282 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003283 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003284 }
3285
Marat Dukhan9e258d62022-01-12 10:50:51 -08003286 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_eq_32_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003287 TEST_REQUIRES_ARM_NEON_V8;
3288 GAvgPoolMicrokernelTester()
3289 .rows(7)
3290 .channels(32)
3291 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003292 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003293 }
3294
Marat Dukhan9e258d62022-01-12 10:50:51 -08003295 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_div_32_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003296 TEST_REQUIRES_ARM_NEON_V8;
3297 for (size_t channels = 64; channels < 256; channels += 32) {
3298 GAvgPoolMicrokernelTester()
3299 .rows(7)
3300 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003301 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003302 }
3303 }
3304
Marat Dukhan9e258d62022-01-12 10:50:51 -08003305 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_div_32_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003306 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003312 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003313 }
3314 }
3315 }
3316
Marat Dukhan9e258d62022-01-12 10:50:51 -08003317 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_lt_32_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003318 TEST_REQUIRES_ARM_NEON_V8;
3319 for (size_t channels = 1; channels < 32; channels++) {
3320 GAvgPoolMicrokernelTester()
3321 .rows(7)
3322 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003323 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003324 }
3325 }
3326
Marat Dukhan9e258d62022-01-12 10:50:51 -08003327 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_lt_32_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003328 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003334 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003335 }
3336 }
3337 }
3338
Marat Dukhan9e258d62022-01-12 10:50:51 -08003339 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_lt_32_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003340 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003346 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003347 }
3348 }
3349
Marat Dukhan9e258d62022-01-12 10:50:51 -08003350 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_lt_32_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003351 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003357 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003358 }
3359 }
3360
Marat Dukhan9e258d62022-01-12 10:50:51 -08003361 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_gt_32_fulltile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003362 TEST_REQUIRES_ARM_NEON_V8;
3363 for (size_t channels = 33; channels < 64; channels++) {
3364 GAvgPoolMicrokernelTester()
3365 .rows(7)
3366 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003367 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003368 }
3369 }
3370
Marat Dukhan9e258d62022-01-12 10:50:51 -08003371 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_gt_32_subtile) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003372 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003378 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003379 }
3380 }
3381 }
3382
Marat Dukhan9e258d62022-01-12 10:50:51 -08003383 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_gt_32_fulltile_with_qmax) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003384 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003390 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003391 }
3392 }
3393
Marat Dukhan9e258d62022-01-12 10:50:51 -08003394 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__NEONV8_C32, channels_gt_32_fulltile_with_qmin) {
Marat Dukhand7a4b222022-01-11 22:25:20 -08003395 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003401 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__neonv8_c32, xnn_init_qs8_avgpool_minmax_fp32_neonv8_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08003402 }
3403 }
3404#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3405
3406
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003407#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08003408 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003409 TEST_REQUIRES_X86_SSE2;
3410 GAvgPoolMicrokernelTester()
3411 .rows(14)
3412 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08003413 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003414 }
3415
Marat Dukhan9e258d62022-01-12 10:50:51 -08003416 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003417 TEST_REQUIRES_X86_SSE2;
3418 GAvgPoolMicrokernelTester()
3419 .rows(14)
3420 .channels(8)
3421 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08003422 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003423 }
3424
Marat Dukhan9e258d62022-01-12 10:50:51 -08003425 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003426 TEST_REQUIRES_X86_SSE2;
3427 GAvgPoolMicrokernelTester()
3428 .rows(14)
3429 .channels(8)
3430 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003431 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003432 }
3433
Marat Dukhan9e258d62022-01-12 10:50:51 -08003434 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003435 TEST_REQUIRES_X86_SSE2;
3436 GAvgPoolMicrokernelTester()
3437 .rows(14)
3438 .channels(8)
3439 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003440 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003441 }
3442
Marat Dukhan9e258d62022-01-12 10:50:51 -08003443 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003444 TEST_REQUIRES_X86_SSE2;
3445 for (size_t rows = 8; rows < 14; rows++) {
3446 GAvgPoolMicrokernelTester()
3447 .rows(rows)
3448 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08003449 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003450 }
3451 }
3452
Marat Dukhan9e258d62022-01-12 10:50:51 -08003453 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003454 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003460 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003461 }
3462 }
3463
Marat Dukhan9e258d62022-01-12 10:50:51 -08003464 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003465 TEST_REQUIRES_X86_SSE2;
3466 for (size_t rows = 14; rows <= 35; rows += 7) {
3467 GAvgPoolMicrokernelTester()
3468 .rows(rows)
3469 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08003470 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003471 }
3472 }
3473
Marat Dukhan9e258d62022-01-12 10:50:51 -08003474 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003475 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003481 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003482 }
3483 }
3484
Marat Dukhan9e258d62022-01-12 10:50:51 -08003485 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_div_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003486 TEST_REQUIRES_X86_SSE2;
3487 for (size_t channels = 16; channels < 64; channels += 8) {
3488 GAvgPoolMicrokernelTester()
3489 .rows(14)
3490 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003491 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003492 }
3493 }
3494
Marat Dukhan9e258d62022-01-12 10:50:51 -08003495 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_div_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003496 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003502 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003503 }
3504 }
3505 }
3506
Marat Dukhan9e258d62022-01-12 10:50:51 -08003507 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_div_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003508 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003514 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003515 }
3516 }
3517 }
3518
Marat Dukhan9e258d62022-01-12 10:50:51 -08003519 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_div_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003520 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003527 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003528 }
3529 }
3530 }
3531
Marat Dukhan9e258d62022-01-12 10:50:51 -08003532 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003533 TEST_REQUIRES_X86_SSE2;
3534 for (size_t channels = 1; channels < 8; channels++) {
3535 GAvgPoolMicrokernelTester()
3536 .rows(14)
3537 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003538 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003539 }
3540 }
3541
Marat Dukhan9e258d62022-01-12 10:50:51 -08003542 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003543 TEST_REQUIRES_X86_SSE2;
3544 for (size_t channels = 1; channels < 8; channels++) {
3545 GAvgPoolMicrokernelTester()
3546 .rows(14)
3547 .channels(channels)
3548 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003549 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003550 }
3551 }
3552
Marat Dukhan9e258d62022-01-12 10:50:51 -08003553 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003554 TEST_REQUIRES_X86_SSE2;
3555 for (size_t channels = 1; channels < 8; channels++) {
3556 GAvgPoolMicrokernelTester()
3557 .rows(14)
3558 .channels(channels)
3559 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003560 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003561 }
3562 }
3563
Marat Dukhan9e258d62022-01-12 10:50:51 -08003564 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003565 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003571 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003572 }
3573 }
3574 }
3575
Marat Dukhan9e258d62022-01-12 10:50:51 -08003576 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003577 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003583 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003584 }
3585 }
3586 }
3587
Marat Dukhan9e258d62022-01-12 10:50:51 -08003588 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003589 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003596 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003597 }
3598 }
3599 }
3600
Marat Dukhan9e258d62022-01-12 10:50:51 -08003601 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003602 TEST_REQUIRES_X86_SSE2;
3603 for (size_t channels = 9; channels < 16; channels++) {
3604 GAvgPoolMicrokernelTester()
3605 .rows(14)
3606 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003607 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003608 }
3609 }
3610
Marat Dukhan9e258d62022-01-12 10:50:51 -08003611 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003612 TEST_REQUIRES_X86_SSE2;
3613 for (size_t channels = 9; channels < 16; channels++) {
3614 GAvgPoolMicrokernelTester()
3615 .rows(14)
3616 .channels(channels)
3617 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003618 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003619 }
3620 }
3621
Marat Dukhan9e258d62022-01-12 10:50:51 -08003622 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003623 TEST_REQUIRES_X86_SSE2;
3624 for (size_t channels = 9; channels < 16; channels++) {
3625 GAvgPoolMicrokernelTester()
3626 .rows(14)
3627 .channels(channels)
3628 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003629 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003630 }
3631 }
3632
Marat Dukhan9e258d62022-01-12 10:50:51 -08003633 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003634 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003640 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003641 }
3642 }
3643 }
3644
Marat Dukhan9e258d62022-01-12 10:50:51 -08003645 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003646 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003652 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003653 }
3654 }
3655 }
3656
Marat Dukhan9e258d62022-01-12 10:50:51 -08003657 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003658 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003665 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003666 }
3667 }
3668 }
3669#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3670
3671
3672#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08003673 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003674 TEST_REQUIRES_X86_SSE2;
3675 GAvgPoolMicrokernelTester()
3676 .rows(14)
3677 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08003678 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003679 }
3680
Marat Dukhan9e258d62022-01-12 10:50:51 -08003681 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003682 TEST_REQUIRES_X86_SSE2;
3683 GAvgPoolMicrokernelTester()
3684 .rows(14)
3685 .channels(16)
3686 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08003687 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003688 }
3689
Marat Dukhan9e258d62022-01-12 10:50:51 -08003690 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003691 TEST_REQUIRES_X86_SSE2;
3692 GAvgPoolMicrokernelTester()
3693 .rows(14)
3694 .channels(16)
3695 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003696 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003697 }
3698
Marat Dukhan9e258d62022-01-12 10:50:51 -08003699 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003700 TEST_REQUIRES_X86_SSE2;
3701 GAvgPoolMicrokernelTester()
3702 .rows(14)
3703 .channels(16)
3704 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003705 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003706 }
3707
Marat Dukhan9e258d62022-01-12 10:50:51 -08003708 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003709 TEST_REQUIRES_X86_SSE2;
3710 for (size_t rows = 8; rows < 14; rows++) {
3711 GAvgPoolMicrokernelTester()
3712 .rows(rows)
3713 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08003714 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003715 }
3716 }
3717
Marat Dukhan9e258d62022-01-12 10:50:51 -08003718 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003719 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003725 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003726 }
3727 }
3728
Marat Dukhan9e258d62022-01-12 10:50:51 -08003729 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003730 TEST_REQUIRES_X86_SSE2;
3731 for (size_t rows = 14; rows <= 35; rows += 7) {
3732 GAvgPoolMicrokernelTester()
3733 .rows(rows)
3734 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08003735 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003736 }
3737 }
3738
Marat Dukhan9e258d62022-01-12 10:50:51 -08003739 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003740 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003746 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003747 }
3748 }
3749
Marat Dukhan9e258d62022-01-12 10:50:51 -08003750 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_div_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003751 TEST_REQUIRES_X86_SSE2;
3752 for (size_t channels = 32; channels < 128; channels += 16) {
3753 GAvgPoolMicrokernelTester()
3754 .rows(14)
3755 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003756 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003757 }
3758 }
3759
Marat Dukhan9e258d62022-01-12 10:50:51 -08003760 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_div_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003761 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003767 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003768 }
3769 }
3770 }
3771
Marat Dukhan9e258d62022-01-12 10:50:51 -08003772 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_div_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003773 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003779 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003780 }
3781 }
3782 }
3783
Marat Dukhan9e258d62022-01-12 10:50:51 -08003784 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_div_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003785 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003792 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003793 }
3794 }
3795 }
3796
Marat Dukhan9e258d62022-01-12 10:50:51 -08003797 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003798 TEST_REQUIRES_X86_SSE2;
3799 for (size_t channels = 1; channels < 16; channels++) {
3800 GAvgPoolMicrokernelTester()
3801 .rows(14)
3802 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003803 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003804 }
3805 }
3806
Marat Dukhan9e258d62022-01-12 10:50:51 -08003807 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003808 TEST_REQUIRES_X86_SSE2;
3809 for (size_t channels = 1; channels < 16; channels++) {
3810 GAvgPoolMicrokernelTester()
3811 .rows(14)
3812 .channels(channels)
3813 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003814 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003815 }
3816 }
3817
Marat Dukhan9e258d62022-01-12 10:50:51 -08003818 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003819 TEST_REQUIRES_X86_SSE2;
3820 for (size_t channels = 1; channels < 16; channels++) {
3821 GAvgPoolMicrokernelTester()
3822 .rows(14)
3823 .channels(channels)
3824 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003825 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003826 }
3827 }
3828
Marat Dukhan9e258d62022-01-12 10:50:51 -08003829 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003830 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003836 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003837 }
3838 }
3839 }
3840
Marat Dukhan9e258d62022-01-12 10:50:51 -08003841 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003842 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003848 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003849 }
3850 }
3851 }
3852
Marat Dukhan9e258d62022-01-12 10:50:51 -08003853 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003854 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003861 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003862 }
3863 }
3864 }
3865
Marat Dukhan9e258d62022-01-12 10:50:51 -08003866 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003867 TEST_REQUIRES_X86_SSE2;
3868 for (size_t channels = 17; channels < 32; channels++) {
3869 GAvgPoolMicrokernelTester()
3870 .rows(14)
3871 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08003872 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003873 }
3874 }
3875
Marat Dukhan9e258d62022-01-12 10:50:51 -08003876 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003877 TEST_REQUIRES_X86_SSE2;
3878 for (size_t channels = 17; channels < 32; channels++) {
3879 GAvgPoolMicrokernelTester()
3880 .rows(14)
3881 .channels(channels)
3882 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003883 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003884 }
3885 }
3886
Marat Dukhan9e258d62022-01-12 10:50:51 -08003887 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003888 TEST_REQUIRES_X86_SSE2;
3889 for (size_t channels = 17; channels < 32; channels++) {
3890 GAvgPoolMicrokernelTester()
3891 .rows(14)
3892 .channels(channels)
3893 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003894 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003895 }
3896 }
3897
Marat Dukhan9e258d62022-01-12 10:50:51 -08003898 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003899 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003905 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003906 }
3907 }
3908 }
3909
Marat Dukhan9e258d62022-01-12 10:50:51 -08003910 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003911 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003917 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003918 }
3919 }
3920 }
3921
Marat Dukhan9e258d62022-01-12 10:50:51 -08003922 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003923 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003930 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003931 }
3932 }
3933 }
3934#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3935
3936
3937#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08003938 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003939 TEST_REQUIRES_X86_SSE2;
3940 GAvgPoolMicrokernelTester()
3941 .rows(14)
3942 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08003943 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003944 }
3945
Marat Dukhan9e258d62022-01-12 10:50:51 -08003946 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003947 TEST_REQUIRES_X86_SSE2;
3948 GAvgPoolMicrokernelTester()
3949 .rows(14)
3950 .channels(24)
3951 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08003952 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003953 }
3954
Marat Dukhan9e258d62022-01-12 10:50:51 -08003955 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003956 TEST_REQUIRES_X86_SSE2;
3957 GAvgPoolMicrokernelTester()
3958 .rows(14)
3959 .channels(24)
3960 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003961 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003962 }
3963
Marat Dukhan9e258d62022-01-12 10:50:51 -08003964 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003965 TEST_REQUIRES_X86_SSE2;
3966 GAvgPoolMicrokernelTester()
3967 .rows(14)
3968 .channels(24)
3969 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08003970 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003971 }
3972
Marat Dukhan9e258d62022-01-12 10:50:51 -08003973 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003974 TEST_REQUIRES_X86_SSE2;
3975 for (size_t rows = 8; rows < 14; rows++) {
3976 GAvgPoolMicrokernelTester()
3977 .rows(rows)
3978 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08003979 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003980 }
3981 }
3982
Marat Dukhan9e258d62022-01-12 10:50:51 -08003983 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003984 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)
Marat Dukhan85755042022-01-13 01:46:05 -08003990 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003991 }
3992 }
3993
Marat Dukhan9e258d62022-01-12 10:50:51 -08003994 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08003995 TEST_REQUIRES_X86_SSE2;
3996 for (size_t rows = 14; rows <= 35; rows += 7) {
3997 GAvgPoolMicrokernelTester()
3998 .rows(rows)
3999 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08004000 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004001 }
4002 }
4003
Marat Dukhan9e258d62022-01-12 10:50:51 -08004004 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004005 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004011 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004012 }
4013 }
4014
Marat Dukhan9e258d62022-01-12 10:50:51 -08004015 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_div_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004016 TEST_REQUIRES_X86_SSE2;
4017 for (size_t channels = 48; channels < 192; channels += 24) {
4018 GAvgPoolMicrokernelTester()
4019 .rows(14)
4020 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004021 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004022 }
4023 }
4024
Marat Dukhan9e258d62022-01-12 10:50:51 -08004025 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_div_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004026 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004032 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004033 }
4034 }
4035 }
4036
Marat Dukhan9e258d62022-01-12 10:50:51 -08004037 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_div_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004038 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004044 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004045 }
4046 }
4047 }
4048
Marat Dukhan9e258d62022-01-12 10:50:51 -08004049 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_div_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004050 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004057 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004058 }
4059 }
4060 }
4061
Marat Dukhan9e258d62022-01-12 10:50:51 -08004062 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004063 TEST_REQUIRES_X86_SSE2;
4064 for (size_t channels = 1; channels < 24; channels++) {
4065 GAvgPoolMicrokernelTester()
4066 .rows(14)
4067 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004068 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004069 }
4070 }
4071
Marat Dukhan9e258d62022-01-12 10:50:51 -08004072 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004073 TEST_REQUIRES_X86_SSE2;
4074 for (size_t channels = 1; channels < 24; channels++) {
4075 GAvgPoolMicrokernelTester()
4076 .rows(14)
4077 .channels(channels)
4078 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004079 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004080 }
4081 }
4082
Marat Dukhan9e258d62022-01-12 10:50:51 -08004083 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004084 TEST_REQUIRES_X86_SSE2;
4085 for (size_t channels = 1; channels < 24; channels++) {
4086 GAvgPoolMicrokernelTester()
4087 .rows(14)
4088 .channels(channels)
4089 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004090 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004091 }
4092 }
4093
Marat Dukhan9e258d62022-01-12 10:50:51 -08004094 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004095 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004101 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004102 }
4103 }
4104 }
4105
Marat Dukhan9e258d62022-01-12 10:50:51 -08004106 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004107 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004113 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004114 }
4115 }
4116 }
4117
Marat Dukhan9e258d62022-01-12 10:50:51 -08004118 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004119 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004126 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004127 }
4128 }
4129 }
4130
Marat Dukhan9e258d62022-01-12 10:50:51 -08004131 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004132 TEST_REQUIRES_X86_SSE2;
4133 for (size_t channels = 25; channels < 48; channels++) {
4134 GAvgPoolMicrokernelTester()
4135 .rows(14)
4136 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004137 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004138 }
4139 }
4140
Marat Dukhan9e258d62022-01-12 10:50:51 -08004141 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004142 TEST_REQUIRES_X86_SSE2;
4143 for (size_t channels = 25; channels < 48; channels++) {
4144 GAvgPoolMicrokernelTester()
4145 .rows(14)
4146 .channels(channels)
4147 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004148 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004149 }
4150 }
4151
Marat Dukhan9e258d62022-01-12 10:50:51 -08004152 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004153 TEST_REQUIRES_X86_SSE2;
4154 for (size_t channels = 25; channels < 48; channels++) {
4155 GAvgPoolMicrokernelTester()
4156 .rows(14)
4157 .channels(channels)
4158 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004159 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004160 }
4161 }
4162
Marat Dukhan9e258d62022-01-12 10:50:51 -08004163 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004164 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004170 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004171 }
4172 }
4173 }
4174
Marat Dukhan9e258d62022-01-12 10:50:51 -08004175 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004176 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004182 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004183 }
4184 }
4185 }
4186
Marat Dukhan9e258d62022-01-12 10:50:51 -08004187 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE2_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004188 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)
Marat Dukhan85755042022-01-13 01:46:05 -08004195 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004196 }
4197 }
4198 }
4199#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4200
4201
4202#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08004203 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004204 TEST_REQUIRES_X86_SSE2;
4205 GAvgPoolMicrokernelTester()
4206 .rows(7)
4207 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08004208 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004209 }
4210
Marat Dukhan9e258d62022-01-12 10:50:51 -08004211 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004212 TEST_REQUIRES_X86_SSE2;
4213 for (size_t rows = 1; rows < 7; rows++) {
4214 GAvgPoolMicrokernelTester()
4215 .rows(rows)
4216 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08004217 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004218 }
4219 }
4220
Marat Dukhan9e258d62022-01-12 10:50:51 -08004221 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004222 TEST_REQUIRES_X86_SSE2;
4223 GAvgPoolMicrokernelTester()
4224 .rows(7)
4225 .channels(8)
4226 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08004227 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004228 }
4229
Marat Dukhan9e258d62022-01-12 10:50:51 -08004230 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004231 TEST_REQUIRES_X86_SSE2;
4232 GAvgPoolMicrokernelTester()
4233 .rows(7)
4234 .channels(8)
4235 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004236 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004237 }
4238
Marat Dukhan9e258d62022-01-12 10:50:51 -08004239 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_eq_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004240 TEST_REQUIRES_X86_SSE2;
4241 GAvgPoolMicrokernelTester()
4242 .rows(7)
4243 .channels(8)
4244 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004245 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004246 }
4247
Marat Dukhan9e258d62022-01-12 10:50:51 -08004248 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_div_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004249 TEST_REQUIRES_X86_SSE2;
4250 for (size_t channels = 16; channels < 64; channels += 8) {
4251 GAvgPoolMicrokernelTester()
4252 .rows(7)
4253 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004254 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004255 }
4256 }
4257
Marat Dukhan9e258d62022-01-12 10:50:51 -08004258 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_div_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004259 TEST_REQUIRES_X86_SSE2;
4260 for (size_t channels = 16; channels < 64; channels += 8) {
4261 for (size_t rows = 1; rows < 7; rows++) {
4262 GAvgPoolMicrokernelTester()
4263 .rows(rows)
4264 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004265 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004266 }
4267 }
4268 }
4269
Marat Dukhan9e258d62022-01-12 10:50:51 -08004270 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_lt_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004271 TEST_REQUIRES_X86_SSE2;
4272 for (size_t channels = 1; channels < 8; channels++) {
4273 GAvgPoolMicrokernelTester()
4274 .rows(7)
4275 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004276 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004277 }
4278 }
4279
Marat Dukhan9e258d62022-01-12 10:50:51 -08004280 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_lt_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004281 TEST_REQUIRES_X86_SSE2;
4282 for (size_t channels = 1; channels < 8; channels++) {
4283 for (size_t rows = 1; rows < 7; rows++) {
4284 GAvgPoolMicrokernelTester()
4285 .rows(rows)
4286 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004287 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004288 }
4289 }
4290 }
4291
Marat Dukhan9e258d62022-01-12 10:50:51 -08004292 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_lt_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004293 TEST_REQUIRES_X86_SSE2;
4294 for (size_t channels = 1; channels < 8; channels++) {
4295 GAvgPoolMicrokernelTester()
4296 .rows(7)
4297 .channels(channels)
4298 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004299 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004300 }
4301 }
4302
Marat Dukhan9e258d62022-01-12 10:50:51 -08004303 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_lt_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004304 TEST_REQUIRES_X86_SSE2;
4305 for (size_t channels = 1; channels < 8; channels++) {
4306 GAvgPoolMicrokernelTester()
4307 .rows(7)
4308 .channels(channels)
4309 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004310 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004311 }
4312 }
4313
Marat Dukhan9e258d62022-01-12 10:50:51 -08004314 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_gt_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004315 TEST_REQUIRES_X86_SSE2;
4316 for (size_t channels = 9; channels < 16; channels++) {
4317 GAvgPoolMicrokernelTester()
4318 .rows(7)
4319 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004320 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004321 }
4322 }
4323
Marat Dukhan9e258d62022-01-12 10:50:51 -08004324 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_gt_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004325 TEST_REQUIRES_X86_SSE2;
4326 for (size_t channels = 9; channels < 16; channels++) {
4327 for (size_t rows = 1; rows < 7; rows++) {
4328 GAvgPoolMicrokernelTester()
4329 .rows(rows)
4330 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004331 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004332 }
4333 }
4334 }
4335
Marat Dukhan9e258d62022-01-12 10:50:51 -08004336 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_gt_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004337 TEST_REQUIRES_X86_SSE2;
4338 for (size_t channels = 9; channels < 16; channels++) {
4339 GAvgPoolMicrokernelTester()
4340 .rows(7)
4341 .channels(channels)
4342 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004343 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004344 }
4345 }
4346
Marat Dukhan9e258d62022-01-12 10:50:51 -08004347 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C8, channels_gt_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004348 TEST_REQUIRES_X86_SSE2;
4349 for (size_t channels = 9; channels < 16; channels++) {
4350 GAvgPoolMicrokernelTester()
4351 .rows(7)
4352 .channels(channels)
4353 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004354 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c8, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004355 }
4356 }
4357#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4358
4359
4360#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08004361 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004362 TEST_REQUIRES_X86_SSE2;
4363 GAvgPoolMicrokernelTester()
4364 .rows(7)
4365 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08004366 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004367 }
4368
Marat Dukhan9e258d62022-01-12 10:50:51 -08004369 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004370 TEST_REQUIRES_X86_SSE2;
4371 for (size_t rows = 1; rows < 7; rows++) {
4372 GAvgPoolMicrokernelTester()
4373 .rows(rows)
4374 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08004375 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004376 }
4377 }
4378
Marat Dukhan9e258d62022-01-12 10:50:51 -08004379 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004380 TEST_REQUIRES_X86_SSE2;
4381 GAvgPoolMicrokernelTester()
4382 .rows(7)
4383 .channels(16)
4384 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08004385 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004386 }
4387
Marat Dukhan9e258d62022-01-12 10:50:51 -08004388 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004389 TEST_REQUIRES_X86_SSE2;
4390 GAvgPoolMicrokernelTester()
4391 .rows(7)
4392 .channels(16)
4393 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004394 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004395 }
4396
Marat Dukhan9e258d62022-01-12 10:50:51 -08004397 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_eq_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004398 TEST_REQUIRES_X86_SSE2;
4399 GAvgPoolMicrokernelTester()
4400 .rows(7)
4401 .channels(16)
4402 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004403 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004404 }
4405
Marat Dukhan9e258d62022-01-12 10:50:51 -08004406 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_div_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004407 TEST_REQUIRES_X86_SSE2;
4408 for (size_t channels = 32; channels < 128; channels += 16) {
4409 GAvgPoolMicrokernelTester()
4410 .rows(7)
4411 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004412 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004413 }
4414 }
4415
Marat Dukhan9e258d62022-01-12 10:50:51 -08004416 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_div_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004417 TEST_REQUIRES_X86_SSE2;
4418 for (size_t channels = 32; channels < 128; channels += 16) {
4419 for (size_t rows = 1; rows < 7; rows++) {
4420 GAvgPoolMicrokernelTester()
4421 .rows(rows)
4422 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004423 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004424 }
4425 }
4426 }
4427
Marat Dukhan9e258d62022-01-12 10:50:51 -08004428 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_lt_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004429 TEST_REQUIRES_X86_SSE2;
4430 for (size_t channels = 1; channels < 16; channels++) {
4431 GAvgPoolMicrokernelTester()
4432 .rows(7)
4433 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004434 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004435 }
4436 }
4437
Marat Dukhan9e258d62022-01-12 10:50:51 -08004438 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_lt_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004439 TEST_REQUIRES_X86_SSE2;
4440 for (size_t channels = 1; channels < 16; channels++) {
4441 for (size_t rows = 1; rows < 7; rows++) {
4442 GAvgPoolMicrokernelTester()
4443 .rows(rows)
4444 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004445 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004446 }
4447 }
4448 }
4449
Marat Dukhan9e258d62022-01-12 10:50:51 -08004450 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_lt_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004451 TEST_REQUIRES_X86_SSE2;
4452 for (size_t channels = 1; channels < 16; channels++) {
4453 GAvgPoolMicrokernelTester()
4454 .rows(7)
4455 .channels(channels)
4456 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004457 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004458 }
4459 }
4460
Marat Dukhan9e258d62022-01-12 10:50:51 -08004461 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_lt_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004462 TEST_REQUIRES_X86_SSE2;
4463 for (size_t channels = 1; channels < 16; channels++) {
4464 GAvgPoolMicrokernelTester()
4465 .rows(7)
4466 .channels(channels)
4467 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004468 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004469 }
4470 }
4471
Marat Dukhan9e258d62022-01-12 10:50:51 -08004472 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_gt_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004473 TEST_REQUIRES_X86_SSE2;
4474 for (size_t channels = 17; channels < 32; channels++) {
4475 GAvgPoolMicrokernelTester()
4476 .rows(7)
4477 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004478 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004479 }
4480 }
4481
Marat Dukhan9e258d62022-01-12 10:50:51 -08004482 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_gt_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004483 TEST_REQUIRES_X86_SSE2;
4484 for (size_t channels = 17; channels < 32; channels++) {
4485 for (size_t rows = 1; rows < 7; rows++) {
4486 GAvgPoolMicrokernelTester()
4487 .rows(rows)
4488 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004489 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004490 }
4491 }
4492 }
4493
Marat Dukhan9e258d62022-01-12 10:50:51 -08004494 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_gt_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004495 TEST_REQUIRES_X86_SSE2;
4496 for (size_t channels = 17; channels < 32; channels++) {
4497 GAvgPoolMicrokernelTester()
4498 .rows(7)
4499 .channels(channels)
4500 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004501 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004502 }
4503 }
4504
Marat Dukhan9e258d62022-01-12 10:50:51 -08004505 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C16, channels_gt_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004506 TEST_REQUIRES_X86_SSE2;
4507 for (size_t channels = 17; channels < 32; channels++) {
4508 GAvgPoolMicrokernelTester()
4509 .rows(7)
4510 .channels(channels)
4511 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004512 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c16, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004513 }
4514 }
4515#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4516
4517
4518#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08004519 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004520 TEST_REQUIRES_X86_SSE2;
4521 GAvgPoolMicrokernelTester()
4522 .rows(7)
4523 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08004524 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004525 }
4526
Marat Dukhan9e258d62022-01-12 10:50:51 -08004527 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004528 TEST_REQUIRES_X86_SSE2;
4529 for (size_t rows = 1; rows < 7; rows++) {
4530 GAvgPoolMicrokernelTester()
4531 .rows(rows)
4532 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08004533 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004534 }
4535 }
4536
Marat Dukhan9e258d62022-01-12 10:50:51 -08004537 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004538 TEST_REQUIRES_X86_SSE2;
4539 GAvgPoolMicrokernelTester()
4540 .rows(7)
4541 .channels(24)
4542 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08004543 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004544 }
4545
Marat Dukhan9e258d62022-01-12 10:50:51 -08004546 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004547 TEST_REQUIRES_X86_SSE2;
4548 GAvgPoolMicrokernelTester()
4549 .rows(7)
4550 .channels(24)
4551 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004552 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004553 }
4554
Marat Dukhan9e258d62022-01-12 10:50:51 -08004555 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_eq_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004556 TEST_REQUIRES_X86_SSE2;
4557 GAvgPoolMicrokernelTester()
4558 .rows(7)
4559 .channels(24)
4560 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004561 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004562 }
4563
Marat Dukhan9e258d62022-01-12 10:50:51 -08004564 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_div_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004565 TEST_REQUIRES_X86_SSE2;
4566 for (size_t channels = 48; channels < 192; channels += 24) {
4567 GAvgPoolMicrokernelTester()
4568 .rows(7)
4569 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004570 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004571 }
4572 }
4573
Marat Dukhan9e258d62022-01-12 10:50:51 -08004574 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_div_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004575 TEST_REQUIRES_X86_SSE2;
4576 for (size_t channels = 48; channels < 192; channels += 24) {
4577 for (size_t rows = 1; rows < 7; rows++) {
4578 GAvgPoolMicrokernelTester()
4579 .rows(rows)
4580 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004581 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004582 }
4583 }
4584 }
4585
Marat Dukhan9e258d62022-01-12 10:50:51 -08004586 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_lt_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004587 TEST_REQUIRES_X86_SSE2;
4588 for (size_t channels = 1; channels < 24; channels++) {
4589 GAvgPoolMicrokernelTester()
4590 .rows(7)
4591 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004592 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004593 }
4594 }
4595
Marat Dukhan9e258d62022-01-12 10:50:51 -08004596 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_lt_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004597 TEST_REQUIRES_X86_SSE2;
4598 for (size_t channels = 1; channels < 24; channels++) {
4599 for (size_t rows = 1; rows < 7; rows++) {
4600 GAvgPoolMicrokernelTester()
4601 .rows(rows)
4602 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004603 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004604 }
4605 }
4606 }
4607
Marat Dukhan9e258d62022-01-12 10:50:51 -08004608 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_lt_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004609 TEST_REQUIRES_X86_SSE2;
4610 for (size_t channels = 1; channels < 24; channels++) {
4611 GAvgPoolMicrokernelTester()
4612 .rows(7)
4613 .channels(channels)
4614 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004615 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004616 }
4617 }
4618
Marat Dukhan9e258d62022-01-12 10:50:51 -08004619 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_lt_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004620 TEST_REQUIRES_X86_SSE2;
4621 for (size_t channels = 1; channels < 24; channels++) {
4622 GAvgPoolMicrokernelTester()
4623 .rows(7)
4624 .channels(channels)
4625 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004626 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004627 }
4628 }
4629
Marat Dukhan9e258d62022-01-12 10:50:51 -08004630 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_gt_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004631 TEST_REQUIRES_X86_SSE2;
4632 for (size_t channels = 25; channels < 48; channels++) {
4633 GAvgPoolMicrokernelTester()
4634 .rows(7)
4635 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004636 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004637 }
4638 }
4639
Marat Dukhan9e258d62022-01-12 10:50:51 -08004640 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_gt_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004641 TEST_REQUIRES_X86_SSE2;
4642 for (size_t channels = 25; channels < 48; channels++) {
4643 for (size_t rows = 1; rows < 7; rows++) {
4644 GAvgPoolMicrokernelTester()
4645 .rows(rows)
4646 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004647 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004648 }
4649 }
4650 }
4651
Marat Dukhan9e258d62022-01-12 10:50:51 -08004652 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_gt_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004653 TEST_REQUIRES_X86_SSE2;
4654 for (size_t channels = 25; channels < 48; channels++) {
4655 GAvgPoolMicrokernelTester()
4656 .rows(7)
4657 .channels(channels)
4658 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004659 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004660 }
4661 }
4662
Marat Dukhan9e258d62022-01-12 10:50:51 -08004663 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE2_C24, channels_gt_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004664 TEST_REQUIRES_X86_SSE2;
4665 for (size_t channels = 25; channels < 48; channels++) {
4666 GAvgPoolMicrokernelTester()
4667 .rows(7)
4668 .channels(channels)
4669 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004670 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse2_c24, xnn_init_qs8_avgpool_minmax_fp32_sse2_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004671 }
4672 }
4673#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4674
4675
4676#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08004677 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004678 TEST_REQUIRES_X86_SSE41;
4679 GAvgPoolMicrokernelTester()
4680 .rows(14)
4681 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08004682 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004683 }
4684
Marat Dukhan9e258d62022-01-12 10:50:51 -08004685 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004686 TEST_REQUIRES_X86_SSE41;
4687 GAvgPoolMicrokernelTester()
4688 .rows(14)
4689 .channels(8)
4690 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08004691 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004692 }
4693
Marat Dukhan9e258d62022-01-12 10:50:51 -08004694 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004695 TEST_REQUIRES_X86_SSE41;
4696 GAvgPoolMicrokernelTester()
4697 .rows(14)
4698 .channels(8)
4699 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004700 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004701 }
4702
Marat Dukhan9e258d62022-01-12 10:50:51 -08004703 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004704 TEST_REQUIRES_X86_SSE41;
4705 GAvgPoolMicrokernelTester()
4706 .rows(14)
4707 .channels(8)
4708 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004709 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004710 }
4711
Marat Dukhan9e258d62022-01-12 10:50:51 -08004712 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004713 TEST_REQUIRES_X86_SSE41;
4714 for (size_t rows = 8; rows < 14; rows++) {
4715 GAvgPoolMicrokernelTester()
4716 .rows(rows)
4717 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08004718 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004719 }
4720 }
4721
Marat Dukhan9e258d62022-01-12 10:50:51 -08004722 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004723 TEST_REQUIRES_X86_SSE41;
4724 for (size_t rows = 8; rows < 14; rows++) {
4725 GAvgPoolMicrokernelTester()
4726 .rows(rows)
4727 .channels(8)
4728 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08004729 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004730 }
4731 }
4732
Marat Dukhan9e258d62022-01-12 10:50:51 -08004733 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004734 TEST_REQUIRES_X86_SSE41;
4735 for (size_t rows = 14; rows <= 35; rows += 7) {
4736 GAvgPoolMicrokernelTester()
4737 .rows(rows)
4738 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08004739 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004740 }
4741 }
4742
Marat Dukhan9e258d62022-01-12 10:50:51 -08004743 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004744 TEST_REQUIRES_X86_SSE41;
4745 for (size_t rows = 14; rows <= 35; rows += 7) {
4746 GAvgPoolMicrokernelTester()
4747 .rows(rows)
4748 .channels(8)
4749 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08004750 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004751 }
4752 }
4753
Marat Dukhan9e258d62022-01-12 10:50:51 -08004754 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_div_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004755 TEST_REQUIRES_X86_SSE41;
4756 for (size_t channels = 16; channels < 64; channels += 8) {
4757 GAvgPoolMicrokernelTester()
4758 .rows(14)
4759 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004760 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004761 }
4762 }
4763
Marat Dukhan9e258d62022-01-12 10:50:51 -08004764 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_div_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004765 TEST_REQUIRES_X86_SSE41;
4766 for (size_t channels = 16; channels < 64; channels += 8) {
4767 for (size_t rows = 8; rows < 14; rows++) {
4768 GAvgPoolMicrokernelTester()
4769 .rows(rows)
4770 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004771 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004772 }
4773 }
4774 }
4775
Marat Dukhan9e258d62022-01-12 10:50:51 -08004776 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_div_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004777 TEST_REQUIRES_X86_SSE41;
4778 for (size_t channels = 16; channels < 64; channels += 8) {
4779 for (size_t rows = 14; rows <= 35; rows += 7) {
4780 GAvgPoolMicrokernelTester()
4781 .rows(rows)
4782 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004783 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004784 }
4785 }
4786 }
4787
Marat Dukhan9e258d62022-01-12 10:50:51 -08004788 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_div_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004789 TEST_REQUIRES_X86_SSE41;
4790 for (size_t channels = 16; channels < 64; channels += 8) {
4791 for (size_t rows = 14; rows <= 35; rows += 7) {
4792 GAvgPoolMicrokernelTester()
4793 .rows(rows)
4794 .channels(channels)
4795 .input_stride(131)
Marat Dukhan85755042022-01-13 01:46:05 -08004796 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004797 }
4798 }
4799 }
4800
Marat Dukhan9e258d62022-01-12 10:50:51 -08004801 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004802 TEST_REQUIRES_X86_SSE41;
4803 for (size_t channels = 1; channels < 8; channels++) {
4804 GAvgPoolMicrokernelTester()
4805 .rows(14)
4806 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004807 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004808 }
4809 }
4810
Marat Dukhan9e258d62022-01-12 10:50:51 -08004811 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004812 TEST_REQUIRES_X86_SSE41;
4813 for (size_t channels = 1; channels < 8; channels++) {
4814 GAvgPoolMicrokernelTester()
4815 .rows(14)
4816 .channels(channels)
4817 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004818 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004819 }
4820 }
4821
Marat Dukhan9e258d62022-01-12 10:50:51 -08004822 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004823 TEST_REQUIRES_X86_SSE41;
4824 for (size_t channels = 1; channels < 8; channels++) {
4825 GAvgPoolMicrokernelTester()
4826 .rows(14)
4827 .channels(channels)
4828 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004829 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004830 }
4831 }
4832
Marat Dukhan9e258d62022-01-12 10:50:51 -08004833 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004834 TEST_REQUIRES_X86_SSE41;
4835 for (size_t channels = 1; channels < 8; channels++) {
4836 for (size_t rows = 8; rows < 14; rows++) {
4837 GAvgPoolMicrokernelTester()
4838 .rows(rows)
4839 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004840 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004841 }
4842 }
4843 }
4844
Marat Dukhan9e258d62022-01-12 10:50:51 -08004845 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004846 TEST_REQUIRES_X86_SSE41;
4847 for (size_t channels = 1; channels < 8; channels++) {
4848 for (size_t rows = 14; rows <= 35; rows += 7) {
4849 GAvgPoolMicrokernelTester()
4850 .rows(rows)
4851 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004852 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004853 }
4854 }
4855 }
4856
Marat Dukhan9e258d62022-01-12 10:50:51 -08004857 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004858 TEST_REQUIRES_X86_SSE41;
4859 for (size_t channels = 1; channels < 8; channels++) {
4860 for (size_t rows = 14; rows <= 35; rows += 7) {
4861 GAvgPoolMicrokernelTester()
4862 .rows(rows)
4863 .channels(channels)
4864 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08004865 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004866 }
4867 }
4868 }
4869
Marat Dukhan9e258d62022-01-12 10:50:51 -08004870 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004871 TEST_REQUIRES_X86_SSE41;
4872 for (size_t channels = 9; channels < 16; channels++) {
4873 GAvgPoolMicrokernelTester()
4874 .rows(14)
4875 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004876 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004877 }
4878 }
4879
Marat Dukhan9e258d62022-01-12 10:50:51 -08004880 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004881 TEST_REQUIRES_X86_SSE41;
4882 for (size_t channels = 9; channels < 16; channels++) {
4883 GAvgPoolMicrokernelTester()
4884 .rows(14)
4885 .channels(channels)
4886 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004887 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004888 }
4889 }
4890
Marat Dukhan9e258d62022-01-12 10:50:51 -08004891 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004892 TEST_REQUIRES_X86_SSE41;
4893 for (size_t channels = 9; channels < 16; channels++) {
4894 GAvgPoolMicrokernelTester()
4895 .rows(14)
4896 .channels(channels)
4897 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004898 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004899 }
4900 }
4901
Marat Dukhan9e258d62022-01-12 10:50:51 -08004902 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004903 TEST_REQUIRES_X86_SSE41;
4904 for (size_t channels = 9; channels < 16; channels++) {
4905 for (size_t rows = 8; rows < 14; rows++) {
4906 GAvgPoolMicrokernelTester()
4907 .rows(rows)
4908 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004909 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004910 }
4911 }
4912 }
4913
Marat Dukhan9e258d62022-01-12 10:50:51 -08004914 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004915 TEST_REQUIRES_X86_SSE41;
4916 for (size_t channels = 9; channels < 16; channels++) {
4917 for (size_t rows = 14; rows < 35; rows += 14) {
4918 GAvgPoolMicrokernelTester()
4919 .rows(rows)
4920 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08004921 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004922 }
4923 }
4924 }
4925
Marat Dukhan9e258d62022-01-12 10:50:51 -08004926 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004927 TEST_REQUIRES_X86_SSE41;
4928 for (size_t channels = 9; channels < 16; channels++) {
4929 for (size_t rows = 14; rows < 35; rows += 14) {
4930 GAvgPoolMicrokernelTester()
4931 .rows(rows)
4932 .channels(channels)
4933 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08004934 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004935 }
4936 }
4937 }
4938#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4939
4940
4941#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08004942 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004943 TEST_REQUIRES_X86_SSE41;
4944 GAvgPoolMicrokernelTester()
4945 .rows(14)
4946 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08004947 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004948 }
4949
Marat Dukhan9e258d62022-01-12 10:50:51 -08004950 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004951 TEST_REQUIRES_X86_SSE41;
4952 GAvgPoolMicrokernelTester()
4953 .rows(14)
4954 .channels(16)
4955 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08004956 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004957 }
4958
Marat Dukhan9e258d62022-01-12 10:50:51 -08004959 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004960 TEST_REQUIRES_X86_SSE41;
4961 GAvgPoolMicrokernelTester()
4962 .rows(14)
4963 .channels(16)
4964 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004965 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004966 }
4967
Marat Dukhan9e258d62022-01-12 10:50:51 -08004968 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004969 TEST_REQUIRES_X86_SSE41;
4970 GAvgPoolMicrokernelTester()
4971 .rows(14)
4972 .channels(16)
4973 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08004974 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004975 }
4976
Marat Dukhan9e258d62022-01-12 10:50:51 -08004977 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004978 TEST_REQUIRES_X86_SSE41;
4979 for (size_t rows = 8; rows < 14; rows++) {
4980 GAvgPoolMicrokernelTester()
4981 .rows(rows)
4982 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08004983 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004984 }
4985 }
4986
Marat Dukhan9e258d62022-01-12 10:50:51 -08004987 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004988 TEST_REQUIRES_X86_SSE41;
4989 for (size_t rows = 8; rows < 14; rows++) {
4990 GAvgPoolMicrokernelTester()
4991 .rows(rows)
4992 .channels(16)
4993 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08004994 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004995 }
4996 }
4997
Marat Dukhan9e258d62022-01-12 10:50:51 -08004998 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08004999 TEST_REQUIRES_X86_SSE41;
5000 for (size_t rows = 14; rows <= 35; rows += 7) {
5001 GAvgPoolMicrokernelTester()
5002 .rows(rows)
5003 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08005004 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005005 }
5006 }
5007
Marat Dukhan9e258d62022-01-12 10:50:51 -08005008 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005009 TEST_REQUIRES_X86_SSE41;
5010 for (size_t rows = 14; rows <= 35; rows += 7) {
5011 GAvgPoolMicrokernelTester()
5012 .rows(rows)
5013 .channels(16)
5014 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08005015 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005016 }
5017 }
5018
Marat Dukhan9e258d62022-01-12 10:50:51 -08005019 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_div_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005020 TEST_REQUIRES_X86_SSE41;
5021 for (size_t channels = 32; channels < 128; channels += 16) {
5022 GAvgPoolMicrokernelTester()
5023 .rows(14)
5024 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005025 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005026 }
5027 }
5028
Marat Dukhan9e258d62022-01-12 10:50:51 -08005029 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_div_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005030 TEST_REQUIRES_X86_SSE41;
5031 for (size_t channels = 32; channels < 128; channels += 16) {
5032 for (size_t rows = 8; rows < 14; rows++) {
5033 GAvgPoolMicrokernelTester()
5034 .rows(rows)
5035 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005036 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005037 }
5038 }
5039 }
5040
Marat Dukhan9e258d62022-01-12 10:50:51 -08005041 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_div_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005042 TEST_REQUIRES_X86_SSE41;
5043 for (size_t channels = 32; channels < 128; channels += 16) {
5044 for (size_t rows = 14; rows <= 35; rows += 7) {
5045 GAvgPoolMicrokernelTester()
5046 .rows(rows)
5047 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005048 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005049 }
5050 }
5051 }
5052
Marat Dukhan9e258d62022-01-12 10:50:51 -08005053 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_div_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005054 TEST_REQUIRES_X86_SSE41;
5055 for (size_t channels = 32; channels < 128; channels += 16) {
5056 for (size_t rows = 14; rows <= 35; rows += 7) {
5057 GAvgPoolMicrokernelTester()
5058 .rows(rows)
5059 .channels(channels)
5060 .input_stride(263)
Marat Dukhan85755042022-01-13 01:46:05 -08005061 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005062 }
5063 }
5064 }
5065
Marat Dukhan9e258d62022-01-12 10:50:51 -08005066 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005067 TEST_REQUIRES_X86_SSE41;
5068 for (size_t channels = 1; channels < 16; channels++) {
5069 GAvgPoolMicrokernelTester()
5070 .rows(14)
5071 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005072 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005073 }
5074 }
5075
Marat Dukhan9e258d62022-01-12 10:50:51 -08005076 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005077 TEST_REQUIRES_X86_SSE41;
5078 for (size_t channels = 1; channels < 16; channels++) {
5079 GAvgPoolMicrokernelTester()
5080 .rows(14)
5081 .channels(channels)
5082 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005083 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005084 }
5085 }
5086
Marat Dukhan9e258d62022-01-12 10:50:51 -08005087 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005088 TEST_REQUIRES_X86_SSE41;
5089 for (size_t channels = 1; channels < 16; channels++) {
5090 GAvgPoolMicrokernelTester()
5091 .rows(14)
5092 .channels(channels)
5093 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005094 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005095 }
5096 }
5097
Marat Dukhan9e258d62022-01-12 10:50:51 -08005098 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005099 TEST_REQUIRES_X86_SSE41;
5100 for (size_t channels = 1; channels < 16; channels++) {
5101 for (size_t rows = 8; rows < 14; rows++) {
5102 GAvgPoolMicrokernelTester()
5103 .rows(rows)
5104 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005105 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005106 }
5107 }
5108 }
5109
Marat Dukhan9e258d62022-01-12 10:50:51 -08005110 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005111 TEST_REQUIRES_X86_SSE41;
5112 for (size_t channels = 1; channels < 16; channels++) {
5113 for (size_t rows = 14; rows <= 35; rows += 7) {
5114 GAvgPoolMicrokernelTester()
5115 .rows(rows)
5116 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005117 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005118 }
5119 }
5120 }
5121
Marat Dukhan9e258d62022-01-12 10:50:51 -08005122 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005123 TEST_REQUIRES_X86_SSE41;
5124 for (size_t channels = 1; channels < 16; channels++) {
5125 for (size_t rows = 14; rows <= 35; rows += 7) {
5126 GAvgPoolMicrokernelTester()
5127 .rows(rows)
5128 .channels(channels)
5129 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08005130 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005131 }
5132 }
5133 }
5134
Marat Dukhan9e258d62022-01-12 10:50:51 -08005135 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005136 TEST_REQUIRES_X86_SSE41;
5137 for (size_t channels = 17; channels < 32; channels++) {
5138 GAvgPoolMicrokernelTester()
5139 .rows(14)
5140 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005141 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005142 }
5143 }
5144
Marat Dukhan9e258d62022-01-12 10:50:51 -08005145 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005146 TEST_REQUIRES_X86_SSE41;
5147 for (size_t channels = 17; channels < 32; channels++) {
5148 GAvgPoolMicrokernelTester()
5149 .rows(14)
5150 .channels(channels)
5151 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005152 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005153 }
5154 }
5155
Marat Dukhan9e258d62022-01-12 10:50:51 -08005156 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005157 TEST_REQUIRES_X86_SSE41;
5158 for (size_t channels = 17; channels < 32; channels++) {
5159 GAvgPoolMicrokernelTester()
5160 .rows(14)
5161 .channels(channels)
5162 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005163 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005164 }
5165 }
5166
Marat Dukhan9e258d62022-01-12 10:50:51 -08005167 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005168 TEST_REQUIRES_X86_SSE41;
5169 for (size_t channels = 17; channels < 32; channels++) {
5170 for (size_t rows = 8; rows < 14; rows++) {
5171 GAvgPoolMicrokernelTester()
5172 .rows(rows)
5173 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005174 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005175 }
5176 }
5177 }
5178
Marat Dukhan9e258d62022-01-12 10:50:51 -08005179 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005180 TEST_REQUIRES_X86_SSE41;
5181 for (size_t channels = 17; channels < 32; channels++) {
5182 for (size_t rows = 14; rows < 35; rows += 14) {
5183 GAvgPoolMicrokernelTester()
5184 .rows(rows)
5185 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005186 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005187 }
5188 }
5189 }
5190
Marat Dukhan9e258d62022-01-12 10:50:51 -08005191 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005192 TEST_REQUIRES_X86_SSE41;
5193 for (size_t channels = 17; channels < 32; channels++) {
5194 for (size_t rows = 14; rows < 35; rows += 14) {
5195 GAvgPoolMicrokernelTester()
5196 .rows(rows)
5197 .channels(channels)
5198 .input_stride(47)
Marat Dukhan85755042022-01-13 01:46:05 -08005199 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005200 }
5201 }
5202 }
5203#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5204
5205
5206#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08005207 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005208 TEST_REQUIRES_X86_SSE41;
5209 GAvgPoolMicrokernelTester()
5210 .rows(14)
5211 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08005212 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005213 }
5214
Marat Dukhan9e258d62022-01-12 10:50:51 -08005215 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005216 TEST_REQUIRES_X86_SSE41;
5217 GAvgPoolMicrokernelTester()
5218 .rows(14)
5219 .channels(24)
5220 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08005221 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005222 }
5223
Marat Dukhan9e258d62022-01-12 10:50:51 -08005224 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005225 TEST_REQUIRES_X86_SSE41;
5226 GAvgPoolMicrokernelTester()
5227 .rows(14)
5228 .channels(24)
5229 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005230 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005231 }
5232
Marat Dukhan9e258d62022-01-12 10:50:51 -08005233 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005234 TEST_REQUIRES_X86_SSE41;
5235 GAvgPoolMicrokernelTester()
5236 .rows(14)
5237 .channels(24)
5238 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005239 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005240 }
5241
Marat Dukhan9e258d62022-01-12 10:50:51 -08005242 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005243 TEST_REQUIRES_X86_SSE41;
5244 for (size_t rows = 8; rows < 14; rows++) {
5245 GAvgPoolMicrokernelTester()
5246 .rows(rows)
5247 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08005248 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005249 }
5250 }
5251
Marat Dukhan9e258d62022-01-12 10:50:51 -08005252 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005253 TEST_REQUIRES_X86_SSE41;
5254 for (size_t rows = 8; rows < 14; rows++) {
5255 GAvgPoolMicrokernelTester()
5256 .rows(rows)
5257 .channels(24)
5258 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08005259 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005260 }
5261 }
5262
Marat Dukhan9e258d62022-01-12 10:50:51 -08005263 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005264 TEST_REQUIRES_X86_SSE41;
5265 for (size_t rows = 14; rows <= 35; rows += 7) {
5266 GAvgPoolMicrokernelTester()
5267 .rows(rows)
5268 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08005269 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005270 }
5271 }
5272
Marat Dukhan9e258d62022-01-12 10:50:51 -08005273 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005274 TEST_REQUIRES_X86_SSE41;
5275 for (size_t rows = 14; rows <= 35; rows += 7) {
5276 GAvgPoolMicrokernelTester()
5277 .rows(rows)
5278 .channels(24)
5279 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08005280 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005281 }
5282 }
5283
Marat Dukhan9e258d62022-01-12 10:50:51 -08005284 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_div_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005285 TEST_REQUIRES_X86_SSE41;
5286 for (size_t channels = 48; channels < 192; channels += 24) {
5287 GAvgPoolMicrokernelTester()
5288 .rows(14)
5289 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005290 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005291 }
5292 }
5293
Marat Dukhan9e258d62022-01-12 10:50:51 -08005294 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_div_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005295 TEST_REQUIRES_X86_SSE41;
5296 for (size_t channels = 48; channels < 192; channels += 24) {
5297 for (size_t rows = 8; rows < 14; rows++) {
5298 GAvgPoolMicrokernelTester()
5299 .rows(rows)
5300 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005301 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005302 }
5303 }
5304 }
5305
Marat Dukhan9e258d62022-01-12 10:50:51 -08005306 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_div_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005307 TEST_REQUIRES_X86_SSE41;
5308 for (size_t channels = 48; channels < 192; channels += 24) {
5309 for (size_t rows = 14; rows <= 35; rows += 7) {
5310 GAvgPoolMicrokernelTester()
5311 .rows(rows)
5312 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005313 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005314 }
5315 }
5316 }
5317
Marat Dukhan9e258d62022-01-12 10:50:51 -08005318 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_div_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005319 TEST_REQUIRES_X86_SSE41;
5320 for (size_t channels = 48; channels < 192; channels += 24) {
5321 for (size_t rows = 14; rows <= 35; rows += 7) {
5322 GAvgPoolMicrokernelTester()
5323 .rows(rows)
5324 .channels(channels)
5325 .input_stride(389)
Marat Dukhan85755042022-01-13 01:46:05 -08005326 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005327 }
5328 }
5329 }
5330
Marat Dukhan9e258d62022-01-12 10:50:51 -08005331 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005332 TEST_REQUIRES_X86_SSE41;
5333 for (size_t channels = 1; channels < 24; channels++) {
5334 GAvgPoolMicrokernelTester()
5335 .rows(14)
5336 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005337 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005338 }
5339 }
5340
Marat Dukhan9e258d62022-01-12 10:50:51 -08005341 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005342 TEST_REQUIRES_X86_SSE41;
5343 for (size_t channels = 1; channels < 24; channels++) {
5344 GAvgPoolMicrokernelTester()
5345 .rows(14)
5346 .channels(channels)
5347 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005348 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005349 }
5350 }
5351
Marat Dukhan9e258d62022-01-12 10:50:51 -08005352 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005353 TEST_REQUIRES_X86_SSE41;
5354 for (size_t channels = 1; channels < 24; channels++) {
5355 GAvgPoolMicrokernelTester()
5356 .rows(14)
5357 .channels(channels)
5358 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005359 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005360 }
5361 }
5362
Marat Dukhan9e258d62022-01-12 10:50:51 -08005363 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005364 TEST_REQUIRES_X86_SSE41;
5365 for (size_t channels = 1; channels < 24; channels++) {
5366 for (size_t rows = 8; rows < 14; rows++) {
5367 GAvgPoolMicrokernelTester()
5368 .rows(rows)
5369 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005370 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005371 }
5372 }
5373 }
5374
Marat Dukhan9e258d62022-01-12 10:50:51 -08005375 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005376 TEST_REQUIRES_X86_SSE41;
5377 for (size_t channels = 1; channels < 24; channels++) {
5378 for (size_t rows = 14; rows <= 35; rows += 7) {
5379 GAvgPoolMicrokernelTester()
5380 .rows(rows)
5381 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005382 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005383 }
5384 }
5385 }
5386
Marat Dukhan9e258d62022-01-12 10:50:51 -08005387 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005388 TEST_REQUIRES_X86_SSE41;
5389 for (size_t channels = 1; channels < 24; channels++) {
5390 for (size_t rows = 14; rows <= 35; rows += 7) {
5391 GAvgPoolMicrokernelTester()
5392 .rows(rows)
5393 .channels(channels)
5394 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08005395 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005396 }
5397 }
5398 }
5399
Marat Dukhan9e258d62022-01-12 10:50:51 -08005400 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005401 TEST_REQUIRES_X86_SSE41;
5402 for (size_t channels = 25; channels < 48; channels++) {
5403 GAvgPoolMicrokernelTester()
5404 .rows(14)
5405 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005406 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005407 }
5408 }
5409
Marat Dukhan9e258d62022-01-12 10:50:51 -08005410 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005411 TEST_REQUIRES_X86_SSE41;
5412 for (size_t channels = 25; channels < 48; channels++) {
5413 GAvgPoolMicrokernelTester()
5414 .rows(14)
5415 .channels(channels)
5416 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005417 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005418 }
5419 }
5420
Marat Dukhan9e258d62022-01-12 10:50:51 -08005421 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005422 TEST_REQUIRES_X86_SSE41;
5423 for (size_t channels = 25; channels < 48; channels++) {
5424 GAvgPoolMicrokernelTester()
5425 .rows(14)
5426 .channels(channels)
5427 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005428 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005429 }
5430 }
5431
Marat Dukhan9e258d62022-01-12 10:50:51 -08005432 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005433 TEST_REQUIRES_X86_SSE41;
5434 for (size_t channels = 25; channels < 48; channels++) {
5435 for (size_t rows = 8; rows < 14; rows++) {
5436 GAvgPoolMicrokernelTester()
5437 .rows(rows)
5438 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005439 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005440 }
5441 }
5442 }
5443
Marat Dukhan9e258d62022-01-12 10:50:51 -08005444 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005445 TEST_REQUIRES_X86_SSE41;
5446 for (size_t channels = 25; channels < 48; channels++) {
5447 for (size_t rows = 14; rows < 35; rows += 14) {
5448 GAvgPoolMicrokernelTester()
5449 .rows(rows)
5450 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005451 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005452 }
5453 }
5454 }
5455
Marat Dukhan9e258d62022-01-12 10:50:51 -08005456 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SSE41_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005457 TEST_REQUIRES_X86_SSE41;
5458 for (size_t channels = 25; channels < 48; channels++) {
5459 for (size_t rows = 14; rows < 35; rows += 14) {
5460 GAvgPoolMicrokernelTester()
5461 .rows(rows)
5462 .channels(channels)
5463 .input_stride(61)
Marat Dukhan85755042022-01-13 01:46:05 -08005464 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005465 }
5466 }
5467 }
5468#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5469
5470
5471#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08005472 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005473 TEST_REQUIRES_X86_SSE41;
5474 GAvgPoolMicrokernelTester()
5475 .rows(7)
5476 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08005477 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005478 }
5479
Marat Dukhan9e258d62022-01-12 10:50:51 -08005480 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005481 TEST_REQUIRES_X86_SSE41;
5482 for (size_t rows = 1; rows < 7; rows++) {
5483 GAvgPoolMicrokernelTester()
5484 .rows(rows)
5485 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08005486 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005487 }
5488 }
5489
Marat Dukhan9e258d62022-01-12 10:50:51 -08005490 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005491 TEST_REQUIRES_X86_SSE41;
5492 GAvgPoolMicrokernelTester()
5493 .rows(7)
5494 .channels(8)
5495 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08005496 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005497 }
5498
Marat Dukhan9e258d62022-01-12 10:50:51 -08005499 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005500 TEST_REQUIRES_X86_SSE41;
5501 GAvgPoolMicrokernelTester()
5502 .rows(7)
5503 .channels(8)
5504 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005505 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005506 }
5507
Marat Dukhan9e258d62022-01-12 10:50:51 -08005508 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_eq_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005509 TEST_REQUIRES_X86_SSE41;
5510 GAvgPoolMicrokernelTester()
5511 .rows(7)
5512 .channels(8)
5513 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005514 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005515 }
5516
Marat Dukhan9e258d62022-01-12 10:50:51 -08005517 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_div_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005518 TEST_REQUIRES_X86_SSE41;
5519 for (size_t channels = 16; channels < 64; channels += 8) {
5520 GAvgPoolMicrokernelTester()
5521 .rows(7)
5522 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005523 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005524 }
5525 }
5526
Marat Dukhan9e258d62022-01-12 10:50:51 -08005527 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_div_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005528 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005534 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005535 }
5536 }
5537 }
5538
Marat Dukhan9e258d62022-01-12 10:50:51 -08005539 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_lt_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005540 TEST_REQUIRES_X86_SSE41;
5541 for (size_t channels = 1; channels < 8; channels++) {
5542 GAvgPoolMicrokernelTester()
5543 .rows(7)
5544 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005545 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005546 }
5547 }
5548
Marat Dukhan9e258d62022-01-12 10:50:51 -08005549 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_lt_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005550 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005556 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005557 }
5558 }
5559 }
5560
Marat Dukhan9e258d62022-01-12 10:50:51 -08005561 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_lt_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005562 TEST_REQUIRES_X86_SSE41;
5563 for (size_t channels = 1; channels < 8; channels++) {
5564 GAvgPoolMicrokernelTester()
5565 .rows(7)
5566 .channels(channels)
5567 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005568 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005569 }
5570 }
5571
Marat Dukhan9e258d62022-01-12 10:50:51 -08005572 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_lt_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005573 TEST_REQUIRES_X86_SSE41;
5574 for (size_t channels = 1; channels < 8; channels++) {
5575 GAvgPoolMicrokernelTester()
5576 .rows(7)
5577 .channels(channels)
5578 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005579 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005580 }
5581 }
5582
Marat Dukhan9e258d62022-01-12 10:50:51 -08005583 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_gt_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005584 TEST_REQUIRES_X86_SSE41;
5585 for (size_t channels = 9; channels < 16; channels++) {
5586 GAvgPoolMicrokernelTester()
5587 .rows(7)
5588 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005589 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005590 }
5591 }
5592
Marat Dukhan9e258d62022-01-12 10:50:51 -08005593 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_gt_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005594 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005600 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005601 }
5602 }
5603 }
5604
Marat Dukhan9e258d62022-01-12 10:50:51 -08005605 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_gt_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005606 TEST_REQUIRES_X86_SSE41;
5607 for (size_t channels = 9; channels < 16; channels++) {
5608 GAvgPoolMicrokernelTester()
5609 .rows(7)
5610 .channels(channels)
5611 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005612 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005613 }
5614 }
5615
Marat Dukhan9e258d62022-01-12 10:50:51 -08005616 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C8, channels_gt_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005617 TEST_REQUIRES_X86_SSE41;
5618 for (size_t channels = 9; channels < 16; channels++) {
5619 GAvgPoolMicrokernelTester()
5620 .rows(7)
5621 .channels(channels)
5622 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005623 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c8, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005624 }
5625 }
5626#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5627
5628
5629#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08005630 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005631 TEST_REQUIRES_X86_SSE41;
5632 GAvgPoolMicrokernelTester()
5633 .rows(7)
5634 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08005635 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005636 }
5637
Marat Dukhan9e258d62022-01-12 10:50:51 -08005638 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005639 TEST_REQUIRES_X86_SSE41;
5640 for (size_t rows = 1; rows < 7; rows++) {
5641 GAvgPoolMicrokernelTester()
5642 .rows(rows)
5643 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08005644 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005645 }
5646 }
5647
Marat Dukhan9e258d62022-01-12 10:50:51 -08005648 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005649 TEST_REQUIRES_X86_SSE41;
5650 GAvgPoolMicrokernelTester()
5651 .rows(7)
5652 .channels(16)
5653 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08005654 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005655 }
5656
Marat Dukhan9e258d62022-01-12 10:50:51 -08005657 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005658 TEST_REQUIRES_X86_SSE41;
5659 GAvgPoolMicrokernelTester()
5660 .rows(7)
5661 .channels(16)
5662 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005663 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005664 }
5665
Marat Dukhan9e258d62022-01-12 10:50:51 -08005666 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_eq_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005667 TEST_REQUIRES_X86_SSE41;
5668 GAvgPoolMicrokernelTester()
5669 .rows(7)
5670 .channels(16)
5671 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005672 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005673 }
5674
Marat Dukhan9e258d62022-01-12 10:50:51 -08005675 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_div_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005676 TEST_REQUIRES_X86_SSE41;
5677 for (size_t channels = 32; channels < 128; channels += 16) {
5678 GAvgPoolMicrokernelTester()
5679 .rows(7)
5680 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005681 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005682 }
5683 }
5684
Marat Dukhan9e258d62022-01-12 10:50:51 -08005685 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_div_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005686 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005692 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005693 }
5694 }
5695 }
5696
Marat Dukhan9e258d62022-01-12 10:50:51 -08005697 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_lt_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005698 TEST_REQUIRES_X86_SSE41;
5699 for (size_t channels = 1; channels < 16; channels++) {
5700 GAvgPoolMicrokernelTester()
5701 .rows(7)
5702 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005703 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005704 }
5705 }
5706
Marat Dukhan9e258d62022-01-12 10:50:51 -08005707 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_lt_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005708 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005714 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005715 }
5716 }
5717 }
5718
Marat Dukhan9e258d62022-01-12 10:50:51 -08005719 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_lt_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005720 TEST_REQUIRES_X86_SSE41;
5721 for (size_t channels = 1; channels < 16; channels++) {
5722 GAvgPoolMicrokernelTester()
5723 .rows(7)
5724 .channels(channels)
5725 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005726 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005727 }
5728 }
5729
Marat Dukhan9e258d62022-01-12 10:50:51 -08005730 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_lt_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005731 TEST_REQUIRES_X86_SSE41;
5732 for (size_t channels = 1; channels < 16; channels++) {
5733 GAvgPoolMicrokernelTester()
5734 .rows(7)
5735 .channels(channels)
5736 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005737 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005738 }
5739 }
5740
Marat Dukhan9e258d62022-01-12 10:50:51 -08005741 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_gt_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005742 TEST_REQUIRES_X86_SSE41;
5743 for (size_t channels = 17; channels < 32; channels++) {
5744 GAvgPoolMicrokernelTester()
5745 .rows(7)
5746 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005747 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005748 }
5749 }
5750
Marat Dukhan9e258d62022-01-12 10:50:51 -08005751 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_gt_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005752 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005758 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005759 }
5760 }
5761 }
5762
Marat Dukhan9e258d62022-01-12 10:50:51 -08005763 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_gt_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005764 TEST_REQUIRES_X86_SSE41;
5765 for (size_t channels = 17; channels < 32; channels++) {
5766 GAvgPoolMicrokernelTester()
5767 .rows(7)
5768 .channels(channels)
5769 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005770 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005771 }
5772 }
5773
Marat Dukhan9e258d62022-01-12 10:50:51 -08005774 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C16, channels_gt_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005775 TEST_REQUIRES_X86_SSE41;
5776 for (size_t channels = 17; channels < 32; channels++) {
5777 GAvgPoolMicrokernelTester()
5778 .rows(7)
5779 .channels(channels)
5780 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005781 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c16, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005782 }
5783 }
5784#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5785
5786
5787#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan9e258d62022-01-12 10:50:51 -08005788 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005789 TEST_REQUIRES_X86_SSE41;
5790 GAvgPoolMicrokernelTester()
5791 .rows(7)
5792 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08005793 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005794 }
5795
Marat Dukhan9e258d62022-01-12 10:50:51 -08005796 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005797 TEST_REQUIRES_X86_SSE41;
5798 for (size_t rows = 1; rows < 7; rows++) {
5799 GAvgPoolMicrokernelTester()
5800 .rows(rows)
5801 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08005802 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005803 }
5804 }
5805
Marat Dukhan9e258d62022-01-12 10:50:51 -08005806 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005807 TEST_REQUIRES_X86_SSE41;
5808 GAvgPoolMicrokernelTester()
5809 .rows(7)
5810 .channels(24)
5811 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08005812 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005813 }
5814
Marat Dukhan9e258d62022-01-12 10:50:51 -08005815 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005816 TEST_REQUIRES_X86_SSE41;
5817 GAvgPoolMicrokernelTester()
5818 .rows(7)
5819 .channels(24)
5820 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005821 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005822 }
5823
Marat Dukhan9e258d62022-01-12 10:50:51 -08005824 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_eq_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005825 TEST_REQUIRES_X86_SSE41;
5826 GAvgPoolMicrokernelTester()
5827 .rows(7)
5828 .channels(24)
5829 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005830 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005831 }
5832
Marat Dukhan9e258d62022-01-12 10:50:51 -08005833 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_div_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005834 TEST_REQUIRES_X86_SSE41;
5835 for (size_t channels = 48; channels < 192; channels += 24) {
5836 GAvgPoolMicrokernelTester()
5837 .rows(7)
5838 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005839 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005840 }
5841 }
5842
Marat Dukhan9e258d62022-01-12 10:50:51 -08005843 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_div_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005844 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005850 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005851 }
5852 }
5853 }
5854
Marat Dukhan9e258d62022-01-12 10:50:51 -08005855 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_lt_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005856 TEST_REQUIRES_X86_SSE41;
5857 for (size_t channels = 1; channels < 24; channels++) {
5858 GAvgPoolMicrokernelTester()
5859 .rows(7)
5860 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005861 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005862 }
5863 }
5864
Marat Dukhan9e258d62022-01-12 10:50:51 -08005865 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_lt_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005866 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005872 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005873 }
5874 }
5875 }
5876
Marat Dukhan9e258d62022-01-12 10:50:51 -08005877 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_lt_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005878 TEST_REQUIRES_X86_SSE41;
5879 for (size_t channels = 1; channels < 24; channels++) {
5880 GAvgPoolMicrokernelTester()
5881 .rows(7)
5882 .channels(channels)
5883 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005884 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005885 }
5886 }
5887
Marat Dukhan9e258d62022-01-12 10:50:51 -08005888 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_lt_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005889 TEST_REQUIRES_X86_SSE41;
5890 for (size_t channels = 1; channels < 24; channels++) {
5891 GAvgPoolMicrokernelTester()
5892 .rows(7)
5893 .channels(channels)
5894 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005895 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005896 }
5897 }
5898
Marat Dukhan9e258d62022-01-12 10:50:51 -08005899 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_gt_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005900 TEST_REQUIRES_X86_SSE41;
5901 for (size_t channels = 25; channels < 48; channels++) {
5902 GAvgPoolMicrokernelTester()
5903 .rows(7)
5904 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005905 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005906 }
5907 }
5908
Marat Dukhan9e258d62022-01-12 10:50:51 -08005909 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_gt_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005910 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)
Marat Dukhan85755042022-01-13 01:46:05 -08005916 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005917 }
5918 }
5919 }
5920
Marat Dukhan9e258d62022-01-12 10:50:51 -08005921 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_gt_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005922 TEST_REQUIRES_X86_SSE41;
5923 for (size_t channels = 25; channels < 48; channels++) {
5924 GAvgPoolMicrokernelTester()
5925 .rows(7)
5926 .channels(channels)
5927 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005928 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005929 }
5930 }
5931
Marat Dukhan9e258d62022-01-12 10:50:51 -08005932 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SSE41_C24, channels_gt_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005933 TEST_REQUIRES_X86_SSE41;
5934 for (size_t channels = 25; channels < 48; channels++) {
5935 GAvgPoolMicrokernelTester()
5936 .rows(7)
5937 .channels(channels)
5938 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005939 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__sse41_c24, xnn_init_qs8_avgpool_minmax_fp32_sse4_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005940 }
5941 }
5942#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5943
5944
5945#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan9e258d62022-01-12 10:50:51 -08005946 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005947 GAvgPoolMicrokernelTester()
5948 .rows(7)
5949 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08005950 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005951 }
5952
Marat Dukhan9e258d62022-01-12 10:50:51 -08005953 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005954 for (size_t rows = 1; rows < 7; rows++) {
5955 GAvgPoolMicrokernelTester()
5956 .rows(rows)
5957 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08005958 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005959 }
5960 }
5961
Marat Dukhan9e258d62022-01-12 10:50:51 -08005962 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005963 GAvgPoolMicrokernelTester()
5964 .rows(7)
5965 .channels(8)
5966 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08005967 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005968 }
5969
Marat Dukhan9e258d62022-01-12 10:50:51 -08005970 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005971 GAvgPoolMicrokernelTester()
5972 .rows(7)
5973 .channels(8)
5974 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005975 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005976 }
5977
Marat Dukhan9e258d62022-01-12 10:50:51 -08005978 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_eq_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005979 GAvgPoolMicrokernelTester()
5980 .rows(7)
5981 .channels(8)
5982 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08005983 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005984 }
5985
Marat Dukhan9e258d62022-01-12 10:50:51 -08005986 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_div_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005987 for (size_t channels = 16; channels < 64; channels += 8) {
5988 GAvgPoolMicrokernelTester()
5989 .rows(7)
5990 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08005991 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005992 }
5993 }
5994
Marat Dukhan9e258d62022-01-12 10:50:51 -08005995 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_div_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08005996 for (size_t channels = 16; channels < 64; channels += 8) {
5997 for (size_t rows = 1; rows < 7; rows++) {
5998 GAvgPoolMicrokernelTester()
5999 .rows(rows)
6000 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006001 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006002 }
6003 }
6004 }
6005
Marat Dukhan9e258d62022-01-12 10:50:51 -08006006 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_lt_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006007 for (size_t channels = 1; channels < 8; channels++) {
6008 GAvgPoolMicrokernelTester()
6009 .rows(7)
6010 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006011 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006012 }
6013 }
6014
Marat Dukhan9e258d62022-01-12 10:50:51 -08006015 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_lt_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006016 for (size_t channels = 1; channels < 8; channels++) {
6017 for (size_t rows = 1; rows < 7; rows++) {
6018 GAvgPoolMicrokernelTester()
6019 .rows(rows)
6020 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006021 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006022 }
6023 }
6024 }
6025
Marat Dukhan9e258d62022-01-12 10:50:51 -08006026 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_lt_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006027 for (size_t channels = 1; channels < 8; channels++) {
6028 GAvgPoolMicrokernelTester()
6029 .rows(7)
6030 .channels(channels)
6031 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006032 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006033 }
6034 }
6035
Marat Dukhan9e258d62022-01-12 10:50:51 -08006036 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_lt_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006037 for (size_t channels = 1; channels < 8; channels++) {
6038 GAvgPoolMicrokernelTester()
6039 .rows(7)
6040 .channels(channels)
6041 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006042 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006043 }
6044 }
6045
Marat Dukhan9e258d62022-01-12 10:50:51 -08006046 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_gt_8_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006047 for (size_t channels = 9; channels < 16; channels++) {
6048 GAvgPoolMicrokernelTester()
6049 .rows(7)
6050 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006051 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006052 }
6053 }
6054
Marat Dukhan9e258d62022-01-12 10:50:51 -08006055 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_gt_8_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006056 for (size_t channels = 9; channels < 16; channels++) {
6057 for (size_t rows = 1; rows < 7; rows++) {
6058 GAvgPoolMicrokernelTester()
6059 .rows(rows)
6060 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006061 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006062 }
6063 }
6064 }
6065
Marat Dukhan9e258d62022-01-12 10:50:51 -08006066 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_gt_8_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006067 for (size_t channels = 9; channels < 16; channels++) {
6068 GAvgPoolMicrokernelTester()
6069 .rows(7)
6070 .channels(channels)
6071 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006072 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006073 }
6074 }
6075
Marat Dukhan9e258d62022-01-12 10:50:51 -08006076 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C8, channels_gt_8_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006077 for (size_t channels = 9; channels < 16; channels++) {
6078 GAvgPoolMicrokernelTester()
6079 .rows(7)
6080 .channels(channels)
6081 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006082 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006083 }
6084 }
6085#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6086
6087
6088#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan9e258d62022-01-12 10:50:51 -08006089 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006090 GAvgPoolMicrokernelTester()
6091 .rows(7)
6092 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08006093 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006094 }
6095
Marat Dukhan9e258d62022-01-12 10:50:51 -08006096 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006097 for (size_t rows = 1; rows < 7; rows++) {
6098 GAvgPoolMicrokernelTester()
6099 .rows(rows)
6100 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08006101 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006102 }
6103 }
6104
Marat Dukhan9e258d62022-01-12 10:50:51 -08006105 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006106 GAvgPoolMicrokernelTester()
6107 .rows(7)
6108 .channels(16)
6109 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08006110 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006111 }
6112
Marat Dukhan9e258d62022-01-12 10:50:51 -08006113 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006114 GAvgPoolMicrokernelTester()
6115 .rows(7)
6116 .channels(16)
6117 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006118 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006119 }
6120
Marat Dukhan9e258d62022-01-12 10:50:51 -08006121 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_eq_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006122 GAvgPoolMicrokernelTester()
6123 .rows(7)
6124 .channels(16)
6125 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006126 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006127 }
6128
Marat Dukhan9e258d62022-01-12 10:50:51 -08006129 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_div_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006130 for (size_t channels = 32; channels < 128; channels += 16) {
6131 GAvgPoolMicrokernelTester()
6132 .rows(7)
6133 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006134 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006135 }
6136 }
6137
Marat Dukhan9e258d62022-01-12 10:50:51 -08006138 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_div_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006139 for (size_t channels = 32; channels < 128; channels += 16) {
6140 for (size_t rows = 1; rows < 7; rows++) {
6141 GAvgPoolMicrokernelTester()
6142 .rows(rows)
6143 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006144 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006145 }
6146 }
6147 }
6148
Marat Dukhan9e258d62022-01-12 10:50:51 -08006149 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_lt_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006150 for (size_t channels = 1; channels < 16; channels++) {
6151 GAvgPoolMicrokernelTester()
6152 .rows(7)
6153 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006154 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006155 }
6156 }
6157
Marat Dukhan9e258d62022-01-12 10:50:51 -08006158 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_lt_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006159 for (size_t channels = 1; channels < 16; channels++) {
6160 for (size_t rows = 1; rows < 7; rows++) {
6161 GAvgPoolMicrokernelTester()
6162 .rows(rows)
6163 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006164 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006165 }
6166 }
6167 }
6168
Marat Dukhan9e258d62022-01-12 10:50:51 -08006169 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_lt_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006170 for (size_t channels = 1; channels < 16; channels++) {
6171 GAvgPoolMicrokernelTester()
6172 .rows(7)
6173 .channels(channels)
6174 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006175 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006176 }
6177 }
6178
Marat Dukhan9e258d62022-01-12 10:50:51 -08006179 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_lt_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006180 for (size_t channels = 1; channels < 16; channels++) {
6181 GAvgPoolMicrokernelTester()
6182 .rows(7)
6183 .channels(channels)
6184 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006185 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006186 }
6187 }
6188
Marat Dukhan9e258d62022-01-12 10:50:51 -08006189 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_gt_16_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006190 for (size_t channels = 17; channels < 32; channels++) {
6191 GAvgPoolMicrokernelTester()
6192 .rows(7)
6193 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006194 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006195 }
6196 }
6197
Marat Dukhan9e258d62022-01-12 10:50:51 -08006198 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_gt_16_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006199 for (size_t channels = 17; channels < 32; channels++) {
6200 for (size_t rows = 1; rows < 7; rows++) {
6201 GAvgPoolMicrokernelTester()
6202 .rows(rows)
6203 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006204 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006205 }
6206 }
6207 }
6208
Marat Dukhan9e258d62022-01-12 10:50:51 -08006209 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_gt_16_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006210 for (size_t channels = 17; channels < 32; channels++) {
6211 GAvgPoolMicrokernelTester()
6212 .rows(7)
6213 .channels(channels)
6214 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006215 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006216 }
6217 }
6218
Marat Dukhan9e258d62022-01-12 10:50:51 -08006219 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C16, channels_gt_16_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006220 for (size_t channels = 17; channels < 32; channels++) {
6221 GAvgPoolMicrokernelTester()
6222 .rows(7)
6223 .channels(channels)
6224 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006225 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006226 }
6227 }
6228#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6229
6230
6231#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan9e258d62022-01-12 10:50:51 -08006232 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006233 GAvgPoolMicrokernelTester()
6234 .rows(7)
6235 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08006236 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006237 }
6238
Marat Dukhan9e258d62022-01-12 10:50:51 -08006239 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006240 for (size_t rows = 1; rows < 7; rows++) {
6241 GAvgPoolMicrokernelTester()
6242 .rows(rows)
6243 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08006244 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006245 }
6246 }
6247
Marat Dukhan9e258d62022-01-12 10:50:51 -08006248 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006249 GAvgPoolMicrokernelTester()
6250 .rows(7)
6251 .channels(24)
6252 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08006253 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006254 }
6255
Marat Dukhan9e258d62022-01-12 10:50:51 -08006256 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006257 GAvgPoolMicrokernelTester()
6258 .rows(7)
6259 .channels(24)
6260 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006261 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006262 }
6263
Marat Dukhan9e258d62022-01-12 10:50:51 -08006264 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_eq_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006265 GAvgPoolMicrokernelTester()
6266 .rows(7)
6267 .channels(24)
6268 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006269 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006270 }
6271
Marat Dukhan9e258d62022-01-12 10:50:51 -08006272 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_div_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006273 for (size_t channels = 48; channels < 192; channels += 24) {
6274 GAvgPoolMicrokernelTester()
6275 .rows(7)
6276 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006277 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006278 }
6279 }
6280
Marat Dukhan9e258d62022-01-12 10:50:51 -08006281 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_div_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006282 for (size_t channels = 48; channels < 192; channels += 24) {
6283 for (size_t rows = 1; rows < 7; rows++) {
6284 GAvgPoolMicrokernelTester()
6285 .rows(rows)
6286 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006287 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006288 }
6289 }
6290 }
6291
Marat Dukhan9e258d62022-01-12 10:50:51 -08006292 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_lt_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006293 for (size_t channels = 1; channels < 24; channels++) {
6294 GAvgPoolMicrokernelTester()
6295 .rows(7)
6296 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006297 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006298 }
6299 }
6300
Marat Dukhan9e258d62022-01-12 10:50:51 -08006301 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_lt_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006302 for (size_t channels = 1; channels < 24; channels++) {
6303 for (size_t rows = 1; rows < 7; rows++) {
6304 GAvgPoolMicrokernelTester()
6305 .rows(rows)
6306 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006307 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006308 }
6309 }
6310 }
6311
Marat Dukhan9e258d62022-01-12 10:50:51 -08006312 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_lt_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006313 for (size_t channels = 1; channels < 24; channels++) {
6314 GAvgPoolMicrokernelTester()
6315 .rows(7)
6316 .channels(channels)
6317 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006318 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006319 }
6320 }
6321
Marat Dukhan9e258d62022-01-12 10:50:51 -08006322 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_lt_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006323 for (size_t channels = 1; channels < 24; channels++) {
6324 GAvgPoolMicrokernelTester()
6325 .rows(7)
6326 .channels(channels)
6327 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006328 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006329 }
6330 }
6331
Marat Dukhan9e258d62022-01-12 10:50:51 -08006332 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_gt_24_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006333 for (size_t channels = 25; channels < 48; channels++) {
6334 GAvgPoolMicrokernelTester()
6335 .rows(7)
6336 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006337 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006338 }
6339 }
6340
Marat Dukhan9e258d62022-01-12 10:50:51 -08006341 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_gt_24_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006342 for (size_t channels = 25; channels < 48; channels++) {
6343 for (size_t rows = 1; rows < 7; rows++) {
6344 GAvgPoolMicrokernelTester()
6345 .rows(rows)
6346 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006347 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006348 }
6349 }
6350 }
6351
Marat Dukhan9e258d62022-01-12 10:50:51 -08006352 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_gt_24_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006353 for (size_t channels = 25; channels < 48; channels++) {
6354 GAvgPoolMicrokernelTester()
6355 .rows(7)
6356 .channels(channels)
6357 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006358 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006359 }
6360 }
6361
Marat Dukhan9e258d62022-01-12 10:50:51 -08006362 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C24, channels_gt_24_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006363 for (size_t channels = 25; channels < 48; channels++) {
6364 GAvgPoolMicrokernelTester()
6365 .rows(7)
6366 .channels(channels)
6367 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006368 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006369 }
6370 }
6371#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6372
6373
6374#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan9e258d62022-01-12 10:50:51 -08006375 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_fulltile) {
6376 GAvgPoolMicrokernelTester()
6377 .rows(7)
6378 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08006379 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006380 }
6381
6382 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_subtile) {
6383 for (size_t rows = 1; rows < 7; rows++) {
6384 GAvgPoolMicrokernelTester()
6385 .rows(rows)
6386 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08006387 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006388 }
6389 }
6390
6391 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_fulltile_with_input_stride) {
6392 GAvgPoolMicrokernelTester()
6393 .rows(7)
6394 .channels(32)
6395 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08006396 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006397 }
6398
6399 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_fulltile_with_qmax) {
6400 GAvgPoolMicrokernelTester()
6401 .rows(7)
6402 .channels(32)
6403 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006404 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006405 }
6406
6407 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_eq_32_fulltile_with_qmin) {
6408 GAvgPoolMicrokernelTester()
6409 .rows(7)
6410 .channels(32)
6411 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006412 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006413 }
6414
6415 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_div_32_fulltile) {
6416 for (size_t channels = 64; channels < 256; channels += 32) {
6417 GAvgPoolMicrokernelTester()
6418 .rows(7)
6419 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006420 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006421 }
6422 }
6423
6424 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_div_32_subtile) {
6425 for (size_t channels = 64; channels < 256; channels += 32) {
6426 for (size_t rows = 1; rows < 7; rows++) {
6427 GAvgPoolMicrokernelTester()
6428 .rows(rows)
6429 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006430 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006431 }
6432 }
6433 }
6434
6435 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_lt_32_fulltile) {
6436 for (size_t channels = 1; channels < 32; channels++) {
6437 GAvgPoolMicrokernelTester()
6438 .rows(7)
6439 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006440 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006441 }
6442 }
6443
6444 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_lt_32_subtile) {
6445 for (size_t channels = 1; channels < 32; channels++) {
6446 for (size_t rows = 1; rows < 7; rows++) {
6447 GAvgPoolMicrokernelTester()
6448 .rows(rows)
6449 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006450 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006451 }
6452 }
6453 }
6454
6455 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_lt_32_fulltile_with_qmax) {
6456 for (size_t channels = 1; channels < 32; channels++) {
6457 GAvgPoolMicrokernelTester()
6458 .rows(7)
6459 .channels(channels)
6460 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006461 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006462 }
6463 }
6464
6465 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_lt_32_fulltile_with_qmin) {
6466 for (size_t channels = 1; channels < 32; channels++) {
6467 GAvgPoolMicrokernelTester()
6468 .rows(7)
6469 .channels(channels)
6470 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006471 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006472 }
6473 }
6474
6475 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_gt_32_fulltile) {
6476 for (size_t channels = 33; channels < 64; channels++) {
6477 GAvgPoolMicrokernelTester()
6478 .rows(7)
6479 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006480 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006481 }
6482 }
6483
6484 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_gt_32_subtile) {
6485 for (size_t channels = 33; channels < 64; channels++) {
6486 for (size_t rows = 1; rows < 7; rows++) {
6487 GAvgPoolMicrokernelTester()
6488 .rows(rows)
6489 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006490 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006491 }
6492 }
6493 }
6494
6495 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_gt_32_fulltile_with_qmax) {
6496 for (size_t channels = 33; channels < 64; channels++) {
6497 GAvgPoolMicrokernelTester()
6498 .rows(7)
6499 .channels(channels)
6500 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006501 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006502 }
6503 }
6504
6505 TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__WASMSIMD_C32, channels_gt_32_fulltile_with_qmin) {
6506 for (size_t channels = 33; channels < 64; channels++) {
6507 GAvgPoolMicrokernelTester()
6508 .rows(7)
6509 .channels(channels)
6510 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006511 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08006512 }
6513 }
6514#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6515
6516
6517#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6518 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006519 GAvgPoolMicrokernelTester()
6520 .rows(14)
6521 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08006522 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006523 }
6524
Marat Dukhan9e258d62022-01-12 10:50:51 -08006525 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006526 GAvgPoolMicrokernelTester()
6527 .rows(14)
6528 .channels(8)
6529 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08006530 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006531 }
6532
Marat Dukhan9e258d62022-01-12 10:50:51 -08006533 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006534 GAvgPoolMicrokernelTester()
6535 .rows(14)
6536 .channels(8)
6537 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006538 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006539 }
6540
Marat Dukhan9e258d62022-01-12 10:50:51 -08006541 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006542 GAvgPoolMicrokernelTester()
6543 .rows(14)
6544 .channels(8)
6545 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006546 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006547 }
6548
Marat Dukhan9e258d62022-01-12 10:50:51 -08006549 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006550 for (size_t rows = 8; rows < 14; rows++) {
6551 GAvgPoolMicrokernelTester()
6552 .rows(rows)
6553 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08006554 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006555 }
6556 }
6557
Marat Dukhan9e258d62022-01-12 10:50:51 -08006558 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006559 for (size_t rows = 8; rows < 14; rows++) {
6560 GAvgPoolMicrokernelTester()
6561 .rows(rows)
6562 .channels(8)
6563 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08006564 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006565 }
6566 }
6567
Marat Dukhan9e258d62022-01-12 10:50:51 -08006568 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006569 for (size_t rows = 14; rows <= 35; rows += 7) {
6570 GAvgPoolMicrokernelTester()
6571 .rows(rows)
6572 .channels(8)
Marat Dukhan85755042022-01-13 01:46:05 -08006573 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006574 }
6575 }
6576
Marat Dukhan9e258d62022-01-12 10:50:51 -08006577 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006578 for (size_t rows = 14; rows <= 35; rows += 7) {
6579 GAvgPoolMicrokernelTester()
6580 .rows(rows)
6581 .channels(8)
6582 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08006583 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006584 }
6585 }
6586
Marat Dukhan9e258d62022-01-12 10:50:51 -08006587 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_div_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006588 for (size_t channels = 16; channels < 64; channels += 8) {
6589 GAvgPoolMicrokernelTester()
6590 .rows(14)
6591 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006592 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006593 }
6594 }
6595
Marat Dukhan9e258d62022-01-12 10:50:51 -08006596 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_div_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006597 for (size_t channels = 16; channels < 64; channels += 8) {
6598 for (size_t rows = 8; rows < 14; rows++) {
6599 GAvgPoolMicrokernelTester()
6600 .rows(rows)
6601 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006602 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006603 }
6604 }
6605 }
6606
Marat Dukhan9e258d62022-01-12 10:50:51 -08006607 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_div_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006608 for (size_t channels = 16; channels < 64; channels += 8) {
6609 for (size_t rows = 14; rows <= 35; rows += 7) {
6610 GAvgPoolMicrokernelTester()
6611 .rows(rows)
6612 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006613 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006614 }
6615 }
6616 }
6617
Marat Dukhan9e258d62022-01-12 10:50:51 -08006618 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_div_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006619 for (size_t channels = 16; channels < 64; channels += 8) {
6620 for (size_t rows = 14; rows <= 35; rows += 7) {
6621 GAvgPoolMicrokernelTester()
6622 .rows(rows)
6623 .channels(channels)
6624 .input_stride(131)
Marat Dukhan85755042022-01-13 01:46:05 -08006625 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006626 }
6627 }
6628 }
6629
Marat Dukhan9e258d62022-01-12 10:50:51 -08006630 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006631 for (size_t channels = 1; channels < 8; channels++) {
6632 GAvgPoolMicrokernelTester()
6633 .rows(14)
6634 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006635 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006636 }
6637 }
6638
Marat Dukhan9e258d62022-01-12 10:50:51 -08006639 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006640 for (size_t channels = 1; channels < 8; channels++) {
6641 GAvgPoolMicrokernelTester()
6642 .rows(14)
6643 .channels(channels)
6644 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006645 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006646 }
6647 }
6648
Marat Dukhan9e258d62022-01-12 10:50:51 -08006649 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006650 for (size_t channels = 1; channels < 8; channels++) {
6651 GAvgPoolMicrokernelTester()
6652 .rows(14)
6653 .channels(channels)
6654 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006655 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006656 }
6657 }
6658
Marat Dukhan9e258d62022-01-12 10:50:51 -08006659 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006660 for (size_t channels = 1; channels < 8; channels++) {
6661 for (size_t rows = 8; rows < 14; rows++) {
6662 GAvgPoolMicrokernelTester()
6663 .rows(rows)
6664 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006665 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006666 }
6667 }
6668 }
6669
Marat Dukhan9e258d62022-01-12 10:50:51 -08006670 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006671 for (size_t channels = 1; channels < 8; channels++) {
6672 for (size_t rows = 14; rows <= 35; rows += 7) {
6673 GAvgPoolMicrokernelTester()
6674 .rows(rows)
6675 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006676 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006677 }
6678 }
6679 }
6680
Marat Dukhan9e258d62022-01-12 10:50:51 -08006681 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006682 for (size_t channels = 1; channels < 8; channels++) {
6683 for (size_t rows = 14; rows <= 35; rows += 7) {
6684 GAvgPoolMicrokernelTester()
6685 .rows(rows)
6686 .channels(channels)
6687 .input_stride(11)
Marat Dukhan85755042022-01-13 01:46:05 -08006688 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006689 }
6690 }
6691 }
6692
Marat Dukhan9e258d62022-01-12 10:50:51 -08006693 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006694 for (size_t channels = 9; channels < 16; channels++) {
6695 GAvgPoolMicrokernelTester()
6696 .rows(14)
6697 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006698 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006699 }
6700 }
6701
Marat Dukhan9e258d62022-01-12 10:50:51 -08006702 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006703 for (size_t channels = 9; channels < 16; channels++) {
6704 GAvgPoolMicrokernelTester()
6705 .rows(14)
6706 .channels(channels)
6707 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006708 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006709 }
6710 }
6711
Marat Dukhan9e258d62022-01-12 10:50:51 -08006712 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006713 for (size_t channels = 9; channels < 16; channels++) {
6714 GAvgPoolMicrokernelTester()
6715 .rows(14)
6716 .channels(channels)
6717 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006718 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006719 }
6720 }
6721
Marat Dukhan9e258d62022-01-12 10:50:51 -08006722 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006723 for (size_t channels = 9; channels < 16; channels++) {
6724 for (size_t rows = 8; rows < 14; rows++) {
6725 GAvgPoolMicrokernelTester()
6726 .rows(rows)
6727 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006728 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006729 }
6730 }
6731 }
6732
Marat Dukhan9e258d62022-01-12 10:50:51 -08006733 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006734 for (size_t channels = 9; channels < 16; channels++) {
6735 for (size_t rows = 14; rows < 35; rows += 14) {
6736 GAvgPoolMicrokernelTester()
6737 .rows(rows)
6738 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006739 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006740 }
6741 }
6742 }
6743
Marat Dukhan9e258d62022-01-12 10:50:51 -08006744 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006745 for (size_t channels = 9; channels < 16; channels++) {
6746 for (size_t rows = 14; rows < 35; rows += 14) {
6747 GAvgPoolMicrokernelTester()
6748 .rows(rows)
6749 .channels(channels)
6750 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08006751 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c8, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006752 }
6753 }
6754 }
6755#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6756
6757
6758#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan9e258d62022-01-12 10:50:51 -08006759 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006760 GAvgPoolMicrokernelTester()
6761 .rows(14)
6762 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08006763 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006764 }
6765
Marat Dukhan9e258d62022-01-12 10:50:51 -08006766 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006767 GAvgPoolMicrokernelTester()
6768 .rows(14)
6769 .channels(16)
6770 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08006771 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006772 }
6773
Marat Dukhan9e258d62022-01-12 10:50:51 -08006774 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006775 GAvgPoolMicrokernelTester()
6776 .rows(14)
6777 .channels(16)
6778 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006779 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006780 }
6781
Marat Dukhan9e258d62022-01-12 10:50:51 -08006782 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006783 GAvgPoolMicrokernelTester()
6784 .rows(14)
6785 .channels(16)
6786 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006787 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006788 }
6789
Marat Dukhan9e258d62022-01-12 10:50:51 -08006790 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006791 for (size_t rows = 8; rows < 14; rows++) {
6792 GAvgPoolMicrokernelTester()
6793 .rows(rows)
6794 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08006795 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006796 }
6797 }
6798
Marat Dukhan9e258d62022-01-12 10:50:51 -08006799 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006800 for (size_t rows = 8; rows < 14; rows++) {
6801 GAvgPoolMicrokernelTester()
6802 .rows(rows)
6803 .channels(16)
6804 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08006805 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006806 }
6807 }
6808
Marat Dukhan9e258d62022-01-12 10:50:51 -08006809 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006810 for (size_t rows = 14; rows <= 35; rows += 7) {
6811 GAvgPoolMicrokernelTester()
6812 .rows(rows)
6813 .channels(16)
Marat Dukhan85755042022-01-13 01:46:05 -08006814 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006815 }
6816 }
6817
Marat Dukhan9e258d62022-01-12 10:50:51 -08006818 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006819 for (size_t rows = 14; rows <= 35; rows += 7) {
6820 GAvgPoolMicrokernelTester()
6821 .rows(rows)
6822 .channels(16)
6823 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08006824 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006825 }
6826 }
6827
Marat Dukhan9e258d62022-01-12 10:50:51 -08006828 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_div_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006829 for (size_t channels = 32; channels < 128; channels += 16) {
6830 GAvgPoolMicrokernelTester()
6831 .rows(14)
6832 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006833 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006834 }
6835 }
6836
Marat Dukhan9e258d62022-01-12 10:50:51 -08006837 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_div_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006838 for (size_t channels = 32; channels < 128; channels += 16) {
6839 for (size_t rows = 8; rows < 14; rows++) {
6840 GAvgPoolMicrokernelTester()
6841 .rows(rows)
6842 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006843 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006844 }
6845 }
6846 }
6847
Marat Dukhan9e258d62022-01-12 10:50:51 -08006848 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_div_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006849 for (size_t channels = 32; channels < 128; channels += 16) {
6850 for (size_t rows = 14; rows <= 35; rows += 7) {
6851 GAvgPoolMicrokernelTester()
6852 .rows(rows)
6853 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006854 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006855 }
6856 }
6857 }
6858
Marat Dukhan9e258d62022-01-12 10:50:51 -08006859 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_div_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006860 for (size_t channels = 32; channels < 128; channels += 16) {
6861 for (size_t rows = 14; rows <= 35; rows += 7) {
6862 GAvgPoolMicrokernelTester()
6863 .rows(rows)
6864 .channels(channels)
6865 .input_stride(263)
Marat Dukhan85755042022-01-13 01:46:05 -08006866 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006867 }
6868 }
6869 }
6870
Marat Dukhan9e258d62022-01-12 10:50:51 -08006871 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006872 for (size_t channels = 1; channels < 16; channels++) {
6873 GAvgPoolMicrokernelTester()
6874 .rows(14)
6875 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006876 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006877 }
6878 }
6879
Marat Dukhan9e258d62022-01-12 10:50:51 -08006880 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006881 for (size_t channels = 1; channels < 16; channels++) {
6882 GAvgPoolMicrokernelTester()
6883 .rows(14)
6884 .channels(channels)
6885 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006886 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006887 }
6888 }
6889
Marat Dukhan9e258d62022-01-12 10:50:51 -08006890 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006891 for (size_t channels = 1; channels < 16; channels++) {
6892 GAvgPoolMicrokernelTester()
6893 .rows(14)
6894 .channels(channels)
6895 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006896 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006897 }
6898 }
6899
Marat Dukhan9e258d62022-01-12 10:50:51 -08006900 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006901 for (size_t channels = 1; channels < 16; channels++) {
6902 for (size_t rows = 8; rows < 14; rows++) {
6903 GAvgPoolMicrokernelTester()
6904 .rows(rows)
6905 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006906 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006907 }
6908 }
6909 }
6910
Marat Dukhan9e258d62022-01-12 10:50:51 -08006911 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006912 for (size_t channels = 1; channels < 16; channels++) {
6913 for (size_t rows = 14; rows <= 35; rows += 7) {
6914 GAvgPoolMicrokernelTester()
6915 .rows(rows)
6916 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006917 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006918 }
6919 }
6920 }
6921
Marat Dukhan9e258d62022-01-12 10:50:51 -08006922 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006923 for (size_t channels = 1; channels < 16; channels++) {
6924 for (size_t rows = 14; rows <= 35; rows += 7) {
6925 GAvgPoolMicrokernelTester()
6926 .rows(rows)
6927 .channels(channels)
6928 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08006929 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006930 }
6931 }
6932 }
6933
Marat Dukhan9e258d62022-01-12 10:50:51 -08006934 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006935 for (size_t channels = 17; channels < 32; channels++) {
6936 GAvgPoolMicrokernelTester()
6937 .rows(14)
6938 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006939 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006940 }
6941 }
6942
Marat Dukhan9e258d62022-01-12 10:50:51 -08006943 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006944 for (size_t channels = 17; channels < 32; channels++) {
6945 GAvgPoolMicrokernelTester()
6946 .rows(14)
6947 .channels(channels)
6948 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006949 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006950 }
6951 }
6952
Marat Dukhan9e258d62022-01-12 10:50:51 -08006953 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006954 for (size_t channels = 17; channels < 32; channels++) {
6955 GAvgPoolMicrokernelTester()
6956 .rows(14)
6957 .channels(channels)
6958 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08006959 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006960 }
6961 }
6962
Marat Dukhan9e258d62022-01-12 10:50:51 -08006963 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006964 for (size_t channels = 17; channels < 32; channels++) {
6965 for (size_t rows = 8; rows < 14; rows++) {
6966 GAvgPoolMicrokernelTester()
6967 .rows(rows)
6968 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006969 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006970 }
6971 }
6972 }
6973
Marat Dukhan9e258d62022-01-12 10:50:51 -08006974 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006975 for (size_t channels = 17; channels < 32; channels++) {
6976 for (size_t rows = 14; rows < 35; rows += 14) {
6977 GAvgPoolMicrokernelTester()
6978 .rows(rows)
6979 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08006980 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006981 }
6982 }
6983 }
6984
Marat Dukhan9e258d62022-01-12 10:50:51 -08006985 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006986 for (size_t channels = 17; channels < 32; channels++) {
6987 for (size_t rows = 14; rows < 35; rows += 14) {
6988 GAvgPoolMicrokernelTester()
6989 .rows(rows)
6990 .channels(channels)
6991 .input_stride(47)
Marat Dukhan85755042022-01-13 01:46:05 -08006992 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c16, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08006993 }
6994 }
6995 }
6996#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
6997
6998
6999#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan9e258d62022-01-12 10:50:51 -08007000 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007001 GAvgPoolMicrokernelTester()
7002 .rows(14)
7003 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08007004 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007005 }
7006
Marat Dukhan9e258d62022-01-12 10:50:51 -08007007 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007008 GAvgPoolMicrokernelTester()
7009 .rows(14)
7010 .channels(24)
7011 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08007012 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007013 }
7014
Marat Dukhan9e258d62022-01-12 10:50:51 -08007015 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007016 GAvgPoolMicrokernelTester()
7017 .rows(14)
7018 .channels(24)
7019 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007020 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007021 }
7022
Marat Dukhan9e258d62022-01-12 10:50:51 -08007023 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007024 GAvgPoolMicrokernelTester()
7025 .rows(14)
7026 .channels(24)
7027 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007028 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007029 }
7030
Marat Dukhan9e258d62022-01-12 10:50:51 -08007031 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007032 for (size_t rows = 8; rows < 14; rows++) {
7033 GAvgPoolMicrokernelTester()
7034 .rows(rows)
7035 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08007036 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007037 }
7038 }
7039
Marat Dukhan9e258d62022-01-12 10:50:51 -08007040 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_2pass_subtile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007041 for (size_t rows = 8; rows < 14; rows++) {
7042 GAvgPoolMicrokernelTester()
7043 .rows(rows)
7044 .channels(24)
7045 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08007046 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007047 }
7048 }
7049
Marat Dukhan9e258d62022-01-12 10:50:51 -08007050 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007051 for (size_t rows = 14; rows <= 35; rows += 7) {
7052 GAvgPoolMicrokernelTester()
7053 .rows(rows)
7054 .channels(24)
Marat Dukhan85755042022-01-13 01:46:05 -08007055 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007056 }
7057 }
7058
Marat Dukhan9e258d62022-01-12 10:50:51 -08007059 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007060 for (size_t rows = 14; rows <= 35; rows += 7) {
7061 GAvgPoolMicrokernelTester()
7062 .rows(rows)
7063 .channels(24)
7064 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08007065 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007066 }
7067 }
7068
Marat Dukhan9e258d62022-01-12 10:50:51 -08007069 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_div_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007070 for (size_t channels = 48; channels < 192; channels += 24) {
7071 GAvgPoolMicrokernelTester()
7072 .rows(14)
7073 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007074 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007075 }
7076 }
7077
Marat Dukhan9e258d62022-01-12 10:50:51 -08007078 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_div_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007079 for (size_t channels = 48; channels < 192; channels += 24) {
7080 for (size_t rows = 8; rows < 14; rows++) {
7081 GAvgPoolMicrokernelTester()
7082 .rows(rows)
7083 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007084 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007085 }
7086 }
7087 }
7088
Marat Dukhan9e258d62022-01-12 10:50:51 -08007089 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_div_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007090 for (size_t channels = 48; channels < 192; channels += 24) {
7091 for (size_t rows = 14; rows <= 35; rows += 7) {
7092 GAvgPoolMicrokernelTester()
7093 .rows(rows)
7094 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007095 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007096 }
7097 }
7098 }
7099
Marat Dukhan9e258d62022-01-12 10:50:51 -08007100 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_div_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007101 for (size_t channels = 48; channels < 192; channels += 24) {
7102 for (size_t rows = 14; rows <= 35; rows += 7) {
7103 GAvgPoolMicrokernelTester()
7104 .rows(rows)
7105 .channels(channels)
7106 .input_stride(389)
Marat Dukhan85755042022-01-13 01:46:05 -08007107 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007108 }
7109 }
7110 }
7111
Marat Dukhan9e258d62022-01-12 10:50:51 -08007112 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007113 for (size_t channels = 1; channels < 24; channels++) {
7114 GAvgPoolMicrokernelTester()
7115 .rows(14)
7116 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007117 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007118 }
7119 }
7120
Marat Dukhan9e258d62022-01-12 10:50:51 -08007121 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007122 for (size_t channels = 1; channels < 24; channels++) {
7123 GAvgPoolMicrokernelTester()
7124 .rows(14)
7125 .channels(channels)
7126 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007127 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007128 }
7129 }
7130
Marat Dukhan9e258d62022-01-12 10:50:51 -08007131 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007132 for (size_t channels = 1; channels < 24; channels++) {
7133 GAvgPoolMicrokernelTester()
7134 .rows(14)
7135 .channels(channels)
7136 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007137 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007138 }
7139 }
7140
Marat Dukhan9e258d62022-01-12 10:50:51 -08007141 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007142 for (size_t channels = 1; channels < 24; channels++) {
7143 for (size_t rows = 8; rows < 14; rows++) {
7144 GAvgPoolMicrokernelTester()
7145 .rows(rows)
7146 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007147 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007148 }
7149 }
7150 }
7151
Marat Dukhan9e258d62022-01-12 10:50:51 -08007152 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007153 for (size_t channels = 1; channels < 24; channels++) {
7154 for (size_t rows = 14; rows <= 35; rows += 7) {
7155 GAvgPoolMicrokernelTester()
7156 .rows(rows)
7157 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007158 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007159 }
7160 }
7161 }
7162
Marat Dukhan9e258d62022-01-12 10:50:51 -08007163 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007164 for (size_t channels = 1; channels < 24; channels++) {
7165 for (size_t rows = 14; rows <= 35; rows += 7) {
7166 GAvgPoolMicrokernelTester()
7167 .rows(rows)
7168 .channels(channels)
7169 .input_stride(29)
Marat Dukhan85755042022-01-13 01:46:05 -08007170 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007171 }
7172 }
7173 }
7174
Marat Dukhan9e258d62022-01-12 10:50:51 -08007175 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_2pass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007176 for (size_t channels = 25; channels < 48; channels++) {
7177 GAvgPoolMicrokernelTester()
7178 .rows(14)
7179 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007180 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007181 }
7182 }
7183
Marat Dukhan9e258d62022-01-12 10:50:51 -08007184 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_2pass_fulltile_with_qmax) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007185 for (size_t channels = 25; channels < 48; channels++) {
7186 GAvgPoolMicrokernelTester()
7187 .rows(14)
7188 .channels(channels)
7189 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007190 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007191 }
7192 }
7193
Marat Dukhan9e258d62022-01-12 10:50:51 -08007194 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_2pass_fulltile_with_qmin) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007195 for (size_t channels = 25; channels < 48; channels++) {
7196 GAvgPoolMicrokernelTester()
7197 .rows(14)
7198 .channels(channels)
7199 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007200 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007201 }
7202 }
7203
Marat Dukhan9e258d62022-01-12 10:50:51 -08007204 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_2pass_subtile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007205 for (size_t channels = 25; channels < 48; channels++) {
7206 for (size_t rows = 8; rows < 14; rows++) {
7207 GAvgPoolMicrokernelTester()
7208 .rows(rows)
7209 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007210 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007211 }
7212 }
7213 }
7214
Marat Dukhan9e258d62022-01-12 10:50:51 -08007215 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_multipass_fulltile) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007216 for (size_t channels = 25; channels < 48; channels++) {
7217 for (size_t rows = 14; rows < 35; rows += 14) {
7218 GAvgPoolMicrokernelTester()
7219 .rows(rows)
7220 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007221 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007222 }
7223 }
7224 }
7225
Marat Dukhan9e258d62022-01-12 10:50:51 -08007226 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007227 for (size_t channels = 25; channels < 48; channels++) {
7228 for (size_t rows = 14; rows < 35; rows += 14) {
7229 GAvgPoolMicrokernelTester()
7230 .rows(rows)
7231 .channels(channels)
7232 .input_stride(61)
Marat Dukhan85755042022-01-13 01:46:05 -08007233 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c24, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007234 }
7235 }
7236 }
7237#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
7238
7239
7240#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
7241 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_fulltile) {
7242 GAvgPoolMicrokernelTester()
7243 .rows(14)
7244 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08007245 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007246 }
7247
7248 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_fulltile_with_input_stride) {
7249 GAvgPoolMicrokernelTester()
7250 .rows(14)
7251 .channels(32)
7252 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08007253 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007254 }
7255
7256 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_fulltile_with_qmax) {
7257 GAvgPoolMicrokernelTester()
7258 .rows(14)
7259 .channels(32)
7260 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007261 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007262 }
7263
7264 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_fulltile_with_qmin) {
7265 GAvgPoolMicrokernelTester()
7266 .rows(14)
7267 .channels(32)
7268 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007269 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007270 }
7271
7272 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_subtile) {
7273 for (size_t rows = 8; rows < 14; rows++) {
7274 GAvgPoolMicrokernelTester()
7275 .rows(rows)
7276 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08007277 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007278 }
7279 }
7280
7281 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_2pass_subtile_with_input_stride) {
7282 for (size_t rows = 8; rows < 14; rows++) {
7283 GAvgPoolMicrokernelTester()
7284 .rows(rows)
7285 .channels(32)
7286 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08007287 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007288 }
7289 }
7290
7291 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_multipass_fulltile) {
7292 for (size_t rows = 14; rows <= 35; rows += 7) {
7293 GAvgPoolMicrokernelTester()
7294 .rows(rows)
7295 .channels(32)
Marat Dukhan85755042022-01-13 01:46:05 -08007296 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007297 }
7298 }
7299
7300 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_eq_32_multipass_fulltile_with_input_stride) {
7301 for (size_t rows = 14; rows <= 35; rows += 7) {
7302 GAvgPoolMicrokernelTester()
7303 .rows(rows)
7304 .channels(32)
7305 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08007306 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007307 }
7308 }
7309
7310 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_div_32_2pass_fulltile) {
7311 for (size_t channels = 64; channels < 256; channels += 32) {
7312 GAvgPoolMicrokernelTester()
7313 .rows(14)
7314 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007315 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007316 }
7317 }
7318
7319 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_div_32_2pass_subtile) {
7320 for (size_t channels = 64; channels < 256; channels += 32) {
7321 for (size_t rows = 8; rows < 14; rows++) {
7322 GAvgPoolMicrokernelTester()
7323 .rows(rows)
7324 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007325 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007326 }
7327 }
7328 }
7329
7330 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_div_32_multipass_fulltile) {
7331 for (size_t channels = 64; channels < 256; channels += 32) {
7332 for (size_t rows = 14; rows <= 35; rows += 7) {
7333 GAvgPoolMicrokernelTester()
7334 .rows(rows)
7335 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007336 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007337 }
7338 }
7339 }
7340
7341 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_div_32_multipass_fulltile_with_input_stride) {
7342 for (size_t channels = 64; channels < 256; channels += 32) {
7343 for (size_t rows = 14; rows <= 35; rows += 7) {
7344 GAvgPoolMicrokernelTester()
7345 .rows(rows)
7346 .channels(channels)
7347 .input_stride(521)
Marat Dukhan85755042022-01-13 01:46:05 -08007348 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007349 }
7350 }
7351 }
7352
7353 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_2pass_fulltile) {
7354 for (size_t channels = 1; channels < 32; channels++) {
7355 GAvgPoolMicrokernelTester()
7356 .rows(14)
7357 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007358 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007359 }
7360 }
7361
7362 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_2pass_fulltile_with_qmax) {
7363 for (size_t channels = 1; channels < 32; channels++) {
7364 GAvgPoolMicrokernelTester()
7365 .rows(14)
7366 .channels(channels)
7367 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007368 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007369 }
7370 }
7371
7372 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_2pass_fulltile_with_qmin) {
7373 for (size_t channels = 1; channels < 32; channels++) {
7374 GAvgPoolMicrokernelTester()
7375 .rows(14)
7376 .channels(channels)
7377 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007378 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007379 }
7380 }
7381
7382 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_2pass_subtile) {
7383 for (size_t channels = 1; channels < 32; channels++) {
7384 for (size_t rows = 8; rows < 14; rows++) {
7385 GAvgPoolMicrokernelTester()
7386 .rows(rows)
7387 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007388 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007389 }
7390 }
7391 }
7392
7393 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_multipass_fulltile) {
7394 for (size_t channels = 1; channels < 32; channels++) {
7395 for (size_t rows = 14; rows <= 35; rows += 7) {
7396 GAvgPoolMicrokernelTester()
7397 .rows(rows)
7398 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007399 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007400 }
7401 }
7402 }
7403
7404 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_lt_32_multipass_fulltile_with_input_stride) {
7405 for (size_t channels = 1; channels < 32; channels++) {
7406 for (size_t rows = 14; rows <= 35; rows += 7) {
7407 GAvgPoolMicrokernelTester()
7408 .rows(rows)
7409 .channels(channels)
7410 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08007411 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007412 }
7413 }
7414 }
7415
7416 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_2pass_fulltile) {
7417 for (size_t channels = 33; channels < 64; channels++) {
7418 GAvgPoolMicrokernelTester()
7419 .rows(14)
7420 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007421 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007422 }
7423 }
7424
7425 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_2pass_fulltile_with_qmax) {
7426 for (size_t channels = 33; channels < 64; channels++) {
7427 GAvgPoolMicrokernelTester()
7428 .rows(14)
7429 .channels(channels)
7430 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007431 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007432 }
7433 }
7434
7435 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_2pass_fulltile_with_qmin) {
7436 for (size_t channels = 33; channels < 64; channels++) {
7437 GAvgPoolMicrokernelTester()
7438 .rows(14)
7439 .channels(channels)
7440 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007441 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007442 }
7443 }
7444
7445 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_2pass_subtile) {
7446 for (size_t channels = 33; channels < 64; channels++) {
7447 for (size_t rows = 8; rows < 14; rows++) {
7448 GAvgPoolMicrokernelTester()
7449 .rows(rows)
7450 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007451 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007452 }
7453 }
7454 }
7455
7456 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_multipass_fulltile) {
7457 for (size_t channels = 33; channels < 64; channels++) {
7458 for (size_t rows = 14; rows < 35; rows += 14) {
7459 GAvgPoolMicrokernelTester()
7460 .rows(rows)
7461 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007462 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan9e258d62022-01-12 10:50:51 -08007463 }
7464 }
7465 }
7466
7467 TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__WASMSIMD_C32, channels_gt_32_multipass_fulltile_with_input_stride) {
7468 for (size_t channels = 33; channels < 64; channels++) {
7469 for (size_t rows = 14; rows < 35; rows += 14) {
7470 GAvgPoolMicrokernelTester()
7471 .rows(rows)
7472 .channels(channels)
7473 .input_stride(79)
Marat Dukhan85755042022-01-13 01:46:05 -08007474 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__wasmsimd_c32, xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007475 }
7476 }
7477 }
7478#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
7479
7480
7481TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_fulltile) {
7482 GAvgPoolMicrokernelTester()
7483 .rows(7)
7484 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08007485 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007486}
7487
7488TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_subtile) {
7489 for (size_t rows = 1; rows < 7; rows++) {
7490 GAvgPoolMicrokernelTester()
7491 .rows(rows)
7492 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08007493 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007494 }
7495}
7496
7497TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_fulltile_with_input_stride) {
7498 GAvgPoolMicrokernelTester()
7499 .rows(7)
7500 .channels(1)
7501 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08007502 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007503}
7504
7505TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_fulltile_with_qmax) {
7506 GAvgPoolMicrokernelTester()
7507 .rows(7)
7508 .channels(1)
7509 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007510 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007511}
7512
7513TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_eq_1_fulltile_with_qmin) {
7514 GAvgPoolMicrokernelTester()
7515 .rows(7)
7516 .channels(1)
7517 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007518 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007519}
7520
7521TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_gt_1_fulltile) {
7522 for (size_t channels = 2; channels < 10; channels++) {
7523 GAvgPoolMicrokernelTester()
7524 .rows(7)
7525 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007526 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007527 }
7528}
7529
7530TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_gt_1_subtile) {
7531 for (size_t channels = 2; channels < 10; channels++) {
7532 for (size_t rows = 1; rows < 7; rows++) {
7533 GAvgPoolMicrokernelTester()
7534 .rows(rows)
7535 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007536 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007537 }
7538 }
7539}
7540
7541TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_gt_1_fulltile_with_qmax) {
7542 for (size_t channels = 2; channels < 10; channels++) {
7543 GAvgPoolMicrokernelTester()
7544 .rows(7)
7545 .channels(channels)
7546 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007547 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007548 }
7549}
7550
7551TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C1, channels_gt_1_fulltile_with_qmin) {
7552 for (size_t channels = 2; channels < 10; channels++) {
7553 GAvgPoolMicrokernelTester()
7554 .rows(7)
7555 .channels(channels)
7556 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007557 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007558 }
7559}
7560
7561TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_fulltile) {
7562 GAvgPoolMicrokernelTester()
7563 .rows(7)
7564 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08007565 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007566}
7567
7568TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_subtile) {
7569 for (size_t rows = 1; rows < 7; rows++) {
7570 GAvgPoolMicrokernelTester()
7571 .rows(rows)
7572 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08007573 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007574 }
7575}
7576
7577TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_fulltile_with_input_stride) {
7578 GAvgPoolMicrokernelTester()
7579 .rows(7)
7580 .channels(2)
7581 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08007582 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007583}
7584
7585TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_fulltile_with_qmax) {
7586 GAvgPoolMicrokernelTester()
7587 .rows(7)
7588 .channels(2)
7589 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007590 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007591}
7592
7593TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_eq_2_fulltile_with_qmin) {
7594 GAvgPoolMicrokernelTester()
7595 .rows(7)
7596 .channels(2)
7597 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007598 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007599}
7600
7601TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_div_2_fulltile) {
7602 for (size_t channels = 4; channels < 16; channels += 2) {
7603 GAvgPoolMicrokernelTester()
7604 .rows(7)
7605 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007606 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007607 }
7608}
7609
7610TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_div_2_subtile) {
7611 for (size_t channels = 4; channels < 16; channels += 2) {
7612 for (size_t rows = 1; rows < 7; rows++) {
7613 GAvgPoolMicrokernelTester()
7614 .rows(rows)
7615 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007616 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007617 }
7618 }
7619}
7620
7621TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_lt_2_fulltile) {
7622 for (size_t channels = 1; channels < 2; channels++) {
7623 GAvgPoolMicrokernelTester()
7624 .rows(7)
7625 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007626 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007627 }
7628}
7629
7630TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_lt_2_subtile) {
7631 for (size_t channels = 1; channels < 2; channels++) {
7632 for (size_t rows = 1; rows < 7; rows++) {
7633 GAvgPoolMicrokernelTester()
7634 .rows(rows)
7635 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007636 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007637 }
7638 }
7639}
7640
7641TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_lt_2_fulltile_with_qmax) {
7642 for (size_t channels = 1; channels < 2; channels++) {
7643 GAvgPoolMicrokernelTester()
7644 .rows(7)
7645 .channels(channels)
7646 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007647 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007648 }
7649}
7650
7651TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_lt_2_fulltile_with_qmin) {
7652 for (size_t channels = 1; channels < 2; channels++) {
7653 GAvgPoolMicrokernelTester()
7654 .rows(7)
7655 .channels(channels)
7656 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007657 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007658 }
7659}
7660
7661TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_gt_2_fulltile) {
7662 for (size_t channels = 3; channels < 4; channels++) {
7663 GAvgPoolMicrokernelTester()
7664 .rows(7)
7665 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007666 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007667 }
7668}
7669
7670TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_gt_2_subtile) {
7671 for (size_t channels = 3; channels < 4; channels++) {
7672 for (size_t rows = 1; rows < 7; rows++) {
7673 GAvgPoolMicrokernelTester()
7674 .rows(rows)
7675 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007676 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007677 }
7678 }
7679}
7680
7681TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_gt_2_fulltile_with_qmax) {
7682 for (size_t channels = 3; channels < 4; channels++) {
7683 GAvgPoolMicrokernelTester()
7684 .rows(7)
7685 .channels(channels)
7686 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007687 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007688 }
7689}
7690
7691TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C2, channels_gt_2_fulltile_with_qmin) {
7692 for (size_t channels = 3; channels < 4; channels++) {
7693 GAvgPoolMicrokernelTester()
7694 .rows(7)
7695 .channels(channels)
7696 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007697 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007698 }
7699}
7700
7701TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_fulltile) {
7702 GAvgPoolMicrokernelTester()
7703 .rows(7)
7704 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08007705 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007706}
7707
7708TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_subtile) {
7709 for (size_t rows = 1; rows < 7; rows++) {
7710 GAvgPoolMicrokernelTester()
7711 .rows(rows)
7712 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08007713 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007714 }
7715}
7716
7717TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_fulltile_with_input_stride) {
7718 GAvgPoolMicrokernelTester()
7719 .rows(7)
7720 .channels(4)
7721 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08007722 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007723}
7724
7725TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_fulltile_with_qmax) {
7726 GAvgPoolMicrokernelTester()
7727 .rows(7)
7728 .channels(4)
7729 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007730 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007731}
7732
7733TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_eq_4_fulltile_with_qmin) {
7734 GAvgPoolMicrokernelTester()
7735 .rows(7)
7736 .channels(4)
7737 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007738 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007739}
7740
7741TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_div_4_fulltile) {
7742 for (size_t channels = 8; channels < 32; channels += 4) {
7743 GAvgPoolMicrokernelTester()
7744 .rows(7)
7745 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007746 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007747 }
7748}
7749
7750TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_div_4_subtile) {
7751 for (size_t channels = 8; channels < 32; channels += 4) {
7752 for (size_t rows = 1; rows < 7; rows++) {
7753 GAvgPoolMicrokernelTester()
7754 .rows(rows)
7755 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007756 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007757 }
7758 }
7759}
7760
7761TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_lt_4_fulltile) {
7762 for (size_t channels = 1; channels < 4; channels++) {
7763 GAvgPoolMicrokernelTester()
7764 .rows(7)
7765 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007766 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007767 }
7768}
7769
7770TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_lt_4_subtile) {
7771 for (size_t channels = 1; channels < 4; channels++) {
7772 for (size_t rows = 1; rows < 7; rows++) {
7773 GAvgPoolMicrokernelTester()
7774 .rows(rows)
7775 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007776 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007777 }
7778 }
7779}
7780
7781TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_lt_4_fulltile_with_qmax) {
7782 for (size_t channels = 1; channels < 4; channels++) {
7783 GAvgPoolMicrokernelTester()
7784 .rows(7)
7785 .channels(channels)
7786 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007787 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007788 }
7789}
7790
7791TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_lt_4_fulltile_with_qmin) {
7792 for (size_t channels = 1; channels < 4; channels++) {
7793 GAvgPoolMicrokernelTester()
7794 .rows(7)
7795 .channels(channels)
7796 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007797 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007798 }
7799}
7800
7801TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_gt_4_fulltile) {
7802 for (size_t channels = 5; channels < 8; channels++) {
7803 GAvgPoolMicrokernelTester()
7804 .rows(7)
7805 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007806 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007807 }
7808}
7809
7810TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_gt_4_subtile) {
7811 for (size_t channels = 5; channels < 8; channels++) {
7812 for (size_t rows = 1; rows < 7; rows++) {
7813 GAvgPoolMicrokernelTester()
7814 .rows(rows)
7815 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007816 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007817 }
7818 }
7819}
7820
7821TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_gt_4_fulltile_with_qmax) {
7822 for (size_t channels = 5; channels < 8; channels++) {
7823 GAvgPoolMicrokernelTester()
7824 .rows(7)
7825 .channels(channels)
7826 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007827 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007828 }
7829}
7830
7831TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_IMAGIC_C4, channels_gt_4_fulltile_with_qmin) {
7832 for (size_t channels = 5; channels < 8; channels++) {
7833 GAvgPoolMicrokernelTester()
7834 .rows(7)
7835 .channels(channels)
7836 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007837 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007838 }
7839}
7840
7841TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_fulltile) {
7842 GAvgPoolMicrokernelTester()
7843 .rows(14)
7844 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08007845 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007846}
7847
7848TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
7849 GAvgPoolMicrokernelTester()
7850 .rows(14)
7851 .channels(1)
7852 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08007853 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007854}
7855
7856TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_fulltile_with_qmax) {
7857 GAvgPoolMicrokernelTester()
7858 .rows(14)
7859 .channels(1)
7860 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007861 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007862}
7863
7864TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_fulltile_with_qmin) {
7865 GAvgPoolMicrokernelTester()
7866 .rows(14)
7867 .channels(1)
7868 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007869 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007870}
7871
7872TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_subtile) {
7873 for (size_t rows = 8; rows < 14; rows++) {
7874 GAvgPoolMicrokernelTester()
7875 .rows(rows)
7876 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08007877 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007878 }
7879}
7880
7881TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_2pass_subtile_with_input_stride) {
7882 for (size_t rows = 8; rows < 14; rows++) {
7883 GAvgPoolMicrokernelTester()
7884 .rows(rows)
7885 .channels(1)
7886 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08007887 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007888 }
7889}
7890
7891TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_multipass_fulltile) {
7892 for (size_t rows = 14; rows <= 35; rows += 7) {
7893 GAvgPoolMicrokernelTester()
7894 .rows(rows)
7895 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08007896 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007897 }
7898}
7899
7900TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_eq_1_multipass_fulltile_with_input_stride) {
7901 for (size_t rows = 14; rows <= 35; rows += 7) {
7902 GAvgPoolMicrokernelTester()
7903 .rows(rows)
7904 .channels(1)
7905 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08007906 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007907 }
7908}
7909
7910TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_div_1_2pass_fulltile) {
7911 for (size_t channels = 2; channels < 8; channels += 1) {
7912 GAvgPoolMicrokernelTester()
7913 .rows(14)
7914 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007915 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007916 }
7917}
7918
7919TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_div_1_2pass_subtile) {
7920 for (size_t channels = 2; channels < 8; channels += 1) {
7921 for (size_t rows = 8; rows < 14; rows++) {
7922 GAvgPoolMicrokernelTester()
7923 .rows(rows)
7924 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007925 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007926 }
7927 }
7928}
7929
7930TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_div_1_multipass_fulltile) {
7931 for (size_t channels = 2; channels < 8; channels += 1) {
7932 for (size_t rows = 14; rows <= 35; rows += 7) {
7933 GAvgPoolMicrokernelTester()
7934 .rows(rows)
7935 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007936 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007937 }
7938 }
7939}
7940
7941TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_div_1_multipass_fulltile_with_input_stride) {
7942 for (size_t channels = 2; channels < 8; channels += 1) {
7943 for (size_t rows = 14; rows <= 35; rows += 7) {
7944 GAvgPoolMicrokernelTester()
7945 .rows(rows)
7946 .channels(channels)
7947 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08007948 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007949 }
7950 }
7951}
7952
7953TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_2pass_fulltile) {
7954 for (size_t channels = 2; channels < 10; channels++) {
7955 GAvgPoolMicrokernelTester()
7956 .rows(14)
7957 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007958 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007959 }
7960}
7961
7962TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_2pass_fulltile_with_qmax) {
7963 for (size_t channels = 2; channels < 10; channels++) {
7964 GAvgPoolMicrokernelTester()
7965 .rows(14)
7966 .channels(channels)
7967 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007968 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007969 }
7970}
7971
7972TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_2pass_fulltile_with_qmin) {
7973 for (size_t channels = 2; channels < 10; channels++) {
7974 GAvgPoolMicrokernelTester()
7975 .rows(14)
7976 .channels(channels)
7977 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08007978 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007979 }
7980}
7981
7982TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_2pass_subtile) {
7983 for (size_t channels = 2; channels < 10; channels++) {
7984 for (size_t rows = 8; rows < 14; rows++) {
7985 GAvgPoolMicrokernelTester()
7986 .rows(rows)
7987 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007988 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08007989 }
7990 }
7991}
7992
7993TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_multipass_fulltile) {
7994 for (size_t channels = 2; channels < 10; channels++) {
7995 for (size_t rows = 14; rows < 35; rows += 14) {
7996 GAvgPoolMicrokernelTester()
7997 .rows(rows)
7998 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08007999 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008000 }
8001 }
8002}
8003
8004TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
8005 for (size_t channels = 2; channels < 10; channels++) {
8006 for (size_t rows = 14; rows < 35; rows += 14) {
8007 GAvgPoolMicrokernelTester()
8008 .rows(rows)
8009 .channels(channels)
8010 .input_stride(17)
Marat Dukhan85755042022-01-13 01:46:05 -08008011 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008012 }
8013 }
8014}
8015
8016
8017TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_fulltile) {
8018 GAvgPoolMicrokernelTester()
8019 .rows(14)
8020 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08008021 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008022}
8023
8024TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_fulltile_with_input_stride) {
8025 GAvgPoolMicrokernelTester()
8026 .rows(14)
8027 .channels(2)
8028 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08008029 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008030}
8031
8032TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_fulltile_with_qmax) {
8033 GAvgPoolMicrokernelTester()
8034 .rows(14)
8035 .channels(2)
8036 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008037 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008038}
8039
8040TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_fulltile_with_qmin) {
8041 GAvgPoolMicrokernelTester()
8042 .rows(14)
8043 .channels(2)
8044 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008045 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008046}
8047
8048TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_subtile) {
8049 for (size_t rows = 8; rows < 14; rows++) {
8050 GAvgPoolMicrokernelTester()
8051 .rows(rows)
8052 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08008053 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008054 }
8055}
8056
8057TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_2pass_subtile_with_input_stride) {
8058 for (size_t rows = 8; rows < 14; rows++) {
8059 GAvgPoolMicrokernelTester()
8060 .rows(rows)
8061 .channels(2)
8062 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08008063 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008064 }
8065}
8066
8067TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_multipass_fulltile) {
8068 for (size_t rows = 14; rows <= 35; rows += 7) {
8069 GAvgPoolMicrokernelTester()
8070 .rows(rows)
8071 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08008072 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008073 }
8074}
8075
8076TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_eq_2_multipass_fulltile_with_input_stride) {
8077 for (size_t rows = 14; rows <= 35; rows += 7) {
8078 GAvgPoolMicrokernelTester()
8079 .rows(rows)
8080 .channels(2)
8081 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08008082 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008083 }
8084}
8085
8086TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_div_2_2pass_fulltile) {
8087 for (size_t channels = 4; channels < 16; channels += 2) {
8088 GAvgPoolMicrokernelTester()
8089 .rows(14)
8090 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008091 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008092 }
8093}
8094
8095TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_div_2_2pass_subtile) {
8096 for (size_t channels = 4; channels < 16; channels += 2) {
8097 for (size_t rows = 8; rows < 14; rows++) {
8098 GAvgPoolMicrokernelTester()
8099 .rows(rows)
8100 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008101 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008102 }
8103 }
8104}
8105
8106TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_div_2_multipass_fulltile) {
8107 for (size_t channels = 4; channels < 16; channels += 2) {
8108 for (size_t rows = 14; rows <= 35; rows += 7) {
8109 GAvgPoolMicrokernelTester()
8110 .rows(rows)
8111 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008112 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008113 }
8114 }
8115}
8116
8117TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_div_2_multipass_fulltile_with_input_stride) {
8118 for (size_t channels = 4; channels < 16; channels += 2) {
8119 for (size_t rows = 14; rows <= 35; rows += 7) {
8120 GAvgPoolMicrokernelTester()
8121 .rows(rows)
8122 .channels(channels)
8123 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08008124 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008125 }
8126 }
8127}
8128
8129TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_2pass_fulltile) {
8130 for (size_t channels = 1; channels < 2; channels++) {
8131 GAvgPoolMicrokernelTester()
8132 .rows(14)
8133 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008134 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008135 }
8136}
8137
8138TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_2pass_fulltile_with_qmax) {
8139 for (size_t channels = 1; channels < 2; channels++) {
8140 GAvgPoolMicrokernelTester()
8141 .rows(14)
8142 .channels(channels)
8143 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008144 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008145 }
8146}
8147
8148TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_2pass_fulltile_with_qmin) {
8149 for (size_t channels = 1; channels < 2; channels++) {
8150 GAvgPoolMicrokernelTester()
8151 .rows(14)
8152 .channels(channels)
8153 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008154 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008155 }
8156}
8157
8158TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_2pass_subtile) {
8159 for (size_t channels = 1; channels < 2; channels++) {
8160 for (size_t rows = 8; rows < 14; rows++) {
8161 GAvgPoolMicrokernelTester()
8162 .rows(rows)
8163 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008164 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008165 }
8166 }
8167}
8168
8169TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_multipass_fulltile) {
8170 for (size_t channels = 1; channels < 2; channels++) {
8171 for (size_t rows = 14; rows <= 35; rows += 7) {
8172 GAvgPoolMicrokernelTester()
8173 .rows(rows)
8174 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008175 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008176 }
8177 }
8178}
8179
8180TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_lt_2_multipass_fulltile_with_input_stride) {
8181 for (size_t channels = 1; channels < 2; channels++) {
8182 for (size_t rows = 14; rows <= 35; rows += 7) {
8183 GAvgPoolMicrokernelTester()
8184 .rows(rows)
8185 .channels(channels)
8186 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08008187 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008188 }
8189 }
8190}
8191
8192TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_2pass_fulltile) {
8193 for (size_t channels = 3; channels < 4; channels++) {
8194 GAvgPoolMicrokernelTester()
8195 .rows(14)
8196 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008197 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008198 }
8199}
8200
8201TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_2pass_fulltile_with_qmax) {
8202 for (size_t channels = 3; channels < 4; channels++) {
8203 GAvgPoolMicrokernelTester()
8204 .rows(14)
8205 .channels(channels)
8206 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008207 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008208 }
8209}
8210
8211TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_2pass_fulltile_with_qmin) {
8212 for (size_t channels = 3; channels < 4; channels++) {
8213 GAvgPoolMicrokernelTester()
8214 .rows(14)
8215 .channels(channels)
8216 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008217 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008218 }
8219}
8220
8221TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_2pass_subtile) {
8222 for (size_t channels = 3; channels < 4; channels++) {
8223 for (size_t rows = 8; rows < 14; rows++) {
8224 GAvgPoolMicrokernelTester()
8225 .rows(rows)
8226 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008227 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008228 }
8229 }
8230}
8231
8232TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_multipass_fulltile) {
8233 for (size_t channels = 3; channels < 4; channels++) {
8234 for (size_t rows = 14; rows < 35; rows += 14) {
8235 GAvgPoolMicrokernelTester()
8236 .rows(rows)
8237 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008238 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008239 }
8240 }
8241}
8242
8243TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C2, channels_gt_2_multipass_fulltile_with_input_stride) {
8244 for (size_t channels = 3; channels < 4; channels++) {
8245 for (size_t rows = 14; rows < 35; rows += 14) {
8246 GAvgPoolMicrokernelTester()
8247 .rows(rows)
8248 .channels(channels)
8249 .input_stride(17)
Marat Dukhan85755042022-01-13 01:46:05 -08008250 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008251 }
8252 }
8253}
8254
8255
8256TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_fulltile) {
8257 GAvgPoolMicrokernelTester()
8258 .rows(14)
8259 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08008260 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008261}
8262
8263TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
8264 GAvgPoolMicrokernelTester()
8265 .rows(14)
8266 .channels(4)
8267 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08008268 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008269}
8270
8271TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_fulltile_with_qmax) {
8272 GAvgPoolMicrokernelTester()
8273 .rows(14)
8274 .channels(4)
8275 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008276 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008277}
8278
8279TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_fulltile_with_qmin) {
8280 GAvgPoolMicrokernelTester()
8281 .rows(14)
8282 .channels(4)
8283 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008284 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008285}
8286
8287TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_subtile) {
8288 for (size_t rows = 8; rows < 14; rows++) {
8289 GAvgPoolMicrokernelTester()
8290 .rows(rows)
8291 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08008292 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008293 }
8294}
8295
8296TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_2pass_subtile_with_input_stride) {
8297 for (size_t rows = 8; rows < 14; rows++) {
8298 GAvgPoolMicrokernelTester()
8299 .rows(rows)
8300 .channels(4)
8301 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08008302 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008303 }
8304}
8305
8306TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_multipass_fulltile) {
8307 for (size_t rows = 14; rows <= 35; rows += 7) {
8308 GAvgPoolMicrokernelTester()
8309 .rows(rows)
8310 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08008311 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008312 }
8313}
8314
8315TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
8316 for (size_t rows = 14; rows <= 35; rows += 7) {
8317 GAvgPoolMicrokernelTester()
8318 .rows(rows)
8319 .channels(4)
8320 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08008321 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008322 }
8323}
8324
8325TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_div_4_2pass_fulltile) {
8326 for (size_t channels = 8; channels < 32; channels += 4) {
8327 GAvgPoolMicrokernelTester()
8328 .rows(14)
8329 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008330 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008331 }
8332}
8333
8334TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_div_4_2pass_subtile) {
8335 for (size_t channels = 8; channels < 32; channels += 4) {
8336 for (size_t rows = 8; rows < 14; rows++) {
8337 GAvgPoolMicrokernelTester()
8338 .rows(rows)
8339 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008340 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008341 }
8342 }
8343}
8344
8345TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_div_4_multipass_fulltile) {
8346 for (size_t channels = 8; channels < 32; channels += 4) {
8347 for (size_t rows = 14; rows <= 35; rows += 7) {
8348 GAvgPoolMicrokernelTester()
8349 .rows(rows)
8350 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008351 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008352 }
8353 }
8354}
8355
8356TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_div_4_multipass_fulltile_with_input_stride) {
8357 for (size_t channels = 8; channels < 32; channels += 4) {
8358 for (size_t rows = 14; rows <= 35; rows += 7) {
8359 GAvgPoolMicrokernelTester()
8360 .rows(rows)
8361 .channels(channels)
8362 .input_stride(67)
Marat Dukhan85755042022-01-13 01:46:05 -08008363 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008364 }
8365 }
8366}
8367
8368TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_2pass_fulltile) {
8369 for (size_t channels = 1; channels < 4; channels++) {
8370 GAvgPoolMicrokernelTester()
8371 .rows(14)
8372 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008373 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008374 }
8375}
8376
8377TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_2pass_fulltile_with_qmax) {
8378 for (size_t channels = 1; channels < 4; channels++) {
8379 GAvgPoolMicrokernelTester()
8380 .rows(14)
8381 .channels(channels)
8382 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008383 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008384 }
8385}
8386
8387TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_2pass_fulltile_with_qmin) {
8388 for (size_t channels = 1; channels < 4; channels++) {
8389 GAvgPoolMicrokernelTester()
8390 .rows(14)
8391 .channels(channels)
8392 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008393 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008394 }
8395}
8396
8397TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_2pass_subtile) {
8398 for (size_t channels = 1; channels < 4; channels++) {
8399 for (size_t rows = 8; rows < 14; rows++) {
8400 GAvgPoolMicrokernelTester()
8401 .rows(rows)
8402 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008403 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008404 }
8405 }
8406}
8407
8408TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_multipass_fulltile) {
8409 for (size_t channels = 1; channels < 4; channels++) {
8410 for (size_t rows = 14; rows <= 35; rows += 7) {
8411 GAvgPoolMicrokernelTester()
8412 .rows(rows)
8413 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008414 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008415 }
8416 }
8417}
8418
8419TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
8420 for (size_t channels = 1; channels < 4; channels++) {
8421 for (size_t rows = 14; rows <= 35; rows += 7) {
8422 GAvgPoolMicrokernelTester()
8423 .rows(rows)
8424 .channels(channels)
8425 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08008426 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008427 }
8428 }
8429}
8430
8431TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_2pass_fulltile) {
8432 for (size_t channels = 5; channels < 8; channels++) {
8433 GAvgPoolMicrokernelTester()
8434 .rows(14)
8435 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008436 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008437 }
8438}
8439
8440TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_2pass_fulltile_with_qmax) {
8441 for (size_t channels = 5; channels < 8; channels++) {
8442 GAvgPoolMicrokernelTester()
8443 .rows(14)
8444 .channels(channels)
8445 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008446 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008447 }
8448}
8449
8450TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_2pass_fulltile_with_qmin) {
8451 for (size_t channels = 5; channels < 8; channels++) {
8452 GAvgPoolMicrokernelTester()
8453 .rows(14)
8454 .channels(channels)
8455 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008456 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008457 }
8458}
8459
8460TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_2pass_subtile) {
8461 for (size_t channels = 5; channels < 8; channels++) {
8462 for (size_t rows = 8; rows < 14; rows++) {
8463 GAvgPoolMicrokernelTester()
8464 .rows(rows)
8465 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008466 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008467 }
8468 }
8469}
8470
8471TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_multipass_fulltile) {
8472 for (size_t channels = 5; channels < 8; channels++) {
8473 for (size_t rows = 14; rows < 35; rows += 14) {
8474 GAvgPoolMicrokernelTester()
8475 .rows(rows)
8476 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008477 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008478 }
8479 }
8480}
8481
8482TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_IMAGIC_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
8483 for (size_t channels = 5; channels < 8; channels++) {
8484 for (size_t rows = 14; rows < 35; rows += 14) {
8485 GAvgPoolMicrokernelTester()
8486 .rows(rows)
8487 .channels(channels)
8488 .input_stride(23)
Marat Dukhan85755042022-01-13 01:46:05 -08008489 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_imagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params, xnn_qs8_requantize_fp32);
Marat Dukhan847ff5e2022-01-11 20:31:06 -08008490 }
8491 }
8492}
Marat Dukhand7a4b222022-01-11 22:25:20 -08008493
8494
8495TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_fulltile) {
8496 GAvgPoolMicrokernelTester()
8497 .rows(7)
8498 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08008499 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008500}
8501
8502TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_subtile) {
8503 for (size_t rows = 1; rows < 7; rows++) {
8504 GAvgPoolMicrokernelTester()
8505 .rows(rows)
8506 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08008507 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008508 }
8509}
8510
8511TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_fulltile_with_input_stride) {
8512 GAvgPoolMicrokernelTester()
8513 .rows(7)
8514 .channels(1)
8515 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08008516 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008517}
8518
8519TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_fulltile_with_qmax) {
8520 GAvgPoolMicrokernelTester()
8521 .rows(7)
8522 .channels(1)
8523 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008524 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008525}
8526
8527TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_eq_1_fulltile_with_qmin) {
8528 GAvgPoolMicrokernelTester()
8529 .rows(7)
8530 .channels(1)
8531 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008532 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008533}
8534
8535TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_gt_1_fulltile) {
8536 for (size_t channels = 2; channels < 10; channels++) {
8537 GAvgPoolMicrokernelTester()
8538 .rows(7)
8539 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008540 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008541 }
8542}
8543
8544TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_gt_1_subtile) {
8545 for (size_t channels = 2; channels < 10; channels++) {
8546 for (size_t rows = 1; rows < 7; rows++) {
8547 GAvgPoolMicrokernelTester()
8548 .rows(rows)
8549 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008550 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008551 }
8552 }
8553}
8554
8555TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_gt_1_fulltile_with_qmax) {
8556 for (size_t channels = 2; channels < 10; channels++) {
8557 GAvgPoolMicrokernelTester()
8558 .rows(7)
8559 .channels(channels)
8560 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008561 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008562 }
8563}
8564
8565TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C1, channels_gt_1_fulltile_with_qmin) {
8566 for (size_t channels = 2; channels < 10; channels++) {
8567 GAvgPoolMicrokernelTester()
8568 .rows(7)
8569 .channels(channels)
8570 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008571 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008572 }
8573}
8574
8575TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_fulltile) {
8576 GAvgPoolMicrokernelTester()
8577 .rows(7)
8578 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08008579 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008580}
8581
8582TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_subtile) {
8583 for (size_t rows = 1; rows < 7; rows++) {
8584 GAvgPoolMicrokernelTester()
8585 .rows(rows)
8586 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08008587 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008588 }
8589}
8590
8591TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_fulltile_with_input_stride) {
8592 GAvgPoolMicrokernelTester()
8593 .rows(7)
8594 .channels(2)
8595 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08008596 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008597}
8598
8599TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_fulltile_with_qmax) {
8600 GAvgPoolMicrokernelTester()
8601 .rows(7)
8602 .channels(2)
8603 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008604 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008605}
8606
8607TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_eq_2_fulltile_with_qmin) {
8608 GAvgPoolMicrokernelTester()
8609 .rows(7)
8610 .channels(2)
8611 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008612 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008613}
8614
8615TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_div_2_fulltile) {
8616 for (size_t channels = 4; channels < 16; channels += 2) {
8617 GAvgPoolMicrokernelTester()
8618 .rows(7)
8619 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008620 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008621 }
8622}
8623
8624TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_div_2_subtile) {
8625 for (size_t channels = 4; channels < 16; channels += 2) {
8626 for (size_t rows = 1; rows < 7; rows++) {
8627 GAvgPoolMicrokernelTester()
8628 .rows(rows)
8629 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008630 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008631 }
8632 }
8633}
8634
8635TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_lt_2_fulltile) {
8636 for (size_t channels = 1; channels < 2; channels++) {
8637 GAvgPoolMicrokernelTester()
8638 .rows(7)
8639 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008640 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008641 }
8642}
8643
8644TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_lt_2_subtile) {
8645 for (size_t channels = 1; channels < 2; channels++) {
8646 for (size_t rows = 1; rows < 7; rows++) {
8647 GAvgPoolMicrokernelTester()
8648 .rows(rows)
8649 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008650 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008651 }
8652 }
8653}
8654
8655TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_lt_2_fulltile_with_qmax) {
8656 for (size_t channels = 1; channels < 2; channels++) {
8657 GAvgPoolMicrokernelTester()
8658 .rows(7)
8659 .channels(channels)
8660 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008661 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008662 }
8663}
8664
8665TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_lt_2_fulltile_with_qmin) {
8666 for (size_t channels = 1; channels < 2; channels++) {
8667 GAvgPoolMicrokernelTester()
8668 .rows(7)
8669 .channels(channels)
8670 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008671 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008672 }
8673}
8674
8675TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_gt_2_fulltile) {
8676 for (size_t channels = 3; channels < 4; channels++) {
8677 GAvgPoolMicrokernelTester()
8678 .rows(7)
8679 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008680 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008681 }
8682}
8683
8684TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_gt_2_subtile) {
8685 for (size_t channels = 3; channels < 4; channels++) {
8686 for (size_t rows = 1; rows < 7; rows++) {
8687 GAvgPoolMicrokernelTester()
8688 .rows(rows)
8689 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008690 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008691 }
8692 }
8693}
8694
8695TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_gt_2_fulltile_with_qmax) {
8696 for (size_t channels = 3; channels < 4; channels++) {
8697 GAvgPoolMicrokernelTester()
8698 .rows(7)
8699 .channels(channels)
8700 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008701 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008702 }
8703}
8704
8705TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C2, channels_gt_2_fulltile_with_qmin) {
8706 for (size_t channels = 3; channels < 4; channels++) {
8707 GAvgPoolMicrokernelTester()
8708 .rows(7)
8709 .channels(channels)
8710 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008711 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008712 }
8713}
8714
8715TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_fulltile) {
8716 GAvgPoolMicrokernelTester()
8717 .rows(7)
8718 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08008719 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008720}
8721
8722TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_subtile) {
8723 for (size_t rows = 1; rows < 7; rows++) {
8724 GAvgPoolMicrokernelTester()
8725 .rows(rows)
8726 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08008727 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008728 }
8729}
8730
8731TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_fulltile_with_input_stride) {
8732 GAvgPoolMicrokernelTester()
8733 .rows(7)
8734 .channels(4)
8735 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08008736 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008737}
8738
8739TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_fulltile_with_qmax) {
8740 GAvgPoolMicrokernelTester()
8741 .rows(7)
8742 .channels(4)
8743 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008744 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008745}
8746
8747TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_eq_4_fulltile_with_qmin) {
8748 GAvgPoolMicrokernelTester()
8749 .rows(7)
8750 .channels(4)
8751 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008752 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008753}
8754
8755TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_div_4_fulltile) {
8756 for (size_t channels = 8; channels < 32; channels += 4) {
8757 GAvgPoolMicrokernelTester()
8758 .rows(7)
8759 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008760 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008761 }
8762}
8763
8764TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_div_4_subtile) {
8765 for (size_t channels = 8; channels < 32; channels += 4) {
8766 for (size_t rows = 1; rows < 7; rows++) {
8767 GAvgPoolMicrokernelTester()
8768 .rows(rows)
8769 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008770 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008771 }
8772 }
8773}
8774
8775TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_lt_4_fulltile) {
8776 for (size_t channels = 1; channels < 4; channels++) {
8777 GAvgPoolMicrokernelTester()
8778 .rows(7)
8779 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008780 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008781 }
8782}
8783
8784TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_lt_4_subtile) {
8785 for (size_t channels = 1; channels < 4; channels++) {
8786 for (size_t rows = 1; rows < 7; rows++) {
8787 GAvgPoolMicrokernelTester()
8788 .rows(rows)
8789 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008790 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008791 }
8792 }
8793}
8794
8795TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_lt_4_fulltile_with_qmax) {
8796 for (size_t channels = 1; channels < 4; channels++) {
8797 GAvgPoolMicrokernelTester()
8798 .rows(7)
8799 .channels(channels)
8800 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008801 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008802 }
8803}
8804
8805TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_lt_4_fulltile_with_qmin) {
8806 for (size_t channels = 1; channels < 4; channels++) {
8807 GAvgPoolMicrokernelTester()
8808 .rows(7)
8809 .channels(channels)
8810 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008811 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008812 }
8813}
8814
8815TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_gt_4_fulltile) {
8816 for (size_t channels = 5; channels < 8; channels++) {
8817 GAvgPoolMicrokernelTester()
8818 .rows(7)
8819 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008820 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008821 }
8822}
8823
8824TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_gt_4_subtile) {
8825 for (size_t channels = 5; channels < 8; channels++) {
8826 for (size_t rows = 1; rows < 7; rows++) {
8827 GAvgPoolMicrokernelTester()
8828 .rows(rows)
8829 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008830 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008831 }
8832 }
8833}
8834
8835TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_gt_4_fulltile_with_qmax) {
8836 for (size_t channels = 5; channels < 8; channels++) {
8837 GAvgPoolMicrokernelTester()
8838 .rows(7)
8839 .channels(channels)
8840 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008841 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008842 }
8843}
8844
8845TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_FMAGIC_C4, channels_gt_4_fulltile_with_qmin) {
8846 for (size_t channels = 5; channels < 8; channels++) {
8847 GAvgPoolMicrokernelTester()
8848 .rows(7)
8849 .channels(channels)
8850 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008851 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008852 }
8853}
8854
8855TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_fulltile) {
8856 GAvgPoolMicrokernelTester()
8857 .rows(14)
8858 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08008859 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008860}
8861
8862TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
8863 GAvgPoolMicrokernelTester()
8864 .rows(14)
8865 .channels(1)
8866 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08008867 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008868}
8869
8870TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_fulltile_with_qmax) {
8871 GAvgPoolMicrokernelTester()
8872 .rows(14)
8873 .channels(1)
8874 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008875 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008876}
8877
8878TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_fulltile_with_qmin) {
8879 GAvgPoolMicrokernelTester()
8880 .rows(14)
8881 .channels(1)
8882 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008883 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008884}
8885
8886TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_subtile) {
8887 for (size_t rows = 8; rows < 14; rows++) {
8888 GAvgPoolMicrokernelTester()
8889 .rows(rows)
8890 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08008891 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008892 }
8893}
8894
8895TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_2pass_subtile_with_input_stride) {
8896 for (size_t rows = 8; rows < 14; rows++) {
8897 GAvgPoolMicrokernelTester()
8898 .rows(rows)
8899 .channels(1)
8900 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08008901 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008902 }
8903}
8904
8905TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_multipass_fulltile) {
8906 for (size_t rows = 14; rows <= 35; rows += 7) {
8907 GAvgPoolMicrokernelTester()
8908 .rows(rows)
8909 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08008910 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008911 }
8912}
8913
8914TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_eq_1_multipass_fulltile_with_input_stride) {
8915 for (size_t rows = 14; rows <= 35; rows += 7) {
8916 GAvgPoolMicrokernelTester()
8917 .rows(rows)
8918 .channels(1)
8919 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08008920 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008921 }
8922}
8923
8924TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_div_1_2pass_fulltile) {
8925 for (size_t channels = 2; channels < 8; channels += 1) {
8926 GAvgPoolMicrokernelTester()
8927 .rows(14)
8928 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008929 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008930 }
8931}
8932
8933TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_div_1_2pass_subtile) {
8934 for (size_t channels = 2; channels < 8; channels += 1) {
8935 for (size_t rows = 8; rows < 14; rows++) {
8936 GAvgPoolMicrokernelTester()
8937 .rows(rows)
8938 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008939 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008940 }
8941 }
8942}
8943
8944TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_div_1_multipass_fulltile) {
8945 for (size_t channels = 2; channels < 8; channels += 1) {
8946 for (size_t rows = 14; rows <= 35; rows += 7) {
8947 GAvgPoolMicrokernelTester()
8948 .rows(rows)
8949 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008950 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008951 }
8952 }
8953}
8954
8955TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_div_1_multipass_fulltile_with_input_stride) {
8956 for (size_t channels = 2; channels < 8; channels += 1) {
8957 for (size_t rows = 14; rows <= 35; rows += 7) {
8958 GAvgPoolMicrokernelTester()
8959 .rows(rows)
8960 .channels(channels)
8961 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08008962 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008963 }
8964 }
8965}
8966
8967TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_2pass_fulltile) {
8968 for (size_t channels = 2; channels < 10; channels++) {
8969 GAvgPoolMicrokernelTester()
8970 .rows(14)
8971 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08008972 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008973 }
8974}
8975
8976TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_2pass_fulltile_with_qmax) {
8977 for (size_t channels = 2; channels < 10; channels++) {
8978 GAvgPoolMicrokernelTester()
8979 .rows(14)
8980 .channels(channels)
8981 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008982 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008983 }
8984}
8985
8986TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_2pass_fulltile_with_qmin) {
8987 for (size_t channels = 2; channels < 10; channels++) {
8988 GAvgPoolMicrokernelTester()
8989 .rows(14)
8990 .channels(channels)
8991 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08008992 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08008993 }
8994}
8995
8996TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_2pass_subtile) {
8997 for (size_t channels = 2; channels < 10; channels++) {
8998 for (size_t rows = 8; rows < 14; rows++) {
8999 GAvgPoolMicrokernelTester()
9000 .rows(rows)
9001 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009002 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009003 }
9004 }
9005}
9006
9007TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_multipass_fulltile) {
9008 for (size_t channels = 2; channels < 10; channels++) {
9009 for (size_t rows = 14; rows < 35; rows += 14) {
9010 GAvgPoolMicrokernelTester()
9011 .rows(rows)
9012 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009013 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009014 }
9015 }
9016}
9017
9018TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
9019 for (size_t channels = 2; channels < 10; channels++) {
9020 for (size_t rows = 14; rows < 35; rows += 14) {
9021 GAvgPoolMicrokernelTester()
9022 .rows(rows)
9023 .channels(channels)
9024 .input_stride(17)
Marat Dukhan85755042022-01-13 01:46:05 -08009025 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009026 }
9027 }
9028}
9029
9030
9031TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_fulltile) {
9032 GAvgPoolMicrokernelTester()
9033 .rows(14)
9034 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08009035 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009036}
9037
9038TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_fulltile_with_input_stride) {
9039 GAvgPoolMicrokernelTester()
9040 .rows(14)
9041 .channels(2)
9042 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08009043 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009044}
9045
9046TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_fulltile_with_qmax) {
9047 GAvgPoolMicrokernelTester()
9048 .rows(14)
9049 .channels(2)
9050 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009051 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009052}
9053
9054TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_fulltile_with_qmin) {
9055 GAvgPoolMicrokernelTester()
9056 .rows(14)
9057 .channels(2)
9058 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009059 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009060}
9061
9062TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_subtile) {
9063 for (size_t rows = 8; rows < 14; rows++) {
9064 GAvgPoolMicrokernelTester()
9065 .rows(rows)
9066 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08009067 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009068 }
9069}
9070
9071TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_2pass_subtile_with_input_stride) {
9072 for (size_t rows = 8; rows < 14; rows++) {
9073 GAvgPoolMicrokernelTester()
9074 .rows(rows)
9075 .channels(2)
9076 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08009077 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009078 }
9079}
9080
9081TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_multipass_fulltile) {
9082 for (size_t rows = 14; rows <= 35; rows += 7) {
9083 GAvgPoolMicrokernelTester()
9084 .rows(rows)
9085 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08009086 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009087 }
9088}
9089
9090TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_eq_2_multipass_fulltile_with_input_stride) {
9091 for (size_t rows = 14; rows <= 35; rows += 7) {
9092 GAvgPoolMicrokernelTester()
9093 .rows(rows)
9094 .channels(2)
9095 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08009096 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009097 }
9098}
9099
9100TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_div_2_2pass_fulltile) {
9101 for (size_t channels = 4; channels < 16; channels += 2) {
9102 GAvgPoolMicrokernelTester()
9103 .rows(14)
9104 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009105 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009106 }
9107}
9108
9109TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_div_2_2pass_subtile) {
9110 for (size_t channels = 4; channels < 16; channels += 2) {
9111 for (size_t rows = 8; rows < 14; rows++) {
9112 GAvgPoolMicrokernelTester()
9113 .rows(rows)
9114 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009115 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009116 }
9117 }
9118}
9119
9120TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_div_2_multipass_fulltile) {
9121 for (size_t channels = 4; channels < 16; channels += 2) {
9122 for (size_t rows = 14; rows <= 35; rows += 7) {
9123 GAvgPoolMicrokernelTester()
9124 .rows(rows)
9125 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009126 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009127 }
9128 }
9129}
9130
9131TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_div_2_multipass_fulltile_with_input_stride) {
9132 for (size_t channels = 4; channels < 16; channels += 2) {
9133 for (size_t rows = 14; rows <= 35; rows += 7) {
9134 GAvgPoolMicrokernelTester()
9135 .rows(rows)
9136 .channels(channels)
9137 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -08009138 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009139 }
9140 }
9141}
9142
9143TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_2pass_fulltile) {
9144 for (size_t channels = 1; channels < 2; channels++) {
9145 GAvgPoolMicrokernelTester()
9146 .rows(14)
9147 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009148 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009149 }
9150}
9151
9152TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_2pass_fulltile_with_qmax) {
9153 for (size_t channels = 1; channels < 2; channels++) {
9154 GAvgPoolMicrokernelTester()
9155 .rows(14)
9156 .channels(channels)
9157 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009158 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009159 }
9160}
9161
9162TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_2pass_fulltile_with_qmin) {
9163 for (size_t channels = 1; channels < 2; channels++) {
9164 GAvgPoolMicrokernelTester()
9165 .rows(14)
9166 .channels(channels)
9167 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009168 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009169 }
9170}
9171
9172TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_2pass_subtile) {
9173 for (size_t channels = 1; channels < 2; channels++) {
9174 for (size_t rows = 8; rows < 14; rows++) {
9175 GAvgPoolMicrokernelTester()
9176 .rows(rows)
9177 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009178 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009179 }
9180 }
9181}
9182
9183TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_multipass_fulltile) {
9184 for (size_t channels = 1; channels < 2; channels++) {
9185 for (size_t rows = 14; rows <= 35; rows += 7) {
9186 GAvgPoolMicrokernelTester()
9187 .rows(rows)
9188 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009189 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009190 }
9191 }
9192}
9193
9194TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_lt_2_multipass_fulltile_with_input_stride) {
9195 for (size_t channels = 1; channels < 2; channels++) {
9196 for (size_t rows = 14; rows <= 35; rows += 7) {
9197 GAvgPoolMicrokernelTester()
9198 .rows(rows)
9199 .channels(channels)
9200 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08009201 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009202 }
9203 }
9204}
9205
9206TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_2pass_fulltile) {
9207 for (size_t channels = 3; channels < 4; channels++) {
9208 GAvgPoolMicrokernelTester()
9209 .rows(14)
9210 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009211 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009212 }
9213}
9214
9215TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_2pass_fulltile_with_qmax) {
9216 for (size_t channels = 3; channels < 4; channels++) {
9217 GAvgPoolMicrokernelTester()
9218 .rows(14)
9219 .channels(channels)
9220 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009221 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009222 }
9223}
9224
9225TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_2pass_fulltile_with_qmin) {
9226 for (size_t channels = 3; channels < 4; channels++) {
9227 GAvgPoolMicrokernelTester()
9228 .rows(14)
9229 .channels(channels)
9230 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009231 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009232 }
9233}
9234
9235TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_2pass_subtile) {
9236 for (size_t channels = 3; channels < 4; channels++) {
9237 for (size_t rows = 8; rows < 14; rows++) {
9238 GAvgPoolMicrokernelTester()
9239 .rows(rows)
9240 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009241 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009242 }
9243 }
9244}
9245
9246TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_multipass_fulltile) {
9247 for (size_t channels = 3; channels < 4; channels++) {
9248 for (size_t rows = 14; rows < 35; rows += 14) {
9249 GAvgPoolMicrokernelTester()
9250 .rows(rows)
9251 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009252 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009253 }
9254 }
9255}
9256
9257TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C2, channels_gt_2_multipass_fulltile_with_input_stride) {
9258 for (size_t channels = 3; channels < 4; channels++) {
9259 for (size_t rows = 14; rows < 35; rows += 14) {
9260 GAvgPoolMicrokernelTester()
9261 .rows(rows)
9262 .channels(channels)
9263 .input_stride(17)
Marat Dukhan85755042022-01-13 01:46:05 -08009264 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009265 }
9266 }
9267}
9268
9269
9270TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_fulltile) {
9271 GAvgPoolMicrokernelTester()
9272 .rows(14)
9273 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08009274 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009275}
9276
9277TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
9278 GAvgPoolMicrokernelTester()
9279 .rows(14)
9280 .channels(4)
9281 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08009282 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009283}
9284
9285TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_fulltile_with_qmax) {
9286 GAvgPoolMicrokernelTester()
9287 .rows(14)
9288 .channels(4)
9289 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009290 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009291}
9292
9293TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_fulltile_with_qmin) {
9294 GAvgPoolMicrokernelTester()
9295 .rows(14)
9296 .channels(4)
9297 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009298 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009299}
9300
9301TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_subtile) {
9302 for (size_t rows = 8; rows < 14; rows++) {
9303 GAvgPoolMicrokernelTester()
9304 .rows(rows)
9305 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08009306 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009307 }
9308}
9309
9310TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_2pass_subtile_with_input_stride) {
9311 for (size_t rows = 8; rows < 14; rows++) {
9312 GAvgPoolMicrokernelTester()
9313 .rows(rows)
9314 .channels(4)
9315 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08009316 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009317 }
9318}
9319
9320TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_multipass_fulltile) {
9321 for (size_t rows = 14; rows <= 35; rows += 7) {
9322 GAvgPoolMicrokernelTester()
9323 .rows(rows)
9324 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08009325 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009326 }
9327}
9328
9329TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
9330 for (size_t rows = 14; rows <= 35; rows += 7) {
9331 GAvgPoolMicrokernelTester()
9332 .rows(rows)
9333 .channels(4)
9334 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08009335 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009336 }
9337}
9338
9339TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_div_4_2pass_fulltile) {
9340 for (size_t channels = 8; channels < 32; channels += 4) {
9341 GAvgPoolMicrokernelTester()
9342 .rows(14)
9343 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009344 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009345 }
9346}
9347
9348TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_div_4_2pass_subtile) {
9349 for (size_t channels = 8; channels < 32; channels += 4) {
9350 for (size_t rows = 8; rows < 14; rows++) {
9351 GAvgPoolMicrokernelTester()
9352 .rows(rows)
9353 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009354 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009355 }
9356 }
9357}
9358
9359TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_div_4_multipass_fulltile) {
9360 for (size_t channels = 8; channels < 32; channels += 4) {
9361 for (size_t rows = 14; rows <= 35; rows += 7) {
9362 GAvgPoolMicrokernelTester()
9363 .rows(rows)
9364 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009365 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009366 }
9367 }
9368}
9369
9370TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_div_4_multipass_fulltile_with_input_stride) {
9371 for (size_t channels = 8; channels < 32; channels += 4) {
9372 for (size_t rows = 14; rows <= 35; rows += 7) {
9373 GAvgPoolMicrokernelTester()
9374 .rows(rows)
9375 .channels(channels)
9376 .input_stride(67)
Marat Dukhan85755042022-01-13 01:46:05 -08009377 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009378 }
9379 }
9380}
9381
9382TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_2pass_fulltile) {
9383 for (size_t channels = 1; channels < 4; channels++) {
9384 GAvgPoolMicrokernelTester()
9385 .rows(14)
9386 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009387 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009388 }
9389}
9390
9391TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_2pass_fulltile_with_qmax) {
9392 for (size_t channels = 1; channels < 4; channels++) {
9393 GAvgPoolMicrokernelTester()
9394 .rows(14)
9395 .channels(channels)
9396 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009397 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009398 }
9399}
9400
9401TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_2pass_fulltile_with_qmin) {
9402 for (size_t channels = 1; channels < 4; channels++) {
9403 GAvgPoolMicrokernelTester()
9404 .rows(14)
9405 .channels(channels)
9406 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009407 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009408 }
9409}
9410
9411TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_2pass_subtile) {
9412 for (size_t channels = 1; channels < 4; channels++) {
9413 for (size_t rows = 8; rows < 14; rows++) {
9414 GAvgPoolMicrokernelTester()
9415 .rows(rows)
9416 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009417 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009418 }
9419 }
9420}
9421
9422TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_multipass_fulltile) {
9423 for (size_t channels = 1; channels < 4; channels++) {
9424 for (size_t rows = 14; rows <= 35; rows += 7) {
9425 GAvgPoolMicrokernelTester()
9426 .rows(rows)
9427 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009428 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009429 }
9430 }
9431}
9432
9433TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
9434 for (size_t channels = 1; channels < 4; channels++) {
9435 for (size_t rows = 14; rows <= 35; rows += 7) {
9436 GAvgPoolMicrokernelTester()
9437 .rows(rows)
9438 .channels(channels)
9439 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08009440 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009441 }
9442 }
9443}
9444
9445TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_2pass_fulltile) {
9446 for (size_t channels = 5; channels < 8; channels++) {
9447 GAvgPoolMicrokernelTester()
9448 .rows(14)
9449 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009450 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009451 }
9452}
9453
9454TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_2pass_fulltile_with_qmax) {
9455 for (size_t channels = 5; channels < 8; channels++) {
9456 GAvgPoolMicrokernelTester()
9457 .rows(14)
9458 .channels(channels)
9459 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009460 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009461 }
9462}
9463
9464TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_2pass_fulltile_with_qmin) {
9465 for (size_t channels = 5; channels < 8; channels++) {
9466 GAvgPoolMicrokernelTester()
9467 .rows(14)
9468 .channels(channels)
9469 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009470 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009471 }
9472}
9473
9474TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_2pass_subtile) {
9475 for (size_t channels = 5; channels < 8; channels++) {
9476 for (size_t rows = 8; rows < 14; rows++) {
9477 GAvgPoolMicrokernelTester()
9478 .rows(rows)
9479 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009480 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009481 }
9482 }
9483}
9484
9485TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_multipass_fulltile) {
9486 for (size_t channels = 5; channels < 8; channels++) {
9487 for (size_t rows = 14; rows < 35; rows += 14) {
9488 GAvgPoolMicrokernelTester()
9489 .rows(rows)
9490 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009491 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009492 }
9493 }
9494}
9495
9496TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_FMAGIC_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
9497 for (size_t channels = 5; channels < 8; channels++) {
9498 for (size_t rows = 14; rows < 35; rows += 14) {
9499 GAvgPoolMicrokernelTester()
9500 .rows(rows)
9501 .channels(channels)
9502 .input_stride(23)
Marat Dukhan85755042022-01-13 01:46:05 -08009503 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_fmagic_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009504 }
9505 }
9506}
9507
9508
9509TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_fulltile) {
9510 GAvgPoolMicrokernelTester()
9511 .rows(7)
9512 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08009513 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009514}
9515
9516TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_subtile) {
9517 for (size_t rows = 1; rows < 7; rows++) {
9518 GAvgPoolMicrokernelTester()
9519 .rows(rows)
9520 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08009521 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009522 }
9523}
9524
9525TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_fulltile_with_input_stride) {
9526 GAvgPoolMicrokernelTester()
9527 .rows(7)
9528 .channels(1)
9529 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08009530 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009531}
9532
9533TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_fulltile_with_qmax) {
9534 GAvgPoolMicrokernelTester()
9535 .rows(7)
9536 .channels(1)
9537 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009538 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009539}
9540
9541TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_eq_1_fulltile_with_qmin) {
9542 GAvgPoolMicrokernelTester()
9543 .rows(7)
9544 .channels(1)
9545 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009546 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009547}
9548
9549TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_gt_1_fulltile) {
9550 for (size_t channels = 2; channels < 10; channels++) {
9551 GAvgPoolMicrokernelTester()
9552 .rows(7)
9553 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009554 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009555 }
9556}
9557
9558TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_gt_1_subtile) {
9559 for (size_t channels = 2; channels < 10; channels++) {
9560 for (size_t rows = 1; rows < 7; rows++) {
9561 GAvgPoolMicrokernelTester()
9562 .rows(rows)
9563 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009564 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009565 }
9566 }
9567}
9568
9569TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_gt_1_fulltile_with_qmax) {
9570 for (size_t channels = 2; channels < 10; channels++) {
9571 GAvgPoolMicrokernelTester()
9572 .rows(7)
9573 .channels(channels)
9574 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009575 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009576 }
9577}
9578
9579TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C1, channels_gt_1_fulltile_with_qmin) {
9580 for (size_t channels = 2; channels < 10; channels++) {
9581 GAvgPoolMicrokernelTester()
9582 .rows(7)
9583 .channels(channels)
9584 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009585 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009586 }
9587}
9588
9589TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_fulltile) {
9590 GAvgPoolMicrokernelTester()
9591 .rows(7)
9592 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08009593 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009594}
9595
9596TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_subtile) {
9597 for (size_t rows = 1; rows < 7; rows++) {
9598 GAvgPoolMicrokernelTester()
9599 .rows(rows)
9600 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -08009601 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009602 }
9603}
9604
9605TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_fulltile_with_input_stride) {
9606 GAvgPoolMicrokernelTester()
9607 .rows(7)
9608 .channels(2)
9609 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -08009610 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009611}
9612
9613TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_fulltile_with_qmax) {
9614 GAvgPoolMicrokernelTester()
9615 .rows(7)
9616 .channels(2)
9617 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009618 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009619}
9620
9621TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_eq_2_fulltile_with_qmin) {
9622 GAvgPoolMicrokernelTester()
9623 .rows(7)
9624 .channels(2)
9625 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009626 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009627}
9628
9629TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_div_2_fulltile) {
9630 for (size_t channels = 4; channels < 16; channels += 2) {
9631 GAvgPoolMicrokernelTester()
9632 .rows(7)
9633 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009634 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009635 }
9636}
9637
9638TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_div_2_subtile) {
9639 for (size_t channels = 4; channels < 16; channels += 2) {
9640 for (size_t rows = 1; rows < 7; rows++) {
9641 GAvgPoolMicrokernelTester()
9642 .rows(rows)
9643 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009644 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009645 }
9646 }
9647}
9648
9649TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_lt_2_fulltile) {
9650 for (size_t channels = 1; channels < 2; channels++) {
9651 GAvgPoolMicrokernelTester()
9652 .rows(7)
9653 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009654 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009655 }
9656}
9657
9658TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_lt_2_subtile) {
9659 for (size_t channels = 1; channels < 2; channels++) {
9660 for (size_t rows = 1; rows < 7; rows++) {
9661 GAvgPoolMicrokernelTester()
9662 .rows(rows)
9663 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009664 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009665 }
9666 }
9667}
9668
9669TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_lt_2_fulltile_with_qmax) {
9670 for (size_t channels = 1; channels < 2; channels++) {
9671 GAvgPoolMicrokernelTester()
9672 .rows(7)
9673 .channels(channels)
9674 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009675 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009676 }
9677}
9678
9679TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_lt_2_fulltile_with_qmin) {
9680 for (size_t channels = 1; channels < 2; channels++) {
9681 GAvgPoolMicrokernelTester()
9682 .rows(7)
9683 .channels(channels)
9684 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009685 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009686 }
9687}
9688
9689TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_gt_2_fulltile) {
9690 for (size_t channels = 3; channels < 4; channels++) {
9691 GAvgPoolMicrokernelTester()
9692 .rows(7)
9693 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009694 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009695 }
9696}
9697
9698TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_gt_2_subtile) {
9699 for (size_t channels = 3; channels < 4; channels++) {
9700 for (size_t rows = 1; rows < 7; rows++) {
9701 GAvgPoolMicrokernelTester()
9702 .rows(rows)
9703 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009704 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009705 }
9706 }
9707}
9708
9709TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_gt_2_fulltile_with_qmax) {
9710 for (size_t channels = 3; channels < 4; channels++) {
9711 GAvgPoolMicrokernelTester()
9712 .rows(7)
9713 .channels(channels)
9714 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009715 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009716 }
9717}
9718
9719TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C2, channels_gt_2_fulltile_with_qmin) {
9720 for (size_t channels = 3; channels < 4; channels++) {
9721 GAvgPoolMicrokernelTester()
9722 .rows(7)
9723 .channels(channels)
9724 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009725 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009726 }
9727}
9728
9729TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_fulltile) {
9730 GAvgPoolMicrokernelTester()
9731 .rows(7)
9732 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08009733 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009734}
9735
9736TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_subtile) {
9737 for (size_t rows = 1; rows < 7; rows++) {
9738 GAvgPoolMicrokernelTester()
9739 .rows(rows)
9740 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -08009741 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009742 }
9743}
9744
9745TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_fulltile_with_input_stride) {
9746 GAvgPoolMicrokernelTester()
9747 .rows(7)
9748 .channels(4)
9749 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -08009750 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009751}
9752
9753TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_fulltile_with_qmax) {
9754 GAvgPoolMicrokernelTester()
9755 .rows(7)
9756 .channels(4)
9757 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009758 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009759}
9760
9761TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_eq_4_fulltile_with_qmin) {
9762 GAvgPoolMicrokernelTester()
9763 .rows(7)
9764 .channels(4)
9765 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009766 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009767}
9768
9769TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_div_4_fulltile) {
9770 for (size_t channels = 8; channels < 32; channels += 4) {
9771 GAvgPoolMicrokernelTester()
9772 .rows(7)
9773 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009774 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009775 }
9776}
9777
9778TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_div_4_subtile) {
9779 for (size_t channels = 8; channels < 32; channels += 4) {
9780 for (size_t rows = 1; rows < 7; rows++) {
9781 GAvgPoolMicrokernelTester()
9782 .rows(rows)
9783 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009784 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009785 }
9786 }
9787}
9788
9789TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_lt_4_fulltile) {
9790 for (size_t channels = 1; channels < 4; channels++) {
9791 GAvgPoolMicrokernelTester()
9792 .rows(7)
9793 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009794 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009795 }
9796}
9797
9798TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_lt_4_subtile) {
9799 for (size_t channels = 1; channels < 4; channels++) {
9800 for (size_t rows = 1; rows < 7; rows++) {
9801 GAvgPoolMicrokernelTester()
9802 .rows(rows)
9803 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009804 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009805 }
9806 }
9807}
9808
9809TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_lt_4_fulltile_with_qmax) {
9810 for (size_t channels = 1; channels < 4; channels++) {
9811 GAvgPoolMicrokernelTester()
9812 .rows(7)
9813 .channels(channels)
9814 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009815 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009816 }
9817}
9818
9819TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_lt_4_fulltile_with_qmin) {
9820 for (size_t channels = 1; channels < 4; channels++) {
9821 GAvgPoolMicrokernelTester()
9822 .rows(7)
9823 .channels(channels)
9824 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009825 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009826 }
9827}
9828
9829TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_gt_4_fulltile) {
9830 for (size_t channels = 5; channels < 8; channels++) {
9831 GAvgPoolMicrokernelTester()
9832 .rows(7)
9833 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009834 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009835 }
9836}
9837
9838TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_gt_4_subtile) {
9839 for (size_t channels = 5; channels < 8; channels++) {
9840 for (size_t rows = 1; rows < 7; rows++) {
9841 GAvgPoolMicrokernelTester()
9842 .rows(rows)
9843 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009844 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009845 }
9846 }
9847}
9848
9849TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_gt_4_fulltile_with_qmax) {
9850 for (size_t channels = 5; channels < 8; channels++) {
9851 GAvgPoolMicrokernelTester()
9852 .rows(7)
9853 .channels(channels)
9854 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009855 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009856 }
9857}
9858
9859TEST(QS8_GAVGPOOL_MINMAX_FP32_7X__SCALAR_LRINTF_C4, channels_gt_4_fulltile_with_qmin) {
9860 for (size_t channels = 5; channels < 8; channels++) {
9861 GAvgPoolMicrokernelTester()
9862 .rows(7)
9863 .channels(channels)
9864 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009865 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009866 }
9867}
9868
9869TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_fulltile) {
9870 GAvgPoolMicrokernelTester()
9871 .rows(14)
9872 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08009873 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009874}
9875
9876TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_fulltile_with_input_stride) {
9877 GAvgPoolMicrokernelTester()
9878 .rows(14)
9879 .channels(1)
9880 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08009881 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009882}
9883
9884TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_fulltile_with_qmax) {
9885 GAvgPoolMicrokernelTester()
9886 .rows(14)
9887 .channels(1)
9888 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009889 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009890}
9891
9892TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_fulltile_with_qmin) {
9893 GAvgPoolMicrokernelTester()
9894 .rows(14)
9895 .channels(1)
9896 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009897 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009898}
9899
9900TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_subtile) {
9901 for (size_t rows = 8; rows < 14; rows++) {
9902 GAvgPoolMicrokernelTester()
9903 .rows(rows)
9904 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08009905 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009906 }
9907}
9908
9909TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_2pass_subtile_with_input_stride) {
9910 for (size_t rows = 8; rows < 14; rows++) {
9911 GAvgPoolMicrokernelTester()
9912 .rows(rows)
9913 .channels(1)
9914 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08009915 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009916 }
9917}
9918
9919TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_multipass_fulltile) {
9920 for (size_t rows = 14; rows <= 35; rows += 7) {
9921 GAvgPoolMicrokernelTester()
9922 .rows(rows)
9923 .channels(1)
Marat Dukhan85755042022-01-13 01:46:05 -08009924 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009925 }
9926}
9927
9928TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_eq_1_multipass_fulltile_with_input_stride) {
9929 for (size_t rows = 14; rows <= 35; rows += 7) {
9930 GAvgPoolMicrokernelTester()
9931 .rows(rows)
9932 .channels(1)
9933 .input_stride(3)
Marat Dukhan85755042022-01-13 01:46:05 -08009934 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009935 }
9936}
9937
9938TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_div_1_2pass_fulltile) {
9939 for (size_t channels = 2; channels < 8; channels += 1) {
9940 GAvgPoolMicrokernelTester()
9941 .rows(14)
9942 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009943 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009944 }
9945}
9946
9947TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_div_1_2pass_subtile) {
9948 for (size_t channels = 2; channels < 8; channels += 1) {
9949 for (size_t rows = 8; rows < 14; rows++) {
9950 GAvgPoolMicrokernelTester()
9951 .rows(rows)
9952 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009953 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009954 }
9955 }
9956}
9957
9958TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_div_1_multipass_fulltile) {
9959 for (size_t channels = 2; channels < 8; channels += 1) {
9960 for (size_t rows = 14; rows <= 35; rows += 7) {
9961 GAvgPoolMicrokernelTester()
9962 .rows(rows)
9963 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009964 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009965 }
9966 }
9967}
9968
9969TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_div_1_multipass_fulltile_with_input_stride) {
9970 for (size_t channels = 2; channels < 8; channels += 1) {
9971 for (size_t rows = 14; rows <= 35; rows += 7) {
9972 GAvgPoolMicrokernelTester()
9973 .rows(rows)
9974 .channels(channels)
9975 .input_stride(19)
Marat Dukhan85755042022-01-13 01:46:05 -08009976 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009977 }
9978 }
9979}
9980
9981TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_2pass_fulltile) {
9982 for (size_t channels = 2; channels < 10; channels++) {
9983 GAvgPoolMicrokernelTester()
9984 .rows(14)
9985 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -08009986 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009987 }
9988}
9989
9990TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_2pass_fulltile_with_qmax) {
9991 for (size_t channels = 2; channels < 10; channels++) {
9992 GAvgPoolMicrokernelTester()
9993 .rows(14)
9994 .channels(channels)
9995 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -08009996 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -08009997 }
9998}
9999
10000TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_2pass_fulltile_with_qmin) {
10001 for (size_t channels = 2; channels < 10; channels++) {
10002 GAvgPoolMicrokernelTester()
10003 .rows(14)
10004 .channels(channels)
10005 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010006 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010007 }
10008}
10009
10010TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_2pass_subtile) {
10011 for (size_t channels = 2; channels < 10; channels++) {
10012 for (size_t rows = 8; rows < 14; rows++) {
10013 GAvgPoolMicrokernelTester()
10014 .rows(rows)
10015 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010016 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010017 }
10018 }
10019}
10020
10021TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_multipass_fulltile) {
10022 for (size_t channels = 2; channels < 10; channels++) {
10023 for (size_t rows = 14; rows < 35; rows += 14) {
10024 GAvgPoolMicrokernelTester()
10025 .rows(rows)
10026 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010027 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010028 }
10029 }
10030}
10031
10032TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C1, channels_gt_1_multipass_fulltile_with_input_stride) {
10033 for (size_t channels = 2; channels < 10; channels++) {
10034 for (size_t rows = 14; rows < 35; rows += 14) {
10035 GAvgPoolMicrokernelTester()
10036 .rows(rows)
10037 .channels(channels)
10038 .input_stride(17)
Marat Dukhan85755042022-01-13 01:46:05 -080010039 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c1, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010040 }
10041 }
10042}
10043
10044
10045TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_fulltile) {
10046 GAvgPoolMicrokernelTester()
10047 .rows(14)
10048 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -080010049 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010050}
10051
10052TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_fulltile_with_input_stride) {
10053 GAvgPoolMicrokernelTester()
10054 .rows(14)
10055 .channels(2)
10056 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -080010057 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010058}
10059
10060TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_fulltile_with_qmax) {
10061 GAvgPoolMicrokernelTester()
10062 .rows(14)
10063 .channels(2)
10064 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010065 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010066}
10067
10068TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_fulltile_with_qmin) {
10069 GAvgPoolMicrokernelTester()
10070 .rows(14)
10071 .channels(2)
10072 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010073 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010074}
10075
10076TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_subtile) {
10077 for (size_t rows = 8; rows < 14; rows++) {
10078 GAvgPoolMicrokernelTester()
10079 .rows(rows)
10080 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -080010081 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010082 }
10083}
10084
10085TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_2pass_subtile_with_input_stride) {
10086 for (size_t rows = 8; rows < 14; rows++) {
10087 GAvgPoolMicrokernelTester()
10088 .rows(rows)
10089 .channels(2)
10090 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -080010091 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010092 }
10093}
10094
10095TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_multipass_fulltile) {
10096 for (size_t rows = 14; rows <= 35; rows += 7) {
10097 GAvgPoolMicrokernelTester()
10098 .rows(rows)
10099 .channels(2)
Marat Dukhan85755042022-01-13 01:46:05 -080010100 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010101 }
10102}
10103
10104TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_eq_2_multipass_fulltile_with_input_stride) {
10105 for (size_t rows = 14; rows <= 35; rows += 7) {
10106 GAvgPoolMicrokernelTester()
10107 .rows(rows)
10108 .channels(2)
10109 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -080010110 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010111 }
10112}
10113
10114TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_div_2_2pass_fulltile) {
10115 for (size_t channels = 4; channels < 16; channels += 2) {
10116 GAvgPoolMicrokernelTester()
10117 .rows(14)
10118 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010119 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010120 }
10121}
10122
10123TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_div_2_2pass_subtile) {
10124 for (size_t channels = 4; channels < 16; channels += 2) {
10125 for (size_t rows = 8; rows < 14; rows++) {
10126 GAvgPoolMicrokernelTester()
10127 .rows(rows)
10128 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010129 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010130 }
10131 }
10132}
10133
10134TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_div_2_multipass_fulltile) {
10135 for (size_t channels = 4; channels < 16; channels += 2) {
10136 for (size_t rows = 14; rows <= 35; rows += 7) {
10137 GAvgPoolMicrokernelTester()
10138 .rows(rows)
10139 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010140 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010141 }
10142 }
10143}
10144
10145TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_div_2_multipass_fulltile_with_input_stride) {
10146 for (size_t channels = 4; channels < 16; channels += 2) {
10147 for (size_t rows = 14; rows <= 35; rows += 7) {
10148 GAvgPoolMicrokernelTester()
10149 .rows(rows)
10150 .channels(channels)
10151 .input_stride(37)
Marat Dukhan85755042022-01-13 01:46:05 -080010152 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010153 }
10154 }
10155}
10156
10157TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_2pass_fulltile) {
10158 for (size_t channels = 1; channels < 2; channels++) {
10159 GAvgPoolMicrokernelTester()
10160 .rows(14)
10161 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010162 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010163 }
10164}
10165
10166TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_2pass_fulltile_with_qmax) {
10167 for (size_t channels = 1; channels < 2; channels++) {
10168 GAvgPoolMicrokernelTester()
10169 .rows(14)
10170 .channels(channels)
10171 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010172 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010173 }
10174}
10175
10176TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_2pass_fulltile_with_qmin) {
10177 for (size_t channels = 1; channels < 2; channels++) {
10178 GAvgPoolMicrokernelTester()
10179 .rows(14)
10180 .channels(channels)
10181 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010182 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010183 }
10184}
10185
10186TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_2pass_subtile) {
10187 for (size_t channels = 1; channels < 2; channels++) {
10188 for (size_t rows = 8; rows < 14; rows++) {
10189 GAvgPoolMicrokernelTester()
10190 .rows(rows)
10191 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010192 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010193 }
10194 }
10195}
10196
10197TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_multipass_fulltile) {
10198 for (size_t channels = 1; channels < 2; channels++) {
10199 for (size_t rows = 14; rows <= 35; rows += 7) {
10200 GAvgPoolMicrokernelTester()
10201 .rows(rows)
10202 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010203 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010204 }
10205 }
10206}
10207
10208TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_lt_2_multipass_fulltile_with_input_stride) {
10209 for (size_t channels = 1; channels < 2; channels++) {
10210 for (size_t rows = 14; rows <= 35; rows += 7) {
10211 GAvgPoolMicrokernelTester()
10212 .rows(rows)
10213 .channels(channels)
10214 .input_stride(5)
Marat Dukhan85755042022-01-13 01:46:05 -080010215 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010216 }
10217 }
10218}
10219
10220TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_2pass_fulltile) {
10221 for (size_t channels = 3; channels < 4; channels++) {
10222 GAvgPoolMicrokernelTester()
10223 .rows(14)
10224 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010225 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010226 }
10227}
10228
10229TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_2pass_fulltile_with_qmax) {
10230 for (size_t channels = 3; channels < 4; channels++) {
10231 GAvgPoolMicrokernelTester()
10232 .rows(14)
10233 .channels(channels)
10234 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010235 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010236 }
10237}
10238
10239TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_2pass_fulltile_with_qmin) {
10240 for (size_t channels = 3; channels < 4; channels++) {
10241 GAvgPoolMicrokernelTester()
10242 .rows(14)
10243 .channels(channels)
10244 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010245 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010246 }
10247}
10248
10249TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_2pass_subtile) {
10250 for (size_t channels = 3; channels < 4; channels++) {
10251 for (size_t rows = 8; rows < 14; rows++) {
10252 GAvgPoolMicrokernelTester()
10253 .rows(rows)
10254 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010255 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010256 }
10257 }
10258}
10259
10260TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_multipass_fulltile) {
10261 for (size_t channels = 3; channels < 4; channels++) {
10262 for (size_t rows = 14; rows < 35; rows += 14) {
10263 GAvgPoolMicrokernelTester()
10264 .rows(rows)
10265 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010266 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010267 }
10268 }
10269}
10270
10271TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C2, channels_gt_2_multipass_fulltile_with_input_stride) {
10272 for (size_t channels = 3; channels < 4; channels++) {
10273 for (size_t rows = 14; rows < 35; rows += 14) {
10274 GAvgPoolMicrokernelTester()
10275 .rows(rows)
10276 .channels(channels)
10277 .input_stride(17)
Marat Dukhan85755042022-01-13 01:46:05 -080010278 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c2, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010279 }
10280 }
10281}
10282
10283
10284TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_fulltile) {
10285 GAvgPoolMicrokernelTester()
10286 .rows(14)
10287 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -080010288 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010289}
10290
10291TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_fulltile_with_input_stride) {
10292 GAvgPoolMicrokernelTester()
10293 .rows(14)
10294 .channels(4)
10295 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -080010296 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010297}
10298
10299TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_fulltile_with_qmax) {
10300 GAvgPoolMicrokernelTester()
10301 .rows(14)
10302 .channels(4)
10303 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010304 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010305}
10306
10307TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_fulltile_with_qmin) {
10308 GAvgPoolMicrokernelTester()
10309 .rows(14)
10310 .channels(4)
10311 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010312 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010313}
10314
10315TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_subtile) {
10316 for (size_t rows = 8; rows < 14; rows++) {
10317 GAvgPoolMicrokernelTester()
10318 .rows(rows)
10319 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -080010320 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010321 }
10322}
10323
10324TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_2pass_subtile_with_input_stride) {
10325 for (size_t rows = 8; rows < 14; rows++) {
10326 GAvgPoolMicrokernelTester()
10327 .rows(rows)
10328 .channels(4)
10329 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -080010330 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010331 }
10332}
10333
10334TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_multipass_fulltile) {
10335 for (size_t rows = 14; rows <= 35; rows += 7) {
10336 GAvgPoolMicrokernelTester()
10337 .rows(rows)
10338 .channels(4)
Marat Dukhan85755042022-01-13 01:46:05 -080010339 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010340 }
10341}
10342
10343TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_eq_4_multipass_fulltile_with_input_stride) {
10344 for (size_t rows = 14; rows <= 35; rows += 7) {
10345 GAvgPoolMicrokernelTester()
10346 .rows(rows)
10347 .channels(4)
10348 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -080010349 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010350 }
10351}
10352
10353TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_div_4_2pass_fulltile) {
10354 for (size_t channels = 8; channels < 32; channels += 4) {
10355 GAvgPoolMicrokernelTester()
10356 .rows(14)
10357 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010358 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010359 }
10360}
10361
10362TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_div_4_2pass_subtile) {
10363 for (size_t channels = 8; channels < 32; channels += 4) {
10364 for (size_t rows = 8; rows < 14; rows++) {
10365 GAvgPoolMicrokernelTester()
10366 .rows(rows)
10367 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010368 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010369 }
10370 }
10371}
10372
10373TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_div_4_multipass_fulltile) {
10374 for (size_t channels = 8; channels < 32; channels += 4) {
10375 for (size_t rows = 14; rows <= 35; rows += 7) {
10376 GAvgPoolMicrokernelTester()
10377 .rows(rows)
10378 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010379 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010380 }
10381 }
10382}
10383
10384TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_div_4_multipass_fulltile_with_input_stride) {
10385 for (size_t channels = 8; channels < 32; channels += 4) {
10386 for (size_t rows = 14; rows <= 35; rows += 7) {
10387 GAvgPoolMicrokernelTester()
10388 .rows(rows)
10389 .channels(channels)
10390 .input_stride(67)
Marat Dukhan85755042022-01-13 01:46:05 -080010391 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010392 }
10393 }
10394}
10395
10396TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_2pass_fulltile) {
10397 for (size_t channels = 1; channels < 4; channels++) {
10398 GAvgPoolMicrokernelTester()
10399 .rows(14)
10400 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010401 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010402 }
10403}
10404
10405TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_2pass_fulltile_with_qmax) {
10406 for (size_t channels = 1; channels < 4; channels++) {
10407 GAvgPoolMicrokernelTester()
10408 .rows(14)
10409 .channels(channels)
10410 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010411 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010412 }
10413}
10414
10415TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_2pass_fulltile_with_qmin) {
10416 for (size_t channels = 1; channels < 4; channels++) {
10417 GAvgPoolMicrokernelTester()
10418 .rows(14)
10419 .channels(channels)
10420 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010421 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010422 }
10423}
10424
10425TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_2pass_subtile) {
10426 for (size_t channels = 1; channels < 4; channels++) {
10427 for (size_t rows = 8; rows < 14; rows++) {
10428 GAvgPoolMicrokernelTester()
10429 .rows(rows)
10430 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010431 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010432 }
10433 }
10434}
10435
10436TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_multipass_fulltile) {
10437 for (size_t channels = 1; channels < 4; channels++) {
10438 for (size_t rows = 14; rows <= 35; rows += 7) {
10439 GAvgPoolMicrokernelTester()
10440 .rows(rows)
10441 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010442 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010443 }
10444 }
10445}
10446
10447TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_lt_4_multipass_fulltile_with_input_stride) {
10448 for (size_t channels = 1; channels < 4; channels++) {
10449 for (size_t rows = 14; rows <= 35; rows += 7) {
10450 GAvgPoolMicrokernelTester()
10451 .rows(rows)
10452 .channels(channels)
10453 .input_stride(7)
Marat Dukhan85755042022-01-13 01:46:05 -080010454 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010455 }
10456 }
10457}
10458
10459TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_2pass_fulltile) {
10460 for (size_t channels = 5; channels < 8; channels++) {
10461 GAvgPoolMicrokernelTester()
10462 .rows(14)
10463 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010464 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010465 }
10466}
10467
10468TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_2pass_fulltile_with_qmax) {
10469 for (size_t channels = 5; channels < 8; channels++) {
10470 GAvgPoolMicrokernelTester()
10471 .rows(14)
10472 .channels(channels)
10473 .qmax(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010474 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010475 }
10476}
10477
10478TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_2pass_fulltile_with_qmin) {
10479 for (size_t channels = 5; channels < 8; channels++) {
10480 GAvgPoolMicrokernelTester()
10481 .rows(14)
10482 .channels(channels)
10483 .qmin(128)
Marat Dukhan85755042022-01-13 01:46:05 -080010484 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010485 }
10486}
10487
10488TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_2pass_subtile) {
10489 for (size_t channels = 5; channels < 8; channels++) {
10490 for (size_t rows = 8; rows < 14; rows++) {
10491 GAvgPoolMicrokernelTester()
10492 .rows(rows)
10493 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010494 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010495 }
10496 }
10497}
10498
10499TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_multipass_fulltile) {
10500 for (size_t channels = 5; channels < 8; channels++) {
10501 for (size_t rows = 14; rows < 35; rows += 14) {
10502 GAvgPoolMicrokernelTester()
10503 .rows(rows)
10504 .channels(channels)
Marat Dukhan85755042022-01-13 01:46:05 -080010505 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010506 }
10507 }
10508}
10509
10510TEST(QS8_GAVGPOOL_MINMAX_FP32_7P7X__SCALAR_LRINTF_C4, channels_gt_4_multipass_fulltile_with_input_stride) {
10511 for (size_t channels = 5; channels < 8; channels++) {
10512 for (size_t rows = 14; rows < 35; rows += 14) {
10513 GAvgPoolMicrokernelTester()
10514 .rows(rows)
10515 .channels(channels)
10516 .input_stride(23)
Marat Dukhan85755042022-01-13 01:46:05 -080010517 .Test(xnn_qs8_gavgpool_minmax_fp32_ukernel_7p7x__scalar_lrintf_c4, xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params, xnn_qs8_requantize_fp32);
Marat Dukhand7a4b222022-01-11 22:25:20 -080010518 }
10519 }
10520}