xref: /aosp_15_r20/external/XNNPACK/test/f32-gavgpool-cw.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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 #include <gtest/gtest.h>
7*4bdc9457SAndroid Build Coastguard Worker 
8*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h>
9*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h>
10*4bdc9457SAndroid Build Coastguard Worker 
11*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/gavgpool.h>
12*4bdc9457SAndroid Build Coastguard Worker #include "gavgpool-cw-microkernel-tester.h"
13*4bdc9457SAndroid Build Coastguard Worker 
14*4bdc9457SAndroid Build Coastguard Worker 
15*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_GAVGPOOL_CW__NEON_X4,elements_eq_4)16*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, elements_eq_4) {
17*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
18*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
19*4bdc9457SAndroid Build Coastguard Worker       .elements(4)
20*4bdc9457SAndroid Build Coastguard Worker       .channels(4)
21*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
22*4bdc9457SAndroid Build Coastguard Worker   }
23*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__NEON_X4,elements_div_4)24*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, elements_div_4) {
25*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
26*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 8; elements < 32; elements += 4) {
27*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
28*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
29*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
30*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
31*4bdc9457SAndroid Build Coastguard Worker     }
32*4bdc9457SAndroid Build Coastguard Worker   }
33*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__NEON_X4,elements_lt_4)34*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, elements_lt_4) {
35*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
36*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 4; elements++) {
37*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
38*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
39*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
40*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
41*4bdc9457SAndroid Build Coastguard Worker     }
42*4bdc9457SAndroid Build Coastguard Worker   }
43*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__NEON_X4,elements_gt_4)44*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, elements_gt_4) {
45*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
46*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 5; elements < 8; elements++) {
47*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
48*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
49*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
50*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
51*4bdc9457SAndroid Build Coastguard Worker     }
52*4bdc9457SAndroid Build Coastguard Worker   }
53*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__NEON_X4,channels_lt_4)54*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, channels_lt_4) {
55*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
56*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 4; channels++) {
57*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
58*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
59*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
60*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
61*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
62*4bdc9457SAndroid Build Coastguard Worker       }
63*4bdc9457SAndroid Build Coastguard Worker     }
64*4bdc9457SAndroid Build Coastguard Worker   }
65*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__NEON_X4,channels_gt_4)66*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, channels_gt_4) {
67*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
68*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 5; channels < 8; channels++) {
69*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
70*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
71*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
72*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
73*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
74*4bdc9457SAndroid Build Coastguard Worker       }
75*4bdc9457SAndroid Build Coastguard Worker     }
76*4bdc9457SAndroid Build Coastguard Worker   }
77*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__NEON_X4,channels_div_4)78*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, channels_div_4) {
79*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
80*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 8; channels <= 16; channels += 4) {
81*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
82*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
83*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
84*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
85*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
86*4bdc9457SAndroid Build Coastguard Worker       }
87*4bdc9457SAndroid Build Coastguard Worker     }
88*4bdc9457SAndroid Build Coastguard Worker   }
89*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__NEON_X4,qmin)90*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, qmin) {
91*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
92*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
93*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
94*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
95*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
96*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
97*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
98*4bdc9457SAndroid Build Coastguard Worker     }
99*4bdc9457SAndroid Build Coastguard Worker   }
100*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__NEON_X4,qmax)101*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__NEON_X4, qmax) {
102*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
103*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
104*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
105*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
106*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
107*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
108*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__neon_x4);
109*4bdc9457SAndroid Build Coastguard Worker     }
110*4bdc9457SAndroid Build Coastguard Worker   }
111*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
112*4bdc9457SAndroid Build Coastguard Worker 
113*4bdc9457SAndroid Build Coastguard Worker 
114*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_GAVGPOOL_CW__SSE_X4,elements_eq_4)115*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, elements_eq_4) {
116*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
117*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
118*4bdc9457SAndroid Build Coastguard Worker       .elements(4)
119*4bdc9457SAndroid Build Coastguard Worker       .channels(4)
120*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
121*4bdc9457SAndroid Build Coastguard Worker   }
122*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SSE_X4,elements_div_4)123*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, elements_div_4) {
124*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
125*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 8; elements < 32; elements += 4) {
126*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
127*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
128*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
129*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
130*4bdc9457SAndroid Build Coastguard Worker     }
131*4bdc9457SAndroid Build Coastguard Worker   }
132*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SSE_X4,elements_lt_4)133*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, elements_lt_4) {
134*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
135*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 4; elements++) {
136*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
137*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
138*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
139*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
140*4bdc9457SAndroid Build Coastguard Worker     }
141*4bdc9457SAndroid Build Coastguard Worker   }
142*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SSE_X4,elements_gt_4)143*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, elements_gt_4) {
144*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
145*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 5; elements < 8; elements++) {
146*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
147*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
148*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
149*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
150*4bdc9457SAndroid Build Coastguard Worker     }
151*4bdc9457SAndroid Build Coastguard Worker   }
152*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SSE_X4,channels_lt_4)153*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, channels_lt_4) {
154*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
155*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 4; channels++) {
156*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
157*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
158*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
159*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
160*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
161*4bdc9457SAndroid Build Coastguard Worker       }
162*4bdc9457SAndroid Build Coastguard Worker     }
163*4bdc9457SAndroid Build Coastguard Worker   }
164*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SSE_X4,channels_gt_4)165*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, channels_gt_4) {
166*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
167*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 5; channels < 8; channels++) {
168*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
169*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
170*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
171*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
172*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
173*4bdc9457SAndroid Build Coastguard Worker       }
174*4bdc9457SAndroid Build Coastguard Worker     }
175*4bdc9457SAndroid Build Coastguard Worker   }
176*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SSE_X4,channels_div_4)177*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, channels_div_4) {
178*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
179*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 8; channels <= 16; channels += 4) {
180*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
181*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
182*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
183*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
184*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
185*4bdc9457SAndroid Build Coastguard Worker       }
186*4bdc9457SAndroid Build Coastguard Worker     }
187*4bdc9457SAndroid Build Coastguard Worker   }
188*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SSE_X4,qmin)189*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, qmin) {
190*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
191*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
192*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
193*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
194*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
195*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
196*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
197*4bdc9457SAndroid Build Coastguard Worker     }
198*4bdc9457SAndroid Build Coastguard Worker   }
199*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SSE_X4,qmax)200*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__SSE_X4, qmax) {
201*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
202*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
203*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
204*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
205*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
206*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
207*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__sse_x4);
208*4bdc9457SAndroid Build Coastguard Worker     }
209*4bdc9457SAndroid Build Coastguard Worker   }
210*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
211*4bdc9457SAndroid Build Coastguard Worker 
212*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,elements_eq_4)213*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, elements_eq_4) {
214*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
215*4bdc9457SAndroid Build Coastguard Worker       .elements(4)
216*4bdc9457SAndroid Build Coastguard Worker       .channels(4)
217*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
218*4bdc9457SAndroid Build Coastguard Worker   }
219*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,elements_div_4)220*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, elements_div_4) {
221*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 8; elements < 32; elements += 4) {
222*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
223*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
224*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
225*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
226*4bdc9457SAndroid Build Coastguard Worker     }
227*4bdc9457SAndroid Build Coastguard Worker   }
228*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,elements_lt_4)229*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, elements_lt_4) {
230*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 4; elements++) {
231*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
232*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
233*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
234*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
235*4bdc9457SAndroid Build Coastguard Worker     }
236*4bdc9457SAndroid Build Coastguard Worker   }
237*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,elements_gt_4)238*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, elements_gt_4) {
239*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 5; elements < 8; elements++) {
240*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
241*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
242*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
243*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
244*4bdc9457SAndroid Build Coastguard Worker     }
245*4bdc9457SAndroid Build Coastguard Worker   }
246*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,channels_lt_4)247*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, channels_lt_4) {
248*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 4; channels++) {
249*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
250*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
251*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
252*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
253*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
254*4bdc9457SAndroid Build Coastguard Worker       }
255*4bdc9457SAndroid Build Coastguard Worker     }
256*4bdc9457SAndroid Build Coastguard Worker   }
257*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,channels_gt_4)258*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, channels_gt_4) {
259*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 5; channels < 8; channels++) {
260*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
261*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
262*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
263*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
264*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
265*4bdc9457SAndroid Build Coastguard Worker       }
266*4bdc9457SAndroid Build Coastguard Worker     }
267*4bdc9457SAndroid Build Coastguard Worker   }
268*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,channels_div_4)269*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, channels_div_4) {
270*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 8; channels <= 16; channels += 4) {
271*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
272*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
273*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
274*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
275*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
276*4bdc9457SAndroid Build Coastguard Worker       }
277*4bdc9457SAndroid Build Coastguard Worker     }
278*4bdc9457SAndroid Build Coastguard Worker   }
279*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,qmin)280*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, qmin) {
281*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
282*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
283*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
284*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
285*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
286*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
287*4bdc9457SAndroid Build Coastguard Worker     }
288*4bdc9457SAndroid Build Coastguard Worker   }
289*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4,qmax)290*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_ARM_X4, qmax) {
291*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
292*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
293*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
294*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
295*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
296*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_arm_x4);
297*4bdc9457SAndroid Build Coastguard Worker     }
298*4bdc9457SAndroid Build Coastguard Worker   }
299*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASMSIMD
300*4bdc9457SAndroid Build Coastguard Worker 
301*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,elements_eq_4)302*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, elements_eq_4) {
303*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
304*4bdc9457SAndroid Build Coastguard Worker       .elements(4)
305*4bdc9457SAndroid Build Coastguard Worker       .channels(4)
306*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
307*4bdc9457SAndroid Build Coastguard Worker   }
308*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,elements_div_4)309*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, elements_div_4) {
310*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 8; elements < 32; elements += 4) {
311*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
312*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
313*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
314*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
315*4bdc9457SAndroid Build Coastguard Worker     }
316*4bdc9457SAndroid Build Coastguard Worker   }
317*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,elements_lt_4)318*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, elements_lt_4) {
319*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 4; elements++) {
320*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
321*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
322*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
323*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
324*4bdc9457SAndroid Build Coastguard Worker     }
325*4bdc9457SAndroid Build Coastguard Worker   }
326*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,elements_gt_4)327*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, elements_gt_4) {
328*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 5; elements < 8; elements++) {
329*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
330*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
331*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
332*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
333*4bdc9457SAndroid Build Coastguard Worker     }
334*4bdc9457SAndroid Build Coastguard Worker   }
335*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,channels_lt_4)336*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, channels_lt_4) {
337*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 4; channels++) {
338*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
339*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
340*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
341*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
342*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
343*4bdc9457SAndroid Build Coastguard Worker       }
344*4bdc9457SAndroid Build Coastguard Worker     }
345*4bdc9457SAndroid Build Coastguard Worker   }
346*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,channels_gt_4)347*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, channels_gt_4) {
348*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 5; channels < 8; channels++) {
349*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
350*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
351*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
352*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
353*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
354*4bdc9457SAndroid Build Coastguard Worker       }
355*4bdc9457SAndroid Build Coastguard Worker     }
356*4bdc9457SAndroid Build Coastguard Worker   }
357*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,channels_div_4)358*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, channels_div_4) {
359*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 8; channels <= 16; channels += 4) {
360*4bdc9457SAndroid Build Coastguard Worker       for (size_t elements = 1; elements < 16; elements += 3) {
361*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolCWMicrokernelTester()
362*4bdc9457SAndroid Build Coastguard Worker           .elements(elements)
363*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
364*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
365*4bdc9457SAndroid Build Coastguard Worker       }
366*4bdc9457SAndroid Build Coastguard Worker     }
367*4bdc9457SAndroid Build Coastguard Worker   }
368*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,qmin)369*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, qmin) {
370*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
371*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
372*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
373*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
374*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
375*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
376*4bdc9457SAndroid Build Coastguard Worker     }
377*4bdc9457SAndroid Build Coastguard Worker   }
378*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4,qmax)379*4bdc9457SAndroid Build Coastguard Worker   TEST(F32_GAVGPOOL_CW__WASMSIMD_X86_X4, qmax) {
380*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
381*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
382*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
383*4bdc9457SAndroid Build Coastguard Worker         .channels(4)
384*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
385*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__wasmsimd_x86_x4);
386*4bdc9457SAndroid Build Coastguard Worker     }
387*4bdc9457SAndroid Build Coastguard Worker   }
388*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASMSIMD
389*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SCALAR_X1,elements_eq_4)390*4bdc9457SAndroid Build Coastguard Worker TEST(F32_GAVGPOOL_CW__SCALAR_X1, elements_eq_4) {
391*4bdc9457SAndroid Build Coastguard Worker   GAvgPoolCWMicrokernelTester()
392*4bdc9457SAndroid Build Coastguard Worker     .elements(4)
393*4bdc9457SAndroid Build Coastguard Worker     .channels(1)
394*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_f32_gavgpool_cw_ukernel__scalar_x1, GAvgPoolCWMicrokernelTester::Variant::Scalar);
395*4bdc9457SAndroid Build Coastguard Worker }
396*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SCALAR_X1,elements_div_4)397*4bdc9457SAndroid Build Coastguard Worker TEST(F32_GAVGPOOL_CW__SCALAR_X1, elements_div_4) {
398*4bdc9457SAndroid Build Coastguard Worker   for (size_t elements = 8; elements < 32; elements += 4) {
399*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
400*4bdc9457SAndroid Build Coastguard Worker       .elements(elements)
401*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
402*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__scalar_x1, GAvgPoolCWMicrokernelTester::Variant::Scalar);
403*4bdc9457SAndroid Build Coastguard Worker   }
404*4bdc9457SAndroid Build Coastguard Worker }
405*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SCALAR_X1,elements_lt_4)406*4bdc9457SAndroid Build Coastguard Worker TEST(F32_GAVGPOOL_CW__SCALAR_X1, elements_lt_4) {
407*4bdc9457SAndroid Build Coastguard Worker   for (size_t elements = 1; elements < 4; elements++) {
408*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
409*4bdc9457SAndroid Build Coastguard Worker       .elements(elements)
410*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
411*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__scalar_x1, GAvgPoolCWMicrokernelTester::Variant::Scalar);
412*4bdc9457SAndroid Build Coastguard Worker   }
413*4bdc9457SAndroid Build Coastguard Worker }
414*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SCALAR_X1,elements_gt_4)415*4bdc9457SAndroid Build Coastguard Worker TEST(F32_GAVGPOOL_CW__SCALAR_X1, elements_gt_4) {
416*4bdc9457SAndroid Build Coastguard Worker   for (size_t elements = 5; elements < 8; elements++) {
417*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
418*4bdc9457SAndroid Build Coastguard Worker       .elements(elements)
419*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
420*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__scalar_x1, GAvgPoolCWMicrokernelTester::Variant::Scalar);
421*4bdc9457SAndroid Build Coastguard Worker   }
422*4bdc9457SAndroid Build Coastguard Worker }
423*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SCALAR_X1,channels_gt_1)424*4bdc9457SAndroid Build Coastguard Worker TEST(F32_GAVGPOOL_CW__SCALAR_X1, channels_gt_1) {
425*4bdc9457SAndroid Build Coastguard Worker   for (size_t channels = 2; channels < 5; channels++) {
426*4bdc9457SAndroid Build Coastguard Worker     for (size_t elements = 1; elements < 16; elements += 3) {
427*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolCWMicrokernelTester()
428*4bdc9457SAndroid Build Coastguard Worker         .elements(elements)
429*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
430*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f32_gavgpool_cw_ukernel__scalar_x1, GAvgPoolCWMicrokernelTester::Variant::Scalar);
431*4bdc9457SAndroid Build Coastguard Worker     }
432*4bdc9457SAndroid Build Coastguard Worker   }
433*4bdc9457SAndroid Build Coastguard Worker }
434*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SCALAR_X1,qmin)435*4bdc9457SAndroid Build Coastguard Worker TEST(F32_GAVGPOOL_CW__SCALAR_X1, qmin) {
436*4bdc9457SAndroid Build Coastguard Worker   for (size_t elements = 1; elements < 16; elements += 3) {
437*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
438*4bdc9457SAndroid Build Coastguard Worker       .elements(elements)
439*4bdc9457SAndroid Build Coastguard Worker       .channels(4)
440*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
441*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__scalar_x1, GAvgPoolCWMicrokernelTester::Variant::Scalar);
442*4bdc9457SAndroid Build Coastguard Worker   }
443*4bdc9457SAndroid Build Coastguard Worker }
444*4bdc9457SAndroid Build Coastguard Worker 
TEST(F32_GAVGPOOL_CW__SCALAR_X1,qmax)445*4bdc9457SAndroid Build Coastguard Worker TEST(F32_GAVGPOOL_CW__SCALAR_X1, qmax) {
446*4bdc9457SAndroid Build Coastguard Worker   for (size_t elements = 1; elements < 16; elements += 3) {
447*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolCWMicrokernelTester()
448*4bdc9457SAndroid Build Coastguard Worker       .elements(elements)
449*4bdc9457SAndroid Build Coastguard Worker       .channels(4)
450*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
451*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f32_gavgpool_cw_ukernel__scalar_x1, GAvgPoolCWMicrokernelTester::Variant::Scalar);
452*4bdc9457SAndroid Build Coastguard Worker   }
453*4bdc9457SAndroid Build Coastguard Worker }
454