blob: 173a5bd43bd6cbba3130b1311f20eb8e69a77a67 [file] [log] [blame]
Marat Dukhan329da642019-11-19 21:44:39 -08001// Copyright (c) Facebook, Inc. and its affiliates.
2// All rights reserved.
3//
XNNPACK Teamb455b122019-09-27 18:10:33 -07004// Copyright 2019 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.
Marat Dukhan329da642019-11-19 21:44:39 -08008//
9// Auto-generated file. Do not edit!
Marat Dukhan99936602020-04-11 16:47:01 -070010// Specification: test/f32-maxpool-minmax.yaml
Marat Dukhan329da642019-11-19 21:44:39 -080011// Generator: tools/generate-maxpool-test.py
12
XNNPACK Teamb455b122019-09-27 18:10:33 -070013
XNNPACK Teamb455b122019-09-27 18:10:33 -070014#include <gtest/gtest.h>
15
Marat Dukhan1dadbf72019-10-01 10:46:20 -070016#include <xnnpack/common.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070017#include <xnnpack/isa-checks.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070018
Marat Dukhan1dadbf72019-10-01 10:46:20 -070019#include <xnnpack/maxpool.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070020#include "maxpool-microkernel-tester.h"
21
22
Marat Dukhan1dadbf72019-10-01 10:46:20 -070023#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan99936602020-04-11 16:47:01 -070024 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_unipass_fulltile) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070025 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -080026 MaxPoolMicrokernelTester()
27 .pooling_elements(9)
28 .pooling_tile(9, 8)
29 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -070030 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -080031 }
32
Marat Dukhan99936602020-04-11 16:47:01 -070033 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -080034 TEST_REQUIRES_X86_SSE;
35 MaxPoolMicrokernelTester()
36 .pooling_elements(9)
37 .pooling_tile(9, 8)
38 .channels(4)
39 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -070040 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -080041 }
42
Marat Dukhan99936602020-04-11 16:47:01 -070043 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_unipass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -080044 TEST_REQUIRES_X86_SSE;
45 MaxPoolMicrokernelTester()
46 .pooling_elements(9)
47 .pooling_tile(9, 8)
48 .channels(4)
49 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -070050 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -080051 }
52
Marat Dukhan99936602020-04-11 16:47:01 -070053 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_unipass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -080054 TEST_REQUIRES_X86_SSE;
55 MaxPoolMicrokernelTester()
56 .pooling_elements(9)
57 .pooling_tile(9, 8)
58 .channels(4)
59 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -070060 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -080061 }
62
Marat Dukhan99936602020-04-11 16:47:01 -070063 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_unipass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -080064 TEST_REQUIRES_X86_SSE;
65 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
66 MaxPoolMicrokernelTester()
67 .pooling_elements(pooling_elements)
68 .pooling_tile(9, 8)
69 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -070070 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -070071 }
72 }
73
Marat Dukhan99936602020-04-11 16:47:01 -070074 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_unipass_subtile_with_input_offset) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070075 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -080076 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
77 MaxPoolMicrokernelTester()
78 .pooling_elements(pooling_elements)
79 .pooling_tile(9, 8)
80 .channels(4)
81 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -070082 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -070083 }
84 }
85
Marat Dukhan99936602020-04-11 16:47:01 -070086 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_unipass_fulltile) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070087 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -080088 for (size_t channels = 8; channels < 32; channels += 4) {
89 MaxPoolMicrokernelTester()
90 .pooling_elements(9)
91 .pooling_tile(9, 8)
92 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -070093 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -070094 }
95 }
96
Marat Dukhan99936602020-04-11 16:47:01 -070097 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_unipass_fulltile_with_input_offset) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070098 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -080099 for (size_t channels = 8; channels < 32; channels += 4) {
100 MaxPoolMicrokernelTester()
101 .pooling_elements(9)
102 .pooling_tile(9, 8)
103 .channels(channels)
104 .input_offset(37)
Marat Dukhan99936602020-04-11 16:47:01 -0700105 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700106 }
107 }
108
Marat Dukhan99936602020-04-11 16:47:01 -0700109 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_unipass_fulltile_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700110 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800111 for (size_t channels = 8; channels < 32; channels += 4) {
112 MaxPoolMicrokernelTester()
113 .pooling_elements(9)
114 .pooling_tile(9, 8)
115 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700116 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700117 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800118 }
119 }
120
Marat Dukhan99936602020-04-11 16:47:01 -0700121 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_unipass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -0800122 TEST_REQUIRES_X86_SSE;
123 for (size_t channels = 8; channels < 32; channels += 4) {
124 MaxPoolMicrokernelTester()
125 .pooling_elements(9)
126 .pooling_tile(9, 8)
127 .channels(channels)
128 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700129 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800130 }
131 }
132
Marat Dukhan99936602020-04-11 16:47:01 -0700133 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_unipass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800134 TEST_REQUIRES_X86_SSE;
135 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
136 for (size_t channels = 8; channels < 32; channels += 4) {
137 MaxPoolMicrokernelTester()
138 .pooling_elements(pooling_elements)
139 .pooling_tile(9, 8)
140 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700141 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800142 }
143 }
144 }
145
Marat Dukhan99936602020-04-11 16:47:01 -0700146 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_unipass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800147 TEST_REQUIRES_X86_SSE;
148 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
149 for (size_t channels = 8; channels < 32; channels += 4) {
150 MaxPoolMicrokernelTester()
151 .pooling_elements(pooling_elements)
152 .pooling_tile(9, 8)
153 .channels(channels)
154 .input_offset(37)
Marat Dukhan99936602020-04-11 16:47:01 -0700155 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800156 }
157 }
158 }
159
Marat Dukhan99936602020-04-11 16:47:01 -0700160 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_unipass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800161 TEST_REQUIRES_X86_SSE;
162 for (size_t channels = 1; channels < 4; channels++) {
163 MaxPoolMicrokernelTester()
164 .pooling_elements(9)
165 .pooling_tile(9, 8)
166 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700167 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800168 }
169 }
170
Marat Dukhan99936602020-04-11 16:47:01 -0700171 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800172 TEST_REQUIRES_X86_SSE;
173 for (size_t channels = 1; channels < 4; channels++) {
174 MaxPoolMicrokernelTester()
175 .pooling_elements(9)
176 .pooling_tile(9, 8)
177 .channels(channels)
178 .input_offset(5)
Marat Dukhan99936602020-04-11 16:47:01 -0700179 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800180 }
181 }
182
Marat Dukhan99936602020-04-11 16:47:01 -0700183 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_unipass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800184 TEST_REQUIRES_X86_SSE;
185 for (size_t channels = 1; channels < 4; channels++) {
186 MaxPoolMicrokernelTester()
187 .pooling_elements(9)
188 .pooling_tile(9, 8)
189 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700190 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700191 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700192 }
193 }
194
Marat Dukhan99936602020-04-11 16:47:01 -0700195 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_unipass_fulltile_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700196 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800197 for (size_t channels = 1; channels < 4; channels++) {
198 MaxPoolMicrokernelTester()
199 .pooling_elements(9)
200 .pooling_tile(9, 8)
201 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700202 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700203 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800204 }
205 }
206
Marat Dukhan99936602020-04-11 16:47:01 -0700207 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_unipass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800208 TEST_REQUIRES_X86_SSE;
209 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
210 for (size_t channels = 1; channels < 4; channels++) {
211 MaxPoolMicrokernelTester()
212 .pooling_elements(pooling_elements)
213 .pooling_tile(9, 8)
214 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700215 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800216 }
217 }
218 }
219
Marat Dukhan99936602020-04-11 16:47:01 -0700220 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_unipass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800221 TEST_REQUIRES_X86_SSE;
222 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
223 for (size_t channels = 1; channels < 4; channels++) {
224 MaxPoolMicrokernelTester()
225 .pooling_elements(pooling_elements)
226 .pooling_tile(9, 8)
227 .channels(channels)
228 .input_offset(5)
Marat Dukhan99936602020-04-11 16:47:01 -0700229 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800230 }
231 }
232 }
233
Marat Dukhan99936602020-04-11 16:47:01 -0700234 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_unipass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800235 TEST_REQUIRES_X86_SSE;
236 for (size_t channels = 5; channels < 8; channels++) {
237 MaxPoolMicrokernelTester()
238 .pooling_elements(9)
239 .pooling_tile(9, 8)
240 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700241 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800242 }
243 }
244
Marat Dukhan99936602020-04-11 16:47:01 -0700245 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800246 TEST_REQUIRES_X86_SSE;
247 for (size_t channels = 5; channels < 8; channels++) {
248 MaxPoolMicrokernelTester()
249 .pooling_elements(9)
250 .pooling_tile(9, 8)
251 .channels(channels)
252 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -0700253 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800254 }
255 }
256
Marat Dukhan99936602020-04-11 16:47:01 -0700257 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_unipass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800258 TEST_REQUIRES_X86_SSE;
259 for (size_t channels = 5; channels < 8; channels++) {
260 MaxPoolMicrokernelTester()
261 .pooling_elements(9)
262 .pooling_tile(9, 8)
263 .channels(channels)
264 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700265 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800266 }
267 }
268
Marat Dukhan99936602020-04-11 16:47:01 -0700269 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_unipass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -0800270 TEST_REQUIRES_X86_SSE;
271 for (size_t channels = 5; channels < 8; channels++) {
272 MaxPoolMicrokernelTester()
273 .pooling_elements(9)
274 .pooling_tile(9, 8)
275 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700276 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700277 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700278 }
279 }
280
Marat Dukhan99936602020-04-11 16:47:01 -0700281 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_unipass_subtile) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700282 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800283 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
284 for (size_t channels = 5; channels < 8; channels++) {
285 MaxPoolMicrokernelTester()
286 .pooling_elements(pooling_elements)
287 .pooling_tile(9, 8)
288 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700289 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700290 }
291 }
292 }
293
Marat Dukhan99936602020-04-11 16:47:01 -0700294 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_unipass_subtile_with_input_offset) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700295 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800296 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
297 for (size_t channels = 5; channels < 8; channels++) {
298 MaxPoolMicrokernelTester()
299 .pooling_elements(pooling_elements)
300 .pooling_tile(9, 8)
301 .channels(channels)
302 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -0700303 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800304 }
305 }
306 }
307
Marat Dukhan99936602020-04-11 16:47:01 -0700308 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800309 TEST_REQUIRES_X86_SSE;
310 MaxPoolMicrokernelTester()
311 .pooling_elements(17)
312 .pooling_tile(9, 8)
313 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -0700314 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800315 }
316
Marat Dukhan99936602020-04-11 16:47:01 -0700317 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800318 TEST_REQUIRES_X86_SSE;
319 MaxPoolMicrokernelTester()
320 .pooling_elements(17)
321 .pooling_tile(9, 8)
322 .channels(4)
323 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700324 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800325 }
326
Marat Dukhan99936602020-04-11 16:47:01 -0700327 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800328 TEST_REQUIRES_X86_SSE;
329 MaxPoolMicrokernelTester()
330 .pooling_elements(17)
331 .pooling_tile(9, 8)
332 .channels(4)
333 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700334 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800335 }
336
Marat Dukhan99936602020-04-11 16:47:01 -0700337 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -0800338 TEST_REQUIRES_X86_SSE;
339 MaxPoolMicrokernelTester()
340 .pooling_elements(17)
341 .pooling_tile(9, 8)
342 .channels(4)
343 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700344 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800345 }
346
Marat Dukhan99936602020-04-11 16:47:01 -0700347 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800348 TEST_REQUIRES_X86_SSE;
349 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
350 MaxPoolMicrokernelTester()
351 .pooling_elements(pooling_elements)
352 .pooling_tile(9, 8)
353 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -0700354 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800355 }
356 }
357
Marat Dukhan99936602020-04-11 16:47:01 -0700358 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800359 TEST_REQUIRES_X86_SSE;
360 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
361 MaxPoolMicrokernelTester()
362 .pooling_elements(pooling_elements)
363 .pooling_tile(9, 8)
364 .channels(4)
365 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700366 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800367 }
368 }
369
Marat Dukhan99936602020-04-11 16:47:01 -0700370 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_twopass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800371 TEST_REQUIRES_X86_SSE;
372 for (size_t channels = 8; channels < 32; channels += 4) {
373 MaxPoolMicrokernelTester()
374 .pooling_elements(17)
375 .pooling_tile(9, 8)
376 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700377 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800378 }
379 }
380
Marat Dukhan99936602020-04-11 16:47:01 -0700381 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_twopass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800382 TEST_REQUIRES_X86_SSE;
383 for (size_t channels = 8; channels < 32; channels += 4) {
384 MaxPoolMicrokernelTester()
385 .pooling_elements(17)
386 .pooling_tile(9, 8)
387 .channels(channels)
388 .input_offset(23)
Marat Dukhan99936602020-04-11 16:47:01 -0700389 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800390 }
391 }
392
Marat Dukhan99936602020-04-11 16:47:01 -0700393 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_twopass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800394 TEST_REQUIRES_X86_SSE;
395 for (size_t channels = 8; channels < 32; channels += 4) {
396 MaxPoolMicrokernelTester()
397 .pooling_elements(17)
398 .pooling_tile(9, 8)
399 .channels(channels)
400 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700401 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800402 }
403 }
404
Marat Dukhan99936602020-04-11 16:47:01 -0700405 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_twopass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -0800406 TEST_REQUIRES_X86_SSE;
407 for (size_t channels = 8; channels < 32; channels += 4) {
408 MaxPoolMicrokernelTester()
409 .pooling_elements(17)
410 .pooling_tile(9, 8)
411 .channels(channels)
412 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700413 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800414 }
415 }
416
Marat Dukhan99936602020-04-11 16:47:01 -0700417 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_twopass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800418 TEST_REQUIRES_X86_SSE;
419 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
420 for (size_t channels = 8; channels < 32; channels += 4) {
421 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800422 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800423 .pooling_tile(9, 8)
424 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700425 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800426 }
427 }
428 }
429
Marat Dukhan99936602020-04-11 16:47:01 -0700430 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_twopass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800431 TEST_REQUIRES_X86_SSE;
432 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
433 for (size_t channels = 8; channels < 32; channels += 4) {
434 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800435 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800436 .pooling_tile(9, 8)
437 .channels(channels)
438 .input_offset(37)
Marat Dukhan99936602020-04-11 16:47:01 -0700439 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800440 }
441 }
442 }
443
Marat Dukhan99936602020-04-11 16:47:01 -0700444 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_twopass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800445 TEST_REQUIRES_X86_SSE;
446 for (size_t channels = 1; channels < 4; channels++) {
447 MaxPoolMicrokernelTester()
448 .pooling_elements(17)
449 .pooling_tile(9, 8)
450 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700451 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800452 }
453 }
454
Marat Dukhan99936602020-04-11 16:47:01 -0700455 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_twopass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800456 TEST_REQUIRES_X86_SSE;
457 for (size_t channels = 1; channels < 4; channels++) {
458 MaxPoolMicrokernelTester()
459 .pooling_elements(17)
460 .pooling_tile(9, 8)
461 .channels(channels)
462 .input_offset(5)
Marat Dukhan99936602020-04-11 16:47:01 -0700463 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800464 }
465 }
466
Marat Dukhan99936602020-04-11 16:47:01 -0700467 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_twopass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800468 TEST_REQUIRES_X86_SSE;
469 for (size_t channels = 1; channels < 4; channels++) {
470 MaxPoolMicrokernelTester()
471 .pooling_elements(17)
472 .pooling_tile(9, 8)
473 .channels(channels)
474 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700475 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800476 }
477 }
478
Marat Dukhan99936602020-04-11 16:47:01 -0700479 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_twopass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -0800480 TEST_REQUIRES_X86_SSE;
481 for (size_t channels = 1; channels < 4; channels++) {
482 MaxPoolMicrokernelTester()
483 .pooling_elements(17)
484 .pooling_tile(9, 8)
485 .channels(channels)
486 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700487 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800488 }
489 }
490
Marat Dukhan99936602020-04-11 16:47:01 -0700491 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_twopass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800492 TEST_REQUIRES_X86_SSE;
493 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
494 for (size_t channels = 1; channels < 4; channels++) {
495 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800496 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800497 .pooling_tile(9, 8)
498 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700499 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800500 }
501 }
502 }
503
Marat Dukhan99936602020-04-11 16:47:01 -0700504 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_twopass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800505 TEST_REQUIRES_X86_SSE;
506 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
507 for (size_t channels = 1; channels < 4; channels++) {
508 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800509 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800510 .pooling_tile(9, 8)
511 .channels(channels)
512 .input_offset(5)
Marat Dukhan99936602020-04-11 16:47:01 -0700513 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800514 }
515 }
516 }
517
Marat Dukhan99936602020-04-11 16:47:01 -0700518 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_twopass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800519 TEST_REQUIRES_X86_SSE;
520 for (size_t channels = 5; channels < 8; channels++) {
521 MaxPoolMicrokernelTester()
522 .pooling_elements(17)
523 .pooling_tile(9, 8)
524 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700525 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800526 }
527 }
528
Marat Dukhan99936602020-04-11 16:47:01 -0700529 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_twopass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800530 TEST_REQUIRES_X86_SSE;
531 for (size_t channels = 5; channels < 8; channels++) {
532 MaxPoolMicrokernelTester()
533 .pooling_elements(17)
534 .pooling_tile(9, 8)
535 .channels(channels)
536 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -0700537 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800538 }
539 }
540
Marat Dukhan99936602020-04-11 16:47:01 -0700541 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_twopass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800542 TEST_REQUIRES_X86_SSE;
543 for (size_t channels = 5; channels < 8; channels++) {
544 MaxPoolMicrokernelTester()
545 .pooling_elements(17)
546 .pooling_tile(9, 8)
547 .channels(channels)
548 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700549 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800550 }
551 }
552
Marat Dukhan99936602020-04-11 16:47:01 -0700553 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_twopass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -0800554 TEST_REQUIRES_X86_SSE;
555 for (size_t channels = 5; channels < 8; channels++) {
556 MaxPoolMicrokernelTester()
557 .pooling_elements(17)
558 .pooling_tile(9, 8)
559 .channels(channels)
560 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700561 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800562 }
563 }
564
Marat Dukhan99936602020-04-11 16:47:01 -0700565 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_twopass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -0800566 TEST_REQUIRES_X86_SSE;
567 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
568 for (size_t channels = 5; channels < 8; channels++) {
569 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800570 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800571 .pooling_tile(9, 8)
572 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700573 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800574 }
575 }
576 }
577
Marat Dukhan99936602020-04-11 16:47:01 -0700578 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_twopass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800579 TEST_REQUIRES_X86_SSE;
580 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
581 for (size_t channels = 5; channels < 8; channels++) {
582 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800583 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800584 .pooling_tile(9, 8)
585 .channels(channels)
586 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -0700587 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800588 }
589 }
590 }
591
Marat Dukhan99936602020-04-11 16:47:01 -0700592 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_multipass) {
Marat Dukhan329da642019-11-19 21:44:39 -0800593 TEST_REQUIRES_X86_SSE;
594 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
595 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800596 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800597 .pooling_tile(9, 8)
598 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -0700599 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800600 }
601 }
602
Marat Dukhan99936602020-04-11 16:47:01 -0700603 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_multipass_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800604 TEST_REQUIRES_X86_SSE;
605 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
606 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800607 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800608 .pooling_tile(9, 8)
609 .channels(4)
610 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700611 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800612 }
613 }
614
Marat Dukhan99936602020-04-11 16:47:01 -0700615 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_multipass_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800616 TEST_REQUIRES_X86_SSE;
617 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
618 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800619 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800620 .pooling_tile(9, 8)
621 .channels(4)
622 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700623 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800624 }
625 }
626
Marat Dukhan99936602020-04-11 16:47:01 -0700627 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_multipass_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -0800628 TEST_REQUIRES_X86_SSE;
629 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
630 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800631 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800632 .pooling_tile(9, 8)
633 .channels(4)
634 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700635 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800636 }
637 }
638
Marat Dukhan99936602020-04-11 16:47:01 -0700639 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_multipass) {
Marat Dukhan329da642019-11-19 21:44:39 -0800640 TEST_REQUIRES_X86_SSE;
641 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
642 for (size_t channels = 8; channels < 32; channels += 4) {
643 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800644 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800645 .pooling_tile(9, 8)
646 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700647 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800648 }
649 }
650 }
651
Marat Dukhan99936602020-04-11 16:47:01 -0700652 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_multipass_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800653 TEST_REQUIRES_X86_SSE;
654 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
655 for (size_t channels = 8; channels < 32; channels += 4) {
656 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800657 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800658 .pooling_tile(9, 8)
659 .channels(channels)
660 .input_offset(37)
Marat Dukhan99936602020-04-11 16:47:01 -0700661 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800662 }
663 }
664 }
665
Marat Dukhan99936602020-04-11 16:47:01 -0700666 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_multipass_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800667 TEST_REQUIRES_X86_SSE;
668 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
669 for (size_t channels = 8; channels < 32; channels += 4) {
670 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800671 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800672 .pooling_tile(9, 8)
673 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700674 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700675 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800676 }
677 }
678 }
679
Marat Dukhan99936602020-04-11 16:47:01 -0700680 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_div_4_multipass_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -0800681 TEST_REQUIRES_X86_SSE;
682 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
683 for (size_t channels = 8; channels < 32; channels += 4) {
684 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800685 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800686 .pooling_tile(9, 8)
687 .channels(channels)
688 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700689 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800690 }
691 }
692 }
693
Marat Dukhan99936602020-04-11 16:47:01 -0700694 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_multipass) {
Marat Dukhan329da642019-11-19 21:44:39 -0800695 TEST_REQUIRES_X86_SSE;
696 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
697 for (size_t channels = 1; channels < 4; channels++) {
698 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800699 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800700 .pooling_tile(9, 8)
701 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700702 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800703 }
704 }
705 }
706
Marat Dukhan99936602020-04-11 16:47:01 -0700707 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_multipass_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -0800708 TEST_REQUIRES_X86_SSE;
709 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
710 for (size_t channels = 1; channels < 4; channels++) {
711 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800712 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800713 .pooling_tile(9, 8)
714 .channels(channels)
715 .input_offset(4)
Marat Dukhan99936602020-04-11 16:47:01 -0700716 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800717 }
718 }
719 }
720
Marat Dukhan99936602020-04-11 16:47:01 -0700721 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_multipass_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -0800722 TEST_REQUIRES_X86_SSE;
723 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
724 for (size_t channels = 1; channels < 4; channels++) {
725 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800726 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800727 .pooling_tile(9, 8)
728 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700729 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700730 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700731 }
732 }
733 }
734
Marat Dukhan99936602020-04-11 16:47:01 -0700735 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_lt_4_multipass_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700736 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800737 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
738 for (size_t channels = 1; channels < 4; channels++) {
739 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800740 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800741 .pooling_tile(9, 8)
742 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700743 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700744 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700745 }
746 }
747 }
748
Marat Dukhan99936602020-04-11 16:47:01 -0700749 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_multipass) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700750 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800751 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
752 for (size_t channels = 5; channels < 8; channels++) {
753 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800754 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800755 .pooling_tile(9, 8)
756 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700757 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700758 }
759 }
760 }
761
Marat Dukhan99936602020-04-11 16:47:01 -0700762 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_multipass_with_input_offset) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700763 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800764 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
765 for (size_t channels = 5; channels < 8; channels++) {
766 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800767 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800768 .pooling_tile(9, 8)
769 .channels(channels)
770 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -0700771 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700772 }
773 }
774 }
775
Marat Dukhan99936602020-04-11 16:47:01 -0700776 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_multipass_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700777 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800778 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
779 for (size_t channels = 5; channels < 8; channels++) {
780 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800781 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800782 .pooling_tile(9, 8)
783 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700784 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700785 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700786 }
787 }
788 }
789
Marat Dukhan99936602020-04-11 16:47:01 -0700790 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, channels_gt_4_multipass_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700791 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800792 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
793 for (size_t channels = 5; channels < 8; channels++) {
794 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -0800795 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -0800796 .pooling_tile(9, 8)
797 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700798 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700799 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700800 }
801 }
802 }
803
Marat Dukhan99936602020-04-11 16:47:01 -0700804 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, few_output_pixels) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700805 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800806 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
807 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
808 for (size_t channels = 1; channels <= 20; channels += 3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700809 MaxPoolMicrokernelTester()
Marat Dukhan329da642019-11-19 21:44:39 -0800810 .output_pixels(output_pixels)
811 .pooling_elements(pooling_elements)
812 .pooling_tile(9, 8)
813 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700814 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700815 }
816 }
817 }
818 }
819
Marat Dukhan99936602020-04-11 16:47:01 -0700820 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, few_output_pixels_with_input_offset) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700821 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800822 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
823 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
824 for (size_t channels = 1; channels <= 20; channels += 3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700825 MaxPoolMicrokernelTester()
Marat Dukhan329da642019-11-19 21:44:39 -0800826 .output_pixels(output_pixels)
827 .pooling_elements(pooling_elements)
828 .pooling_tile(9, 8)
829 .channels(channels)
830 .input_offset(23)
Marat Dukhan99936602020-04-11 16:47:01 -0700831 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700832 }
833 }
834 }
835 }
836
Marat Dukhan99936602020-04-11 16:47:01 -0700837 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, few_output_pixels_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700838 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800839 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
840 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
841 for (size_t channels = 1; channels <= 20; channels += 3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700842 MaxPoolMicrokernelTester()
Marat Dukhan329da642019-11-19 21:44:39 -0800843 .output_pixels(output_pixels)
844 .pooling_elements(pooling_elements)
845 .pooling_tile(9, 8)
846 .channels(channels)
847 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700848 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700849 }
850 }
851 }
852 }
853
Marat Dukhan99936602020-04-11 16:47:01 -0700854 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, few_output_pixels_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700855 TEST_REQUIRES_X86_SSE;
Marat Dukhan329da642019-11-19 21:44:39 -0800856 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
857 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
858 for (size_t channels = 1; channels <= 20; channels += 3) {
859 MaxPoolMicrokernelTester()
860 .output_pixels(output_pixels)
861 .pooling_elements(pooling_elements)
862 .pooling_tile(9, 8)
863 .channels(channels)
864 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700865 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800866 }
867 }
868 }
869 }
870
Marat Dukhan99936602020-04-11 16:47:01 -0700871 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, few_output_pixels_with_output_stride) {
Marat Dukhan329da642019-11-19 21:44:39 -0800872 TEST_REQUIRES_X86_SSE;
873 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
874 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
875 for (size_t channels = 1; channels <= 20; channels += 3) {
876 MaxPoolMicrokernelTester()
877 .output_pixels(output_pixels)
878 .pooling_elements(pooling_elements)
879 .pooling_tile(9, 8)
880 .channels(channels)
881 .output_stride(23)
Marat Dukhan99936602020-04-11 16:47:01 -0700882 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
Marat Dukhan329da642019-11-19 21:44:39 -0800883 }
884 }
885 }
886 }
887
Marat Dukhan99936602020-04-11 16:47:01 -0700888 TEST(F32_MAXPOOL_MINMAX_9P8X__SSE_C4, few_output_pixels_with_step) {
Marat Dukhan329da642019-11-19 21:44:39 -0800889 TEST_REQUIRES_X86_SSE;
890 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
891 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
892 for (size_t channels = 1; channels <= 20; channels += 3) {
893 for (size_t step = 2; step <= pooling_elements; step++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700894 MaxPoolMicrokernelTester()
Marat Dukhan329da642019-11-19 21:44:39 -0800895 .output_pixels(output_pixels)
896 .pooling_elements(pooling_elements)
897 .pooling_tile(9, 8)
898 .step(step)
899 .channels(channels)
900 .output_stride(23)
Marat Dukhan99936602020-04-11 16:47:01 -0700901 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700902 }
903 }
904 }
905 }
906 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -0700907#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
XNNPACK Teamb455b122019-09-27 18:10:33 -0700908
909
Frank Barchardf092a4a2020-03-03 14:22:46 -0800910#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan99936602020-04-11 16:47:01 -0700911 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_unipass_fulltile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800912 TEST_REQUIRES_ARM_NEON;
913 MaxPoolMicrokernelTester()
914 .pooling_elements(9)
915 .pooling_tile(9, 8)
916 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -0700917 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -0800918 }
919
Marat Dukhan99936602020-04-11 16:47:01 -0700920 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800921 TEST_REQUIRES_ARM_NEON;
922 MaxPoolMicrokernelTester()
923 .pooling_elements(9)
924 .pooling_tile(9, 8)
925 .channels(4)
926 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700927 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -0800928 }
929
Marat Dukhan99936602020-04-11 16:47:01 -0700930 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_unipass_fulltile_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800931 TEST_REQUIRES_ARM_NEON;
932 MaxPoolMicrokernelTester()
933 .pooling_elements(9)
934 .pooling_tile(9, 8)
935 .channels(4)
936 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700937 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -0800938 }
939
Marat Dukhan99936602020-04-11 16:47:01 -0700940 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_unipass_fulltile_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800941 TEST_REQUIRES_ARM_NEON;
942 MaxPoolMicrokernelTester()
943 .pooling_elements(9)
944 .pooling_tile(9, 8)
945 .channels(4)
946 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -0700947 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -0800948 }
949
Marat Dukhan99936602020-04-11 16:47:01 -0700950 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_unipass_subtile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800951 TEST_REQUIRES_ARM_NEON;
952 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
953 MaxPoolMicrokernelTester()
954 .pooling_elements(pooling_elements)
955 .pooling_tile(9, 8)
956 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -0700957 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -0800958 }
959 }
960
Marat Dukhan99936602020-04-11 16:47:01 -0700961 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_unipass_subtile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800962 TEST_REQUIRES_ARM_NEON;
963 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
964 MaxPoolMicrokernelTester()
965 .pooling_elements(pooling_elements)
966 .pooling_tile(9, 8)
967 .channels(4)
968 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -0700969 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -0800970 }
971 }
972
Marat Dukhan99936602020-04-11 16:47:01 -0700973 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_unipass_fulltile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800974 TEST_REQUIRES_ARM_NEON;
975 for (size_t channels = 8; channels < 32; channels += 4) {
976 MaxPoolMicrokernelTester()
977 .pooling_elements(9)
978 .pooling_tile(9, 8)
979 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -0700980 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -0800981 }
982 }
983
Marat Dukhan99936602020-04-11 16:47:01 -0700984 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_unipass_fulltile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800985 TEST_REQUIRES_ARM_NEON;
986 for (size_t channels = 8; channels < 32; channels += 4) {
987 MaxPoolMicrokernelTester()
988 .pooling_elements(9)
989 .pooling_tile(9, 8)
990 .channels(channels)
991 .input_offset(37)
Marat Dukhan99936602020-04-11 16:47:01 -0700992 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -0800993 }
994 }
995
Marat Dukhan99936602020-04-11 16:47:01 -0700996 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_unipass_fulltile_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -0800997 TEST_REQUIRES_ARM_NEON;
998 for (size_t channels = 8; channels < 32; channels += 4) {
999 MaxPoolMicrokernelTester()
1000 .pooling_elements(9)
1001 .pooling_tile(9, 8)
1002 .channels(channels)
1003 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001004 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001005 }
1006 }
1007
Marat Dukhan99936602020-04-11 16:47:01 -07001008 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_unipass_fulltile_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001009 TEST_REQUIRES_ARM_NEON;
1010 for (size_t channels = 8; channels < 32; channels += 4) {
1011 MaxPoolMicrokernelTester()
1012 .pooling_elements(9)
1013 .pooling_tile(9, 8)
1014 .channels(channels)
1015 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001016 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001017 }
1018 }
1019
Marat Dukhan99936602020-04-11 16:47:01 -07001020 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_unipass_subtile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001021 TEST_REQUIRES_ARM_NEON;
1022 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1023 for (size_t channels = 8; channels < 32; channels += 4) {
1024 MaxPoolMicrokernelTester()
1025 .pooling_elements(pooling_elements)
1026 .pooling_tile(9, 8)
1027 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001028 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001029 }
1030 }
1031 }
1032
Marat Dukhan99936602020-04-11 16:47:01 -07001033 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_unipass_subtile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001034 TEST_REQUIRES_ARM_NEON;
1035 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1036 for (size_t channels = 8; channels < 32; channels += 4) {
1037 MaxPoolMicrokernelTester()
1038 .pooling_elements(pooling_elements)
1039 .pooling_tile(9, 8)
1040 .channels(channels)
1041 .input_offset(37)
Marat Dukhan99936602020-04-11 16:47:01 -07001042 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001043 }
1044 }
1045 }
1046
Marat Dukhan99936602020-04-11 16:47:01 -07001047 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_unipass_fulltile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001048 TEST_REQUIRES_ARM_NEON;
1049 for (size_t channels = 1; channels < 4; channels++) {
1050 MaxPoolMicrokernelTester()
1051 .pooling_elements(9)
1052 .pooling_tile(9, 8)
1053 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001054 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001055 }
1056 }
1057
Marat Dukhan99936602020-04-11 16:47:01 -07001058 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001059 TEST_REQUIRES_ARM_NEON;
1060 for (size_t channels = 1; channels < 4; channels++) {
1061 MaxPoolMicrokernelTester()
1062 .pooling_elements(9)
1063 .pooling_tile(9, 8)
1064 .channels(channels)
1065 .input_offset(5)
Marat Dukhan99936602020-04-11 16:47:01 -07001066 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001067 }
1068 }
1069
Marat Dukhan99936602020-04-11 16:47:01 -07001070 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_unipass_fulltile_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001071 TEST_REQUIRES_ARM_NEON;
1072 for (size_t channels = 1; channels < 4; channels++) {
1073 MaxPoolMicrokernelTester()
1074 .pooling_elements(9)
1075 .pooling_tile(9, 8)
1076 .channels(channels)
1077 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001078 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001079 }
1080 }
1081
Marat Dukhan99936602020-04-11 16:47:01 -07001082 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_unipass_fulltile_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001083 TEST_REQUIRES_ARM_NEON;
1084 for (size_t channels = 1; channels < 4; channels++) {
1085 MaxPoolMicrokernelTester()
1086 .pooling_elements(9)
1087 .pooling_tile(9, 8)
1088 .channels(channels)
1089 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001090 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001091 }
1092 }
1093
Marat Dukhan99936602020-04-11 16:47:01 -07001094 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_unipass_subtile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001095 TEST_REQUIRES_ARM_NEON;
1096 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1097 for (size_t channels = 1; channels < 4; channels++) {
1098 MaxPoolMicrokernelTester()
1099 .pooling_elements(pooling_elements)
1100 .pooling_tile(9, 8)
1101 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001102 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001103 }
1104 }
1105 }
1106
Marat Dukhan99936602020-04-11 16:47:01 -07001107 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_unipass_subtile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001108 TEST_REQUIRES_ARM_NEON;
1109 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1110 for (size_t channels = 1; channels < 4; channels++) {
1111 MaxPoolMicrokernelTester()
1112 .pooling_elements(pooling_elements)
1113 .pooling_tile(9, 8)
1114 .channels(channels)
1115 .input_offset(5)
Marat Dukhan99936602020-04-11 16:47:01 -07001116 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001117 }
1118 }
1119 }
1120
Marat Dukhan99936602020-04-11 16:47:01 -07001121 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_unipass_fulltile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001122 TEST_REQUIRES_ARM_NEON;
1123 for (size_t channels = 5; channels < 8; channels++) {
1124 MaxPoolMicrokernelTester()
1125 .pooling_elements(9)
1126 .pooling_tile(9, 8)
1127 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001128 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001129 }
1130 }
1131
Marat Dukhan99936602020-04-11 16:47:01 -07001132 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001133 TEST_REQUIRES_ARM_NEON;
1134 for (size_t channels = 5; channels < 8; channels++) {
1135 MaxPoolMicrokernelTester()
1136 .pooling_elements(9)
1137 .pooling_tile(9, 8)
1138 .channels(channels)
1139 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -07001140 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001141 }
1142 }
1143
Marat Dukhan99936602020-04-11 16:47:01 -07001144 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_unipass_fulltile_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001145 TEST_REQUIRES_ARM_NEON;
1146 for (size_t channels = 5; channels < 8; channels++) {
1147 MaxPoolMicrokernelTester()
1148 .pooling_elements(9)
1149 .pooling_tile(9, 8)
1150 .channels(channels)
1151 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001152 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001153 }
1154 }
1155
Marat Dukhan99936602020-04-11 16:47:01 -07001156 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_unipass_fulltile_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001157 TEST_REQUIRES_ARM_NEON;
1158 for (size_t channels = 5; channels < 8; channels++) {
1159 MaxPoolMicrokernelTester()
1160 .pooling_elements(9)
1161 .pooling_tile(9, 8)
1162 .channels(channels)
1163 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001164 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001165 }
1166 }
1167
Marat Dukhan99936602020-04-11 16:47:01 -07001168 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_unipass_subtile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001169 TEST_REQUIRES_ARM_NEON;
1170 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1171 for (size_t channels = 5; channels < 8; channels++) {
1172 MaxPoolMicrokernelTester()
1173 .pooling_elements(pooling_elements)
1174 .pooling_tile(9, 8)
1175 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001176 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001177 }
1178 }
1179 }
1180
Marat Dukhan99936602020-04-11 16:47:01 -07001181 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_unipass_subtile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001182 TEST_REQUIRES_ARM_NEON;
1183 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1184 for (size_t channels = 5; channels < 8; channels++) {
1185 MaxPoolMicrokernelTester()
1186 .pooling_elements(pooling_elements)
1187 .pooling_tile(9, 8)
1188 .channels(channels)
1189 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -07001190 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001191 }
1192 }
1193 }
1194
Marat Dukhan99936602020-04-11 16:47:01 -07001195 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001196 TEST_REQUIRES_ARM_NEON;
1197 MaxPoolMicrokernelTester()
1198 .pooling_elements(17)
1199 .pooling_tile(9, 8)
1200 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -07001201 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001202 }
1203
Marat Dukhan99936602020-04-11 16:47:01 -07001204 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001205 TEST_REQUIRES_ARM_NEON;
1206 MaxPoolMicrokernelTester()
1207 .pooling_elements(17)
1208 .pooling_tile(9, 8)
1209 .channels(4)
1210 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -07001211 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001212 }
1213
Marat Dukhan99936602020-04-11 16:47:01 -07001214 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001215 TEST_REQUIRES_ARM_NEON;
1216 MaxPoolMicrokernelTester()
1217 .pooling_elements(17)
1218 .pooling_tile(9, 8)
1219 .channels(4)
1220 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001221 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001222 }
1223
Marat Dukhan99936602020-04-11 16:47:01 -07001224 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001225 TEST_REQUIRES_ARM_NEON;
1226 MaxPoolMicrokernelTester()
1227 .pooling_elements(17)
1228 .pooling_tile(9, 8)
1229 .channels(4)
1230 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001231 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001232 }
1233
Marat Dukhan99936602020-04-11 16:47:01 -07001234 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_subtile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001235 TEST_REQUIRES_ARM_NEON;
1236 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1237 MaxPoolMicrokernelTester()
1238 .pooling_elements(pooling_elements)
1239 .pooling_tile(9, 8)
1240 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -07001241 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001242 }
1243 }
1244
Marat Dukhan99936602020-04-11 16:47:01 -07001245 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_subtile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001246 TEST_REQUIRES_ARM_NEON;
1247 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1248 MaxPoolMicrokernelTester()
1249 .pooling_elements(pooling_elements)
1250 .pooling_tile(9, 8)
1251 .channels(4)
1252 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -07001253 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001254 }
1255 }
1256
Marat Dukhan99936602020-04-11 16:47:01 -07001257 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_twopass_fulltile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001258 TEST_REQUIRES_ARM_NEON;
1259 for (size_t channels = 8; channels < 32; channels += 4) {
1260 MaxPoolMicrokernelTester()
1261 .pooling_elements(17)
1262 .pooling_tile(9, 8)
1263 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001264 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001265 }
1266 }
1267
Marat Dukhan99936602020-04-11 16:47:01 -07001268 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_twopass_fulltile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001269 TEST_REQUIRES_ARM_NEON;
1270 for (size_t channels = 8; channels < 32; channels += 4) {
1271 MaxPoolMicrokernelTester()
1272 .pooling_elements(17)
1273 .pooling_tile(9, 8)
1274 .channels(channels)
1275 .input_offset(23)
Marat Dukhan99936602020-04-11 16:47:01 -07001276 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001277 }
1278 }
1279
Marat Dukhan99936602020-04-11 16:47:01 -07001280 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_twopass_fulltile_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001281 TEST_REQUIRES_ARM_NEON;
1282 for (size_t channels = 8; channels < 32; channels += 4) {
1283 MaxPoolMicrokernelTester()
1284 .pooling_elements(17)
1285 .pooling_tile(9, 8)
1286 .channels(channels)
1287 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001288 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001289 }
1290 }
1291
Marat Dukhan99936602020-04-11 16:47:01 -07001292 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_twopass_fulltile_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001293 TEST_REQUIRES_ARM_NEON;
1294 for (size_t channels = 8; channels < 32; channels += 4) {
1295 MaxPoolMicrokernelTester()
1296 .pooling_elements(17)
1297 .pooling_tile(9, 8)
1298 .channels(channels)
1299 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001300 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001301 }
1302 }
1303
Marat Dukhan99936602020-04-11 16:47:01 -07001304 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_twopass_subtile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001305 TEST_REQUIRES_ARM_NEON;
1306 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1307 for (size_t channels = 8; channels < 32; channels += 4) {
1308 MaxPoolMicrokernelTester()
1309 .pooling_elements(pooling_elements)
1310 .pooling_tile(9, 8)
1311 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001312 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001313 }
1314 }
1315 }
1316
Marat Dukhan99936602020-04-11 16:47:01 -07001317 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_twopass_subtile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001318 TEST_REQUIRES_ARM_NEON;
1319 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1320 for (size_t channels = 8; channels < 32; channels += 4) {
1321 MaxPoolMicrokernelTester()
1322 .pooling_elements(pooling_elements)
1323 .pooling_tile(9, 8)
1324 .channels(channels)
1325 .input_offset(37)
Marat Dukhan99936602020-04-11 16:47:01 -07001326 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001327 }
1328 }
1329 }
1330
Marat Dukhan99936602020-04-11 16:47:01 -07001331 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_twopass_fulltile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001332 TEST_REQUIRES_ARM_NEON;
1333 for (size_t channels = 1; channels < 4; channels++) {
1334 MaxPoolMicrokernelTester()
1335 .pooling_elements(17)
1336 .pooling_tile(9, 8)
1337 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001338 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001339 }
1340 }
1341
Marat Dukhan99936602020-04-11 16:47:01 -07001342 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_twopass_fulltile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001343 TEST_REQUIRES_ARM_NEON;
1344 for (size_t channels = 1; channels < 4; channels++) {
1345 MaxPoolMicrokernelTester()
1346 .pooling_elements(17)
1347 .pooling_tile(9, 8)
1348 .channels(channels)
1349 .input_offset(5)
Marat Dukhan99936602020-04-11 16:47:01 -07001350 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001351 }
1352 }
1353
Marat Dukhan99936602020-04-11 16:47:01 -07001354 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_twopass_fulltile_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001355 TEST_REQUIRES_ARM_NEON;
1356 for (size_t channels = 1; channels < 4; channels++) {
1357 MaxPoolMicrokernelTester()
1358 .pooling_elements(17)
1359 .pooling_tile(9, 8)
1360 .channels(channels)
1361 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001362 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001363 }
1364 }
1365
Marat Dukhan99936602020-04-11 16:47:01 -07001366 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_twopass_fulltile_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001367 TEST_REQUIRES_ARM_NEON;
1368 for (size_t channels = 1; channels < 4; channels++) {
1369 MaxPoolMicrokernelTester()
1370 .pooling_elements(17)
1371 .pooling_tile(9, 8)
1372 .channels(channels)
1373 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001374 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001375 }
1376 }
1377
Marat Dukhan99936602020-04-11 16:47:01 -07001378 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_twopass_subtile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001379 TEST_REQUIRES_ARM_NEON;
1380 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1381 for (size_t channels = 1; channels < 4; channels++) {
1382 MaxPoolMicrokernelTester()
1383 .pooling_elements(pooling_elements)
1384 .pooling_tile(9, 8)
1385 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001386 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001387 }
1388 }
1389 }
1390
Marat Dukhan99936602020-04-11 16:47:01 -07001391 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_twopass_subtile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001392 TEST_REQUIRES_ARM_NEON;
1393 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1394 for (size_t channels = 1; channels < 4; channels++) {
1395 MaxPoolMicrokernelTester()
1396 .pooling_elements(pooling_elements)
1397 .pooling_tile(9, 8)
1398 .channels(channels)
1399 .input_offset(5)
Marat Dukhan99936602020-04-11 16:47:01 -07001400 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001401 }
1402 }
1403 }
1404
Marat Dukhan99936602020-04-11 16:47:01 -07001405 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_twopass_fulltile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001406 TEST_REQUIRES_ARM_NEON;
1407 for (size_t channels = 5; channels < 8; channels++) {
1408 MaxPoolMicrokernelTester()
1409 .pooling_elements(17)
1410 .pooling_tile(9, 8)
1411 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001412 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001413 }
1414 }
1415
Marat Dukhan99936602020-04-11 16:47:01 -07001416 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_twopass_fulltile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001417 TEST_REQUIRES_ARM_NEON;
1418 for (size_t channels = 5; channels < 8; channels++) {
1419 MaxPoolMicrokernelTester()
1420 .pooling_elements(17)
1421 .pooling_tile(9, 8)
1422 .channels(channels)
1423 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -07001424 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001425 }
1426 }
1427
Marat Dukhan99936602020-04-11 16:47:01 -07001428 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_twopass_fulltile_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001429 TEST_REQUIRES_ARM_NEON;
1430 for (size_t channels = 5; channels < 8; channels++) {
1431 MaxPoolMicrokernelTester()
1432 .pooling_elements(17)
1433 .pooling_tile(9, 8)
1434 .channels(channels)
1435 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001436 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001437 }
1438 }
1439
Marat Dukhan99936602020-04-11 16:47:01 -07001440 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_twopass_fulltile_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001441 TEST_REQUIRES_ARM_NEON;
1442 for (size_t channels = 5; channels < 8; channels++) {
1443 MaxPoolMicrokernelTester()
1444 .pooling_elements(17)
1445 .pooling_tile(9, 8)
1446 .channels(channels)
1447 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001448 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001449 }
1450 }
1451
Marat Dukhan99936602020-04-11 16:47:01 -07001452 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_twopass_subtile) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001453 TEST_REQUIRES_ARM_NEON;
1454 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1455 for (size_t channels = 5; channels < 8; channels++) {
1456 MaxPoolMicrokernelTester()
1457 .pooling_elements(pooling_elements)
1458 .pooling_tile(9, 8)
1459 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001460 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001461 }
1462 }
1463 }
1464
Marat Dukhan99936602020-04-11 16:47:01 -07001465 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_twopass_subtile_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001466 TEST_REQUIRES_ARM_NEON;
1467 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1468 for (size_t channels = 5; channels < 8; channels++) {
1469 MaxPoolMicrokernelTester()
1470 .pooling_elements(pooling_elements)
1471 .pooling_tile(9, 8)
1472 .channels(channels)
1473 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -07001474 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001475 }
1476 }
1477 }
1478
Marat Dukhan99936602020-04-11 16:47:01 -07001479 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_multipass) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001480 TEST_REQUIRES_ARM_NEON;
1481 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1482 MaxPoolMicrokernelTester()
1483 .pooling_elements(pooling_elements)
1484 .pooling_tile(9, 8)
1485 .channels(4)
Marat Dukhan99936602020-04-11 16:47:01 -07001486 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001487 }
1488 }
1489
Marat Dukhan99936602020-04-11 16:47:01 -07001490 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_multipass_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001491 TEST_REQUIRES_ARM_NEON;
1492 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1493 MaxPoolMicrokernelTester()
1494 .pooling_elements(pooling_elements)
1495 .pooling_tile(9, 8)
1496 .channels(4)
1497 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -07001498 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001499 }
1500 }
1501
Marat Dukhan99936602020-04-11 16:47:01 -07001502 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_multipass_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001503 TEST_REQUIRES_ARM_NEON;
1504 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1505 MaxPoolMicrokernelTester()
1506 .pooling_elements(pooling_elements)
1507 .pooling_tile(9, 8)
1508 .channels(4)
1509 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001510 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001511 }
1512 }
1513
Marat Dukhan99936602020-04-11 16:47:01 -07001514 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_multipass_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001515 TEST_REQUIRES_ARM_NEON;
1516 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1517 MaxPoolMicrokernelTester()
1518 .pooling_elements(pooling_elements)
1519 .pooling_tile(9, 8)
1520 .channels(4)
1521 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001522 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001523 }
1524 }
1525
Marat Dukhan99936602020-04-11 16:47:01 -07001526 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_multipass) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001527 TEST_REQUIRES_ARM_NEON;
1528 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1529 for (size_t channels = 8; channels < 32; channels += 4) {
1530 MaxPoolMicrokernelTester()
1531 .pooling_elements(pooling_elements)
1532 .pooling_tile(9, 8)
1533 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001534 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001535 }
1536 }
1537 }
1538
Marat Dukhan99936602020-04-11 16:47:01 -07001539 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_multipass_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001540 TEST_REQUIRES_ARM_NEON;
1541 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1542 for (size_t channels = 8; channels < 32; channels += 4) {
1543 MaxPoolMicrokernelTester()
1544 .pooling_elements(pooling_elements)
1545 .pooling_tile(9, 8)
1546 .channels(channels)
1547 .input_offset(37)
Marat Dukhan99936602020-04-11 16:47:01 -07001548 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001549 }
1550 }
1551 }
1552
Marat Dukhan99936602020-04-11 16:47:01 -07001553 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_multipass_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001554 TEST_REQUIRES_ARM_NEON;
1555 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1556 for (size_t channels = 8; channels < 32; channels += 4) {
1557 MaxPoolMicrokernelTester()
1558 .pooling_elements(pooling_elements)
1559 .pooling_tile(9, 8)
1560 .channels(channels)
1561 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001562 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001563 }
1564 }
1565 }
1566
Marat Dukhan99936602020-04-11 16:47:01 -07001567 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_div_4_multipass_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001568 TEST_REQUIRES_ARM_NEON;
1569 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1570 for (size_t channels = 8; channels < 32; channels += 4) {
1571 MaxPoolMicrokernelTester()
1572 .pooling_elements(pooling_elements)
1573 .pooling_tile(9, 8)
1574 .channels(channels)
1575 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001576 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001577 }
1578 }
1579 }
1580
Marat Dukhan99936602020-04-11 16:47:01 -07001581 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_multipass) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001582 TEST_REQUIRES_ARM_NEON;
1583 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1584 for (size_t channels = 1; channels < 4; channels++) {
1585 MaxPoolMicrokernelTester()
1586 .pooling_elements(pooling_elements)
1587 .pooling_tile(9, 8)
1588 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001589 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001590 }
1591 }
1592 }
1593
Marat Dukhan99936602020-04-11 16:47:01 -07001594 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_multipass_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001595 TEST_REQUIRES_ARM_NEON;
1596 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1597 for (size_t channels = 1; channels < 4; channels++) {
1598 MaxPoolMicrokernelTester()
1599 .pooling_elements(pooling_elements)
1600 .pooling_tile(9, 8)
1601 .channels(channels)
1602 .input_offset(4)
Marat Dukhan99936602020-04-11 16:47:01 -07001603 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001604 }
1605 }
1606 }
1607
Marat Dukhan99936602020-04-11 16:47:01 -07001608 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_multipass_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001609 TEST_REQUIRES_ARM_NEON;
1610 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1611 for (size_t channels = 1; channels < 4; channels++) {
1612 MaxPoolMicrokernelTester()
1613 .pooling_elements(pooling_elements)
1614 .pooling_tile(9, 8)
1615 .channels(channels)
1616 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001617 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001618 }
1619 }
1620 }
1621
Marat Dukhan99936602020-04-11 16:47:01 -07001622 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_lt_4_multipass_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001623 TEST_REQUIRES_ARM_NEON;
1624 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1625 for (size_t channels = 1; channels < 4; channels++) {
1626 MaxPoolMicrokernelTester()
1627 .pooling_elements(pooling_elements)
1628 .pooling_tile(9, 8)
1629 .channels(channels)
1630 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001631 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001632 }
1633 }
1634 }
1635
Marat Dukhan99936602020-04-11 16:47:01 -07001636 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_multipass) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001637 TEST_REQUIRES_ARM_NEON;
1638 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1639 for (size_t channels = 5; channels < 8; channels++) {
1640 MaxPoolMicrokernelTester()
1641 .pooling_elements(pooling_elements)
1642 .pooling_tile(9, 8)
1643 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001644 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001645 }
1646 }
1647 }
1648
Marat Dukhan99936602020-04-11 16:47:01 -07001649 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_multipass_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001650 TEST_REQUIRES_ARM_NEON;
1651 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1652 for (size_t channels = 5; channels < 8; channels++) {
1653 MaxPoolMicrokernelTester()
1654 .pooling_elements(pooling_elements)
1655 .pooling_tile(9, 8)
1656 .channels(channels)
1657 .input_offset(11)
Marat Dukhan99936602020-04-11 16:47:01 -07001658 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001659 }
1660 }
1661 }
1662
Marat Dukhan99936602020-04-11 16:47:01 -07001663 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_multipass_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001664 TEST_REQUIRES_ARM_NEON;
1665 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1666 for (size_t channels = 5; channels < 8; channels++) {
1667 MaxPoolMicrokernelTester()
1668 .pooling_elements(pooling_elements)
1669 .pooling_tile(9, 8)
1670 .channels(channels)
1671 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001672 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001673 }
1674 }
1675 }
1676
Marat Dukhan99936602020-04-11 16:47:01 -07001677 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, channels_gt_4_multipass_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001678 TEST_REQUIRES_ARM_NEON;
1679 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
1680 for (size_t channels = 5; channels < 8; channels++) {
1681 MaxPoolMicrokernelTester()
1682 .pooling_elements(pooling_elements)
1683 .pooling_tile(9, 8)
1684 .channels(channels)
1685 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001686 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001687 }
1688 }
1689 }
1690
Marat Dukhan99936602020-04-11 16:47:01 -07001691 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, few_output_pixels) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001692 TEST_REQUIRES_ARM_NEON;
1693 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1694 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1695 for (size_t channels = 1; channels <= 20; channels += 3) {
1696 MaxPoolMicrokernelTester()
1697 .output_pixels(output_pixels)
1698 .pooling_elements(pooling_elements)
1699 .pooling_tile(9, 8)
1700 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07001701 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001702 }
1703 }
1704 }
1705 }
1706
Marat Dukhan99936602020-04-11 16:47:01 -07001707 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, few_output_pixels_with_input_offset) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001708 TEST_REQUIRES_ARM_NEON;
1709 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1710 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1711 for (size_t channels = 1; channels <= 20; channels += 3) {
1712 MaxPoolMicrokernelTester()
1713 .output_pixels(output_pixels)
1714 .pooling_elements(pooling_elements)
1715 .pooling_tile(9, 8)
1716 .channels(channels)
1717 .input_offset(23)
Marat Dukhan99936602020-04-11 16:47:01 -07001718 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001719 }
1720 }
1721 }
1722 }
1723
Marat Dukhan99936602020-04-11 16:47:01 -07001724 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, few_output_pixels_with_qmin) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001725 TEST_REQUIRES_ARM_NEON;
1726 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1727 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1728 for (size_t channels = 1; channels <= 20; channels += 3) {
1729 MaxPoolMicrokernelTester()
1730 .output_pixels(output_pixels)
1731 .pooling_elements(pooling_elements)
1732 .pooling_tile(9, 8)
1733 .channels(channels)
1734 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001735 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001736 }
1737 }
1738 }
1739 }
1740
Marat Dukhan99936602020-04-11 16:47:01 -07001741 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, few_output_pixels_with_qmax) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001742 TEST_REQUIRES_ARM_NEON;
1743 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1744 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1745 for (size_t channels = 1; channels <= 20; channels += 3) {
1746 MaxPoolMicrokernelTester()
1747 .output_pixels(output_pixels)
1748 .pooling_elements(pooling_elements)
1749 .pooling_tile(9, 8)
1750 .channels(channels)
1751 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07001752 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001753 }
1754 }
1755 }
1756 }
1757
Marat Dukhan99936602020-04-11 16:47:01 -07001758 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, few_output_pixels_with_output_stride) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001759 TEST_REQUIRES_ARM_NEON;
1760 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1761 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1762 for (size_t channels = 1; channels <= 20; channels += 3) {
1763 MaxPoolMicrokernelTester()
1764 .output_pixels(output_pixels)
1765 .pooling_elements(pooling_elements)
1766 .pooling_tile(9, 8)
1767 .channels(channels)
1768 .output_stride(23)
Marat Dukhan99936602020-04-11 16:47:01 -07001769 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001770 }
1771 }
1772 }
1773 }
1774
Marat Dukhan99936602020-04-11 16:47:01 -07001775 TEST(F32_MAXPOOL_MINMAX_9P8X__NEON_C4, few_output_pixels_with_step) {
Frank Barchardf092a4a2020-03-03 14:22:46 -08001776 TEST_REQUIRES_ARM_NEON;
1777 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1778 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
1779 for (size_t channels = 1; channels <= 20; channels += 3) {
1780 for (size_t step = 2; step <= pooling_elements; step++) {
1781 MaxPoolMicrokernelTester()
1782 .output_pixels(output_pixels)
1783 .pooling_elements(pooling_elements)
1784 .pooling_tile(9, 8)
1785 .step(step)
1786 .channels(channels)
1787 .output_stride(23)
Marat Dukhan99936602020-04-11 16:47:01 -07001788 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4);
Frank Barchardf092a4a2020-03-03 14:22:46 -08001789 }
1790 }
1791 }
1792 }
1793 }
1794#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1795
1796
Marat Dukhanf6e24802020-07-08 22:20:40 -07001797#if XNN_ARCH_WASMSIMD
1798 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile) {
1799 MaxPoolMicrokernelTester()
1800 .pooling_elements(9)
1801 .pooling_tile(9, 8)
1802 .channels(4)
1803 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1804 }
1805
1806 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
1807 MaxPoolMicrokernelTester()
1808 .pooling_elements(9)
1809 .pooling_tile(9, 8)
1810 .channels(4)
1811 .input_offset(7)
1812 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1813 }
1814
1815 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_qmin) {
1816 MaxPoolMicrokernelTester()
1817 .pooling_elements(9)
1818 .pooling_tile(9, 8)
1819 .channels(4)
1820 .qmin(192)
1821 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1822 }
1823
1824 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_qmax) {
1825 MaxPoolMicrokernelTester()
1826 .pooling_elements(9)
1827 .pooling_tile(9, 8)
1828 .channels(4)
1829 .qmax(192)
1830 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1831 }
1832
1833 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_unipass_subtile) {
1834 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1835 MaxPoolMicrokernelTester()
1836 .pooling_elements(pooling_elements)
1837 .pooling_tile(9, 8)
1838 .channels(4)
1839 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1840 }
1841 }
1842
1843 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_unipass_subtile_with_input_offset) {
1844 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1845 MaxPoolMicrokernelTester()
1846 .pooling_elements(pooling_elements)
1847 .pooling_tile(9, 8)
1848 .channels(4)
1849 .input_offset(7)
1850 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1851 }
1852 }
1853
1854 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_unipass_fulltile) {
1855 for (size_t channels = 8; channels < 32; channels += 4) {
1856 MaxPoolMicrokernelTester()
1857 .pooling_elements(9)
1858 .pooling_tile(9, 8)
1859 .channels(channels)
1860 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1861 }
1862 }
1863
1864 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_unipass_fulltile_with_input_offset) {
1865 for (size_t channels = 8; channels < 32; channels += 4) {
1866 MaxPoolMicrokernelTester()
1867 .pooling_elements(9)
1868 .pooling_tile(9, 8)
1869 .channels(channels)
1870 .input_offset(37)
1871 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1872 }
1873 }
1874
1875 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_unipass_fulltile_with_qmin) {
1876 for (size_t channels = 8; channels < 32; channels += 4) {
1877 MaxPoolMicrokernelTester()
1878 .pooling_elements(9)
1879 .pooling_tile(9, 8)
1880 .channels(channels)
1881 .qmin(192)
1882 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1883 }
1884 }
1885
1886 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_unipass_fulltile_with_qmax) {
1887 for (size_t channels = 8; channels < 32; channels += 4) {
1888 MaxPoolMicrokernelTester()
1889 .pooling_elements(9)
1890 .pooling_tile(9, 8)
1891 .channels(channels)
1892 .qmax(192)
1893 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1894 }
1895 }
1896
1897 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_unipass_subtile) {
1898 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1899 for (size_t channels = 8; channels < 32; channels += 4) {
1900 MaxPoolMicrokernelTester()
1901 .pooling_elements(pooling_elements)
1902 .pooling_tile(9, 8)
1903 .channels(channels)
1904 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1905 }
1906 }
1907 }
1908
1909 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_unipass_subtile_with_input_offset) {
1910 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1911 for (size_t channels = 8; channels < 32; channels += 4) {
1912 MaxPoolMicrokernelTester()
1913 .pooling_elements(pooling_elements)
1914 .pooling_tile(9, 8)
1915 .channels(channels)
1916 .input_offset(37)
1917 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1918 }
1919 }
1920 }
1921
1922 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_unipass_fulltile) {
1923 for (size_t channels = 1; channels < 4; channels++) {
1924 MaxPoolMicrokernelTester()
1925 .pooling_elements(9)
1926 .pooling_tile(9, 8)
1927 .channels(channels)
1928 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1929 }
1930 }
1931
1932 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
1933 for (size_t channels = 1; channels < 4; channels++) {
1934 MaxPoolMicrokernelTester()
1935 .pooling_elements(9)
1936 .pooling_tile(9, 8)
1937 .channels(channels)
1938 .input_offset(5)
1939 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1940 }
1941 }
1942
1943 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_unipass_fulltile_with_qmin) {
1944 for (size_t channels = 1; channels < 4; channels++) {
1945 MaxPoolMicrokernelTester()
1946 .pooling_elements(9)
1947 .pooling_tile(9, 8)
1948 .channels(channels)
1949 .qmin(192)
1950 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1951 }
1952 }
1953
1954 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_unipass_fulltile_with_qmax) {
1955 for (size_t channels = 1; channels < 4; channels++) {
1956 MaxPoolMicrokernelTester()
1957 .pooling_elements(9)
1958 .pooling_tile(9, 8)
1959 .channels(channels)
1960 .qmax(192)
1961 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1962 }
1963 }
1964
1965 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_unipass_subtile) {
1966 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1967 for (size_t channels = 1; channels < 4; channels++) {
1968 MaxPoolMicrokernelTester()
1969 .pooling_elements(pooling_elements)
1970 .pooling_tile(9, 8)
1971 .channels(channels)
1972 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1973 }
1974 }
1975 }
1976
1977 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_unipass_subtile_with_input_offset) {
1978 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1979 for (size_t channels = 1; channels < 4; channels++) {
1980 MaxPoolMicrokernelTester()
1981 .pooling_elements(pooling_elements)
1982 .pooling_tile(9, 8)
1983 .channels(channels)
1984 .input_offset(5)
1985 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1986 }
1987 }
1988 }
1989
1990 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_unipass_fulltile) {
1991 for (size_t channels = 5; channels < 8; channels++) {
1992 MaxPoolMicrokernelTester()
1993 .pooling_elements(9)
1994 .pooling_tile(9, 8)
1995 .channels(channels)
1996 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
1997 }
1998 }
1999
2000 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
2001 for (size_t channels = 5; channels < 8; channels++) {
2002 MaxPoolMicrokernelTester()
2003 .pooling_elements(9)
2004 .pooling_tile(9, 8)
2005 .channels(channels)
2006 .input_offset(11)
2007 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2008 }
2009 }
2010
2011 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_unipass_fulltile_with_qmin) {
2012 for (size_t channels = 5; channels < 8; channels++) {
2013 MaxPoolMicrokernelTester()
2014 .pooling_elements(9)
2015 .pooling_tile(9, 8)
2016 .channels(channels)
2017 .qmin(192)
2018 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2019 }
2020 }
2021
2022 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_unipass_fulltile_with_qmax) {
2023 for (size_t channels = 5; channels < 8; channels++) {
2024 MaxPoolMicrokernelTester()
2025 .pooling_elements(9)
2026 .pooling_tile(9, 8)
2027 .channels(channels)
2028 .qmax(192)
2029 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2030 }
2031 }
2032
2033 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_unipass_subtile) {
2034 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2035 for (size_t channels = 5; channels < 8; channels++) {
2036 MaxPoolMicrokernelTester()
2037 .pooling_elements(pooling_elements)
2038 .pooling_tile(9, 8)
2039 .channels(channels)
2040 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2041 }
2042 }
2043 }
2044
2045 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_unipass_subtile_with_input_offset) {
2046 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2047 for (size_t channels = 5; channels < 8; channels++) {
2048 MaxPoolMicrokernelTester()
2049 .pooling_elements(pooling_elements)
2050 .pooling_tile(9, 8)
2051 .channels(channels)
2052 .input_offset(11)
2053 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2054 }
2055 }
2056 }
2057
2058 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile) {
2059 MaxPoolMicrokernelTester()
2060 .pooling_elements(17)
2061 .pooling_tile(9, 8)
2062 .channels(4)
2063 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2064 }
2065
2066 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
2067 MaxPoolMicrokernelTester()
2068 .pooling_elements(17)
2069 .pooling_tile(9, 8)
2070 .channels(4)
2071 .input_offset(7)
2072 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2073 }
2074
2075 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_qmin) {
2076 MaxPoolMicrokernelTester()
2077 .pooling_elements(17)
2078 .pooling_tile(9, 8)
2079 .channels(4)
2080 .qmin(192)
2081 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2082 }
2083
2084 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_qmax) {
2085 MaxPoolMicrokernelTester()
2086 .pooling_elements(17)
2087 .pooling_tile(9, 8)
2088 .channels(4)
2089 .qmax(192)
2090 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2091 }
2092
2093 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_subtile) {
2094 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2095 MaxPoolMicrokernelTester()
2096 .pooling_elements(pooling_elements)
2097 .pooling_tile(9, 8)
2098 .channels(4)
2099 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2100 }
2101 }
2102
2103 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_subtile_with_input_offset) {
2104 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2105 MaxPoolMicrokernelTester()
2106 .pooling_elements(pooling_elements)
2107 .pooling_tile(9, 8)
2108 .channels(4)
2109 .input_offset(7)
2110 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2111 }
2112 }
2113
2114 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_twopass_fulltile) {
2115 for (size_t channels = 8; channels < 32; channels += 4) {
2116 MaxPoolMicrokernelTester()
2117 .pooling_elements(17)
2118 .pooling_tile(9, 8)
2119 .channels(channels)
2120 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2121 }
2122 }
2123
2124 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_twopass_fulltile_with_input_offset) {
2125 for (size_t channels = 8; channels < 32; channels += 4) {
2126 MaxPoolMicrokernelTester()
2127 .pooling_elements(17)
2128 .pooling_tile(9, 8)
2129 .channels(channels)
2130 .input_offset(23)
2131 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2132 }
2133 }
2134
2135 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_twopass_fulltile_with_qmin) {
2136 for (size_t channels = 8; channels < 32; channels += 4) {
2137 MaxPoolMicrokernelTester()
2138 .pooling_elements(17)
2139 .pooling_tile(9, 8)
2140 .channels(channels)
2141 .qmin(192)
2142 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2143 }
2144 }
2145
2146 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_twopass_fulltile_with_qmax) {
2147 for (size_t channels = 8; channels < 32; channels += 4) {
2148 MaxPoolMicrokernelTester()
2149 .pooling_elements(17)
2150 .pooling_tile(9, 8)
2151 .channels(channels)
2152 .qmax(192)
2153 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2154 }
2155 }
2156
2157 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_twopass_subtile) {
2158 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2159 for (size_t channels = 8; channels < 32; channels += 4) {
2160 MaxPoolMicrokernelTester()
2161 .pooling_elements(pooling_elements)
2162 .pooling_tile(9, 8)
2163 .channels(channels)
2164 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2165 }
2166 }
2167 }
2168
2169 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_twopass_subtile_with_input_offset) {
2170 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2171 for (size_t channels = 8; channels < 32; channels += 4) {
2172 MaxPoolMicrokernelTester()
2173 .pooling_elements(pooling_elements)
2174 .pooling_tile(9, 8)
2175 .channels(channels)
2176 .input_offset(37)
2177 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2178 }
2179 }
2180 }
2181
2182 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_twopass_fulltile) {
2183 for (size_t channels = 1; channels < 4; channels++) {
2184 MaxPoolMicrokernelTester()
2185 .pooling_elements(17)
2186 .pooling_tile(9, 8)
2187 .channels(channels)
2188 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2189 }
2190 }
2191
2192 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_twopass_fulltile_with_input_offset) {
2193 for (size_t channels = 1; channels < 4; channels++) {
2194 MaxPoolMicrokernelTester()
2195 .pooling_elements(17)
2196 .pooling_tile(9, 8)
2197 .channels(channels)
2198 .input_offset(5)
2199 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2200 }
2201 }
2202
2203 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_twopass_fulltile_with_qmin) {
2204 for (size_t channels = 1; channels < 4; channels++) {
2205 MaxPoolMicrokernelTester()
2206 .pooling_elements(17)
2207 .pooling_tile(9, 8)
2208 .channels(channels)
2209 .qmin(192)
2210 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2211 }
2212 }
2213
2214 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_twopass_fulltile_with_qmax) {
2215 for (size_t channels = 1; channels < 4; channels++) {
2216 MaxPoolMicrokernelTester()
2217 .pooling_elements(17)
2218 .pooling_tile(9, 8)
2219 .channels(channels)
2220 .qmax(192)
2221 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2222 }
2223 }
2224
2225 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_twopass_subtile) {
2226 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2227 for (size_t channels = 1; channels < 4; channels++) {
2228 MaxPoolMicrokernelTester()
2229 .pooling_elements(pooling_elements)
2230 .pooling_tile(9, 8)
2231 .channels(channels)
2232 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2233 }
2234 }
2235 }
2236
2237 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_twopass_subtile_with_input_offset) {
2238 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2239 for (size_t channels = 1; channels < 4; channels++) {
2240 MaxPoolMicrokernelTester()
2241 .pooling_elements(pooling_elements)
2242 .pooling_tile(9, 8)
2243 .channels(channels)
2244 .input_offset(5)
2245 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2246 }
2247 }
2248 }
2249
2250 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_twopass_fulltile) {
2251 for (size_t channels = 5; channels < 8; channels++) {
2252 MaxPoolMicrokernelTester()
2253 .pooling_elements(17)
2254 .pooling_tile(9, 8)
2255 .channels(channels)
2256 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2257 }
2258 }
2259
2260 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_twopass_fulltile_with_input_offset) {
2261 for (size_t channels = 5; channels < 8; channels++) {
2262 MaxPoolMicrokernelTester()
2263 .pooling_elements(17)
2264 .pooling_tile(9, 8)
2265 .channels(channels)
2266 .input_offset(11)
2267 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2268 }
2269 }
2270
2271 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_twopass_fulltile_with_qmin) {
2272 for (size_t channels = 5; channels < 8; channels++) {
2273 MaxPoolMicrokernelTester()
2274 .pooling_elements(17)
2275 .pooling_tile(9, 8)
2276 .channels(channels)
2277 .qmin(192)
2278 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2279 }
2280 }
2281
2282 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_twopass_fulltile_with_qmax) {
2283 for (size_t channels = 5; channels < 8; channels++) {
2284 MaxPoolMicrokernelTester()
2285 .pooling_elements(17)
2286 .pooling_tile(9, 8)
2287 .channels(channels)
2288 .qmax(192)
2289 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2290 }
2291 }
2292
2293 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_twopass_subtile) {
2294 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2295 for (size_t channels = 5; channels < 8; channels++) {
2296 MaxPoolMicrokernelTester()
2297 .pooling_elements(pooling_elements)
2298 .pooling_tile(9, 8)
2299 .channels(channels)
2300 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2301 }
2302 }
2303 }
2304
2305 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_twopass_subtile_with_input_offset) {
2306 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2307 for (size_t channels = 5; channels < 8; channels++) {
2308 MaxPoolMicrokernelTester()
2309 .pooling_elements(pooling_elements)
2310 .pooling_tile(9, 8)
2311 .channels(channels)
2312 .input_offset(11)
2313 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2314 }
2315 }
2316 }
2317
2318 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_multipass) {
2319 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2320 MaxPoolMicrokernelTester()
2321 .pooling_elements(pooling_elements)
2322 .pooling_tile(9, 8)
2323 .channels(4)
2324 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2325 }
2326 }
2327
2328 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_multipass_with_input_offset) {
2329 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2330 MaxPoolMicrokernelTester()
2331 .pooling_elements(pooling_elements)
2332 .pooling_tile(9, 8)
2333 .channels(4)
2334 .input_offset(7)
2335 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2336 }
2337 }
2338
2339 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_multipass_with_qmin) {
2340 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2341 MaxPoolMicrokernelTester()
2342 .pooling_elements(pooling_elements)
2343 .pooling_tile(9, 8)
2344 .channels(4)
2345 .qmin(192)
2346 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2347 }
2348 }
2349
2350 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_multipass_with_qmax) {
2351 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2352 MaxPoolMicrokernelTester()
2353 .pooling_elements(pooling_elements)
2354 .pooling_tile(9, 8)
2355 .channels(4)
2356 .qmax(192)
2357 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2358 }
2359 }
2360
2361 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_multipass) {
2362 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2363 for (size_t channels = 8; channels < 32; channels += 4) {
2364 MaxPoolMicrokernelTester()
2365 .pooling_elements(pooling_elements)
2366 .pooling_tile(9, 8)
2367 .channels(channels)
2368 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2369 }
2370 }
2371 }
2372
2373 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_multipass_with_input_offset) {
2374 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2375 for (size_t channels = 8; channels < 32; channels += 4) {
2376 MaxPoolMicrokernelTester()
2377 .pooling_elements(pooling_elements)
2378 .pooling_tile(9, 8)
2379 .channels(channels)
2380 .input_offset(37)
2381 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2382 }
2383 }
2384 }
2385
2386 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_multipass_with_qmin) {
2387 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2388 for (size_t channels = 8; channels < 32; channels += 4) {
2389 MaxPoolMicrokernelTester()
2390 .pooling_elements(pooling_elements)
2391 .pooling_tile(9, 8)
2392 .channels(channels)
2393 .qmin(192)
2394 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2395 }
2396 }
2397 }
2398
2399 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_div_4_multipass_with_qmax) {
2400 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2401 for (size_t channels = 8; channels < 32; channels += 4) {
2402 MaxPoolMicrokernelTester()
2403 .pooling_elements(pooling_elements)
2404 .pooling_tile(9, 8)
2405 .channels(channels)
2406 .qmax(192)
2407 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2408 }
2409 }
2410 }
2411
2412 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_multipass) {
2413 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2414 for (size_t channels = 1; channels < 4; channels++) {
2415 MaxPoolMicrokernelTester()
2416 .pooling_elements(pooling_elements)
2417 .pooling_tile(9, 8)
2418 .channels(channels)
2419 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2420 }
2421 }
2422 }
2423
2424 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_multipass_with_input_offset) {
2425 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2426 for (size_t channels = 1; channels < 4; channels++) {
2427 MaxPoolMicrokernelTester()
2428 .pooling_elements(pooling_elements)
2429 .pooling_tile(9, 8)
2430 .channels(channels)
2431 .input_offset(4)
2432 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2433 }
2434 }
2435 }
2436
2437 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_multipass_with_qmin) {
2438 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2439 for (size_t channels = 1; channels < 4; channels++) {
2440 MaxPoolMicrokernelTester()
2441 .pooling_elements(pooling_elements)
2442 .pooling_tile(9, 8)
2443 .channels(channels)
2444 .qmin(192)
2445 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2446 }
2447 }
2448 }
2449
2450 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_lt_4_multipass_with_qmax) {
2451 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2452 for (size_t channels = 1; channels < 4; channels++) {
2453 MaxPoolMicrokernelTester()
2454 .pooling_elements(pooling_elements)
2455 .pooling_tile(9, 8)
2456 .channels(channels)
2457 .qmax(192)
2458 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2459 }
2460 }
2461 }
2462
2463 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_multipass) {
2464 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2465 for (size_t channels = 5; channels < 8; channels++) {
2466 MaxPoolMicrokernelTester()
2467 .pooling_elements(pooling_elements)
2468 .pooling_tile(9, 8)
2469 .channels(channels)
2470 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2471 }
2472 }
2473 }
2474
2475 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_multipass_with_input_offset) {
2476 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2477 for (size_t channels = 5; channels < 8; channels++) {
2478 MaxPoolMicrokernelTester()
2479 .pooling_elements(pooling_elements)
2480 .pooling_tile(9, 8)
2481 .channels(channels)
2482 .input_offset(11)
2483 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2484 }
2485 }
2486 }
2487
2488 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_multipass_with_qmin) {
2489 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2490 for (size_t channels = 5; channels < 8; channels++) {
2491 MaxPoolMicrokernelTester()
2492 .pooling_elements(pooling_elements)
2493 .pooling_tile(9, 8)
2494 .channels(channels)
2495 .qmin(192)
2496 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2497 }
2498 }
2499 }
2500
2501 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_gt_4_multipass_with_qmax) {
2502 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2503 for (size_t channels = 5; channels < 8; channels++) {
2504 MaxPoolMicrokernelTester()
2505 .pooling_elements(pooling_elements)
2506 .pooling_tile(9, 8)
2507 .channels(channels)
2508 .qmax(192)
2509 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2510 }
2511 }
2512 }
2513
2514 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, few_output_pixels) {
2515 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2516 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2517 for (size_t channels = 1; channels <= 20; channels += 3) {
2518 MaxPoolMicrokernelTester()
2519 .output_pixels(output_pixels)
2520 .pooling_elements(pooling_elements)
2521 .pooling_tile(9, 8)
2522 .channels(channels)
2523 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2524 }
2525 }
2526 }
2527 }
2528
2529 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, few_output_pixels_with_input_offset) {
2530 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2531 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2532 for (size_t channels = 1; channels <= 20; channels += 3) {
2533 MaxPoolMicrokernelTester()
2534 .output_pixels(output_pixels)
2535 .pooling_elements(pooling_elements)
2536 .pooling_tile(9, 8)
2537 .channels(channels)
2538 .input_offset(23)
2539 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2540 }
2541 }
2542 }
2543 }
2544
2545 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, few_output_pixels_with_qmin) {
2546 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2547 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2548 for (size_t channels = 1; channels <= 20; channels += 3) {
2549 MaxPoolMicrokernelTester()
2550 .output_pixels(output_pixels)
2551 .pooling_elements(pooling_elements)
2552 .pooling_tile(9, 8)
2553 .channels(channels)
2554 .qmin(192)
2555 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2556 }
2557 }
2558 }
2559 }
2560
2561 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, few_output_pixels_with_qmax) {
2562 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2563 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2564 for (size_t channels = 1; channels <= 20; channels += 3) {
2565 MaxPoolMicrokernelTester()
2566 .output_pixels(output_pixels)
2567 .pooling_elements(pooling_elements)
2568 .pooling_tile(9, 8)
2569 .channels(channels)
2570 .qmax(192)
2571 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2572 }
2573 }
2574 }
2575 }
2576
2577 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, few_output_pixels_with_output_stride) {
2578 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2579 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2580 for (size_t channels = 1; channels <= 20; channels += 3) {
2581 MaxPoolMicrokernelTester()
2582 .output_pixels(output_pixels)
2583 .pooling_elements(pooling_elements)
2584 .pooling_tile(9, 8)
2585 .channels(channels)
2586 .output_stride(23)
2587 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2588 }
2589 }
2590 }
2591 }
2592
2593 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, few_output_pixels_with_step) {
2594 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2595 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
2596 for (size_t channels = 1; channels <= 20; channels += 3) {
2597 for (size_t step = 2; step <= pooling_elements; step++) {
2598 MaxPoolMicrokernelTester()
2599 .output_pixels(output_pixels)
2600 .pooling_elements(pooling_elements)
2601 .pooling_tile(9, 8)
2602 .step(step)
2603 .channels(channels)
2604 .output_stride(23)
2605 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
2606 }
2607 }
2608 }
2609 }
2610 }
2611#endif // XNN_ARCH_WASMSIMD
2612
2613
2614#if XNN_ARCH_WASMSIMD
2615 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile) {
2616 MaxPoolMicrokernelTester()
2617 .pooling_elements(9)
2618 .pooling_tile(9, 8)
2619 .channels(4)
2620 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2621 }
2622
2623 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
2624 MaxPoolMicrokernelTester()
2625 .pooling_elements(9)
2626 .pooling_tile(9, 8)
2627 .channels(4)
2628 .input_offset(7)
2629 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2630 }
2631
2632 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_qmin) {
2633 MaxPoolMicrokernelTester()
2634 .pooling_elements(9)
2635 .pooling_tile(9, 8)
2636 .channels(4)
2637 .qmin(192)
2638 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2639 }
2640
2641 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_qmax) {
2642 MaxPoolMicrokernelTester()
2643 .pooling_elements(9)
2644 .pooling_tile(9, 8)
2645 .channels(4)
2646 .qmax(192)
2647 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2648 }
2649
2650 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_unipass_subtile) {
2651 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2652 MaxPoolMicrokernelTester()
2653 .pooling_elements(pooling_elements)
2654 .pooling_tile(9, 8)
2655 .channels(4)
2656 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2657 }
2658 }
2659
2660 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_unipass_subtile_with_input_offset) {
2661 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2662 MaxPoolMicrokernelTester()
2663 .pooling_elements(pooling_elements)
2664 .pooling_tile(9, 8)
2665 .channels(4)
2666 .input_offset(7)
2667 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2668 }
2669 }
2670
2671 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_unipass_fulltile) {
2672 for (size_t channels = 8; channels < 32; channels += 4) {
2673 MaxPoolMicrokernelTester()
2674 .pooling_elements(9)
2675 .pooling_tile(9, 8)
2676 .channels(channels)
2677 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2678 }
2679 }
2680
2681 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_unipass_fulltile_with_input_offset) {
2682 for (size_t channels = 8; channels < 32; channels += 4) {
2683 MaxPoolMicrokernelTester()
2684 .pooling_elements(9)
2685 .pooling_tile(9, 8)
2686 .channels(channels)
2687 .input_offset(37)
2688 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2689 }
2690 }
2691
2692 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_unipass_fulltile_with_qmin) {
2693 for (size_t channels = 8; channels < 32; channels += 4) {
2694 MaxPoolMicrokernelTester()
2695 .pooling_elements(9)
2696 .pooling_tile(9, 8)
2697 .channels(channels)
2698 .qmin(192)
2699 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2700 }
2701 }
2702
2703 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_unipass_fulltile_with_qmax) {
2704 for (size_t channels = 8; channels < 32; channels += 4) {
2705 MaxPoolMicrokernelTester()
2706 .pooling_elements(9)
2707 .pooling_tile(9, 8)
2708 .channels(channels)
2709 .qmax(192)
2710 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2711 }
2712 }
2713
2714 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_unipass_subtile) {
2715 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2716 for (size_t channels = 8; channels < 32; channels += 4) {
2717 MaxPoolMicrokernelTester()
2718 .pooling_elements(pooling_elements)
2719 .pooling_tile(9, 8)
2720 .channels(channels)
2721 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2722 }
2723 }
2724 }
2725
2726 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_unipass_subtile_with_input_offset) {
2727 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2728 for (size_t channels = 8; channels < 32; channels += 4) {
2729 MaxPoolMicrokernelTester()
2730 .pooling_elements(pooling_elements)
2731 .pooling_tile(9, 8)
2732 .channels(channels)
2733 .input_offset(37)
2734 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2735 }
2736 }
2737 }
2738
2739 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_unipass_fulltile) {
2740 for (size_t channels = 1; channels < 4; channels++) {
2741 MaxPoolMicrokernelTester()
2742 .pooling_elements(9)
2743 .pooling_tile(9, 8)
2744 .channels(channels)
2745 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2746 }
2747 }
2748
2749 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
2750 for (size_t channels = 1; channels < 4; channels++) {
2751 MaxPoolMicrokernelTester()
2752 .pooling_elements(9)
2753 .pooling_tile(9, 8)
2754 .channels(channels)
2755 .input_offset(5)
2756 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2757 }
2758 }
2759
2760 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_unipass_fulltile_with_qmin) {
2761 for (size_t channels = 1; channels < 4; channels++) {
2762 MaxPoolMicrokernelTester()
2763 .pooling_elements(9)
2764 .pooling_tile(9, 8)
2765 .channels(channels)
2766 .qmin(192)
2767 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2768 }
2769 }
2770
2771 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_unipass_fulltile_with_qmax) {
2772 for (size_t channels = 1; channels < 4; channels++) {
2773 MaxPoolMicrokernelTester()
2774 .pooling_elements(9)
2775 .pooling_tile(9, 8)
2776 .channels(channels)
2777 .qmax(192)
2778 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2779 }
2780 }
2781
2782 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_unipass_subtile) {
2783 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2784 for (size_t channels = 1; channels < 4; channels++) {
2785 MaxPoolMicrokernelTester()
2786 .pooling_elements(pooling_elements)
2787 .pooling_tile(9, 8)
2788 .channels(channels)
2789 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2790 }
2791 }
2792 }
2793
2794 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_unipass_subtile_with_input_offset) {
2795 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2796 for (size_t channels = 1; channels < 4; channels++) {
2797 MaxPoolMicrokernelTester()
2798 .pooling_elements(pooling_elements)
2799 .pooling_tile(9, 8)
2800 .channels(channels)
2801 .input_offset(5)
2802 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2803 }
2804 }
2805 }
2806
2807 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_unipass_fulltile) {
2808 for (size_t channels = 5; channels < 8; channels++) {
2809 MaxPoolMicrokernelTester()
2810 .pooling_elements(9)
2811 .pooling_tile(9, 8)
2812 .channels(channels)
2813 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2814 }
2815 }
2816
2817 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
2818 for (size_t channels = 5; channels < 8; channels++) {
2819 MaxPoolMicrokernelTester()
2820 .pooling_elements(9)
2821 .pooling_tile(9, 8)
2822 .channels(channels)
2823 .input_offset(11)
2824 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2825 }
2826 }
2827
2828 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_unipass_fulltile_with_qmin) {
2829 for (size_t channels = 5; channels < 8; channels++) {
2830 MaxPoolMicrokernelTester()
2831 .pooling_elements(9)
2832 .pooling_tile(9, 8)
2833 .channels(channels)
2834 .qmin(192)
2835 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2836 }
2837 }
2838
2839 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_unipass_fulltile_with_qmax) {
2840 for (size_t channels = 5; channels < 8; channels++) {
2841 MaxPoolMicrokernelTester()
2842 .pooling_elements(9)
2843 .pooling_tile(9, 8)
2844 .channels(channels)
2845 .qmax(192)
2846 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2847 }
2848 }
2849
2850 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_unipass_subtile) {
2851 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2852 for (size_t channels = 5; channels < 8; channels++) {
2853 MaxPoolMicrokernelTester()
2854 .pooling_elements(pooling_elements)
2855 .pooling_tile(9, 8)
2856 .channels(channels)
2857 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2858 }
2859 }
2860 }
2861
2862 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_unipass_subtile_with_input_offset) {
2863 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
2864 for (size_t channels = 5; channels < 8; channels++) {
2865 MaxPoolMicrokernelTester()
2866 .pooling_elements(pooling_elements)
2867 .pooling_tile(9, 8)
2868 .channels(channels)
2869 .input_offset(11)
2870 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2871 }
2872 }
2873 }
2874
2875 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile) {
2876 MaxPoolMicrokernelTester()
2877 .pooling_elements(17)
2878 .pooling_tile(9, 8)
2879 .channels(4)
2880 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2881 }
2882
2883 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
2884 MaxPoolMicrokernelTester()
2885 .pooling_elements(17)
2886 .pooling_tile(9, 8)
2887 .channels(4)
2888 .input_offset(7)
2889 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2890 }
2891
2892 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_qmin) {
2893 MaxPoolMicrokernelTester()
2894 .pooling_elements(17)
2895 .pooling_tile(9, 8)
2896 .channels(4)
2897 .qmin(192)
2898 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2899 }
2900
2901 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_qmax) {
2902 MaxPoolMicrokernelTester()
2903 .pooling_elements(17)
2904 .pooling_tile(9, 8)
2905 .channels(4)
2906 .qmax(192)
2907 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2908 }
2909
2910 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_subtile) {
2911 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2912 MaxPoolMicrokernelTester()
2913 .pooling_elements(pooling_elements)
2914 .pooling_tile(9, 8)
2915 .channels(4)
2916 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2917 }
2918 }
2919
2920 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_subtile_with_input_offset) {
2921 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2922 MaxPoolMicrokernelTester()
2923 .pooling_elements(pooling_elements)
2924 .pooling_tile(9, 8)
2925 .channels(4)
2926 .input_offset(7)
2927 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2928 }
2929 }
2930
2931 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_twopass_fulltile) {
2932 for (size_t channels = 8; channels < 32; channels += 4) {
2933 MaxPoolMicrokernelTester()
2934 .pooling_elements(17)
2935 .pooling_tile(9, 8)
2936 .channels(channels)
2937 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2938 }
2939 }
2940
2941 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_twopass_fulltile_with_input_offset) {
2942 for (size_t channels = 8; channels < 32; channels += 4) {
2943 MaxPoolMicrokernelTester()
2944 .pooling_elements(17)
2945 .pooling_tile(9, 8)
2946 .channels(channels)
2947 .input_offset(23)
2948 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2949 }
2950 }
2951
2952 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_twopass_fulltile_with_qmin) {
2953 for (size_t channels = 8; channels < 32; channels += 4) {
2954 MaxPoolMicrokernelTester()
2955 .pooling_elements(17)
2956 .pooling_tile(9, 8)
2957 .channels(channels)
2958 .qmin(192)
2959 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2960 }
2961 }
2962
2963 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_twopass_fulltile_with_qmax) {
2964 for (size_t channels = 8; channels < 32; channels += 4) {
2965 MaxPoolMicrokernelTester()
2966 .pooling_elements(17)
2967 .pooling_tile(9, 8)
2968 .channels(channels)
2969 .qmax(192)
2970 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2971 }
2972 }
2973
2974 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_twopass_subtile) {
2975 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2976 for (size_t channels = 8; channels < 32; channels += 4) {
2977 MaxPoolMicrokernelTester()
2978 .pooling_elements(pooling_elements)
2979 .pooling_tile(9, 8)
2980 .channels(channels)
2981 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2982 }
2983 }
2984 }
2985
2986 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_twopass_subtile_with_input_offset) {
2987 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2988 for (size_t channels = 8; channels < 32; channels += 4) {
2989 MaxPoolMicrokernelTester()
2990 .pooling_elements(pooling_elements)
2991 .pooling_tile(9, 8)
2992 .channels(channels)
2993 .input_offset(37)
2994 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
2995 }
2996 }
2997 }
2998
2999 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_twopass_fulltile) {
3000 for (size_t channels = 1; channels < 4; channels++) {
3001 MaxPoolMicrokernelTester()
3002 .pooling_elements(17)
3003 .pooling_tile(9, 8)
3004 .channels(channels)
3005 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3006 }
3007 }
3008
3009 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_twopass_fulltile_with_input_offset) {
3010 for (size_t channels = 1; channels < 4; channels++) {
3011 MaxPoolMicrokernelTester()
3012 .pooling_elements(17)
3013 .pooling_tile(9, 8)
3014 .channels(channels)
3015 .input_offset(5)
3016 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3017 }
3018 }
3019
3020 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_twopass_fulltile_with_qmin) {
3021 for (size_t channels = 1; channels < 4; channels++) {
3022 MaxPoolMicrokernelTester()
3023 .pooling_elements(17)
3024 .pooling_tile(9, 8)
3025 .channels(channels)
3026 .qmin(192)
3027 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3028 }
3029 }
3030
3031 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_twopass_fulltile_with_qmax) {
3032 for (size_t channels = 1; channels < 4; channels++) {
3033 MaxPoolMicrokernelTester()
3034 .pooling_elements(17)
3035 .pooling_tile(9, 8)
3036 .channels(channels)
3037 .qmax(192)
3038 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3039 }
3040 }
3041
3042 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_twopass_subtile) {
3043 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3044 for (size_t channels = 1; channels < 4; channels++) {
3045 MaxPoolMicrokernelTester()
3046 .pooling_elements(pooling_elements)
3047 .pooling_tile(9, 8)
3048 .channels(channels)
3049 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3050 }
3051 }
3052 }
3053
3054 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_twopass_subtile_with_input_offset) {
3055 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3056 for (size_t channels = 1; channels < 4; channels++) {
3057 MaxPoolMicrokernelTester()
3058 .pooling_elements(pooling_elements)
3059 .pooling_tile(9, 8)
3060 .channels(channels)
3061 .input_offset(5)
3062 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3063 }
3064 }
3065 }
3066
3067 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_twopass_fulltile) {
3068 for (size_t channels = 5; channels < 8; channels++) {
3069 MaxPoolMicrokernelTester()
3070 .pooling_elements(17)
3071 .pooling_tile(9, 8)
3072 .channels(channels)
3073 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3074 }
3075 }
3076
3077 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_twopass_fulltile_with_input_offset) {
3078 for (size_t channels = 5; channels < 8; channels++) {
3079 MaxPoolMicrokernelTester()
3080 .pooling_elements(17)
3081 .pooling_tile(9, 8)
3082 .channels(channels)
3083 .input_offset(11)
3084 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3085 }
3086 }
3087
3088 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_twopass_fulltile_with_qmin) {
3089 for (size_t channels = 5; channels < 8; channels++) {
3090 MaxPoolMicrokernelTester()
3091 .pooling_elements(17)
3092 .pooling_tile(9, 8)
3093 .channels(channels)
3094 .qmin(192)
3095 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3096 }
3097 }
3098
3099 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_twopass_fulltile_with_qmax) {
3100 for (size_t channels = 5; channels < 8; channels++) {
3101 MaxPoolMicrokernelTester()
3102 .pooling_elements(17)
3103 .pooling_tile(9, 8)
3104 .channels(channels)
3105 .qmax(192)
3106 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3107 }
3108 }
3109
3110 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_twopass_subtile) {
3111 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3112 for (size_t channels = 5; channels < 8; channels++) {
3113 MaxPoolMicrokernelTester()
3114 .pooling_elements(pooling_elements)
3115 .pooling_tile(9, 8)
3116 .channels(channels)
3117 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3118 }
3119 }
3120 }
3121
3122 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_twopass_subtile_with_input_offset) {
3123 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3124 for (size_t channels = 5; channels < 8; channels++) {
3125 MaxPoolMicrokernelTester()
3126 .pooling_elements(pooling_elements)
3127 .pooling_tile(9, 8)
3128 .channels(channels)
3129 .input_offset(11)
3130 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3131 }
3132 }
3133 }
3134
3135 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_multipass) {
3136 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3137 MaxPoolMicrokernelTester()
3138 .pooling_elements(pooling_elements)
3139 .pooling_tile(9, 8)
3140 .channels(4)
3141 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3142 }
3143 }
3144
3145 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_multipass_with_input_offset) {
3146 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3147 MaxPoolMicrokernelTester()
3148 .pooling_elements(pooling_elements)
3149 .pooling_tile(9, 8)
3150 .channels(4)
3151 .input_offset(7)
3152 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3153 }
3154 }
3155
3156 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_multipass_with_qmin) {
3157 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3158 MaxPoolMicrokernelTester()
3159 .pooling_elements(pooling_elements)
3160 .pooling_tile(9, 8)
3161 .channels(4)
3162 .qmin(192)
3163 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3164 }
3165 }
3166
3167 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_multipass_with_qmax) {
3168 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3169 MaxPoolMicrokernelTester()
3170 .pooling_elements(pooling_elements)
3171 .pooling_tile(9, 8)
3172 .channels(4)
3173 .qmax(192)
3174 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3175 }
3176 }
3177
3178 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_multipass) {
3179 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3180 for (size_t channels = 8; channels < 32; channels += 4) {
3181 MaxPoolMicrokernelTester()
3182 .pooling_elements(pooling_elements)
3183 .pooling_tile(9, 8)
3184 .channels(channels)
3185 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3186 }
3187 }
3188 }
3189
3190 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_multipass_with_input_offset) {
3191 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3192 for (size_t channels = 8; channels < 32; channels += 4) {
3193 MaxPoolMicrokernelTester()
3194 .pooling_elements(pooling_elements)
3195 .pooling_tile(9, 8)
3196 .channels(channels)
3197 .input_offset(37)
3198 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3199 }
3200 }
3201 }
3202
3203 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_multipass_with_qmin) {
3204 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3205 for (size_t channels = 8; channels < 32; channels += 4) {
3206 MaxPoolMicrokernelTester()
3207 .pooling_elements(pooling_elements)
3208 .pooling_tile(9, 8)
3209 .channels(channels)
3210 .qmin(192)
3211 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3212 }
3213 }
3214 }
3215
3216 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_div_4_multipass_with_qmax) {
3217 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3218 for (size_t channels = 8; channels < 32; channels += 4) {
3219 MaxPoolMicrokernelTester()
3220 .pooling_elements(pooling_elements)
3221 .pooling_tile(9, 8)
3222 .channels(channels)
3223 .qmax(192)
3224 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3225 }
3226 }
3227 }
3228
3229 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_multipass) {
3230 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3231 for (size_t channels = 1; channels < 4; channels++) {
3232 MaxPoolMicrokernelTester()
3233 .pooling_elements(pooling_elements)
3234 .pooling_tile(9, 8)
3235 .channels(channels)
3236 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3237 }
3238 }
3239 }
3240
3241 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_multipass_with_input_offset) {
3242 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3243 for (size_t channels = 1; channels < 4; channels++) {
3244 MaxPoolMicrokernelTester()
3245 .pooling_elements(pooling_elements)
3246 .pooling_tile(9, 8)
3247 .channels(channels)
3248 .input_offset(4)
3249 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3250 }
3251 }
3252 }
3253
3254 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_multipass_with_qmin) {
3255 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3256 for (size_t channels = 1; channels < 4; channels++) {
3257 MaxPoolMicrokernelTester()
3258 .pooling_elements(pooling_elements)
3259 .pooling_tile(9, 8)
3260 .channels(channels)
3261 .qmin(192)
3262 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3263 }
3264 }
3265 }
3266
3267 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_lt_4_multipass_with_qmax) {
3268 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3269 for (size_t channels = 1; channels < 4; channels++) {
3270 MaxPoolMicrokernelTester()
3271 .pooling_elements(pooling_elements)
3272 .pooling_tile(9, 8)
3273 .channels(channels)
3274 .qmax(192)
3275 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3276 }
3277 }
3278 }
3279
3280 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_multipass) {
3281 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3282 for (size_t channels = 5; channels < 8; channels++) {
3283 MaxPoolMicrokernelTester()
3284 .pooling_elements(pooling_elements)
3285 .pooling_tile(9, 8)
3286 .channels(channels)
3287 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3288 }
3289 }
3290 }
3291
3292 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_multipass_with_input_offset) {
3293 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3294 for (size_t channels = 5; channels < 8; channels++) {
3295 MaxPoolMicrokernelTester()
3296 .pooling_elements(pooling_elements)
3297 .pooling_tile(9, 8)
3298 .channels(channels)
3299 .input_offset(11)
3300 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3301 }
3302 }
3303 }
3304
3305 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_multipass_with_qmin) {
3306 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3307 for (size_t channels = 5; channels < 8; channels++) {
3308 MaxPoolMicrokernelTester()
3309 .pooling_elements(pooling_elements)
3310 .pooling_tile(9, 8)
3311 .channels(channels)
3312 .qmin(192)
3313 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3314 }
3315 }
3316 }
3317
3318 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_gt_4_multipass_with_qmax) {
3319 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3320 for (size_t channels = 5; channels < 8; channels++) {
3321 MaxPoolMicrokernelTester()
3322 .pooling_elements(pooling_elements)
3323 .pooling_tile(9, 8)
3324 .channels(channels)
3325 .qmax(192)
3326 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3327 }
3328 }
3329 }
3330
3331 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, few_output_pixels) {
3332 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3333 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3334 for (size_t channels = 1; channels <= 20; channels += 3) {
3335 MaxPoolMicrokernelTester()
3336 .output_pixels(output_pixels)
3337 .pooling_elements(pooling_elements)
3338 .pooling_tile(9, 8)
3339 .channels(channels)
3340 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3341 }
3342 }
3343 }
3344 }
3345
3346 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, few_output_pixels_with_input_offset) {
3347 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3348 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3349 for (size_t channels = 1; channels <= 20; channels += 3) {
3350 MaxPoolMicrokernelTester()
3351 .output_pixels(output_pixels)
3352 .pooling_elements(pooling_elements)
3353 .pooling_tile(9, 8)
3354 .channels(channels)
3355 .input_offset(23)
3356 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3357 }
3358 }
3359 }
3360 }
3361
3362 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, few_output_pixels_with_qmin) {
3363 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3364 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3365 for (size_t channels = 1; channels <= 20; channels += 3) {
3366 MaxPoolMicrokernelTester()
3367 .output_pixels(output_pixels)
3368 .pooling_elements(pooling_elements)
3369 .pooling_tile(9, 8)
3370 .channels(channels)
3371 .qmin(192)
3372 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3373 }
3374 }
3375 }
3376 }
3377
3378 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, few_output_pixels_with_qmax) {
3379 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3380 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3381 for (size_t channels = 1; channels <= 20; channels += 3) {
3382 MaxPoolMicrokernelTester()
3383 .output_pixels(output_pixels)
3384 .pooling_elements(pooling_elements)
3385 .pooling_tile(9, 8)
3386 .channels(channels)
3387 .qmax(192)
3388 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3389 }
3390 }
3391 }
3392 }
3393
3394 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, few_output_pixels_with_output_stride) {
3395 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3396 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3397 for (size_t channels = 1; channels <= 20; channels += 3) {
3398 MaxPoolMicrokernelTester()
3399 .output_pixels(output_pixels)
3400 .pooling_elements(pooling_elements)
3401 .pooling_tile(9, 8)
3402 .channels(channels)
3403 .output_stride(23)
3404 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3405 }
3406 }
3407 }
3408 }
3409
3410 TEST(F32_MAXPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, few_output_pixels_with_step) {
3411 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3412 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3413 for (size_t channels = 1; channels <= 20; channels += 3) {
3414 for (size_t step = 2; step <= pooling_elements; step++) {
3415 MaxPoolMicrokernelTester()
3416 .output_pixels(output_pixels)
3417 .pooling_elements(pooling_elements)
3418 .pooling_tile(9, 8)
3419 .step(step)
3420 .channels(channels)
3421 .output_stride(23)
3422 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
3423 }
3424 }
3425 }
3426 }
3427 }
3428#endif // XNN_ARCH_WASMSIMD
3429
3430
Frank Barchard609ac842020-07-01 12:09:33 -07003431#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
Marat Dukhan99936602020-04-11 16:47:01 -07003432 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_unipass_fulltile) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003433 MaxPoolMicrokernelTester()
3434 .pooling_elements(9)
3435 .pooling_tile(9, 8)
3436 .channels(1)
Frank Barchard609ac842020-07-01 12:09:33 -07003437 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003438 }
3439
Marat Dukhan99936602020-04-11 16:47:01 -07003440 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003441 MaxPoolMicrokernelTester()
3442 .pooling_elements(9)
3443 .pooling_tile(9, 8)
3444 .channels(1)
3445 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003446 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003447 }
3448
Marat Dukhan99936602020-04-11 16:47:01 -07003449 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_unipass_fulltile_with_qmin) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003450 MaxPoolMicrokernelTester()
3451 .pooling_elements(9)
3452 .pooling_tile(9, 8)
3453 .channels(1)
3454 .qmin(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003455 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003456 }
3457
Marat Dukhan99936602020-04-11 16:47:01 -07003458 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_unipass_fulltile_with_qmax) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003459 MaxPoolMicrokernelTester()
3460 .pooling_elements(9)
3461 .pooling_tile(9, 8)
3462 .channels(1)
3463 .qmax(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003464 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003465 }
3466
Marat Dukhan99936602020-04-11 16:47:01 -07003467 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_unipass_subtile) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003468 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3469 MaxPoolMicrokernelTester()
3470 .pooling_elements(pooling_elements)
3471 .pooling_tile(9, 8)
3472 .channels(1)
Frank Barchard609ac842020-07-01 12:09:33 -07003473 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003474 }
3475 }
3476
Marat Dukhan99936602020-04-11 16:47:01 -07003477 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_unipass_subtile_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003478 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3479 MaxPoolMicrokernelTester()
3480 .pooling_elements(pooling_elements)
3481 .pooling_tile(9, 8)
3482 .channels(1)
3483 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003484 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003485 }
3486 }
3487
Marat Dukhan99936602020-04-11 16:47:01 -07003488 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_unipass_fulltile) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003489 for (size_t channels = 2; channels < 10; channels++) {
3490 MaxPoolMicrokernelTester()
3491 .pooling_elements(9)
3492 .pooling_tile(9, 8)
3493 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07003494 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003495 }
3496 }
3497
Marat Dukhan99936602020-04-11 16:47:01 -07003498 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_unipass_fulltile_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003499 for (size_t channels = 2; channels < 10; channels++) {
3500 MaxPoolMicrokernelTester()
3501 .pooling_elements(9)
3502 .pooling_tile(9, 8)
3503 .channels(channels)
3504 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003505 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003506 }
3507 }
3508
Marat Dukhan99936602020-04-11 16:47:01 -07003509 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_unipass_fulltile_with_qmin) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003510 for (size_t channels = 2; channels < 10; channels++) {
3511 MaxPoolMicrokernelTester()
3512 .pooling_elements(9)
3513 .pooling_tile(9, 8)
3514 .channels(channels)
3515 .qmin(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003516 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003517 }
3518 }
3519
Marat Dukhan99936602020-04-11 16:47:01 -07003520 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_unipass_fulltile_with_qmax) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003521 for (size_t channels = 2; channels < 10; channels++) {
3522 MaxPoolMicrokernelTester()
3523 .pooling_elements(9)
3524 .pooling_tile(9, 8)
3525 .channels(channels)
3526 .qmax(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003527 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003528 }
3529 }
3530
Marat Dukhan99936602020-04-11 16:47:01 -07003531 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_unipass_subtile) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003532 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3533 for (size_t channels = 2; channels < 10; channels++) {
3534 MaxPoolMicrokernelTester()
3535 .pooling_elements(pooling_elements)
3536 .pooling_tile(9, 8)
3537 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07003538 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003539 }
3540 }
3541 }
3542
Marat Dukhan99936602020-04-11 16:47:01 -07003543 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_unipass_subtile_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003544 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3545 for (size_t channels = 2; channels < 10; channels++) {
3546 MaxPoolMicrokernelTester()
3547 .pooling_elements(pooling_elements)
3548 .pooling_tile(9, 8)
3549 .channels(channels)
3550 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003551 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003552 }
3553 }
3554 }
3555
Marat Dukhan99936602020-04-11 16:47:01 -07003556 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003557 MaxPoolMicrokernelTester()
3558 .pooling_elements(17)
3559 .pooling_tile(9, 8)
3560 .channels(1)
Frank Barchard609ac842020-07-01 12:09:33 -07003561 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003562 }
3563
Marat Dukhan99936602020-04-11 16:47:01 -07003564 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003565 MaxPoolMicrokernelTester()
3566 .pooling_elements(17)
3567 .pooling_tile(9, 8)
3568 .channels(1)
3569 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003570 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003571 }
3572
Marat Dukhan99936602020-04-11 16:47:01 -07003573 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_qmin) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003574 MaxPoolMicrokernelTester()
3575 .pooling_elements(17)
3576 .pooling_tile(9, 8)
3577 .channels(1)
3578 .qmin(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003579 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003580 }
3581
Marat Dukhan99936602020-04-11 16:47:01 -07003582 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_qmax) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003583 MaxPoolMicrokernelTester()
3584 .pooling_elements(17)
3585 .pooling_tile(9, 8)
3586 .channels(1)
3587 .qmax(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003588 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003589 }
3590
Marat Dukhan99936602020-04-11 16:47:01 -07003591 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_subtile) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003592 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3593 MaxPoolMicrokernelTester()
3594 .pooling_elements(pooling_elements)
3595 .pooling_tile(9, 8)
3596 .channels(1)
Frank Barchard609ac842020-07-01 12:09:33 -07003597 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003598 }
3599 }
3600
Marat Dukhan99936602020-04-11 16:47:01 -07003601 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_subtile_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003602 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3603 MaxPoolMicrokernelTester()
3604 .pooling_elements(pooling_elements)
3605 .pooling_tile(9, 8)
3606 .channels(1)
3607 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003608 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003609 }
3610 }
3611
Marat Dukhan99936602020-04-11 16:47:01 -07003612 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_twopass_fulltile) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003613 for (size_t channels = 2; channels < 10; channels++) {
3614 MaxPoolMicrokernelTester()
3615 .pooling_elements(17)
3616 .pooling_tile(9, 8)
3617 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07003618 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003619 }
3620 }
3621
Marat Dukhan99936602020-04-11 16:47:01 -07003622 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_twopass_fulltile_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003623 for (size_t channels = 2; channels < 10; channels++) {
3624 MaxPoolMicrokernelTester()
3625 .pooling_elements(17)
3626 .pooling_tile(9, 8)
3627 .channels(channels)
3628 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003629 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003630 }
3631 }
3632
Marat Dukhan99936602020-04-11 16:47:01 -07003633 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_twopass_fulltile_with_qmin) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003634 for (size_t channels = 2; channels < 10; channels++) {
3635 MaxPoolMicrokernelTester()
3636 .pooling_elements(17)
3637 .pooling_tile(9, 8)
3638 .channels(channels)
3639 .qmin(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003640 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003641 }
3642 }
3643
Marat Dukhan99936602020-04-11 16:47:01 -07003644 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_twopass_fulltile_with_qmax) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003645 for (size_t channels = 2; channels < 10; channels++) {
3646 MaxPoolMicrokernelTester()
3647 .pooling_elements(17)
3648 .pooling_tile(9, 8)
3649 .channels(channels)
3650 .qmax(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003651 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003652 }
3653 }
3654
Marat Dukhan99936602020-04-11 16:47:01 -07003655 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_twopass_subtile) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003656 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3657 for (size_t channels = 2; channels < 10; channels++) {
3658 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003659 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003660 .pooling_tile(9, 8)
3661 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07003662 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003663 }
3664 }
3665 }
3666
Marat Dukhan99936602020-04-11 16:47:01 -07003667 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_twopass_subtile_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003668 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3669 for (size_t channels = 2; channels < 10; channels++) {
3670 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003671 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003672 .pooling_tile(9, 8)
3673 .channels(channels)
3674 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003675 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003676 }
3677 }
3678 }
3679
Marat Dukhan99936602020-04-11 16:47:01 -07003680 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_multipass) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003681 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3682 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003683 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003684 .pooling_tile(9, 8)
3685 .channels(1)
Frank Barchard609ac842020-07-01 12:09:33 -07003686 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003687 }
3688 }
3689
Marat Dukhan99936602020-04-11 16:47:01 -07003690 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_multipass_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003691 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3692 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003693 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003694 .pooling_tile(9, 8)
3695 .channels(1)
3696 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003697 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003698 }
3699 }
3700
Marat Dukhan99936602020-04-11 16:47:01 -07003701 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_multipass_with_qmin) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003702 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3703 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003704 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003705 .pooling_tile(9, 8)
3706 .channels(1)
3707 .qmin(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003708 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003709 }
3710 }
3711
Marat Dukhan99936602020-04-11 16:47:01 -07003712 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_multipass_with_qmax) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003713 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3714 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003715 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003716 .pooling_tile(9, 8)
3717 .channels(1)
3718 .qmax(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003719 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003720 }
3721 }
3722
Marat Dukhan99936602020-04-11 16:47:01 -07003723 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_multipass) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003724 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3725 for (size_t channels = 2; channels < 10; channels++) {
3726 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003727 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003728 .pooling_tile(9, 8)
3729 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07003730 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003731 }
3732 }
3733 }
3734
Marat Dukhan99936602020-04-11 16:47:01 -07003735 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_multipass_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003736 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3737 for (size_t channels = 2; channels < 10; channels++) {
3738 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003739 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003740 .pooling_tile(9, 8)
3741 .channels(channels)
3742 .input_offset(3)
Frank Barchard609ac842020-07-01 12:09:33 -07003743 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003744 }
3745 }
3746 }
3747
Marat Dukhan99936602020-04-11 16:47:01 -07003748 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_multipass_with_qmin) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003749 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3750 for (size_t channels = 2; channels < 10; channels++) {
3751 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003752 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003753 .pooling_tile(9, 8)
3754 .channels(channels)
3755 .qmin(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003756 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003757 }
3758 }
3759 }
3760
Marat Dukhan99936602020-04-11 16:47:01 -07003761 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, channels_gt_1_multipass_with_qmax) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003762 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3763 for (size_t channels = 2; channels < 10; channels++) {
3764 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08003765 .pooling_elements(pooling_elements)
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003766 .pooling_tile(9, 8)
3767 .channels(channels)
3768 .qmax(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003769 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003770 }
3771 }
3772 }
3773
Marat Dukhan99936602020-04-11 16:47:01 -07003774 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, few_output_pixels) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003775 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3776 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3777 for (size_t channels = 1; channels <= 5; channels += 1) {
3778 MaxPoolMicrokernelTester()
3779 .output_pixels(output_pixels)
3780 .pooling_elements(pooling_elements)
3781 .pooling_tile(9, 8)
3782 .channels(channels)
Frank Barchard609ac842020-07-01 12:09:33 -07003783 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003784 }
3785 }
3786 }
3787 }
3788
Marat Dukhan99936602020-04-11 16:47:01 -07003789 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, few_output_pixels_with_input_offset) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003790 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3791 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3792 for (size_t channels = 1; channels <= 5; channels += 1) {
3793 MaxPoolMicrokernelTester()
3794 .output_pixels(output_pixels)
3795 .pooling_elements(pooling_elements)
3796 .pooling_tile(9, 8)
3797 .channels(channels)
3798 .input_offset(7)
Frank Barchard609ac842020-07-01 12:09:33 -07003799 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003800 }
3801 }
3802 }
3803 }
3804
Marat Dukhan99936602020-04-11 16:47:01 -07003805 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, few_output_pixels_with_qmin) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003806 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3807 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3808 for (size_t channels = 1; channels <= 5; channels += 1) {
3809 MaxPoolMicrokernelTester()
3810 .output_pixels(output_pixels)
3811 .pooling_elements(pooling_elements)
3812 .pooling_tile(9, 8)
3813 .channels(channels)
3814 .qmin(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003815 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003816 }
3817 }
3818 }
3819 }
3820
Marat Dukhan99936602020-04-11 16:47:01 -07003821 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, few_output_pixels_with_qmax) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003822 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3823 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3824 for (size_t channels = 1; channels <= 5; channels += 1) {
3825 MaxPoolMicrokernelTester()
3826 .output_pixels(output_pixels)
3827 .pooling_elements(pooling_elements)
3828 .pooling_tile(9, 8)
3829 .channels(channels)
3830 .qmax(192)
Frank Barchard609ac842020-07-01 12:09:33 -07003831 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003832 }
3833 }
3834 }
3835 }
3836
Marat Dukhan99936602020-04-11 16:47:01 -07003837 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, few_output_pixels_with_output_stride) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003838 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3839 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3840 for (size_t channels = 1; channels <= 5; channels += 1) {
3841 MaxPoolMicrokernelTester()
3842 .output_pixels(output_pixels)
3843 .pooling_elements(pooling_elements)
3844 .pooling_tile(9, 8)
3845 .channels(channels)
3846 .output_stride(7)
Frank Barchard609ac842020-07-01 12:09:33 -07003847 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003848 }
3849 }
3850 }
3851 }
3852
Marat Dukhan99936602020-04-11 16:47:01 -07003853 TEST(F32_MAXPOOL_MINMAX_9P8X__WASM_C1, few_output_pixels_with_step) {
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003854 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3855 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
3856 for (size_t channels = 1; channels <= 5; channels += 1) {
3857 for (size_t step = 2; step <= pooling_elements; step++) {
3858 MaxPoolMicrokernelTester()
3859 .output_pixels(output_pixels)
3860 .pooling_elements(pooling_elements)
3861 .pooling_tile(9, 8)
3862 .step(step)
3863 .channels(channels)
3864 .output_stride(7)
Frank Barchard609ac842020-07-01 12:09:33 -07003865 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1);
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003866 }
3867 }
3868 }
3869 }
3870 }
Frank Barchard609ac842020-07-01 12:09:33 -07003871#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
Marat Dukhan5cb8ff02020-02-26 21:02:33 -08003872
3873
Marat Dukhan99936602020-04-11 16:47:01 -07003874TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -08003875 MaxPoolMicrokernelTester()
3876 .pooling_elements(9)
3877 .pooling_tile(9, 8)
3878 .channels(1)
Marat Dukhan99936602020-04-11 16:47:01 -07003879 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08003880}
3881
Marat Dukhan99936602020-04-11 16:47:01 -07003882TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08003883 MaxPoolMicrokernelTester()
3884 .pooling_elements(9)
3885 .pooling_tile(9, 8)
3886 .channels(1)
3887 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07003888 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08003889}
3890
Marat Dukhan99936602020-04-11 16:47:01 -07003891TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -08003892 MaxPoolMicrokernelTester()
3893 .pooling_elements(9)
3894 .pooling_tile(9, 8)
3895 .channels(1)
3896 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07003897 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08003898}
3899
Marat Dukhan99936602020-04-11 16:47:01 -07003900TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -08003901 MaxPoolMicrokernelTester()
3902 .pooling_elements(9)
3903 .pooling_tile(9, 8)
3904 .channels(1)
3905 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07003906 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08003907}
3908
Marat Dukhan99936602020-04-11 16:47:01 -07003909TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -08003910 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3911 MaxPoolMicrokernelTester()
3912 .pooling_elements(pooling_elements)
3913 .pooling_tile(9, 8)
3914 .channels(1)
Marat Dukhan99936602020-04-11 16:47:01 -07003915 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07003916 }
3917}
3918
Marat Dukhan99936602020-04-11 16:47:01 -07003919TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_unipass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08003920 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3921 MaxPoolMicrokernelTester()
3922 .pooling_elements(pooling_elements)
3923 .pooling_tile(9, 8)
3924 .channels(1)
3925 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07003926 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07003927 }
3928}
3929
Marat Dukhan99936602020-04-11 16:47:01 -07003930TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -08003931 for (size_t channels = 2; channels < 10; channels++) {
3932 MaxPoolMicrokernelTester()
3933 .pooling_elements(9)
3934 .pooling_tile(9, 8)
3935 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07003936 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07003937 }
3938}
3939
Marat Dukhan99936602020-04-11 16:47:01 -07003940TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08003941 for (size_t channels = 2; channels < 10; channels++) {
3942 MaxPoolMicrokernelTester()
3943 .pooling_elements(9)
3944 .pooling_tile(9, 8)
3945 .channels(channels)
3946 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07003947 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07003948 }
3949}
3950
Marat Dukhan99936602020-04-11 16:47:01 -07003951TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -08003952 for (size_t channels = 2; channels < 10; channels++) {
3953 MaxPoolMicrokernelTester()
3954 .pooling_elements(9)
3955 .pooling_tile(9, 8)
3956 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -07003957 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07003958 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08003959 }
3960}
3961
Marat Dukhan99936602020-04-11 16:47:01 -07003962TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -08003963 for (size_t channels = 2; channels < 10; channels++) {
3964 MaxPoolMicrokernelTester()
3965 .pooling_elements(9)
3966 .pooling_tile(9, 8)
3967 .channels(channels)
3968 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07003969 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08003970 }
3971}
3972
Marat Dukhan99936602020-04-11 16:47:01 -07003973TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -08003974 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3975 for (size_t channels = 2; channels < 10; channels++) {
3976 MaxPoolMicrokernelTester()
3977 .pooling_elements(pooling_elements)
3978 .pooling_tile(9, 8)
3979 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07003980 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08003981 }
3982 }
3983}
3984
Marat Dukhan99936602020-04-11 16:47:01 -07003985TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_unipass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08003986 for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
3987 for (size_t channels = 2; channels < 10; channels++) {
3988 MaxPoolMicrokernelTester()
3989 .pooling_elements(pooling_elements)
3990 .pooling_tile(9, 8)
3991 .channels(channels)
3992 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07003993 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08003994 }
3995 }
3996}
3997
Marat Dukhan99936602020-04-11 16:47:01 -07003998TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -08003999 MaxPoolMicrokernelTester()
4000 .pooling_elements(17)
4001 .pooling_tile(9, 8)
4002 .channels(1)
Marat Dukhan99936602020-04-11 16:47:01 -07004003 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004004}
4005
Marat Dukhan99936602020-04-11 16:47:01 -07004006TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08004007 MaxPoolMicrokernelTester()
4008 .pooling_elements(17)
4009 .pooling_tile(9, 8)
4010 .channels(1)
4011 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07004012 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004013}
4014
Marat Dukhan99936602020-04-11 16:47:01 -07004015TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -08004016 MaxPoolMicrokernelTester()
4017 .pooling_elements(17)
4018 .pooling_tile(9, 8)
4019 .channels(1)
4020 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004021 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004022}
4023
Marat Dukhan99936602020-04-11 16:47:01 -07004024TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -08004025 MaxPoolMicrokernelTester()
4026 .pooling_elements(17)
4027 .pooling_tile(9, 8)
4028 .channels(1)
4029 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004030 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004031}
4032
Marat Dukhan99936602020-04-11 16:47:01 -07004033TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -08004034 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
4035 MaxPoolMicrokernelTester()
4036 .pooling_elements(pooling_elements)
4037 .pooling_tile(9, 8)
4038 .channels(1)
Marat Dukhan99936602020-04-11 16:47:01 -07004039 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004040 }
4041}
4042
Marat Dukhan99936602020-04-11 16:47:01 -07004043TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08004044 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
4045 MaxPoolMicrokernelTester()
4046 .pooling_elements(pooling_elements)
4047 .pooling_tile(9, 8)
4048 .channels(1)
4049 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07004050 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004051 }
4052}
4053
Marat Dukhan99936602020-04-11 16:47:01 -07004054TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile) {
Marat Dukhan329da642019-11-19 21:44:39 -08004055 for (size_t channels = 2; channels < 10; channels++) {
4056 MaxPoolMicrokernelTester()
4057 .pooling_elements(17)
4058 .pooling_tile(9, 8)
4059 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07004060 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004061 }
4062}
4063
Marat Dukhan99936602020-04-11 16:47:01 -07004064TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08004065 for (size_t channels = 2; channels < 10; channels++) {
4066 MaxPoolMicrokernelTester()
4067 .pooling_elements(17)
4068 .pooling_tile(9, 8)
4069 .channels(channels)
4070 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07004071 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004072 }
4073}
4074
Marat Dukhan99936602020-04-11 16:47:01 -07004075TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -08004076 for (size_t channels = 2; channels < 10; channels++) {
4077 MaxPoolMicrokernelTester()
4078 .pooling_elements(17)
4079 .pooling_tile(9, 8)
4080 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -07004081 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004082 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004083 }
4084}
4085
Marat Dukhan99936602020-04-11 16:47:01 -07004086TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -08004087 for (size_t channels = 2; channels < 10; channels++) {
4088 MaxPoolMicrokernelTester()
4089 .pooling_elements(17)
4090 .pooling_tile(9, 8)
4091 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -07004092 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004093 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004094 }
4095}
4096
Marat Dukhan99936602020-04-11 16:47:01 -07004097TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_subtile) {
Marat Dukhan329da642019-11-19 21:44:39 -08004098 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
4099 for (size_t channels = 2; channels < 10; channels++) {
4100 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004101 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004102 .pooling_tile(9, 8)
4103 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07004104 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004105 }
4106 }
4107}
4108
Marat Dukhan99936602020-04-11 16:47:01 -07004109TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_twopass_subtile_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08004110 for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
4111 for (size_t channels = 2; channels < 10; channels++) {
4112 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004113 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004114 .pooling_tile(9, 8)
4115 .channels(channels)
4116 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07004117 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004118 }
4119 }
4120}
4121
Marat Dukhan99936602020-04-11 16:47:01 -07004122TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_multipass) {
Marat Dukhan329da642019-11-19 21:44:39 -08004123 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
4124 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004125 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004126 .pooling_tile(9, 8)
4127 .channels(1)
Marat Dukhan99936602020-04-11 16:47:01 -07004128 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004129 }
4130}
4131
Marat Dukhan99936602020-04-11 16:47:01 -07004132TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_multipass_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08004133 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
4134 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004135 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004136 .pooling_tile(9, 8)
4137 .channels(1)
4138 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07004139 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004140 }
4141}
4142
Marat Dukhan99936602020-04-11 16:47:01 -07004143TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_multipass_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -08004144 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
4145 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004146 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004147 .pooling_tile(9, 8)
4148 .channels(1)
4149 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004150 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004151 }
4152}
4153
Marat Dukhan99936602020-04-11 16:47:01 -07004154TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_multipass_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -08004155 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
4156 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004157 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004158 .pooling_tile(9, 8)
4159 .channels(1)
XNNPACK Teamb455b122019-09-27 18:10:33 -07004160 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004161 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004162 }
4163}
4164
Marat Dukhan99936602020-04-11 16:47:01 -07004165TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_multipass) {
Marat Dukhan329da642019-11-19 21:44:39 -08004166 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
4167 for (size_t channels = 2; channels < 10; channels++) {
4168 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004169 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004170 .pooling_tile(9, 8)
4171 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07004172 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004173 }
4174 }
4175}
4176
Marat Dukhan99936602020-04-11 16:47:01 -07004177TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_multipass_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08004178 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
4179 for (size_t channels = 2; channels < 10; channels++) {
4180 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004181 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004182 .pooling_tile(9, 8)
4183 .channels(channels)
4184 .input_offset(3)
Marat Dukhan99936602020-04-11 16:47:01 -07004185 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004186 }
4187 }
4188}
4189
Marat Dukhan99936602020-04-11 16:47:01 -07004190TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_multipass_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -08004191 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
4192 for (size_t channels = 2; channels < 10; channels++) {
4193 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004194 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004195 .pooling_tile(9, 8)
4196 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -07004197 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004198 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004199 }
4200 }
4201}
4202
Marat Dukhan99936602020-04-11 16:47:01 -07004203TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, channels_gt_1_multipass_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -08004204 for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
4205 for (size_t channels = 2; channels < 10; channels++) {
4206 MaxPoolMicrokernelTester()
Marat Dukhanf5fec4b2020-02-27 13:48:33 -08004207 .pooling_elements(pooling_elements)
Marat Dukhan329da642019-11-19 21:44:39 -08004208 .pooling_tile(9, 8)
4209 .channels(channels)
XNNPACK Teamb455b122019-09-27 18:10:33 -07004210 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004211 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004212 }
4213 }
4214}
4215
Marat Dukhan99936602020-04-11 16:47:01 -07004216TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels) {
Marat Dukhan329da642019-11-19 21:44:39 -08004217 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
4218 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
4219 for (size_t channels = 1; channels <= 5; channels += 1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07004220 MaxPoolMicrokernelTester()
Marat Dukhan329da642019-11-19 21:44:39 -08004221 .output_pixels(output_pixels)
4222 .pooling_elements(pooling_elements)
4223 .pooling_tile(9, 8)
4224 .channels(channels)
Marat Dukhan99936602020-04-11 16:47:01 -07004225 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004226 }
4227 }
4228 }
4229}
4230
Marat Dukhan99936602020-04-11 16:47:01 -07004231TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_input_offset) {
Marat Dukhan329da642019-11-19 21:44:39 -08004232 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
4233 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
4234 for (size_t channels = 1; channels <= 5; channels += 1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07004235 MaxPoolMicrokernelTester()
Marat Dukhan329da642019-11-19 21:44:39 -08004236 .output_pixels(output_pixels)
4237 .pooling_elements(pooling_elements)
4238 .pooling_tile(9, 8)
4239 .channels(channels)
4240 .input_offset(7)
Marat Dukhan99936602020-04-11 16:47:01 -07004241 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004242 }
4243 }
4244 }
4245}
4246
Marat Dukhan99936602020-04-11 16:47:01 -07004247TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_qmin) {
Marat Dukhan329da642019-11-19 21:44:39 -08004248 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
4249 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
4250 for (size_t channels = 1; channels <= 5; channels += 1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07004251 MaxPoolMicrokernelTester()
Marat Dukhan329da642019-11-19 21:44:39 -08004252 .output_pixels(output_pixels)
4253 .pooling_elements(pooling_elements)
4254 .pooling_tile(9, 8)
4255 .channels(channels)
4256 .qmin(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004257 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004258 }
4259 }
4260 }
4261}
4262
Marat Dukhan99936602020-04-11 16:47:01 -07004263TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_qmax) {
Marat Dukhan329da642019-11-19 21:44:39 -08004264 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
4265 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
4266 for (size_t channels = 1; channels <= 5; channels += 1) {
4267 MaxPoolMicrokernelTester()
4268 .output_pixels(output_pixels)
4269 .pooling_elements(pooling_elements)
4270 .pooling_tile(9, 8)
4271 .channels(channels)
4272 .qmax(192)
Marat Dukhan99936602020-04-11 16:47:01 -07004273 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004274 }
4275 }
4276 }
4277}
4278
Marat Dukhan99936602020-04-11 16:47:01 -07004279TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_output_stride) {
Marat Dukhan329da642019-11-19 21:44:39 -08004280 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
4281 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
4282 for (size_t channels = 1; channels <= 5; channels += 1) {
4283 MaxPoolMicrokernelTester()
4284 .output_pixels(output_pixels)
4285 .pooling_elements(pooling_elements)
4286 .pooling_tile(9, 8)
4287 .channels(channels)
4288 .output_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -07004289 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
Marat Dukhan329da642019-11-19 21:44:39 -08004290 }
4291 }
4292 }
4293}
4294
Marat Dukhan99936602020-04-11 16:47:01 -07004295TEST(F32_MAXPOOL_MINMAX_9P8X__SCALAR_C1, few_output_pixels_with_step) {
Marat Dukhan329da642019-11-19 21:44:39 -08004296 for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
4297 for (size_t pooling_elements : std::vector<size_t>{{2, 9, 16}}) {
4298 for (size_t channels = 1; channels <= 5; channels += 1) {
4299 for (size_t step = 2; step <= pooling_elements; step++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07004300 MaxPoolMicrokernelTester()
Marat Dukhan329da642019-11-19 21:44:39 -08004301 .output_pixels(output_pixels)
4302 .pooling_elements(pooling_elements)
4303 .pooling_tile(9, 8)
4304 .step(step)
4305 .channels(channels)
4306 .output_stride(7)
Marat Dukhan99936602020-04-11 16:47:01 -07004307 .Test(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1, MaxPoolMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -07004308 }
4309 }
4310 }
4311 }
Marat Dukhan329da642019-11-19 21:44:39 -08004312}