1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC
2*4bdc9457SAndroid Build Coastguard Worker //
3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the
4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree.
5*4bdc9457SAndroid Build Coastguard Worker //
6*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit!
7*4bdc9457SAndroid Build Coastguard Worker // Specification: test/f32-argmaxpool.yaml
8*4bdc9457SAndroid Build Coastguard Worker // Generator: tools/generate-argmaxpool-test.py
9*4bdc9457SAndroid Build Coastguard Worker
10*4bdc9457SAndroid Build Coastguard Worker
11*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h>
12*4bdc9457SAndroid Build Coastguard Worker
13*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h>
14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h>
15*4bdc9457SAndroid Build Coastguard Worker
16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/argmaxpool.h>
17*4bdc9457SAndroid Build Coastguard Worker #include "argmaxpool-microkernel-tester.h"
18*4bdc9457SAndroid Build Coastguard Worker
19*4bdc9457SAndroid Build Coastguard Worker
20*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_eq_4_unipass_fulltile)21*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_eq_4_unipass_fulltile) {
22*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
23*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
24*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
25*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
26*4bdc9457SAndroid Build Coastguard Worker .channels(4)
27*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
28*4bdc9457SAndroid Build Coastguard Worker }
29*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_eq_4_unipass_fulltile_with_input_offset)30*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
31*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
32*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
33*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
34*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
35*4bdc9457SAndroid Build Coastguard Worker .channels(4)
36*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
37*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
38*4bdc9457SAndroid Build Coastguard Worker }
39*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_eq_4_unipass_subtile)40*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_eq_4_unipass_subtile) {
41*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
42*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
43*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
44*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
45*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
46*4bdc9457SAndroid Build Coastguard Worker .channels(4)
47*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
48*4bdc9457SAndroid Build Coastguard Worker }
49*4bdc9457SAndroid Build Coastguard Worker }
50*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_eq_4_unipass_subtile_with_input_offset)51*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_eq_4_unipass_subtile_with_input_offset) {
52*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
53*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
54*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
55*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
56*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
57*4bdc9457SAndroid Build Coastguard Worker .channels(4)
58*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
59*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
60*4bdc9457SAndroid Build Coastguard Worker }
61*4bdc9457SAndroid Build Coastguard Worker }
62*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_div_4_unipass_fulltile)63*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_div_4_unipass_fulltile) {
64*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
65*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
66*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
67*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
68*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
69*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
70*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
71*4bdc9457SAndroid Build Coastguard Worker }
72*4bdc9457SAndroid Build Coastguard Worker }
73*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_div_4_unipass_fulltile_with_input_offset)74*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_div_4_unipass_fulltile_with_input_offset) {
75*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
76*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
77*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
78*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
79*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
80*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
81*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
82*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
83*4bdc9457SAndroid Build Coastguard Worker }
84*4bdc9457SAndroid Build Coastguard Worker }
85*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_div_4_unipass_subtile)86*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_div_4_unipass_subtile) {
87*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
88*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
89*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
90*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
91*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
92*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
93*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
94*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
95*4bdc9457SAndroid Build Coastguard Worker }
96*4bdc9457SAndroid Build Coastguard Worker }
97*4bdc9457SAndroid Build Coastguard Worker }
98*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_div_4_unipass_subtile_with_input_offset)99*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_div_4_unipass_subtile_with_input_offset) {
100*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
101*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
102*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
103*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
104*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
105*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
106*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
107*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
109*4bdc9457SAndroid Build Coastguard Worker }
110*4bdc9457SAndroid Build Coastguard Worker }
111*4bdc9457SAndroid Build Coastguard Worker }
112*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_lt_4_unipass_fulltile)113*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_lt_4_unipass_fulltile) {
114*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
115*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
116*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
117*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
118*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
119*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
120*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
121*4bdc9457SAndroid Build Coastguard Worker }
122*4bdc9457SAndroid Build Coastguard Worker }
123*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_lt_4_unipass_fulltile_with_input_offset)124*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
125*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
126*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
127*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
128*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
129*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
130*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
131*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
133*4bdc9457SAndroid Build Coastguard Worker }
134*4bdc9457SAndroid Build Coastguard Worker }
135*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_lt_4_unipass_subtile)136*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_lt_4_unipass_subtile) {
137*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
138*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
139*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
140*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
141*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
142*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
143*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
144*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
145*4bdc9457SAndroid Build Coastguard Worker }
146*4bdc9457SAndroid Build Coastguard Worker }
147*4bdc9457SAndroid Build Coastguard Worker }
148*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_lt_4_unipass_subtile_with_input_offset)149*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_lt_4_unipass_subtile_with_input_offset) {
150*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
151*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
152*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
153*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
154*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
155*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
156*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
157*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
158*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
159*4bdc9457SAndroid Build Coastguard Worker }
160*4bdc9457SAndroid Build Coastguard Worker }
161*4bdc9457SAndroid Build Coastguard Worker }
162*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_gt_4_unipass_fulltile)163*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_gt_4_unipass_fulltile) {
164*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
165*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
166*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
167*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
168*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
169*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
170*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
171*4bdc9457SAndroid Build Coastguard Worker }
172*4bdc9457SAndroid Build Coastguard Worker }
173*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_gt_4_unipass_fulltile_with_input_offset)174*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
175*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
176*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
177*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
178*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
179*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
180*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
181*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
182*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
183*4bdc9457SAndroid Build Coastguard Worker }
184*4bdc9457SAndroid Build Coastguard Worker }
185*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_gt_4_unipass_subtile)186*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_gt_4_unipass_subtile) {
187*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
188*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
189*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
190*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
191*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
192*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
193*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
194*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
195*4bdc9457SAndroid Build Coastguard Worker }
196*4bdc9457SAndroid Build Coastguard Worker }
197*4bdc9457SAndroid Build Coastguard Worker }
198*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,channels_gt_4_unipass_subtile_with_input_offset)199*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, channels_gt_4_unipass_subtile_with_input_offset) {
200*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
201*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
202*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
203*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
204*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
205*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
206*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
207*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
208*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
209*4bdc9457SAndroid Build Coastguard Worker }
210*4bdc9457SAndroid Build Coastguard Worker }
211*4bdc9457SAndroid Build Coastguard Worker }
212*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,few_output_pixels)213*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, few_output_pixels) {
214*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
215*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
216*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
217*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
218*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
219*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
220*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
221*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
222*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
223*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
224*4bdc9457SAndroid Build Coastguard Worker }
225*4bdc9457SAndroid Build Coastguard Worker }
226*4bdc9457SAndroid Build Coastguard Worker }
227*4bdc9457SAndroid Build Coastguard Worker }
228*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,few_output_pixels_with_input_offset)229*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, few_output_pixels_with_input_offset) {
230*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
231*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
232*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
233*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
234*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
235*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
236*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
237*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
238*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
239*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
240*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
241*4bdc9457SAndroid Build Coastguard Worker }
242*4bdc9457SAndroid Build Coastguard Worker }
243*4bdc9457SAndroid Build Coastguard Worker }
244*4bdc9457SAndroid Build Coastguard Worker }
245*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,few_output_pixels_with_output_stride)246*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, few_output_pixels_with_output_stride) {
247*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
248*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
249*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
250*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
251*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
252*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
253*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
254*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
255*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
256*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
257*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
258*4bdc9457SAndroid Build Coastguard Worker }
259*4bdc9457SAndroid Build Coastguard Worker }
260*4bdc9457SAndroid Build Coastguard Worker }
261*4bdc9457SAndroid Build Coastguard Worker }
262*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__NEON_C4,few_output_pixels_with_step)263*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__NEON_C4, few_output_pixels_with_step) {
264*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
265*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
266*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
267*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
268*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
269*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
270*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
271*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
272*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
273*4bdc9457SAndroid Build Coastguard Worker .step(step)
274*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
275*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
276*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__neon_c4);
277*4bdc9457SAndroid Build Coastguard Worker }
278*4bdc9457SAndroid Build Coastguard Worker }
279*4bdc9457SAndroid Build Coastguard Worker }
280*4bdc9457SAndroid Build Coastguard Worker }
281*4bdc9457SAndroid Build Coastguard Worker }
282*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
283*4bdc9457SAndroid Build Coastguard Worker
284*4bdc9457SAndroid Build Coastguard Worker
285*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_eq_4_unipass_fulltile)286*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_eq_4_unipass_fulltile) {
287*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
288*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
289*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
290*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
291*4bdc9457SAndroid Build Coastguard Worker .channels(4)
292*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
293*4bdc9457SAndroid Build Coastguard Worker }
294*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_eq_4_unipass_fulltile_with_input_offset)295*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
296*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
297*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
298*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
299*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
300*4bdc9457SAndroid Build Coastguard Worker .channels(4)
301*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
302*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
303*4bdc9457SAndroid Build Coastguard Worker }
304*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_eq_4_unipass_subtile)305*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_eq_4_unipass_subtile) {
306*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
307*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
308*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
309*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
310*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
311*4bdc9457SAndroid Build Coastguard Worker .channels(4)
312*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
313*4bdc9457SAndroid Build Coastguard Worker }
314*4bdc9457SAndroid Build Coastguard Worker }
315*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_eq_4_unipass_subtile_with_input_offset)316*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_eq_4_unipass_subtile_with_input_offset) {
317*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
318*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
319*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
320*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
321*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
322*4bdc9457SAndroid Build Coastguard Worker .channels(4)
323*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
324*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
325*4bdc9457SAndroid Build Coastguard Worker }
326*4bdc9457SAndroid Build Coastguard Worker }
327*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_div_4_unipass_fulltile)328*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_div_4_unipass_fulltile) {
329*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
330*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
331*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
332*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
333*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
334*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
335*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
336*4bdc9457SAndroid Build Coastguard Worker }
337*4bdc9457SAndroid Build Coastguard Worker }
338*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_div_4_unipass_fulltile_with_input_offset)339*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_div_4_unipass_fulltile_with_input_offset) {
340*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
341*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
342*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
343*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
344*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
345*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
346*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
347*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
348*4bdc9457SAndroid Build Coastguard Worker }
349*4bdc9457SAndroid Build Coastguard Worker }
350*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_div_4_unipass_subtile)351*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_div_4_unipass_subtile) {
352*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
353*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
354*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
355*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
356*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
357*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
358*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
359*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
360*4bdc9457SAndroid Build Coastguard Worker }
361*4bdc9457SAndroid Build Coastguard Worker }
362*4bdc9457SAndroid Build Coastguard Worker }
363*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_div_4_unipass_subtile_with_input_offset)364*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_div_4_unipass_subtile_with_input_offset) {
365*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
366*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
367*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
368*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
369*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
370*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
371*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
372*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
373*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
374*4bdc9457SAndroid Build Coastguard Worker }
375*4bdc9457SAndroid Build Coastguard Worker }
376*4bdc9457SAndroid Build Coastguard Worker }
377*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_lt_4_unipass_fulltile)378*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_lt_4_unipass_fulltile) {
379*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
380*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
381*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
382*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
383*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
384*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
385*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
386*4bdc9457SAndroid Build Coastguard Worker }
387*4bdc9457SAndroid Build Coastguard Worker }
388*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_lt_4_unipass_fulltile_with_input_offset)389*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
390*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
391*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
392*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
393*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
394*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
395*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
396*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
397*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
398*4bdc9457SAndroid Build Coastguard Worker }
399*4bdc9457SAndroid Build Coastguard Worker }
400*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_lt_4_unipass_subtile)401*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_lt_4_unipass_subtile) {
402*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
403*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
404*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
405*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
406*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
407*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
408*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
409*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
410*4bdc9457SAndroid Build Coastguard Worker }
411*4bdc9457SAndroid Build Coastguard Worker }
412*4bdc9457SAndroid Build Coastguard Worker }
413*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_lt_4_unipass_subtile_with_input_offset)414*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_lt_4_unipass_subtile_with_input_offset) {
415*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
416*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
417*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
418*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
419*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
420*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
421*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
422*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
423*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
424*4bdc9457SAndroid Build Coastguard Worker }
425*4bdc9457SAndroid Build Coastguard Worker }
426*4bdc9457SAndroid Build Coastguard Worker }
427*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_gt_4_unipass_fulltile)428*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_gt_4_unipass_fulltile) {
429*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
430*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
431*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
432*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
433*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
434*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
435*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
436*4bdc9457SAndroid Build Coastguard Worker }
437*4bdc9457SAndroid Build Coastguard Worker }
438*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_gt_4_unipass_fulltile_with_input_offset)439*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
440*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
441*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
442*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
443*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
444*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
445*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
446*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
447*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
448*4bdc9457SAndroid Build Coastguard Worker }
449*4bdc9457SAndroid Build Coastguard Worker }
450*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_gt_4_unipass_subtile)451*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_gt_4_unipass_subtile) {
452*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
453*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
454*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
455*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
456*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
457*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
458*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
459*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
460*4bdc9457SAndroid Build Coastguard Worker }
461*4bdc9457SAndroid Build Coastguard Worker }
462*4bdc9457SAndroid Build Coastguard Worker }
463*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,channels_gt_4_unipass_subtile_with_input_offset)464*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, channels_gt_4_unipass_subtile_with_input_offset) {
465*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
466*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
467*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
468*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
469*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
470*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
471*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
472*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
473*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
474*4bdc9457SAndroid Build Coastguard Worker }
475*4bdc9457SAndroid Build Coastguard Worker }
476*4bdc9457SAndroid Build Coastguard Worker }
477*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,few_output_pixels)478*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, few_output_pixels) {
479*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
480*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
481*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
482*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
483*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
484*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
485*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
486*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
487*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
488*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
489*4bdc9457SAndroid Build Coastguard Worker }
490*4bdc9457SAndroid Build Coastguard Worker }
491*4bdc9457SAndroid Build Coastguard Worker }
492*4bdc9457SAndroid Build Coastguard Worker }
493*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,few_output_pixels_with_input_offset)494*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, few_output_pixels_with_input_offset) {
495*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
496*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
497*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
498*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
499*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
500*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
501*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
502*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
503*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
504*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
505*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
506*4bdc9457SAndroid Build Coastguard Worker }
507*4bdc9457SAndroid Build Coastguard Worker }
508*4bdc9457SAndroid Build Coastguard Worker }
509*4bdc9457SAndroid Build Coastguard Worker }
510*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,few_output_pixels_with_output_stride)511*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, few_output_pixels_with_output_stride) {
512*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
513*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
514*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
515*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
516*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
517*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
518*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
519*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
520*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
521*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
522*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
523*4bdc9457SAndroid Build Coastguard Worker }
524*4bdc9457SAndroid Build Coastguard Worker }
525*4bdc9457SAndroid Build Coastguard Worker }
526*4bdc9457SAndroid Build Coastguard Worker }
527*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SSE2_C4,few_output_pixels_with_step)528*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SSE2_C4, few_output_pixels_with_step) {
529*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
530*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
531*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
532*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
533*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
534*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
535*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
536*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
537*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
538*4bdc9457SAndroid Build Coastguard Worker .step(step)
539*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
540*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
541*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__sse2_c4);
542*4bdc9457SAndroid Build Coastguard Worker }
543*4bdc9457SAndroid Build Coastguard Worker }
544*4bdc9457SAndroid Build Coastguard Worker }
545*4bdc9457SAndroid Build Coastguard Worker }
546*4bdc9457SAndroid Build Coastguard Worker }
547*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
548*4bdc9457SAndroid Build Coastguard Worker
549*4bdc9457SAndroid Build Coastguard Worker
550*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_eq_4_unipass_fulltile)551*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_eq_4_unipass_fulltile) {
552*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
553*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
554*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
555*4bdc9457SAndroid Build Coastguard Worker .channels(4)
556*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
557*4bdc9457SAndroid Build Coastguard Worker }
558*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_eq_4_unipass_fulltile_with_input_offset)559*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
560*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
561*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
562*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
563*4bdc9457SAndroid Build Coastguard Worker .channels(4)
564*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
565*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
566*4bdc9457SAndroid Build Coastguard Worker }
567*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_eq_4_unipass_subtile)568*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_eq_4_unipass_subtile) {
569*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
570*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
571*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
572*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
573*4bdc9457SAndroid Build Coastguard Worker .channels(4)
574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
575*4bdc9457SAndroid Build Coastguard Worker }
576*4bdc9457SAndroid Build Coastguard Worker }
577*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_eq_4_unipass_subtile_with_input_offset)578*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_eq_4_unipass_subtile_with_input_offset) {
579*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
580*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
581*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
582*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
583*4bdc9457SAndroid Build Coastguard Worker .channels(4)
584*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
585*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
586*4bdc9457SAndroid Build Coastguard Worker }
587*4bdc9457SAndroid Build Coastguard Worker }
588*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_div_4_unipass_fulltile)589*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_div_4_unipass_fulltile) {
590*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
591*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
592*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
593*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
594*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
595*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
596*4bdc9457SAndroid Build Coastguard Worker }
597*4bdc9457SAndroid Build Coastguard Worker }
598*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_div_4_unipass_fulltile_with_input_offset)599*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_div_4_unipass_fulltile_with_input_offset) {
600*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
601*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
602*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
603*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
604*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
605*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
606*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
607*4bdc9457SAndroid Build Coastguard Worker }
608*4bdc9457SAndroid Build Coastguard Worker }
609*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_div_4_unipass_subtile)610*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_div_4_unipass_subtile) {
611*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
612*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
613*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
614*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
615*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
616*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
617*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
618*4bdc9457SAndroid Build Coastguard Worker }
619*4bdc9457SAndroid Build Coastguard Worker }
620*4bdc9457SAndroid Build Coastguard Worker }
621*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_div_4_unipass_subtile_with_input_offset)622*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_div_4_unipass_subtile_with_input_offset) {
623*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
624*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
625*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
626*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
627*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
628*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
629*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
630*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
631*4bdc9457SAndroid Build Coastguard Worker }
632*4bdc9457SAndroid Build Coastguard Worker }
633*4bdc9457SAndroid Build Coastguard Worker }
634*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_lt_4_unipass_fulltile)635*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_lt_4_unipass_fulltile) {
636*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
637*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
638*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
639*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
640*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
641*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
642*4bdc9457SAndroid Build Coastguard Worker }
643*4bdc9457SAndroid Build Coastguard Worker }
644*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_lt_4_unipass_fulltile_with_input_offset)645*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
646*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
647*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
648*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
649*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
650*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
651*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
652*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
653*4bdc9457SAndroid Build Coastguard Worker }
654*4bdc9457SAndroid Build Coastguard Worker }
655*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_lt_4_unipass_subtile)656*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_lt_4_unipass_subtile) {
657*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
658*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
659*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
660*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
661*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
662*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
663*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
664*4bdc9457SAndroid Build Coastguard Worker }
665*4bdc9457SAndroid Build Coastguard Worker }
666*4bdc9457SAndroid Build Coastguard Worker }
667*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_lt_4_unipass_subtile_with_input_offset)668*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_lt_4_unipass_subtile_with_input_offset) {
669*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
670*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
671*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
672*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
673*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
674*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
675*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
676*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
677*4bdc9457SAndroid Build Coastguard Worker }
678*4bdc9457SAndroid Build Coastguard Worker }
679*4bdc9457SAndroid Build Coastguard Worker }
680*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_gt_4_unipass_fulltile)681*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_gt_4_unipass_fulltile) {
682*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
683*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
684*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
685*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
686*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
687*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
688*4bdc9457SAndroid Build Coastguard Worker }
689*4bdc9457SAndroid Build Coastguard Worker }
690*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_gt_4_unipass_fulltile_with_input_offset)691*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
692*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
693*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
694*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
695*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
696*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
697*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
698*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
699*4bdc9457SAndroid Build Coastguard Worker }
700*4bdc9457SAndroid Build Coastguard Worker }
701*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_gt_4_unipass_subtile)702*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_gt_4_unipass_subtile) {
703*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
704*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
705*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
706*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
707*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
708*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
709*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
710*4bdc9457SAndroid Build Coastguard Worker }
711*4bdc9457SAndroid Build Coastguard Worker }
712*4bdc9457SAndroid Build Coastguard Worker }
713*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,channels_gt_4_unipass_subtile_with_input_offset)714*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, channels_gt_4_unipass_subtile_with_input_offset) {
715*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
716*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
717*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
718*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
719*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
720*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
721*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
722*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
723*4bdc9457SAndroid Build Coastguard Worker }
724*4bdc9457SAndroid Build Coastguard Worker }
725*4bdc9457SAndroid Build Coastguard Worker }
726*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,few_output_pixels)727*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, few_output_pixels) {
728*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
729*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
730*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
731*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
732*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
733*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
734*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
735*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
736*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
737*4bdc9457SAndroid Build Coastguard Worker }
738*4bdc9457SAndroid Build Coastguard Worker }
739*4bdc9457SAndroid Build Coastguard Worker }
740*4bdc9457SAndroid Build Coastguard Worker }
741*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,few_output_pixels_with_input_offset)742*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, few_output_pixels_with_input_offset) {
743*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
744*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
745*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
746*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
747*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
748*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
749*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
750*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
751*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
752*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
753*4bdc9457SAndroid Build Coastguard Worker }
754*4bdc9457SAndroid Build Coastguard Worker }
755*4bdc9457SAndroid Build Coastguard Worker }
756*4bdc9457SAndroid Build Coastguard Worker }
757*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,few_output_pixels_with_output_stride)758*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, few_output_pixels_with_output_stride) {
759*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
760*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
761*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
762*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
763*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
764*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
765*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
766*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
767*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
768*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
769*4bdc9457SAndroid Build Coastguard Worker }
770*4bdc9457SAndroid Build Coastguard Worker }
771*4bdc9457SAndroid Build Coastguard Worker }
772*4bdc9457SAndroid Build Coastguard Worker }
773*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4,few_output_pixels_with_step)774*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__WASMSIMD_C4, few_output_pixels_with_step) {
775*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
776*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
777*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
778*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
779*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
780*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
781*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
782*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
783*4bdc9457SAndroid Build Coastguard Worker .step(step)
784*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
785*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
786*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4);
787*4bdc9457SAndroid Build Coastguard Worker }
788*4bdc9457SAndroid Build Coastguard Worker }
789*4bdc9457SAndroid Build Coastguard Worker }
790*4bdc9457SAndroid Build Coastguard Worker }
791*4bdc9457SAndroid Build Coastguard Worker }
792*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
793*4bdc9457SAndroid Build Coastguard Worker
794*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,channels_eq_1_unipass_fulltile)795*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, channels_eq_1_unipass_fulltile) {
796*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
797*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
798*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
799*4bdc9457SAndroid Build Coastguard Worker .channels(1)
800*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
801*4bdc9457SAndroid Build Coastguard Worker }
802*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,channels_eq_1_unipass_fulltile_with_input_offset)803*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
804*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
805*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
806*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
807*4bdc9457SAndroid Build Coastguard Worker .channels(1)
808*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
809*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
810*4bdc9457SAndroid Build Coastguard Worker }
811*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,channels_eq_1_unipass_subtile)812*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, channels_eq_1_unipass_subtile) {
813*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
814*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
815*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
816*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
817*4bdc9457SAndroid Build Coastguard Worker .channels(1)
818*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
819*4bdc9457SAndroid Build Coastguard Worker }
820*4bdc9457SAndroid Build Coastguard Worker }
821*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,channels_eq_1_unipass_subtile_with_input_offset)822*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, channels_eq_1_unipass_subtile_with_input_offset) {
823*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
824*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
825*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
826*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
827*4bdc9457SAndroid Build Coastguard Worker .channels(1)
828*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
830*4bdc9457SAndroid Build Coastguard Worker }
831*4bdc9457SAndroid Build Coastguard Worker }
832*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,channels_gt_1_unipass_fulltile)833*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, channels_gt_1_unipass_fulltile) {
834*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
835*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
836*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
837*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
838*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
839*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
840*4bdc9457SAndroid Build Coastguard Worker }
841*4bdc9457SAndroid Build Coastguard Worker }
842*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,channels_gt_1_unipass_fulltile_with_input_offset)843*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, channels_gt_1_unipass_fulltile_with_input_offset) {
844*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
845*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
846*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(4)
847*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
848*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
849*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
850*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
851*4bdc9457SAndroid Build Coastguard Worker }
852*4bdc9457SAndroid Build Coastguard Worker }
853*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,channels_gt_1_unipass_subtile)854*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, channels_gt_1_unipass_subtile) {
855*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
856*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
857*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
858*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
859*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
860*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
861*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
862*4bdc9457SAndroid Build Coastguard Worker }
863*4bdc9457SAndroid Build Coastguard Worker }
864*4bdc9457SAndroid Build Coastguard Worker }
865*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,channels_gt_1_unipass_subtile_with_input_offset)866*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, channels_gt_1_unipass_subtile_with_input_offset) {
867*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 4; pooling_elements++) {
868*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
869*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
870*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
871*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
872*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
873*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
874*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
875*4bdc9457SAndroid Build Coastguard Worker }
876*4bdc9457SAndroid Build Coastguard Worker }
877*4bdc9457SAndroid Build Coastguard Worker }
878*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,few_output_pixels)879*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, few_output_pixels) {
880*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
881*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
882*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
883*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
884*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
885*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
886*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
887*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
888*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
889*4bdc9457SAndroid Build Coastguard Worker }
890*4bdc9457SAndroid Build Coastguard Worker }
891*4bdc9457SAndroid Build Coastguard Worker }
892*4bdc9457SAndroid Build Coastguard Worker }
893*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,few_output_pixels_with_input_offset)894*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, few_output_pixels_with_input_offset) {
895*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
896*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
897*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
898*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
899*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
900*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
901*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
902*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
903*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
904*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
905*4bdc9457SAndroid Build Coastguard Worker }
906*4bdc9457SAndroid Build Coastguard Worker }
907*4bdc9457SAndroid Build Coastguard Worker }
908*4bdc9457SAndroid Build Coastguard Worker }
909*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,few_output_pixels_with_output_stride)910*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, few_output_pixels_with_output_stride) {
911*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
912*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
913*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
914*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
915*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
916*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
917*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
918*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
919*4bdc9457SAndroid Build Coastguard Worker .output_stride(7)
920*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
921*4bdc9457SAndroid Build Coastguard Worker }
922*4bdc9457SAndroid Build Coastguard Worker }
923*4bdc9457SAndroid Build Coastguard Worker }
924*4bdc9457SAndroid Build Coastguard Worker }
925*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_4X__SCALAR_C1,few_output_pixels_with_step)926*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_4X__SCALAR_C1, few_output_pixels_with_step) {
927*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
928*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 4; pooling_elements++) {
929*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
930*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
931*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
932*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
933*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
934*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(4)
935*4bdc9457SAndroid Build Coastguard Worker .step(step)
936*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
937*4bdc9457SAndroid Build Coastguard Worker .output_stride(7)
938*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_4x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
939*4bdc9457SAndroid Build Coastguard Worker }
940*4bdc9457SAndroid Build Coastguard Worker }
941*4bdc9457SAndroid Build Coastguard Worker }
942*4bdc9457SAndroid Build Coastguard Worker }
943*4bdc9457SAndroid Build Coastguard Worker }
944*4bdc9457SAndroid Build Coastguard Worker
945*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_eq_4_unipass_fulltile)946*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_eq_4_unipass_fulltile) {
947*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
948*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
949*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
950*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
951*4bdc9457SAndroid Build Coastguard Worker .channels(4)
952*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
953*4bdc9457SAndroid Build Coastguard Worker }
954*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_eq_4_unipass_fulltile_with_input_offset)955*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
956*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
957*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
958*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
959*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
960*4bdc9457SAndroid Build Coastguard Worker .channels(4)
961*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
962*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
963*4bdc9457SAndroid Build Coastguard Worker }
964*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_eq_4_unipass_subtile)965*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_eq_4_unipass_subtile) {
966*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
967*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
968*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
969*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
970*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
971*4bdc9457SAndroid Build Coastguard Worker .channels(4)
972*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
973*4bdc9457SAndroid Build Coastguard Worker }
974*4bdc9457SAndroid Build Coastguard Worker }
975*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_eq_4_unipass_subtile_with_input_offset)976*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_eq_4_unipass_subtile_with_input_offset) {
977*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
978*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
979*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
980*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
981*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
982*4bdc9457SAndroid Build Coastguard Worker .channels(4)
983*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
984*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
985*4bdc9457SAndroid Build Coastguard Worker }
986*4bdc9457SAndroid Build Coastguard Worker }
987*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_div_4_unipass_fulltile)988*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_div_4_unipass_fulltile) {
989*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
990*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
991*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
992*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
993*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
994*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
995*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
996*4bdc9457SAndroid Build Coastguard Worker }
997*4bdc9457SAndroid Build Coastguard Worker }
998*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_div_4_unipass_fulltile_with_input_offset)999*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_div_4_unipass_fulltile_with_input_offset) {
1000*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1001*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1002*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1003*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1004*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1005*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1006*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
1007*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1008*4bdc9457SAndroid Build Coastguard Worker }
1009*4bdc9457SAndroid Build Coastguard Worker }
1010*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_div_4_unipass_subtile)1011*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_div_4_unipass_subtile) {
1012*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1013*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1014*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1015*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1016*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1017*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1018*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1019*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1020*4bdc9457SAndroid Build Coastguard Worker }
1021*4bdc9457SAndroid Build Coastguard Worker }
1022*4bdc9457SAndroid Build Coastguard Worker }
1023*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_div_4_unipass_subtile_with_input_offset)1024*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_div_4_unipass_subtile_with_input_offset) {
1025*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1026*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1027*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1028*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1029*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1030*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1031*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1032*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
1033*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1034*4bdc9457SAndroid Build Coastguard Worker }
1035*4bdc9457SAndroid Build Coastguard Worker }
1036*4bdc9457SAndroid Build Coastguard Worker }
1037*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_lt_4_unipass_fulltile)1038*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_lt_4_unipass_fulltile) {
1039*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1040*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1041*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1042*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1043*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1044*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1045*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1046*4bdc9457SAndroid Build Coastguard Worker }
1047*4bdc9457SAndroid Build Coastguard Worker }
1048*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_lt_4_unipass_fulltile_with_input_offset)1049*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
1050*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1051*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1052*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1053*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1054*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1055*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1056*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
1057*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1058*4bdc9457SAndroid Build Coastguard Worker }
1059*4bdc9457SAndroid Build Coastguard Worker }
1060*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_lt_4_unipass_subtile)1061*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_lt_4_unipass_subtile) {
1062*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1063*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1064*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1065*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1066*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1067*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1068*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1069*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1070*4bdc9457SAndroid Build Coastguard Worker }
1071*4bdc9457SAndroid Build Coastguard Worker }
1072*4bdc9457SAndroid Build Coastguard Worker }
1073*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_lt_4_unipass_subtile_with_input_offset)1074*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_lt_4_unipass_subtile_with_input_offset) {
1075*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1076*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1077*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1078*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1079*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1080*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1081*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1082*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
1083*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1084*4bdc9457SAndroid Build Coastguard Worker }
1085*4bdc9457SAndroid Build Coastguard Worker }
1086*4bdc9457SAndroid Build Coastguard Worker }
1087*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_gt_4_unipass_fulltile)1088*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_gt_4_unipass_fulltile) {
1089*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1090*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1091*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1092*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1093*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1094*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1095*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1096*4bdc9457SAndroid Build Coastguard Worker }
1097*4bdc9457SAndroid Build Coastguard Worker }
1098*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_gt_4_unipass_fulltile_with_input_offset)1099*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
1100*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1101*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1102*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1103*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1104*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1105*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1106*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
1107*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1108*4bdc9457SAndroid Build Coastguard Worker }
1109*4bdc9457SAndroid Build Coastguard Worker }
1110*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_gt_4_unipass_subtile)1111*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_gt_4_unipass_subtile) {
1112*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1113*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1114*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1115*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1116*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1117*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1118*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1119*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1120*4bdc9457SAndroid Build Coastguard Worker }
1121*4bdc9457SAndroid Build Coastguard Worker }
1122*4bdc9457SAndroid Build Coastguard Worker }
1123*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,channels_gt_4_unipass_subtile_with_input_offset)1124*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, channels_gt_4_unipass_subtile_with_input_offset) {
1125*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1126*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1127*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1128*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1129*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1130*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1131*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1132*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
1133*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1134*4bdc9457SAndroid Build Coastguard Worker }
1135*4bdc9457SAndroid Build Coastguard Worker }
1136*4bdc9457SAndroid Build Coastguard Worker }
1137*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,few_output_pixels)1138*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, few_output_pixels) {
1139*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1140*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1141*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1142*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1143*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1144*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1145*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1146*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1147*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1148*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1149*4bdc9457SAndroid Build Coastguard Worker }
1150*4bdc9457SAndroid Build Coastguard Worker }
1151*4bdc9457SAndroid Build Coastguard Worker }
1152*4bdc9457SAndroid Build Coastguard Worker }
1153*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,few_output_pixels_with_input_offset)1154*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, few_output_pixels_with_input_offset) {
1155*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1156*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1157*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1158*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1159*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1160*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1161*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1162*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1163*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1164*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
1165*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1166*4bdc9457SAndroid Build Coastguard Worker }
1167*4bdc9457SAndroid Build Coastguard Worker }
1168*4bdc9457SAndroid Build Coastguard Worker }
1169*4bdc9457SAndroid Build Coastguard Worker }
1170*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,few_output_pixels_with_output_stride)1171*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, few_output_pixels_with_output_stride) {
1172*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1173*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1174*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1175*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1176*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1177*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1178*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1179*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1180*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1181*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1182*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1183*4bdc9457SAndroid Build Coastguard Worker }
1184*4bdc9457SAndroid Build Coastguard Worker }
1185*4bdc9457SAndroid Build Coastguard Worker }
1186*4bdc9457SAndroid Build Coastguard Worker }
1187*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__NEON_C4,few_output_pixels_with_step)1188*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__NEON_C4, few_output_pixels_with_step) {
1189*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1190*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1191*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1192*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1193*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
1194*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1195*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1196*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1197*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1198*4bdc9457SAndroid Build Coastguard Worker .step(step)
1199*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1200*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1201*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__neon_c4);
1202*4bdc9457SAndroid Build Coastguard Worker }
1203*4bdc9457SAndroid Build Coastguard Worker }
1204*4bdc9457SAndroid Build Coastguard Worker }
1205*4bdc9457SAndroid Build Coastguard Worker }
1206*4bdc9457SAndroid Build Coastguard Worker }
1207*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1208*4bdc9457SAndroid Build Coastguard Worker
1209*4bdc9457SAndroid Build Coastguard Worker
1210*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_eq_4_unipass_fulltile)1211*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_eq_4_unipass_fulltile) {
1212*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1213*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1214*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1215*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1216*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1217*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1218*4bdc9457SAndroid Build Coastguard Worker }
1219*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_eq_4_unipass_fulltile_with_input_offset)1220*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
1221*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1222*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1223*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1224*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1225*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1226*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
1227*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1228*4bdc9457SAndroid Build Coastguard Worker }
1229*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_eq_4_unipass_subtile)1230*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_eq_4_unipass_subtile) {
1231*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1232*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1233*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1234*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1235*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1236*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1237*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1238*4bdc9457SAndroid Build Coastguard Worker }
1239*4bdc9457SAndroid Build Coastguard Worker }
1240*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_eq_4_unipass_subtile_with_input_offset)1241*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_eq_4_unipass_subtile_with_input_offset) {
1242*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1243*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1244*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1245*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1246*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1247*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1248*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
1249*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1250*4bdc9457SAndroid Build Coastguard Worker }
1251*4bdc9457SAndroid Build Coastguard Worker }
1252*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_div_4_unipass_fulltile)1253*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_div_4_unipass_fulltile) {
1254*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1255*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1256*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1257*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1258*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1259*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1260*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1261*4bdc9457SAndroid Build Coastguard Worker }
1262*4bdc9457SAndroid Build Coastguard Worker }
1263*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_div_4_unipass_fulltile_with_input_offset)1264*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_div_4_unipass_fulltile_with_input_offset) {
1265*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1266*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1267*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1268*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1269*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1270*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1271*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
1272*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1273*4bdc9457SAndroid Build Coastguard Worker }
1274*4bdc9457SAndroid Build Coastguard Worker }
1275*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_div_4_unipass_subtile)1276*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_div_4_unipass_subtile) {
1277*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1278*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1279*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1280*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1281*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1282*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1283*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1285*4bdc9457SAndroid Build Coastguard Worker }
1286*4bdc9457SAndroid Build Coastguard Worker }
1287*4bdc9457SAndroid Build Coastguard Worker }
1288*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_div_4_unipass_subtile_with_input_offset)1289*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_div_4_unipass_subtile_with_input_offset) {
1290*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1291*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1292*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1293*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1294*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1295*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1296*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1297*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
1298*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1299*4bdc9457SAndroid Build Coastguard Worker }
1300*4bdc9457SAndroid Build Coastguard Worker }
1301*4bdc9457SAndroid Build Coastguard Worker }
1302*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_lt_4_unipass_fulltile)1303*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_lt_4_unipass_fulltile) {
1304*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1305*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1306*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1307*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1308*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1309*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1310*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1311*4bdc9457SAndroid Build Coastguard Worker }
1312*4bdc9457SAndroid Build Coastguard Worker }
1313*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_lt_4_unipass_fulltile_with_input_offset)1314*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
1315*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1316*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1317*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1318*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1319*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1320*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1321*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
1322*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1323*4bdc9457SAndroid Build Coastguard Worker }
1324*4bdc9457SAndroid Build Coastguard Worker }
1325*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_lt_4_unipass_subtile)1326*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_lt_4_unipass_subtile) {
1327*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1328*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1329*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1330*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1331*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1332*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1333*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1334*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1335*4bdc9457SAndroid Build Coastguard Worker }
1336*4bdc9457SAndroid Build Coastguard Worker }
1337*4bdc9457SAndroid Build Coastguard Worker }
1338*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_lt_4_unipass_subtile_with_input_offset)1339*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_lt_4_unipass_subtile_with_input_offset) {
1340*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1341*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1342*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1343*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1344*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1345*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1346*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1347*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
1348*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1349*4bdc9457SAndroid Build Coastguard Worker }
1350*4bdc9457SAndroid Build Coastguard Worker }
1351*4bdc9457SAndroid Build Coastguard Worker }
1352*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_gt_4_unipass_fulltile)1353*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_gt_4_unipass_fulltile) {
1354*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1355*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1356*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1357*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1358*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1359*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1360*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1361*4bdc9457SAndroid Build Coastguard Worker }
1362*4bdc9457SAndroid Build Coastguard Worker }
1363*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_gt_4_unipass_fulltile_with_input_offset)1364*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
1365*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1366*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1367*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1368*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1369*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1370*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1371*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
1372*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1373*4bdc9457SAndroid Build Coastguard Worker }
1374*4bdc9457SAndroid Build Coastguard Worker }
1375*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_gt_4_unipass_subtile)1376*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_gt_4_unipass_subtile) {
1377*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1378*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1379*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1380*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1381*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1382*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1383*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1384*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1385*4bdc9457SAndroid Build Coastguard Worker }
1386*4bdc9457SAndroid Build Coastguard Worker }
1387*4bdc9457SAndroid Build Coastguard Worker }
1388*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,channels_gt_4_unipass_subtile_with_input_offset)1389*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, channels_gt_4_unipass_subtile_with_input_offset) {
1390*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1391*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1392*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1393*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1394*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1395*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1396*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1397*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
1398*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1399*4bdc9457SAndroid Build Coastguard Worker }
1400*4bdc9457SAndroid Build Coastguard Worker }
1401*4bdc9457SAndroid Build Coastguard Worker }
1402*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,few_output_pixels)1403*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, few_output_pixels) {
1404*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1405*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1406*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1407*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1408*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1409*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1410*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1411*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1412*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1413*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1414*4bdc9457SAndroid Build Coastguard Worker }
1415*4bdc9457SAndroid Build Coastguard Worker }
1416*4bdc9457SAndroid Build Coastguard Worker }
1417*4bdc9457SAndroid Build Coastguard Worker }
1418*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,few_output_pixels_with_input_offset)1419*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, few_output_pixels_with_input_offset) {
1420*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1421*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1422*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1423*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1424*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1425*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1426*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1427*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1428*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1429*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
1430*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1431*4bdc9457SAndroid Build Coastguard Worker }
1432*4bdc9457SAndroid Build Coastguard Worker }
1433*4bdc9457SAndroid Build Coastguard Worker }
1434*4bdc9457SAndroid Build Coastguard Worker }
1435*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,few_output_pixels_with_output_stride)1436*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, few_output_pixels_with_output_stride) {
1437*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1438*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1439*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1440*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1441*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1442*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1443*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1444*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1445*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1446*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1447*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1448*4bdc9457SAndroid Build Coastguard Worker }
1449*4bdc9457SAndroid Build Coastguard Worker }
1450*4bdc9457SAndroid Build Coastguard Worker }
1451*4bdc9457SAndroid Build Coastguard Worker }
1452*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SSE2_C4,few_output_pixels_with_step)1453*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SSE2_C4, few_output_pixels_with_step) {
1454*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
1455*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1456*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1457*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1458*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
1459*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1460*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1461*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1462*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1463*4bdc9457SAndroid Build Coastguard Worker .step(step)
1464*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1465*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1466*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__sse2_c4);
1467*4bdc9457SAndroid Build Coastguard Worker }
1468*4bdc9457SAndroid Build Coastguard Worker }
1469*4bdc9457SAndroid Build Coastguard Worker }
1470*4bdc9457SAndroid Build Coastguard Worker }
1471*4bdc9457SAndroid Build Coastguard Worker }
1472*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1473*4bdc9457SAndroid Build Coastguard Worker
1474*4bdc9457SAndroid Build Coastguard Worker
1475*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_eq_4_unipass_fulltile)1476*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_eq_4_unipass_fulltile) {
1477*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1478*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1479*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1480*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1481*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1482*4bdc9457SAndroid Build Coastguard Worker }
1483*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_eq_4_unipass_fulltile_with_input_offset)1484*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
1485*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1486*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1487*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1488*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1489*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
1490*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1491*4bdc9457SAndroid Build Coastguard Worker }
1492*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_eq_4_unipass_subtile)1493*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_eq_4_unipass_subtile) {
1494*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1495*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1496*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1497*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1498*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1499*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1500*4bdc9457SAndroid Build Coastguard Worker }
1501*4bdc9457SAndroid Build Coastguard Worker }
1502*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_eq_4_unipass_subtile_with_input_offset)1503*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_eq_4_unipass_subtile_with_input_offset) {
1504*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1505*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1506*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1507*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1508*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1509*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
1510*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1511*4bdc9457SAndroid Build Coastguard Worker }
1512*4bdc9457SAndroid Build Coastguard Worker }
1513*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_div_4_unipass_fulltile)1514*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_div_4_unipass_fulltile) {
1515*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1516*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1517*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1518*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1519*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1520*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1521*4bdc9457SAndroid Build Coastguard Worker }
1522*4bdc9457SAndroid Build Coastguard Worker }
1523*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_div_4_unipass_fulltile_with_input_offset)1524*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_div_4_unipass_fulltile_with_input_offset) {
1525*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1526*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1527*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1528*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1529*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1530*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
1531*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1532*4bdc9457SAndroid Build Coastguard Worker }
1533*4bdc9457SAndroid Build Coastguard Worker }
1534*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_div_4_unipass_subtile)1535*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_div_4_unipass_subtile) {
1536*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1537*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1538*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1539*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1540*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1541*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1542*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1543*4bdc9457SAndroid Build Coastguard Worker }
1544*4bdc9457SAndroid Build Coastguard Worker }
1545*4bdc9457SAndroid Build Coastguard Worker }
1546*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_div_4_unipass_subtile_with_input_offset)1547*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_div_4_unipass_subtile_with_input_offset) {
1548*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1549*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1550*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1551*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1552*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1553*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1554*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
1555*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1556*4bdc9457SAndroid Build Coastguard Worker }
1557*4bdc9457SAndroid Build Coastguard Worker }
1558*4bdc9457SAndroid Build Coastguard Worker }
1559*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_lt_4_unipass_fulltile)1560*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_lt_4_unipass_fulltile) {
1561*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1562*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1563*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1564*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1565*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1566*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1567*4bdc9457SAndroid Build Coastguard Worker }
1568*4bdc9457SAndroid Build Coastguard Worker }
1569*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_lt_4_unipass_fulltile_with_input_offset)1570*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_lt_4_unipass_fulltile_with_input_offset) {
1571*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1572*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1573*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1574*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1575*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1576*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
1577*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1578*4bdc9457SAndroid Build Coastguard Worker }
1579*4bdc9457SAndroid Build Coastguard Worker }
1580*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_lt_4_unipass_subtile)1581*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_lt_4_unipass_subtile) {
1582*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1583*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1584*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1585*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1586*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1587*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1588*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1589*4bdc9457SAndroid Build Coastguard Worker }
1590*4bdc9457SAndroid Build Coastguard Worker }
1591*4bdc9457SAndroid Build Coastguard Worker }
1592*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_lt_4_unipass_subtile_with_input_offset)1593*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_lt_4_unipass_subtile_with_input_offset) {
1594*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1595*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1596*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1597*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1598*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1599*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1600*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
1601*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1602*4bdc9457SAndroid Build Coastguard Worker }
1603*4bdc9457SAndroid Build Coastguard Worker }
1604*4bdc9457SAndroid Build Coastguard Worker }
1605*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_gt_4_unipass_fulltile)1606*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_gt_4_unipass_fulltile) {
1607*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1608*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1609*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1610*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1611*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1612*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1613*4bdc9457SAndroid Build Coastguard Worker }
1614*4bdc9457SAndroid Build Coastguard Worker }
1615*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_gt_4_unipass_fulltile_with_input_offset)1616*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_gt_4_unipass_fulltile_with_input_offset) {
1617*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1618*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1619*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1620*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1621*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1622*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
1623*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1624*4bdc9457SAndroid Build Coastguard Worker }
1625*4bdc9457SAndroid Build Coastguard Worker }
1626*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_gt_4_unipass_subtile)1627*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_gt_4_unipass_subtile) {
1628*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1629*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1630*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1631*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1632*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1633*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1634*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1635*4bdc9457SAndroid Build Coastguard Worker }
1636*4bdc9457SAndroid Build Coastguard Worker }
1637*4bdc9457SAndroid Build Coastguard Worker }
1638*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,channels_gt_4_unipass_subtile_with_input_offset)1639*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, channels_gt_4_unipass_subtile_with_input_offset) {
1640*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1641*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1642*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1643*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1644*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1645*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1646*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
1647*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1648*4bdc9457SAndroid Build Coastguard Worker }
1649*4bdc9457SAndroid Build Coastguard Worker }
1650*4bdc9457SAndroid Build Coastguard Worker }
1651*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,few_output_pixels)1652*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, few_output_pixels) {
1653*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1654*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1655*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1656*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1657*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1658*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1659*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1660*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1661*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1662*4bdc9457SAndroid Build Coastguard Worker }
1663*4bdc9457SAndroid Build Coastguard Worker }
1664*4bdc9457SAndroid Build Coastguard Worker }
1665*4bdc9457SAndroid Build Coastguard Worker }
1666*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,few_output_pixels_with_input_offset)1667*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, few_output_pixels_with_input_offset) {
1668*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1669*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1670*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1671*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1672*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1673*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1674*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1675*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1676*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
1677*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1678*4bdc9457SAndroid Build Coastguard Worker }
1679*4bdc9457SAndroid Build Coastguard Worker }
1680*4bdc9457SAndroid Build Coastguard Worker }
1681*4bdc9457SAndroid Build Coastguard Worker }
1682*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,few_output_pixels_with_output_stride)1683*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, few_output_pixels_with_output_stride) {
1684*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1685*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1686*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1687*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1688*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1689*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1690*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1691*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1692*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1693*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1694*4bdc9457SAndroid Build Coastguard Worker }
1695*4bdc9457SAndroid Build Coastguard Worker }
1696*4bdc9457SAndroid Build Coastguard Worker }
1697*4bdc9457SAndroid Build Coastguard Worker }
1698*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4,few_output_pixels_with_step)1699*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__WASMSIMD_C4, few_output_pixels_with_step) {
1700*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1701*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1702*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1703*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
1704*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1705*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1706*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1707*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1708*4bdc9457SAndroid Build Coastguard Worker .step(step)
1709*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1710*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1711*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4);
1712*4bdc9457SAndroid Build Coastguard Worker }
1713*4bdc9457SAndroid Build Coastguard Worker }
1714*4bdc9457SAndroid Build Coastguard Worker }
1715*4bdc9457SAndroid Build Coastguard Worker }
1716*4bdc9457SAndroid Build Coastguard Worker }
1717*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1718*4bdc9457SAndroid Build Coastguard Worker
1719*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,channels_eq_1_unipass_fulltile)1720*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, channels_eq_1_unipass_fulltile) {
1721*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1722*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1723*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1724*4bdc9457SAndroid Build Coastguard Worker .channels(1)
1725*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1726*4bdc9457SAndroid Build Coastguard Worker }
1727*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,channels_eq_1_unipass_fulltile_with_input_offset)1728*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
1729*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1730*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1731*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1732*4bdc9457SAndroid Build Coastguard Worker .channels(1)
1733*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
1734*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1735*4bdc9457SAndroid Build Coastguard Worker }
1736*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,channels_eq_1_unipass_subtile)1737*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, channels_eq_1_unipass_subtile) {
1738*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1739*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1740*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1741*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1742*4bdc9457SAndroid Build Coastguard Worker .channels(1)
1743*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1744*4bdc9457SAndroid Build Coastguard Worker }
1745*4bdc9457SAndroid Build Coastguard Worker }
1746*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,channels_eq_1_unipass_subtile_with_input_offset)1747*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, channels_eq_1_unipass_subtile_with_input_offset) {
1748*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1749*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1750*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1751*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1752*4bdc9457SAndroid Build Coastguard Worker .channels(1)
1753*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
1754*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1755*4bdc9457SAndroid Build Coastguard Worker }
1756*4bdc9457SAndroid Build Coastguard Worker }
1757*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,channels_gt_1_unipass_fulltile)1758*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, channels_gt_1_unipass_fulltile) {
1759*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
1760*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1761*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1762*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1763*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1764*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1765*4bdc9457SAndroid Build Coastguard Worker }
1766*4bdc9457SAndroid Build Coastguard Worker }
1767*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,channels_gt_1_unipass_fulltile_with_input_offset)1768*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, channels_gt_1_unipass_fulltile_with_input_offset) {
1769*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
1770*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1771*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(9)
1772*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1773*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1774*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
1775*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1776*4bdc9457SAndroid Build Coastguard Worker }
1777*4bdc9457SAndroid Build Coastguard Worker }
1778*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,channels_gt_1_unipass_subtile)1779*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, channels_gt_1_unipass_subtile) {
1780*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1781*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
1782*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1783*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1784*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1785*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1786*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1787*4bdc9457SAndroid Build Coastguard Worker }
1788*4bdc9457SAndroid Build Coastguard Worker }
1789*4bdc9457SAndroid Build Coastguard Worker }
1790*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,channels_gt_1_unipass_subtile_with_input_offset)1791*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, channels_gt_1_unipass_subtile_with_input_offset) {
1792*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < 9; pooling_elements++) {
1793*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
1794*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1795*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1796*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1797*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1798*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
1799*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1800*4bdc9457SAndroid Build Coastguard Worker }
1801*4bdc9457SAndroid Build Coastguard Worker }
1802*4bdc9457SAndroid Build Coastguard Worker }
1803*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,few_output_pixels)1804*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, few_output_pixels) {
1805*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1806*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1807*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
1808*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1809*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1810*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1811*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1812*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1813*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1814*4bdc9457SAndroid Build Coastguard Worker }
1815*4bdc9457SAndroid Build Coastguard Worker }
1816*4bdc9457SAndroid Build Coastguard Worker }
1817*4bdc9457SAndroid Build Coastguard Worker }
1818*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,few_output_pixels_with_input_offset)1819*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, few_output_pixels_with_input_offset) {
1820*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1821*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1822*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
1823*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1824*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1825*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1826*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1827*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1828*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
1829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1830*4bdc9457SAndroid Build Coastguard Worker }
1831*4bdc9457SAndroid Build Coastguard Worker }
1832*4bdc9457SAndroid Build Coastguard Worker }
1833*4bdc9457SAndroid Build Coastguard Worker }
1834*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,few_output_pixels_with_output_stride)1835*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, few_output_pixels_with_output_stride) {
1836*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1837*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1838*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
1839*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1840*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1841*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1842*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1843*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1844*4bdc9457SAndroid Build Coastguard Worker .output_stride(7)
1845*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1846*4bdc9457SAndroid Build Coastguard Worker }
1847*4bdc9457SAndroid Build Coastguard Worker }
1848*4bdc9457SAndroid Build Coastguard Worker }
1849*4bdc9457SAndroid Build Coastguard Worker }
1850*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9X__SCALAR_C1,few_output_pixels_with_step)1851*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9X__SCALAR_C1, few_output_pixels_with_step) {
1852*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
1853*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements <= 9; pooling_elements++) {
1854*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
1855*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
1856*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1857*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
1858*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1859*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9)
1860*4bdc9457SAndroid Build Coastguard Worker .step(step)
1861*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1862*4bdc9457SAndroid Build Coastguard Worker .output_stride(7)
1863*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
1864*4bdc9457SAndroid Build Coastguard Worker }
1865*4bdc9457SAndroid Build Coastguard Worker }
1866*4bdc9457SAndroid Build Coastguard Worker }
1867*4bdc9457SAndroid Build Coastguard Worker }
1868*4bdc9457SAndroid Build Coastguard Worker }
1869*4bdc9457SAndroid Build Coastguard Worker
1870*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
1871*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_eq_4_twopass_fulltile)1872*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_eq_4_twopass_fulltile) {
1873*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1874*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1875*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1876*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1877*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1878*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1879*4bdc9457SAndroid Build Coastguard Worker }
1880*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_eq_4_twopass_fulltile_with_input_offset)1881*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
1882*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1883*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1884*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1885*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1886*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1887*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
1888*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1889*4bdc9457SAndroid Build Coastguard Worker }
1890*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_eq_4_twopass_subtile)1891*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_eq_4_twopass_subtile) {
1892*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1893*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1894*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1895*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1896*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1897*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1898*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1899*4bdc9457SAndroid Build Coastguard Worker }
1900*4bdc9457SAndroid Build Coastguard Worker }
1901*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_eq_4_twopass_subtile_with_input_offset)1902*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_eq_4_twopass_subtile_with_input_offset) {
1903*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1904*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1905*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1906*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
1907*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1908*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1909*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
1910*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1911*4bdc9457SAndroid Build Coastguard Worker }
1912*4bdc9457SAndroid Build Coastguard Worker }
1913*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_div_4_twopass_fulltile)1914*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_div_4_twopass_fulltile) {
1915*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1916*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1917*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1918*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1919*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1920*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1921*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1922*4bdc9457SAndroid Build Coastguard Worker }
1923*4bdc9457SAndroid Build Coastguard Worker }
1924*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_div_4_twopass_fulltile_with_input_offset)1925*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_div_4_twopass_fulltile_with_input_offset) {
1926*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1927*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1928*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1929*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1930*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1931*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1932*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
1933*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1934*4bdc9457SAndroid Build Coastguard Worker }
1935*4bdc9457SAndroid Build Coastguard Worker }
1936*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_div_4_twopass_subtile)1937*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_div_4_twopass_subtile) {
1938*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1939*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1940*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1941*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1942*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1943*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1944*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1945*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1946*4bdc9457SAndroid Build Coastguard Worker }
1947*4bdc9457SAndroid Build Coastguard Worker }
1948*4bdc9457SAndroid Build Coastguard Worker }
1949*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_div_4_twopass_subtile_with_input_offset)1950*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_div_4_twopass_subtile_with_input_offset) {
1951*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1952*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1953*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
1954*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1955*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1956*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1957*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1958*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
1959*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1960*4bdc9457SAndroid Build Coastguard Worker }
1961*4bdc9457SAndroid Build Coastguard Worker }
1962*4bdc9457SAndroid Build Coastguard Worker }
1963*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_lt_4_twopass_fulltile)1964*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_lt_4_twopass_fulltile) {
1965*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1966*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1967*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1968*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1969*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1970*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1971*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1972*4bdc9457SAndroid Build Coastguard Worker }
1973*4bdc9457SAndroid Build Coastguard Worker }
1974*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_lt_4_twopass_fulltile_with_input_offset)1975*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_lt_4_twopass_fulltile_with_input_offset) {
1976*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1977*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1978*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1979*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1980*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1981*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1982*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
1983*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1984*4bdc9457SAndroid Build Coastguard Worker }
1985*4bdc9457SAndroid Build Coastguard Worker }
1986*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_lt_4_twopass_subtile)1987*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_lt_4_twopass_subtile) {
1988*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
1989*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
1990*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1991*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
1992*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
1993*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
1994*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1995*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
1996*4bdc9457SAndroid Build Coastguard Worker }
1997*4bdc9457SAndroid Build Coastguard Worker }
1998*4bdc9457SAndroid Build Coastguard Worker }
1999*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_lt_4_twopass_subtile_with_input_offset)2000*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_lt_4_twopass_subtile_with_input_offset) {
2001*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2002*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2003*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2004*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2005*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2006*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2007*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2008*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
2009*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2010*4bdc9457SAndroid Build Coastguard Worker }
2011*4bdc9457SAndroid Build Coastguard Worker }
2012*4bdc9457SAndroid Build Coastguard Worker }
2013*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_gt_4_twopass_fulltile)2014*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_gt_4_twopass_fulltile) {
2015*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2016*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2017*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2018*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2019*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2020*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2021*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2022*4bdc9457SAndroid Build Coastguard Worker }
2023*4bdc9457SAndroid Build Coastguard Worker }
2024*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_gt_4_twopass_fulltile_with_input_offset)2025*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_gt_4_twopass_fulltile_with_input_offset) {
2026*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2027*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2028*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2029*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2030*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2031*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2032*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2033*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2034*4bdc9457SAndroid Build Coastguard Worker }
2035*4bdc9457SAndroid Build Coastguard Worker }
2036*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_gt_4_twopass_subtile)2037*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_gt_4_twopass_subtile) {
2038*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2039*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2040*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2041*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2042*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2043*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2044*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2045*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2046*4bdc9457SAndroid Build Coastguard Worker }
2047*4bdc9457SAndroid Build Coastguard Worker }
2048*4bdc9457SAndroid Build Coastguard Worker }
2049*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_gt_4_twopass_subtile_with_input_offset)2050*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_gt_4_twopass_subtile_with_input_offset) {
2051*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2052*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2053*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2054*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2055*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2056*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2057*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2058*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2059*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2060*4bdc9457SAndroid Build Coastguard Worker }
2061*4bdc9457SAndroid Build Coastguard Worker }
2062*4bdc9457SAndroid Build Coastguard Worker }
2063*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_eq_4_multipass)2064*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_eq_4_multipass) {
2065*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2066*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2067*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2068*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2069*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2070*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2071*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2072*4bdc9457SAndroid Build Coastguard Worker }
2073*4bdc9457SAndroid Build Coastguard Worker }
2074*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_eq_4_multipass_with_input_offset)2075*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_eq_4_multipass_with_input_offset) {
2076*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2077*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2078*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2079*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2080*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2081*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2082*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
2083*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2084*4bdc9457SAndroid Build Coastguard Worker }
2085*4bdc9457SAndroid Build Coastguard Worker }
2086*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_div_4_multipass)2087*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_div_4_multipass) {
2088*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2089*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2090*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2091*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2092*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2093*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2094*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2095*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2096*4bdc9457SAndroid Build Coastguard Worker }
2097*4bdc9457SAndroid Build Coastguard Worker }
2098*4bdc9457SAndroid Build Coastguard Worker }
2099*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_div_4_multipass_with_input_offset)2100*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_div_4_multipass_with_input_offset) {
2101*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2102*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2103*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2104*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2105*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2106*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2107*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2108*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
2109*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2110*4bdc9457SAndroid Build Coastguard Worker }
2111*4bdc9457SAndroid Build Coastguard Worker }
2112*4bdc9457SAndroid Build Coastguard Worker }
2113*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_lt_4_multipass)2114*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_lt_4_multipass) {
2115*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2116*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2117*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2118*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2119*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2120*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2121*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2123*4bdc9457SAndroid Build Coastguard Worker }
2124*4bdc9457SAndroid Build Coastguard Worker }
2125*4bdc9457SAndroid Build Coastguard Worker }
2126*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_lt_4_multipass_with_input_offset)2127*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_lt_4_multipass_with_input_offset) {
2128*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2129*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2130*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2131*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2132*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2133*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2134*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2135*4bdc9457SAndroid Build Coastguard Worker .input_offset(4)
2136*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2137*4bdc9457SAndroid Build Coastguard Worker }
2138*4bdc9457SAndroid Build Coastguard Worker }
2139*4bdc9457SAndroid Build Coastguard Worker }
2140*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_gt_4_multipass)2141*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_gt_4_multipass) {
2142*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2143*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2144*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2145*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2146*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2147*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2148*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2149*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2150*4bdc9457SAndroid Build Coastguard Worker }
2151*4bdc9457SAndroid Build Coastguard Worker }
2152*4bdc9457SAndroid Build Coastguard Worker }
2153*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,channels_gt_4_multipass_with_input_offset)2154*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, channels_gt_4_multipass_with_input_offset) {
2155*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2156*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2157*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2158*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2159*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2160*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2161*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2162*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2163*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2164*4bdc9457SAndroid Build Coastguard Worker }
2165*4bdc9457SAndroid Build Coastguard Worker }
2166*4bdc9457SAndroid Build Coastguard Worker }
2167*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,few_output_pixels)2168*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, few_output_pixels) {
2169*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2170*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2171*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2172*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2173*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2174*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2175*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2176*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2177*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2178*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2179*4bdc9457SAndroid Build Coastguard Worker }
2180*4bdc9457SAndroid Build Coastguard Worker }
2181*4bdc9457SAndroid Build Coastguard Worker }
2182*4bdc9457SAndroid Build Coastguard Worker }
2183*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,few_output_pixels_with_input_offset)2184*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, few_output_pixels_with_input_offset) {
2185*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2186*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2187*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2188*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2189*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2190*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2191*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2192*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2193*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2194*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
2195*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2196*4bdc9457SAndroid Build Coastguard Worker }
2197*4bdc9457SAndroid Build Coastguard Worker }
2198*4bdc9457SAndroid Build Coastguard Worker }
2199*4bdc9457SAndroid Build Coastguard Worker }
2200*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,few_output_pixels_with_output_stride)2201*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, few_output_pixels_with_output_stride) {
2202*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2203*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2204*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2205*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2206*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2207*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2208*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2209*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2210*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2211*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
2212*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2213*4bdc9457SAndroid Build Coastguard Worker }
2214*4bdc9457SAndroid Build Coastguard Worker }
2215*4bdc9457SAndroid Build Coastguard Worker }
2216*4bdc9457SAndroid Build Coastguard Worker }
2217*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__NEON_C4,few_output_pixels_with_step)2218*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__NEON_C4, few_output_pixels_with_step) {
2219*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
2220*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2221*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2222*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2223*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
2224*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2225*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2226*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2227*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2228*4bdc9457SAndroid Build Coastguard Worker .step(step)
2229*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2230*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
2231*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4);
2232*4bdc9457SAndroid Build Coastguard Worker }
2233*4bdc9457SAndroid Build Coastguard Worker }
2234*4bdc9457SAndroid Build Coastguard Worker }
2235*4bdc9457SAndroid Build Coastguard Worker }
2236*4bdc9457SAndroid Build Coastguard Worker }
2237*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2238*4bdc9457SAndroid Build Coastguard Worker
2239*4bdc9457SAndroid Build Coastguard Worker
2240*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
2241*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_eq_4_twopass_fulltile)2242*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_eq_4_twopass_fulltile) {
2243*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2244*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2245*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2246*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2247*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2249*4bdc9457SAndroid Build Coastguard Worker }
2250*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_eq_4_twopass_fulltile_with_input_offset)2251*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
2252*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2253*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2254*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2255*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2256*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2257*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
2258*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2259*4bdc9457SAndroid Build Coastguard Worker }
2260*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_eq_4_twopass_subtile)2261*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_eq_4_twopass_subtile) {
2262*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2263*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2264*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2265*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2266*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2267*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2268*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2269*4bdc9457SAndroid Build Coastguard Worker }
2270*4bdc9457SAndroid Build Coastguard Worker }
2271*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_eq_4_twopass_subtile_with_input_offset)2272*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_eq_4_twopass_subtile_with_input_offset) {
2273*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2274*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2275*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2276*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2277*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2278*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2279*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
2280*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2281*4bdc9457SAndroid Build Coastguard Worker }
2282*4bdc9457SAndroid Build Coastguard Worker }
2283*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_div_4_twopass_fulltile)2284*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_div_4_twopass_fulltile) {
2285*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2286*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2287*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2288*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2289*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2290*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2291*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2292*4bdc9457SAndroid Build Coastguard Worker }
2293*4bdc9457SAndroid Build Coastguard Worker }
2294*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_div_4_twopass_fulltile_with_input_offset)2295*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_div_4_twopass_fulltile_with_input_offset) {
2296*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2297*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2298*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2299*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2300*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2301*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2302*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
2303*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2304*4bdc9457SAndroid Build Coastguard Worker }
2305*4bdc9457SAndroid Build Coastguard Worker }
2306*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_div_4_twopass_subtile)2307*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_div_4_twopass_subtile) {
2308*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2309*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2310*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2311*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2312*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2313*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2314*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2315*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2316*4bdc9457SAndroid Build Coastguard Worker }
2317*4bdc9457SAndroid Build Coastguard Worker }
2318*4bdc9457SAndroid Build Coastguard Worker }
2319*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_div_4_twopass_subtile_with_input_offset)2320*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_div_4_twopass_subtile_with_input_offset) {
2321*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2322*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2323*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2324*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2325*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2326*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2327*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2328*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
2329*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2330*4bdc9457SAndroid Build Coastguard Worker }
2331*4bdc9457SAndroid Build Coastguard Worker }
2332*4bdc9457SAndroid Build Coastguard Worker }
2333*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_lt_4_twopass_fulltile)2334*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_lt_4_twopass_fulltile) {
2335*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2336*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2337*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2338*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2339*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2340*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2341*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2342*4bdc9457SAndroid Build Coastguard Worker }
2343*4bdc9457SAndroid Build Coastguard Worker }
2344*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_lt_4_twopass_fulltile_with_input_offset)2345*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_lt_4_twopass_fulltile_with_input_offset) {
2346*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2347*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2348*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2349*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2350*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2351*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2352*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
2353*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2354*4bdc9457SAndroid Build Coastguard Worker }
2355*4bdc9457SAndroid Build Coastguard Worker }
2356*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_lt_4_twopass_subtile)2357*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_lt_4_twopass_subtile) {
2358*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2359*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2360*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2361*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2362*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2363*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2364*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2365*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2366*4bdc9457SAndroid Build Coastguard Worker }
2367*4bdc9457SAndroid Build Coastguard Worker }
2368*4bdc9457SAndroid Build Coastguard Worker }
2369*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_lt_4_twopass_subtile_with_input_offset)2370*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_lt_4_twopass_subtile_with_input_offset) {
2371*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2372*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2373*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2374*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2375*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2376*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2377*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2378*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
2379*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2380*4bdc9457SAndroid Build Coastguard Worker }
2381*4bdc9457SAndroid Build Coastguard Worker }
2382*4bdc9457SAndroid Build Coastguard Worker }
2383*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_gt_4_twopass_fulltile)2384*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_gt_4_twopass_fulltile) {
2385*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2386*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2387*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2388*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2389*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2390*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2391*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2392*4bdc9457SAndroid Build Coastguard Worker }
2393*4bdc9457SAndroid Build Coastguard Worker }
2394*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_gt_4_twopass_fulltile_with_input_offset)2395*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_gt_4_twopass_fulltile_with_input_offset) {
2396*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2397*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2398*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2399*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2400*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2401*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2402*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2403*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2404*4bdc9457SAndroid Build Coastguard Worker }
2405*4bdc9457SAndroid Build Coastguard Worker }
2406*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_gt_4_twopass_subtile)2407*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_gt_4_twopass_subtile) {
2408*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2409*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2410*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2411*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2412*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2413*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2414*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2415*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2416*4bdc9457SAndroid Build Coastguard Worker }
2417*4bdc9457SAndroid Build Coastguard Worker }
2418*4bdc9457SAndroid Build Coastguard Worker }
2419*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_gt_4_twopass_subtile_with_input_offset)2420*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_gt_4_twopass_subtile_with_input_offset) {
2421*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2422*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2423*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2424*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2425*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2426*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2427*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2428*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2429*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2430*4bdc9457SAndroid Build Coastguard Worker }
2431*4bdc9457SAndroid Build Coastguard Worker }
2432*4bdc9457SAndroid Build Coastguard Worker }
2433*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_eq_4_multipass)2434*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_eq_4_multipass) {
2435*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2436*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2437*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2438*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2439*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2440*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2441*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2442*4bdc9457SAndroid Build Coastguard Worker }
2443*4bdc9457SAndroid Build Coastguard Worker }
2444*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_eq_4_multipass_with_input_offset)2445*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_eq_4_multipass_with_input_offset) {
2446*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2447*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2448*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2449*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2450*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2451*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2452*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
2453*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2454*4bdc9457SAndroid Build Coastguard Worker }
2455*4bdc9457SAndroid Build Coastguard Worker }
2456*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_div_4_multipass)2457*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_div_4_multipass) {
2458*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2459*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2460*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2461*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2462*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2463*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2464*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2465*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2466*4bdc9457SAndroid Build Coastguard Worker }
2467*4bdc9457SAndroid Build Coastguard Worker }
2468*4bdc9457SAndroid Build Coastguard Worker }
2469*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_div_4_multipass_with_input_offset)2470*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_div_4_multipass_with_input_offset) {
2471*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2472*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2473*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2474*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2475*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2476*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2477*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2478*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
2479*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2480*4bdc9457SAndroid Build Coastguard Worker }
2481*4bdc9457SAndroid Build Coastguard Worker }
2482*4bdc9457SAndroid Build Coastguard Worker }
2483*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_lt_4_multipass)2484*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_lt_4_multipass) {
2485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2486*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2487*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2488*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2489*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2490*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2491*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2493*4bdc9457SAndroid Build Coastguard Worker }
2494*4bdc9457SAndroid Build Coastguard Worker }
2495*4bdc9457SAndroid Build Coastguard Worker }
2496*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_lt_4_multipass_with_input_offset)2497*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_lt_4_multipass_with_input_offset) {
2498*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2499*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2500*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2501*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2502*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2503*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2504*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2505*4bdc9457SAndroid Build Coastguard Worker .input_offset(4)
2506*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2507*4bdc9457SAndroid Build Coastguard Worker }
2508*4bdc9457SAndroid Build Coastguard Worker }
2509*4bdc9457SAndroid Build Coastguard Worker }
2510*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_gt_4_multipass)2511*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_gt_4_multipass) {
2512*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2513*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2514*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2515*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2516*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2517*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2518*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2519*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2520*4bdc9457SAndroid Build Coastguard Worker }
2521*4bdc9457SAndroid Build Coastguard Worker }
2522*4bdc9457SAndroid Build Coastguard Worker }
2523*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,channels_gt_4_multipass_with_input_offset)2524*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, channels_gt_4_multipass_with_input_offset) {
2525*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2526*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2527*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2528*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2529*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2530*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2531*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2532*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2533*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2534*4bdc9457SAndroid Build Coastguard Worker }
2535*4bdc9457SAndroid Build Coastguard Worker }
2536*4bdc9457SAndroid Build Coastguard Worker }
2537*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,few_output_pixels)2538*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, few_output_pixels) {
2539*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2540*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2541*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2542*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2543*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2544*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2545*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2546*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2547*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2548*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2549*4bdc9457SAndroid Build Coastguard Worker }
2550*4bdc9457SAndroid Build Coastguard Worker }
2551*4bdc9457SAndroid Build Coastguard Worker }
2552*4bdc9457SAndroid Build Coastguard Worker }
2553*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,few_output_pixels_with_input_offset)2554*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, few_output_pixels_with_input_offset) {
2555*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2556*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2557*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2558*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2559*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2560*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2561*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2562*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2563*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2564*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
2565*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2566*4bdc9457SAndroid Build Coastguard Worker }
2567*4bdc9457SAndroid Build Coastguard Worker }
2568*4bdc9457SAndroid Build Coastguard Worker }
2569*4bdc9457SAndroid Build Coastguard Worker }
2570*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,few_output_pixels_with_output_stride)2571*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, few_output_pixels_with_output_stride) {
2572*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2573*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2574*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2575*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2576*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2577*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2578*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2579*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2580*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2581*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
2582*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2583*4bdc9457SAndroid Build Coastguard Worker }
2584*4bdc9457SAndroid Build Coastguard Worker }
2585*4bdc9457SAndroid Build Coastguard Worker }
2586*4bdc9457SAndroid Build Coastguard Worker }
2587*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4,few_output_pixels_with_step)2588*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SSE2_C4, few_output_pixels_with_step) {
2589*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE2;
2590*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2591*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2592*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2593*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
2594*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2595*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2596*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2597*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2598*4bdc9457SAndroid Build Coastguard Worker .step(step)
2599*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2600*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
2601*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4);
2602*4bdc9457SAndroid Build Coastguard Worker }
2603*4bdc9457SAndroid Build Coastguard Worker }
2604*4bdc9457SAndroid Build Coastguard Worker }
2605*4bdc9457SAndroid Build Coastguard Worker }
2606*4bdc9457SAndroid Build Coastguard Worker }
2607*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2608*4bdc9457SAndroid Build Coastguard Worker
2609*4bdc9457SAndroid Build Coastguard Worker
2610*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
2611*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_eq_4_twopass_fulltile)2612*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_eq_4_twopass_fulltile) {
2613*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2614*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2615*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2616*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2617*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2618*4bdc9457SAndroid Build Coastguard Worker }
2619*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_eq_4_twopass_fulltile_with_input_offset)2620*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
2621*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2622*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2623*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2624*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2625*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
2626*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2627*4bdc9457SAndroid Build Coastguard Worker }
2628*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_eq_4_twopass_subtile)2629*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_eq_4_twopass_subtile) {
2630*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2631*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2632*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2633*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2634*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2635*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2636*4bdc9457SAndroid Build Coastguard Worker }
2637*4bdc9457SAndroid Build Coastguard Worker }
2638*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_eq_4_twopass_subtile_with_input_offset)2639*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_eq_4_twopass_subtile_with_input_offset) {
2640*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2641*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2642*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2643*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2644*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2645*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
2646*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2647*4bdc9457SAndroid Build Coastguard Worker }
2648*4bdc9457SAndroid Build Coastguard Worker }
2649*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_div_4_twopass_fulltile)2650*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_div_4_twopass_fulltile) {
2651*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2652*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2653*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2654*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2655*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2656*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2657*4bdc9457SAndroid Build Coastguard Worker }
2658*4bdc9457SAndroid Build Coastguard Worker }
2659*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_div_4_twopass_fulltile_with_input_offset)2660*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_div_4_twopass_fulltile_with_input_offset) {
2661*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2662*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2663*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2664*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2665*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2666*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
2667*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2668*4bdc9457SAndroid Build Coastguard Worker }
2669*4bdc9457SAndroid Build Coastguard Worker }
2670*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_div_4_twopass_subtile)2671*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_div_4_twopass_subtile) {
2672*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2673*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2674*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2675*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2676*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2677*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2678*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2679*4bdc9457SAndroid Build Coastguard Worker }
2680*4bdc9457SAndroid Build Coastguard Worker }
2681*4bdc9457SAndroid Build Coastguard Worker }
2682*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_div_4_twopass_subtile_with_input_offset)2683*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_div_4_twopass_subtile_with_input_offset) {
2684*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2685*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2686*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2687*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2688*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2689*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2690*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
2691*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2692*4bdc9457SAndroid Build Coastguard Worker }
2693*4bdc9457SAndroid Build Coastguard Worker }
2694*4bdc9457SAndroid Build Coastguard Worker }
2695*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_lt_4_twopass_fulltile)2696*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_lt_4_twopass_fulltile) {
2697*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2698*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2699*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2700*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2701*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2702*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2703*4bdc9457SAndroid Build Coastguard Worker }
2704*4bdc9457SAndroid Build Coastguard Worker }
2705*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_lt_4_twopass_fulltile_with_input_offset)2706*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_lt_4_twopass_fulltile_with_input_offset) {
2707*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2708*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2709*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2710*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2711*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2712*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
2713*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2714*4bdc9457SAndroid Build Coastguard Worker }
2715*4bdc9457SAndroid Build Coastguard Worker }
2716*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_lt_4_twopass_subtile)2717*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_lt_4_twopass_subtile) {
2718*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2719*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2720*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2721*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2722*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2723*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2724*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2725*4bdc9457SAndroid Build Coastguard Worker }
2726*4bdc9457SAndroid Build Coastguard Worker }
2727*4bdc9457SAndroid Build Coastguard Worker }
2728*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_lt_4_twopass_subtile_with_input_offset)2729*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_lt_4_twopass_subtile_with_input_offset) {
2730*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2731*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2732*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2733*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2734*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2735*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2736*4bdc9457SAndroid Build Coastguard Worker .input_offset(5)
2737*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2738*4bdc9457SAndroid Build Coastguard Worker }
2739*4bdc9457SAndroid Build Coastguard Worker }
2740*4bdc9457SAndroid Build Coastguard Worker }
2741*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_gt_4_twopass_fulltile)2742*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_gt_4_twopass_fulltile) {
2743*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2744*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2745*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2746*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2747*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2748*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2749*4bdc9457SAndroid Build Coastguard Worker }
2750*4bdc9457SAndroid Build Coastguard Worker }
2751*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_gt_4_twopass_fulltile_with_input_offset)2752*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_gt_4_twopass_fulltile_with_input_offset) {
2753*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2754*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2755*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2756*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2757*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2758*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2759*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2760*4bdc9457SAndroid Build Coastguard Worker }
2761*4bdc9457SAndroid Build Coastguard Worker }
2762*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_gt_4_twopass_subtile)2763*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_gt_4_twopass_subtile) {
2764*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2765*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2766*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2767*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2768*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2769*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2770*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2771*4bdc9457SAndroid Build Coastguard Worker }
2772*4bdc9457SAndroid Build Coastguard Worker }
2773*4bdc9457SAndroid Build Coastguard Worker }
2774*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_gt_4_twopass_subtile_with_input_offset)2775*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_gt_4_twopass_subtile_with_input_offset) {
2776*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2777*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2778*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2779*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2780*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2781*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2782*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2783*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2784*4bdc9457SAndroid Build Coastguard Worker }
2785*4bdc9457SAndroid Build Coastguard Worker }
2786*4bdc9457SAndroid Build Coastguard Worker }
2787*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_eq_4_multipass)2788*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_eq_4_multipass) {
2789*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2790*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2791*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2792*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2793*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2794*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2795*4bdc9457SAndroid Build Coastguard Worker }
2796*4bdc9457SAndroid Build Coastguard Worker }
2797*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_eq_4_multipass_with_input_offset)2798*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_eq_4_multipass_with_input_offset) {
2799*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2800*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2801*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2802*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2803*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2804*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
2805*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2806*4bdc9457SAndroid Build Coastguard Worker }
2807*4bdc9457SAndroid Build Coastguard Worker }
2808*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_div_4_multipass)2809*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_div_4_multipass) {
2810*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2811*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2812*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2813*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2814*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2815*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2816*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2817*4bdc9457SAndroid Build Coastguard Worker }
2818*4bdc9457SAndroid Build Coastguard Worker }
2819*4bdc9457SAndroid Build Coastguard Worker }
2820*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_div_4_multipass_with_input_offset)2821*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_div_4_multipass_with_input_offset) {
2822*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2823*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 32; channels += 4) {
2824*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2825*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2826*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2827*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2828*4bdc9457SAndroid Build Coastguard Worker .input_offset(37)
2829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2830*4bdc9457SAndroid Build Coastguard Worker }
2831*4bdc9457SAndroid Build Coastguard Worker }
2832*4bdc9457SAndroid Build Coastguard Worker }
2833*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_lt_4_multipass)2834*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_lt_4_multipass) {
2835*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2836*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2837*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2838*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2839*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2840*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2841*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2842*4bdc9457SAndroid Build Coastguard Worker }
2843*4bdc9457SAndroid Build Coastguard Worker }
2844*4bdc9457SAndroid Build Coastguard Worker }
2845*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_lt_4_multipass_with_input_offset)2846*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_lt_4_multipass_with_input_offset) {
2847*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2848*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2849*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2850*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2851*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2852*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2853*4bdc9457SAndroid Build Coastguard Worker .input_offset(4)
2854*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2855*4bdc9457SAndroid Build Coastguard Worker }
2856*4bdc9457SAndroid Build Coastguard Worker }
2857*4bdc9457SAndroid Build Coastguard Worker }
2858*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_gt_4_multipass)2859*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_gt_4_multipass) {
2860*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2861*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2862*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2863*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2864*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2865*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2867*4bdc9457SAndroid Build Coastguard Worker }
2868*4bdc9457SAndroid Build Coastguard Worker }
2869*4bdc9457SAndroid Build Coastguard Worker }
2870*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,channels_gt_4_multipass_with_input_offset)2871*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, channels_gt_4_multipass_with_input_offset) {
2872*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
2873*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2874*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2875*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2876*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2877*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2878*4bdc9457SAndroid Build Coastguard Worker .input_offset(11)
2879*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2880*4bdc9457SAndroid Build Coastguard Worker }
2881*4bdc9457SAndroid Build Coastguard Worker }
2882*4bdc9457SAndroid Build Coastguard Worker }
2883*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,few_output_pixels)2884*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, few_output_pixels) {
2885*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2886*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2887*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2888*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2889*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2890*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2891*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2892*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2893*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2894*4bdc9457SAndroid Build Coastguard Worker }
2895*4bdc9457SAndroid Build Coastguard Worker }
2896*4bdc9457SAndroid Build Coastguard Worker }
2897*4bdc9457SAndroid Build Coastguard Worker }
2898*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,few_output_pixels_with_input_offset)2899*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, few_output_pixels_with_input_offset) {
2900*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2901*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2902*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2903*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2904*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2905*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2906*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2907*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2908*4bdc9457SAndroid Build Coastguard Worker .input_offset(23)
2909*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2910*4bdc9457SAndroid Build Coastguard Worker }
2911*4bdc9457SAndroid Build Coastguard Worker }
2912*4bdc9457SAndroid Build Coastguard Worker }
2913*4bdc9457SAndroid Build Coastguard Worker }
2914*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,few_output_pixels_with_output_stride)2915*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, few_output_pixels_with_output_stride) {
2916*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2917*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2918*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2919*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2920*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2921*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2922*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2923*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2924*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
2925*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2926*4bdc9457SAndroid Build Coastguard Worker }
2927*4bdc9457SAndroid Build Coastguard Worker }
2928*4bdc9457SAndroid Build Coastguard Worker }
2929*4bdc9457SAndroid Build Coastguard Worker }
2930*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4,few_output_pixels_with_step)2931*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__WASMSIMD_C4, few_output_pixels_with_step) {
2932*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
2933*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
2934*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2935*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
2936*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2937*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
2938*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2939*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2940*4bdc9457SAndroid Build Coastguard Worker .step(step)
2941*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2942*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
2943*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4);
2944*4bdc9457SAndroid Build Coastguard Worker }
2945*4bdc9457SAndroid Build Coastguard Worker }
2946*4bdc9457SAndroid Build Coastguard Worker }
2947*4bdc9457SAndroid Build Coastguard Worker }
2948*4bdc9457SAndroid Build Coastguard Worker }
2949*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
2950*4bdc9457SAndroid Build Coastguard Worker
2951*4bdc9457SAndroid Build Coastguard Worker
2952*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_eq_1_twopass_fulltile)2953*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile) {
2954*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2955*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2956*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2957*4bdc9457SAndroid Build Coastguard Worker .channels(1)
2958*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
2959*4bdc9457SAndroid Build Coastguard Worker }
2960*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_eq_1_twopass_fulltile_with_input_offset)2961*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
2962*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2963*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2964*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2965*4bdc9457SAndroid Build Coastguard Worker .channels(1)
2966*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
2967*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
2968*4bdc9457SAndroid Build Coastguard Worker }
2969*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_eq_1_twopass_subtile)2970*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile) {
2971*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2972*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2973*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2974*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2975*4bdc9457SAndroid Build Coastguard Worker .channels(1)
2976*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
2977*4bdc9457SAndroid Build Coastguard Worker }
2978*4bdc9457SAndroid Build Coastguard Worker }
2979*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_eq_1_twopass_subtile_with_input_offset)2980*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile_with_input_offset) {
2981*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
2982*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2983*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
2984*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2985*4bdc9457SAndroid Build Coastguard Worker .channels(1)
2986*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
2987*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
2988*4bdc9457SAndroid Build Coastguard Worker }
2989*4bdc9457SAndroid Build Coastguard Worker }
2990*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_gt_1_twopass_fulltile)2991*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile) {
2992*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
2993*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
2994*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
2995*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
2996*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2997*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
2998*4bdc9457SAndroid Build Coastguard Worker }
2999*4bdc9457SAndroid Build Coastguard Worker }
3000*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_gt_1_twopass_fulltile_with_input_offset)3001*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_gt_1_twopass_fulltile_with_input_offset) {
3002*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
3003*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3004*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
3005*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3006*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3007*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
3008*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3009*4bdc9457SAndroid Build Coastguard Worker }
3010*4bdc9457SAndroid Build Coastguard Worker }
3011*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_gt_1_twopass_subtile)3012*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_gt_1_twopass_subtile) {
3013*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3014*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
3015*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3016*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
3017*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3018*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3019*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3020*4bdc9457SAndroid Build Coastguard Worker }
3021*4bdc9457SAndroid Build Coastguard Worker }
3022*4bdc9457SAndroid Build Coastguard Worker }
3023*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_gt_1_twopass_subtile_with_input_offset)3024*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_gt_1_twopass_subtile_with_input_offset) {
3025*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements < 17; pooling_elements++) {
3026*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
3027*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3028*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
3029*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3030*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3031*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
3032*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3033*4bdc9457SAndroid Build Coastguard Worker }
3034*4bdc9457SAndroid Build Coastguard Worker }
3035*4bdc9457SAndroid Build Coastguard Worker }
3036*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_eq_1_multipass)3037*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_eq_1_multipass) {
3038*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3039*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3040*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
3041*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3042*4bdc9457SAndroid Build Coastguard Worker .channels(1)
3043*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3044*4bdc9457SAndroid Build Coastguard Worker }
3045*4bdc9457SAndroid Build Coastguard Worker }
3046*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_eq_1_multipass_with_input_offset)3047*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_eq_1_multipass_with_input_offset) {
3048*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3049*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3050*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
3051*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3052*4bdc9457SAndroid Build Coastguard Worker .channels(1)
3053*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
3054*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3055*4bdc9457SAndroid Build Coastguard Worker }
3056*4bdc9457SAndroid Build Coastguard Worker }
3057*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_gt_1_multipass)3058*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_gt_1_multipass) {
3059*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3060*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
3061*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3062*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
3063*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3064*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3065*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3066*4bdc9457SAndroid Build Coastguard Worker }
3067*4bdc9457SAndroid Build Coastguard Worker }
3068*4bdc9457SAndroid Build Coastguard Worker }
3069*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,channels_gt_1_multipass_with_input_offset)3070*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, channels_gt_1_multipass_with_input_offset) {
3071*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 18; pooling_elements <= 33; pooling_elements += 3) {
3072*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
3073*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3074*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(17)
3075*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3076*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3077*4bdc9457SAndroid Build Coastguard Worker .input_offset(3)
3078*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3079*4bdc9457SAndroid Build Coastguard Worker }
3080*4bdc9457SAndroid Build Coastguard Worker }
3081*4bdc9457SAndroid Build Coastguard Worker }
3082*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,few_output_pixels)3083*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, few_output_pixels) {
3084*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3085*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
3086*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
3087*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3088*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
3089*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
3090*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3091*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3092*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3093*4bdc9457SAndroid Build Coastguard Worker }
3094*4bdc9457SAndroid Build Coastguard Worker }
3095*4bdc9457SAndroid Build Coastguard Worker }
3096*4bdc9457SAndroid Build Coastguard Worker }
3097*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,few_output_pixels_with_input_offset)3098*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, few_output_pixels_with_input_offset) {
3099*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3100*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
3101*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
3102*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3103*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
3104*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
3105*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3106*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3107*4bdc9457SAndroid Build Coastguard Worker .input_offset(7)
3108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3109*4bdc9457SAndroid Build Coastguard Worker }
3110*4bdc9457SAndroid Build Coastguard Worker }
3111*4bdc9457SAndroid Build Coastguard Worker }
3112*4bdc9457SAndroid Build Coastguard Worker }
3113*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,few_output_pixels_with_output_stride)3114*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, few_output_pixels_with_output_stride) {
3115*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3116*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
3117*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
3118*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3119*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
3120*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
3121*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3122*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3123*4bdc9457SAndroid Build Coastguard Worker .output_stride(7)
3124*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3125*4bdc9457SAndroid Build Coastguard Worker }
3126*4bdc9457SAndroid Build Coastguard Worker }
3127*4bdc9457SAndroid Build Coastguard Worker }
3128*4bdc9457SAndroid Build Coastguard Worker }
3129*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1,few_output_pixels_with_step)3130*4bdc9457SAndroid Build Coastguard Worker TEST(F32_ARGMAXPOOL_9P8X__SCALAR_C1, few_output_pixels_with_step) {
3131*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) {
3132*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 10; pooling_elements <= 17; pooling_elements++) {
3133*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
3134*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) {
3135*4bdc9457SAndroid Build Coastguard Worker ArgMaxPoolMicrokernelTester()
3136*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels)
3137*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements)
3138*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(9, 8)
3139*4bdc9457SAndroid Build Coastguard Worker .step(step)
3140*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
3141*4bdc9457SAndroid Build Coastguard Worker .output_stride(7)
3142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1, ArgMaxPoolMicrokernelTester::Variant::Scalar);
3143*4bdc9457SAndroid Build Coastguard Worker }
3144*4bdc9457SAndroid Build Coastguard Worker }
3145*4bdc9457SAndroid Build Coastguard Worker }
3146*4bdc9457SAndroid Build Coastguard Worker }
3147*4bdc9457SAndroid Build Coastguard Worker }