xref: /aosp_15_r20/external/XNNPACK/test/s16-window.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2022 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/s16-window.yaml
8*4bdc9457SAndroid Build Coastguard Worker //   Generator: tools/generate-window-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/window.h>
17*4bdc9457SAndroid Build Coastguard Worker #include "window-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(S16_WINDOW_SHIFT12__NEON_X8,batch_eq_8)21*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X8, batch_eq_8) {
22*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
23*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
24*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
25*4bdc9457SAndroid Build Coastguard Worker       .batch(8)
26*4bdc9457SAndroid Build Coastguard Worker       .shift(12)
27*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_shift12_ukernel__neon_x8);
28*4bdc9457SAndroid Build Coastguard Worker   }
29*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X8,batch_div_8)30*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X8, batch_div_8) {
31*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
32*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 16; batch < 80; batch += 8) {
33*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
34*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
35*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
36*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x8);
37*4bdc9457SAndroid Build Coastguard Worker     }
38*4bdc9457SAndroid Build Coastguard Worker   }
39*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X8,batch_lt_8)40*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X8, batch_lt_8) {
41*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
42*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 8; batch++) {
43*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
44*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
45*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
46*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x8);
47*4bdc9457SAndroid Build Coastguard Worker     }
48*4bdc9457SAndroid Build Coastguard Worker   }
49*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X8,batch_gt_8)50*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X8, batch_gt_8) {
51*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
52*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 9; batch < 16; batch++) {
53*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
54*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
55*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
56*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x8);
57*4bdc9457SAndroid Build Coastguard Worker     }
58*4bdc9457SAndroid Build Coastguard Worker   }
59*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X8,rows_gt_1)60*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X8, rows_gt_1) {
61*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
62*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
63*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 40; batch += 7) {
64*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
65*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
66*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
67*4bdc9457SAndroid Build Coastguard Worker           .shift(12)
68*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift12_ukernel__neon_x8);
69*4bdc9457SAndroid Build Coastguard Worker       }
70*4bdc9457SAndroid Build Coastguard Worker     }
71*4bdc9457SAndroid Build Coastguard Worker   }
72*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X8,inplace)73*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X8, inplace) {
74*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
75*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
76*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 40; batch += 7) {
77*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
78*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
79*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
80*4bdc9457SAndroid Build Coastguard Worker           .shift(12)
81*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
82*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
83*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift12_ukernel__neon_x8);
84*4bdc9457SAndroid Build Coastguard Worker       }
85*4bdc9457SAndroid Build Coastguard Worker     }
86*4bdc9457SAndroid Build Coastguard Worker   }
87*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
88*4bdc9457SAndroid Build Coastguard Worker 
89*4bdc9457SAndroid Build Coastguard Worker 
90*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW_SHIFT12__NEON_X16,batch_eq_16)91*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X16, batch_eq_16) {
92*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
93*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
94*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
95*4bdc9457SAndroid Build Coastguard Worker       .batch(16)
96*4bdc9457SAndroid Build Coastguard Worker       .shift(12)
97*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_shift12_ukernel__neon_x16);
98*4bdc9457SAndroid Build Coastguard Worker   }
99*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X16,batch_div_16)100*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X16, batch_div_16) {
101*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
102*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 32; batch < 160; batch += 16) {
103*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
104*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
105*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
106*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x16);
107*4bdc9457SAndroid Build Coastguard Worker     }
108*4bdc9457SAndroid Build Coastguard Worker   }
109*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X16,batch_lt_16)110*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X16, batch_lt_16) {
111*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
112*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 16; batch++) {
113*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
114*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
115*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
116*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x16);
117*4bdc9457SAndroid Build Coastguard Worker     }
118*4bdc9457SAndroid Build Coastguard Worker   }
119*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X16,batch_gt_16)120*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X16, batch_gt_16) {
121*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
122*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 17; batch < 32; batch++) {
123*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
124*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
125*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
126*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x16);
127*4bdc9457SAndroid Build Coastguard Worker     }
128*4bdc9457SAndroid Build Coastguard Worker   }
129*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X16,rows_gt_1)130*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X16, rows_gt_1) {
131*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
132*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
133*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 80; batch += 15) {
134*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
135*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
136*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
137*4bdc9457SAndroid Build Coastguard Worker           .shift(12)
138*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift12_ukernel__neon_x16);
139*4bdc9457SAndroid Build Coastguard Worker       }
140*4bdc9457SAndroid Build Coastguard Worker     }
141*4bdc9457SAndroid Build Coastguard Worker   }
142*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X16,inplace)143*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X16, inplace) {
144*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
145*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
146*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 80; batch += 15) {
147*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
148*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
149*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
150*4bdc9457SAndroid Build Coastguard Worker           .shift(12)
151*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
152*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
153*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift12_ukernel__neon_x16);
154*4bdc9457SAndroid Build Coastguard Worker       }
155*4bdc9457SAndroid Build Coastguard Worker     }
156*4bdc9457SAndroid Build Coastguard Worker   }
157*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
158*4bdc9457SAndroid Build Coastguard Worker 
159*4bdc9457SAndroid Build Coastguard Worker 
160*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW_SHIFT12__NEON_X24,batch_eq_24)161*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X24, batch_eq_24) {
162*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
163*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
164*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
165*4bdc9457SAndroid Build Coastguard Worker       .batch(24)
166*4bdc9457SAndroid Build Coastguard Worker       .shift(12)
167*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_shift12_ukernel__neon_x24);
168*4bdc9457SAndroid Build Coastguard Worker   }
169*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X24,batch_div_24)170*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X24, batch_div_24) {
171*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
172*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 48; batch < 240; batch += 24) {
173*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
174*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
175*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
176*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x24);
177*4bdc9457SAndroid Build Coastguard Worker     }
178*4bdc9457SAndroid Build Coastguard Worker   }
179*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X24,batch_lt_24)180*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X24, batch_lt_24) {
181*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
182*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 24; batch++) {
183*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
184*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
185*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
186*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x24);
187*4bdc9457SAndroid Build Coastguard Worker     }
188*4bdc9457SAndroid Build Coastguard Worker   }
189*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X24,batch_gt_24)190*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X24, batch_gt_24) {
191*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
192*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 25; batch < 48; batch++) {
193*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
194*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
195*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
196*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x24);
197*4bdc9457SAndroid Build Coastguard Worker     }
198*4bdc9457SAndroid Build Coastguard Worker   }
199*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X24,rows_gt_1)200*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X24, rows_gt_1) {
201*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
202*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
203*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 120; batch += 23) {
204*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
205*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
206*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
207*4bdc9457SAndroid Build Coastguard Worker           .shift(12)
208*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift12_ukernel__neon_x24);
209*4bdc9457SAndroid Build Coastguard Worker       }
210*4bdc9457SAndroid Build Coastguard Worker     }
211*4bdc9457SAndroid Build Coastguard Worker   }
212*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X24,inplace)213*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X24, inplace) {
214*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
215*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
216*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 120; batch += 23) {
217*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
218*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
219*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
220*4bdc9457SAndroid Build Coastguard Worker           .shift(12)
221*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
222*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
223*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift12_ukernel__neon_x24);
224*4bdc9457SAndroid Build Coastguard Worker       }
225*4bdc9457SAndroid Build Coastguard Worker     }
226*4bdc9457SAndroid Build Coastguard Worker   }
227*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
228*4bdc9457SAndroid Build Coastguard Worker 
229*4bdc9457SAndroid Build Coastguard Worker 
230*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW_SHIFT12__NEON_X32,batch_eq_32)231*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X32, batch_eq_32) {
232*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
233*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
234*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
235*4bdc9457SAndroid Build Coastguard Worker       .batch(32)
236*4bdc9457SAndroid Build Coastguard Worker       .shift(12)
237*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_shift12_ukernel__neon_x32);
238*4bdc9457SAndroid Build Coastguard Worker   }
239*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X32,batch_div_32)240*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X32, batch_div_32) {
241*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
242*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 64; batch < 320; batch += 32) {
243*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
244*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
245*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
246*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x32);
247*4bdc9457SAndroid Build Coastguard Worker     }
248*4bdc9457SAndroid Build Coastguard Worker   }
249*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X32,batch_lt_32)250*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X32, batch_lt_32) {
251*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
252*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 32; batch++) {
253*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
254*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
255*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
256*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x32);
257*4bdc9457SAndroid Build Coastguard Worker     }
258*4bdc9457SAndroid Build Coastguard Worker   }
259*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X32,batch_gt_32)260*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X32, batch_gt_32) {
261*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
262*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 33; batch < 64; batch++) {
263*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
264*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
265*4bdc9457SAndroid Build Coastguard Worker         .shift(12)
266*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift12_ukernel__neon_x32);
267*4bdc9457SAndroid Build Coastguard Worker     }
268*4bdc9457SAndroid Build Coastguard Worker   }
269*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X32,rows_gt_1)270*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X32, rows_gt_1) {
271*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
272*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
273*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 160; batch += 31) {
274*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
275*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
276*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
277*4bdc9457SAndroid Build Coastguard Worker           .shift(12)
278*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift12_ukernel__neon_x32);
279*4bdc9457SAndroid Build Coastguard Worker       }
280*4bdc9457SAndroid Build Coastguard Worker     }
281*4bdc9457SAndroid Build Coastguard Worker   }
282*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT12__NEON_X32,inplace)283*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT12__NEON_X32, inplace) {
284*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
285*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
286*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 160; batch += 31) {
287*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
288*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
289*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
290*4bdc9457SAndroid Build Coastguard Worker           .shift(12)
291*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
292*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
293*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift12_ukernel__neon_x32);
294*4bdc9457SAndroid Build Coastguard Worker       }
295*4bdc9457SAndroid Build Coastguard Worker     }
296*4bdc9457SAndroid Build Coastguard Worker   }
297*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
298*4bdc9457SAndroid Build Coastguard Worker 
299*4bdc9457SAndroid Build Coastguard Worker 
300*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW_SHIFT15__NEON_X8,batch_eq_8)301*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X8, batch_eq_8) {
302*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
303*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
304*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
305*4bdc9457SAndroid Build Coastguard Worker       .batch(8)
306*4bdc9457SAndroid Build Coastguard Worker       .shift(15)
307*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_shift15_ukernel__neon_x8);
308*4bdc9457SAndroid Build Coastguard Worker   }
309*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X8,batch_div_8)310*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X8, batch_div_8) {
311*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
312*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 16; batch < 80; batch += 8) {
313*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
314*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
315*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
316*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x8);
317*4bdc9457SAndroid Build Coastguard Worker     }
318*4bdc9457SAndroid Build Coastguard Worker   }
319*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X8,batch_lt_8)320*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X8, batch_lt_8) {
321*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
322*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 8; batch++) {
323*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
324*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
325*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
326*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x8);
327*4bdc9457SAndroid Build Coastguard Worker     }
328*4bdc9457SAndroid Build Coastguard Worker   }
329*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X8,batch_gt_8)330*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X8, batch_gt_8) {
331*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
332*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 9; batch < 16; batch++) {
333*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
334*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
335*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
336*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x8);
337*4bdc9457SAndroid Build Coastguard Worker     }
338*4bdc9457SAndroid Build Coastguard Worker   }
339*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X8,rows_gt_1)340*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X8, rows_gt_1) {
341*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
342*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
343*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 40; batch += 7) {
344*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
345*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
346*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
347*4bdc9457SAndroid Build Coastguard Worker           .shift(15)
348*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift15_ukernel__neon_x8);
349*4bdc9457SAndroid Build Coastguard Worker       }
350*4bdc9457SAndroid Build Coastguard Worker     }
351*4bdc9457SAndroid Build Coastguard Worker   }
352*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X8,inplace)353*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X8, inplace) {
354*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
355*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
356*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 40; batch += 7) {
357*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
358*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
359*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
360*4bdc9457SAndroid Build Coastguard Worker           .shift(15)
361*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
362*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
363*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift15_ukernel__neon_x8);
364*4bdc9457SAndroid Build Coastguard Worker       }
365*4bdc9457SAndroid Build Coastguard Worker     }
366*4bdc9457SAndroid Build Coastguard Worker   }
367*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
368*4bdc9457SAndroid Build Coastguard Worker 
369*4bdc9457SAndroid Build Coastguard Worker 
370*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW_SHIFT15__NEON_X16,batch_eq_16)371*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X16, batch_eq_16) {
372*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
373*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
374*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
375*4bdc9457SAndroid Build Coastguard Worker       .batch(16)
376*4bdc9457SAndroid Build Coastguard Worker       .shift(15)
377*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_shift15_ukernel__neon_x16);
378*4bdc9457SAndroid Build Coastguard Worker   }
379*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X16,batch_div_16)380*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X16, batch_div_16) {
381*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
382*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 32; batch < 160; batch += 16) {
383*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
384*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
385*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
386*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x16);
387*4bdc9457SAndroid Build Coastguard Worker     }
388*4bdc9457SAndroid Build Coastguard Worker   }
389*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X16,batch_lt_16)390*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X16, batch_lt_16) {
391*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
392*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 16; batch++) {
393*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
394*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
395*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
396*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x16);
397*4bdc9457SAndroid Build Coastguard Worker     }
398*4bdc9457SAndroid Build Coastguard Worker   }
399*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X16,batch_gt_16)400*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X16, batch_gt_16) {
401*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
402*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 17; batch < 32; batch++) {
403*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
404*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
405*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
406*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x16);
407*4bdc9457SAndroid Build Coastguard Worker     }
408*4bdc9457SAndroid Build Coastguard Worker   }
409*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X16,rows_gt_1)410*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X16, rows_gt_1) {
411*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
412*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
413*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 80; batch += 15) {
414*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
415*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
416*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
417*4bdc9457SAndroid Build Coastguard Worker           .shift(15)
418*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift15_ukernel__neon_x16);
419*4bdc9457SAndroid Build Coastguard Worker       }
420*4bdc9457SAndroid Build Coastguard Worker     }
421*4bdc9457SAndroid Build Coastguard Worker   }
422*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X16,inplace)423*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X16, inplace) {
424*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
425*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
426*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 80; batch += 15) {
427*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
428*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
429*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
430*4bdc9457SAndroid Build Coastguard Worker           .shift(15)
431*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
432*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
433*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift15_ukernel__neon_x16);
434*4bdc9457SAndroid Build Coastguard Worker       }
435*4bdc9457SAndroid Build Coastguard Worker     }
436*4bdc9457SAndroid Build Coastguard Worker   }
437*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
438*4bdc9457SAndroid Build Coastguard Worker 
439*4bdc9457SAndroid Build Coastguard Worker 
440*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW_SHIFT15__NEON_X24,batch_eq_24)441*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X24, batch_eq_24) {
442*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
443*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
444*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
445*4bdc9457SAndroid Build Coastguard Worker       .batch(24)
446*4bdc9457SAndroid Build Coastguard Worker       .shift(15)
447*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_shift15_ukernel__neon_x24);
448*4bdc9457SAndroid Build Coastguard Worker   }
449*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X24,batch_div_24)450*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X24, batch_div_24) {
451*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
452*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 48; batch < 240; batch += 24) {
453*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
454*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
455*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
456*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x24);
457*4bdc9457SAndroid Build Coastguard Worker     }
458*4bdc9457SAndroid Build Coastguard Worker   }
459*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X24,batch_lt_24)460*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X24, batch_lt_24) {
461*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
462*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 24; batch++) {
463*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
464*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
465*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
466*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x24);
467*4bdc9457SAndroid Build Coastguard Worker     }
468*4bdc9457SAndroid Build Coastguard Worker   }
469*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X24,batch_gt_24)470*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X24, batch_gt_24) {
471*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
472*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 25; batch < 48; batch++) {
473*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
474*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
475*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
476*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x24);
477*4bdc9457SAndroid Build Coastguard Worker     }
478*4bdc9457SAndroid Build Coastguard Worker   }
479*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X24,rows_gt_1)480*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X24, rows_gt_1) {
481*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
482*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
483*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 120; batch += 23) {
484*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
485*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
486*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
487*4bdc9457SAndroid Build Coastguard Worker           .shift(15)
488*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift15_ukernel__neon_x24);
489*4bdc9457SAndroid Build Coastguard Worker       }
490*4bdc9457SAndroid Build Coastguard Worker     }
491*4bdc9457SAndroid Build Coastguard Worker   }
492*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X24,inplace)493*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X24, inplace) {
494*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
495*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
496*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 120; batch += 23) {
497*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
498*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
499*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
500*4bdc9457SAndroid Build Coastguard Worker           .shift(15)
501*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
502*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
503*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift15_ukernel__neon_x24);
504*4bdc9457SAndroid Build Coastguard Worker       }
505*4bdc9457SAndroid Build Coastguard Worker     }
506*4bdc9457SAndroid Build Coastguard Worker   }
507*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
508*4bdc9457SAndroid Build Coastguard Worker 
509*4bdc9457SAndroid Build Coastguard Worker 
510*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW_SHIFT15__NEON_X32,batch_eq_32)511*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X32, batch_eq_32) {
512*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
513*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
514*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
515*4bdc9457SAndroid Build Coastguard Worker       .batch(32)
516*4bdc9457SAndroid Build Coastguard Worker       .shift(15)
517*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_shift15_ukernel__neon_x32);
518*4bdc9457SAndroid Build Coastguard Worker   }
519*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X32,batch_div_32)520*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X32, batch_div_32) {
521*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
522*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 64; batch < 320; batch += 32) {
523*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
524*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
525*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
526*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x32);
527*4bdc9457SAndroid Build Coastguard Worker     }
528*4bdc9457SAndroid Build Coastguard Worker   }
529*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X32,batch_lt_32)530*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X32, batch_lt_32) {
531*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
532*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 32; batch++) {
533*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
534*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
535*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
536*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x32);
537*4bdc9457SAndroid Build Coastguard Worker     }
538*4bdc9457SAndroid Build Coastguard Worker   }
539*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X32,batch_gt_32)540*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X32, batch_gt_32) {
541*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
542*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 33; batch < 64; batch++) {
543*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
544*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
545*4bdc9457SAndroid Build Coastguard Worker         .shift(15)
546*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_shift15_ukernel__neon_x32);
547*4bdc9457SAndroid Build Coastguard Worker     }
548*4bdc9457SAndroid Build Coastguard Worker   }
549*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X32,rows_gt_1)550*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X32, rows_gt_1) {
551*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
552*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
553*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 160; batch += 31) {
554*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
555*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
556*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
557*4bdc9457SAndroid Build Coastguard Worker           .shift(15)
558*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift15_ukernel__neon_x32);
559*4bdc9457SAndroid Build Coastguard Worker       }
560*4bdc9457SAndroid Build Coastguard Worker     }
561*4bdc9457SAndroid Build Coastguard Worker   }
562*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW_SHIFT15__NEON_X32,inplace)563*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW_SHIFT15__NEON_X32, inplace) {
564*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
565*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
566*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 160; batch += 31) {
567*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
568*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
569*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
570*4bdc9457SAndroid Build Coastguard Worker           .shift(15)
571*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
572*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
573*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_shift15_ukernel__neon_x32);
574*4bdc9457SAndroid Build Coastguard Worker       }
575*4bdc9457SAndroid Build Coastguard Worker     }
576*4bdc9457SAndroid Build Coastguard Worker   }
577*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
578*4bdc9457SAndroid Build Coastguard Worker 
579*4bdc9457SAndroid Build Coastguard Worker 
580*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW__NEON_X8,batch_eq_8)581*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X8, batch_eq_8) {
582*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
583*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
584*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
585*4bdc9457SAndroid Build Coastguard Worker       .batch(8)
586*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
587*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__neon_x8);
588*4bdc9457SAndroid Build Coastguard Worker   }
589*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X8,batch_div_8)590*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X8, batch_div_8) {
591*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
592*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 16; batch < 80; batch += 8) {
593*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
594*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
595*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
596*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x8);
597*4bdc9457SAndroid Build Coastguard Worker     }
598*4bdc9457SAndroid Build Coastguard Worker   }
599*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X8,batch_lt_8)600*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X8, batch_lt_8) {
601*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
602*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 8; batch++) {
603*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
604*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
605*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
606*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x8);
607*4bdc9457SAndroid Build Coastguard Worker     }
608*4bdc9457SAndroid Build Coastguard Worker   }
609*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X8,batch_gt_8)610*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X8, batch_gt_8) {
611*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
612*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 9; batch < 16; batch++) {
613*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
614*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
615*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
616*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x8);
617*4bdc9457SAndroid Build Coastguard Worker     }
618*4bdc9457SAndroid Build Coastguard Worker   }
619*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X8,rows_gt_1)620*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X8, rows_gt_1) {
621*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
622*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
623*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 40; batch += 7) {
624*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
625*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
626*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
627*4bdc9457SAndroid Build Coastguard Worker           .shift(0)
628*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_ukernel__neon_x8);
629*4bdc9457SAndroid Build Coastguard Worker       }
630*4bdc9457SAndroid Build Coastguard Worker     }
631*4bdc9457SAndroid Build Coastguard Worker   }
632*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X8,inplace)633*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X8, inplace) {
634*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
635*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
636*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 40; batch += 7) {
637*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
638*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
639*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
640*4bdc9457SAndroid Build Coastguard Worker           .shift(0)
641*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
642*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
643*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_ukernel__neon_x8);
644*4bdc9457SAndroid Build Coastguard Worker       }
645*4bdc9457SAndroid Build Coastguard Worker     }
646*4bdc9457SAndroid Build Coastguard Worker   }
647*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X8,shift)648*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X8, shift) {
649*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
650*4bdc9457SAndroid Build Coastguard Worker     for (uint32_t shift = 0; shift < 32; shift++) {
651*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
652*4bdc9457SAndroid Build Coastguard Worker         .rows(1)
653*4bdc9457SAndroid Build Coastguard Worker         .batch(8)
654*4bdc9457SAndroid Build Coastguard Worker         .shift(shift)
655*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x8);
656*4bdc9457SAndroid Build Coastguard Worker     }
657*4bdc9457SAndroid Build Coastguard Worker   }
658*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
659*4bdc9457SAndroid Build Coastguard Worker 
660*4bdc9457SAndroid Build Coastguard Worker 
661*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW__NEON_X16,batch_eq_16)662*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X16, batch_eq_16) {
663*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
664*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
665*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
666*4bdc9457SAndroid Build Coastguard Worker       .batch(16)
667*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
668*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__neon_x16);
669*4bdc9457SAndroid Build Coastguard Worker   }
670*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X16,batch_div_16)671*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X16, batch_div_16) {
672*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
673*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 32; batch < 160; batch += 16) {
674*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
675*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
676*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
677*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x16);
678*4bdc9457SAndroid Build Coastguard Worker     }
679*4bdc9457SAndroid Build Coastguard Worker   }
680*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X16,batch_lt_16)681*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X16, batch_lt_16) {
682*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
683*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 16; batch++) {
684*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
685*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
686*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
687*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x16);
688*4bdc9457SAndroid Build Coastguard Worker     }
689*4bdc9457SAndroid Build Coastguard Worker   }
690*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X16,batch_gt_16)691*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X16, batch_gt_16) {
692*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
693*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 17; batch < 32; batch++) {
694*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
695*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
696*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
697*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x16);
698*4bdc9457SAndroid Build Coastguard Worker     }
699*4bdc9457SAndroid Build Coastguard Worker   }
700*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X16,rows_gt_1)701*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X16, rows_gt_1) {
702*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
703*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
704*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 80; batch += 15) {
705*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
706*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
707*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
708*4bdc9457SAndroid Build Coastguard Worker           .shift(0)
709*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_ukernel__neon_x16);
710*4bdc9457SAndroid Build Coastguard Worker       }
711*4bdc9457SAndroid Build Coastguard Worker     }
712*4bdc9457SAndroid Build Coastguard Worker   }
713*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X16,inplace)714*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X16, inplace) {
715*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
716*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
717*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 80; batch += 15) {
718*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
719*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
720*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
721*4bdc9457SAndroid Build Coastguard Worker           .shift(0)
722*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
723*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
724*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_ukernel__neon_x16);
725*4bdc9457SAndroid Build Coastguard Worker       }
726*4bdc9457SAndroid Build Coastguard Worker     }
727*4bdc9457SAndroid Build Coastguard Worker   }
728*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X16,shift)729*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X16, shift) {
730*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
731*4bdc9457SAndroid Build Coastguard Worker     for (uint32_t shift = 0; shift < 32; shift++) {
732*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
733*4bdc9457SAndroid Build Coastguard Worker         .rows(1)
734*4bdc9457SAndroid Build Coastguard Worker         .batch(16)
735*4bdc9457SAndroid Build Coastguard Worker         .shift(shift)
736*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x16);
737*4bdc9457SAndroid Build Coastguard Worker     }
738*4bdc9457SAndroid Build Coastguard Worker   }
739*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
740*4bdc9457SAndroid Build Coastguard Worker 
741*4bdc9457SAndroid Build Coastguard Worker 
742*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW__NEON_X24,batch_eq_24)743*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X24, batch_eq_24) {
744*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
745*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
746*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
747*4bdc9457SAndroid Build Coastguard Worker       .batch(24)
748*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
749*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__neon_x24);
750*4bdc9457SAndroid Build Coastguard Worker   }
751*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X24,batch_div_24)752*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X24, batch_div_24) {
753*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
754*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 48; batch < 240; batch += 24) {
755*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
756*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
757*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
758*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x24);
759*4bdc9457SAndroid Build Coastguard Worker     }
760*4bdc9457SAndroid Build Coastguard Worker   }
761*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X24,batch_lt_24)762*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X24, batch_lt_24) {
763*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
764*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 24; batch++) {
765*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
766*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
767*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
768*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x24);
769*4bdc9457SAndroid Build Coastguard Worker     }
770*4bdc9457SAndroid Build Coastguard Worker   }
771*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X24,batch_gt_24)772*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X24, batch_gt_24) {
773*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
774*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 25; batch < 48; batch++) {
775*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
776*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
777*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
778*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x24);
779*4bdc9457SAndroid Build Coastguard Worker     }
780*4bdc9457SAndroid Build Coastguard Worker   }
781*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X24,rows_gt_1)782*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X24, rows_gt_1) {
783*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
784*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
785*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 120; batch += 23) {
786*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
787*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
788*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
789*4bdc9457SAndroid Build Coastguard Worker           .shift(0)
790*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_ukernel__neon_x24);
791*4bdc9457SAndroid Build Coastguard Worker       }
792*4bdc9457SAndroid Build Coastguard Worker     }
793*4bdc9457SAndroid Build Coastguard Worker   }
794*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X24,inplace)795*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X24, inplace) {
796*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
797*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
798*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 120; batch += 23) {
799*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
800*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
801*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
802*4bdc9457SAndroid Build Coastguard Worker           .shift(0)
803*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
804*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
805*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_ukernel__neon_x24);
806*4bdc9457SAndroid Build Coastguard Worker       }
807*4bdc9457SAndroid Build Coastguard Worker     }
808*4bdc9457SAndroid Build Coastguard Worker   }
809*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X24,shift)810*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X24, shift) {
811*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
812*4bdc9457SAndroid Build Coastguard Worker     for (uint32_t shift = 0; shift < 32; shift++) {
813*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
814*4bdc9457SAndroid Build Coastguard Worker         .rows(1)
815*4bdc9457SAndroid Build Coastguard Worker         .batch(24)
816*4bdc9457SAndroid Build Coastguard Worker         .shift(shift)
817*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x24);
818*4bdc9457SAndroid Build Coastguard Worker     }
819*4bdc9457SAndroid Build Coastguard Worker   }
820*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
821*4bdc9457SAndroid Build Coastguard Worker 
822*4bdc9457SAndroid Build Coastguard Worker 
823*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_WINDOW__NEON_X32,batch_eq_32)824*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X32, batch_eq_32) {
825*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
826*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
827*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
828*4bdc9457SAndroid Build Coastguard Worker       .batch(32)
829*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
830*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__neon_x32);
831*4bdc9457SAndroid Build Coastguard Worker   }
832*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X32,batch_div_32)833*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X32, batch_div_32) {
834*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
835*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 64; batch < 320; batch += 32) {
836*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
837*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
838*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
839*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x32);
840*4bdc9457SAndroid Build Coastguard Worker     }
841*4bdc9457SAndroid Build Coastguard Worker   }
842*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X32,batch_lt_32)843*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X32, batch_lt_32) {
844*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
845*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch < 32; batch++) {
846*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
847*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
848*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
849*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x32);
850*4bdc9457SAndroid Build Coastguard Worker     }
851*4bdc9457SAndroid Build Coastguard Worker   }
852*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X32,batch_gt_32)853*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X32, batch_gt_32) {
854*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
855*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 33; batch < 64; batch++) {
856*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
857*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
858*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
859*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x32);
860*4bdc9457SAndroid Build Coastguard Worker     }
861*4bdc9457SAndroid Build Coastguard Worker   }
862*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X32,rows_gt_1)863*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X32, rows_gt_1) {
864*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
865*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 2; rows < 2; rows++) {
866*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 160; batch += 31) {
867*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
868*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
869*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
870*4bdc9457SAndroid Build Coastguard Worker           .shift(0)
871*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_ukernel__neon_x32);
872*4bdc9457SAndroid Build Coastguard Worker       }
873*4bdc9457SAndroid Build Coastguard Worker     }
874*4bdc9457SAndroid Build Coastguard Worker   }
875*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X32,inplace)876*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X32, inplace) {
877*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
878*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows <= 3; rows += 1) {
879*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch = 1; batch <= 160; batch += 31) {
880*4bdc9457SAndroid Build Coastguard Worker         WindowMicrokernelTester()
881*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
882*4bdc9457SAndroid Build Coastguard Worker           .batch(batch)
883*4bdc9457SAndroid Build Coastguard Worker           .shift(0)
884*4bdc9457SAndroid Build Coastguard Worker           .inplace(true)
885*4bdc9457SAndroid Build Coastguard Worker           .iterations(1)
886*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_s16_window_ukernel__neon_x32);
887*4bdc9457SAndroid Build Coastguard Worker       }
888*4bdc9457SAndroid Build Coastguard Worker     }
889*4bdc9457SAndroid Build Coastguard Worker   }
890*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__NEON_X32,shift)891*4bdc9457SAndroid Build Coastguard Worker   TEST(S16_WINDOW__NEON_X32, shift) {
892*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
893*4bdc9457SAndroid Build Coastguard Worker     for (uint32_t shift = 0; shift < 32; shift++) {
894*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
895*4bdc9457SAndroid Build Coastguard Worker         .rows(1)
896*4bdc9457SAndroid Build Coastguard Worker         .batch(32)
897*4bdc9457SAndroid Build Coastguard Worker         .shift(shift)
898*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__neon_x32);
899*4bdc9457SAndroid Build Coastguard Worker     }
900*4bdc9457SAndroid Build Coastguard Worker   }
901*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
902*4bdc9457SAndroid Build Coastguard Worker 
903*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X1,batch_eq_1)904*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X1, batch_eq_1) {
905*4bdc9457SAndroid Build Coastguard Worker   WindowMicrokernelTester()
906*4bdc9457SAndroid Build Coastguard Worker     .rows(1)
907*4bdc9457SAndroid Build Coastguard Worker     .batch(1)
908*4bdc9457SAndroid Build Coastguard Worker     .shift(0)
909*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_s16_window_ukernel__scalar_x1);
910*4bdc9457SAndroid Build Coastguard Worker }
911*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X1,batch_gt_1)912*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X1, batch_gt_1) {
913*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 2; batch < 10; batch++) {
914*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
915*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
916*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
917*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x1);
918*4bdc9457SAndroid Build Coastguard Worker   }
919*4bdc9457SAndroid Build Coastguard Worker }
920*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X1,rows_gt_1)921*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X1, rows_gt_1) {
922*4bdc9457SAndroid Build Coastguard Worker   for (size_t rows = 2; rows < 2; rows++) {
923*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch <= 5; batch += 1) {
924*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
925*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
926*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
927*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
928*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__scalar_x1);
929*4bdc9457SAndroid Build Coastguard Worker     }
930*4bdc9457SAndroid Build Coastguard Worker   }
931*4bdc9457SAndroid Build Coastguard Worker }
932*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X1,inplace)933*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X1, inplace) {
934*4bdc9457SAndroid Build Coastguard Worker   for (size_t rows = 1; rows <= 3; rows += 1) {
935*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch <= 5; batch += 1) {
936*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
937*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
938*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
939*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
940*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
941*4bdc9457SAndroid Build Coastguard Worker         .iterations(1)
942*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__scalar_x1);
943*4bdc9457SAndroid Build Coastguard Worker     }
944*4bdc9457SAndroid Build Coastguard Worker   }
945*4bdc9457SAndroid Build Coastguard Worker }
946*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X1,shift)947*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X1, shift) {
948*4bdc9457SAndroid Build Coastguard Worker   for (uint32_t shift = 0; shift < 32; shift++) {
949*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
950*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
951*4bdc9457SAndroid Build Coastguard Worker       .batch(1)
952*4bdc9457SAndroid Build Coastguard Worker       .shift(shift)
953*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x1);
954*4bdc9457SAndroid Build Coastguard Worker   }
955*4bdc9457SAndroid Build Coastguard Worker }
956*4bdc9457SAndroid Build Coastguard Worker 
957*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X2,batch_eq_2)958*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X2, batch_eq_2) {
959*4bdc9457SAndroid Build Coastguard Worker   WindowMicrokernelTester()
960*4bdc9457SAndroid Build Coastguard Worker     .rows(1)
961*4bdc9457SAndroid Build Coastguard Worker     .batch(2)
962*4bdc9457SAndroid Build Coastguard Worker     .shift(0)
963*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_s16_window_ukernel__scalar_x2);
964*4bdc9457SAndroid Build Coastguard Worker }
965*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X2,batch_div_2)966*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X2, batch_div_2) {
967*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 4; batch < 20; batch += 2) {
968*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
969*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
970*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
971*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x2);
972*4bdc9457SAndroid Build Coastguard Worker   }
973*4bdc9457SAndroid Build Coastguard Worker }
974*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X2,batch_lt_2)975*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X2, batch_lt_2) {
976*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 1; batch < 2; batch++) {
977*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
978*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
979*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
980*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x2);
981*4bdc9457SAndroid Build Coastguard Worker   }
982*4bdc9457SAndroid Build Coastguard Worker }
983*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X2,batch_gt_2)984*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X2, batch_gt_2) {
985*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 3; batch < 4; batch++) {
986*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
987*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
988*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
989*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x2);
990*4bdc9457SAndroid Build Coastguard Worker   }
991*4bdc9457SAndroid Build Coastguard Worker }
992*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X2,rows_gt_1)993*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X2, rows_gt_1) {
994*4bdc9457SAndroid Build Coastguard Worker   for (size_t rows = 2; rows < 2; rows++) {
995*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch <= 10; batch += 1) {
996*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
997*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
998*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
999*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
1000*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__scalar_x2);
1001*4bdc9457SAndroid Build Coastguard Worker     }
1002*4bdc9457SAndroid Build Coastguard Worker   }
1003*4bdc9457SAndroid Build Coastguard Worker }
1004*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X2,inplace)1005*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X2, inplace) {
1006*4bdc9457SAndroid Build Coastguard Worker   for (size_t rows = 1; rows <= 3; rows += 1) {
1007*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch <= 10; batch += 1) {
1008*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
1009*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1010*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
1011*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
1012*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
1013*4bdc9457SAndroid Build Coastguard Worker         .iterations(1)
1014*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__scalar_x2);
1015*4bdc9457SAndroid Build Coastguard Worker     }
1016*4bdc9457SAndroid Build Coastguard Worker   }
1017*4bdc9457SAndroid Build Coastguard Worker }
1018*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X2,shift)1019*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X2, shift) {
1020*4bdc9457SAndroid Build Coastguard Worker   for (uint32_t shift = 0; shift < 32; shift++) {
1021*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1022*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
1023*4bdc9457SAndroid Build Coastguard Worker       .batch(2)
1024*4bdc9457SAndroid Build Coastguard Worker       .shift(shift)
1025*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x2);
1026*4bdc9457SAndroid Build Coastguard Worker   }
1027*4bdc9457SAndroid Build Coastguard Worker }
1028*4bdc9457SAndroid Build Coastguard Worker 
1029*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X3,batch_eq_3)1030*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X3, batch_eq_3) {
1031*4bdc9457SAndroid Build Coastguard Worker   WindowMicrokernelTester()
1032*4bdc9457SAndroid Build Coastguard Worker     .rows(1)
1033*4bdc9457SAndroid Build Coastguard Worker     .batch(3)
1034*4bdc9457SAndroid Build Coastguard Worker     .shift(0)
1035*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_s16_window_ukernel__scalar_x3);
1036*4bdc9457SAndroid Build Coastguard Worker }
1037*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X3,batch_div_3)1038*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X3, batch_div_3) {
1039*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 6; batch < 30; batch += 3) {
1040*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1041*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
1042*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
1043*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x3);
1044*4bdc9457SAndroid Build Coastguard Worker   }
1045*4bdc9457SAndroid Build Coastguard Worker }
1046*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X3,batch_lt_3)1047*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X3, batch_lt_3) {
1048*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 1; batch < 3; batch++) {
1049*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1050*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
1051*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
1052*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x3);
1053*4bdc9457SAndroid Build Coastguard Worker   }
1054*4bdc9457SAndroid Build Coastguard Worker }
1055*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X3,batch_gt_3)1056*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X3, batch_gt_3) {
1057*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 4; batch < 6; batch++) {
1058*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1059*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
1060*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
1061*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x3);
1062*4bdc9457SAndroid Build Coastguard Worker   }
1063*4bdc9457SAndroid Build Coastguard Worker }
1064*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X3,rows_gt_1)1065*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X3, rows_gt_1) {
1066*4bdc9457SAndroid Build Coastguard Worker   for (size_t rows = 2; rows < 2; rows++) {
1067*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch <= 15; batch += 2) {
1068*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
1069*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1070*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
1071*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
1072*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__scalar_x3);
1073*4bdc9457SAndroid Build Coastguard Worker     }
1074*4bdc9457SAndroid Build Coastguard Worker   }
1075*4bdc9457SAndroid Build Coastguard Worker }
1076*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X3,inplace)1077*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X3, inplace) {
1078*4bdc9457SAndroid Build Coastguard Worker   for (size_t rows = 1; rows <= 3; rows += 1) {
1079*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch <= 15; batch += 2) {
1080*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
1081*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1082*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
1083*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
1084*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
1085*4bdc9457SAndroid Build Coastguard Worker         .iterations(1)
1086*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__scalar_x3);
1087*4bdc9457SAndroid Build Coastguard Worker     }
1088*4bdc9457SAndroid Build Coastguard Worker   }
1089*4bdc9457SAndroid Build Coastguard Worker }
1090*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X3,shift)1091*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X3, shift) {
1092*4bdc9457SAndroid Build Coastguard Worker   for (uint32_t shift = 0; shift < 32; shift++) {
1093*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1094*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
1095*4bdc9457SAndroid Build Coastguard Worker       .batch(3)
1096*4bdc9457SAndroid Build Coastguard Worker       .shift(shift)
1097*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x3);
1098*4bdc9457SAndroid Build Coastguard Worker   }
1099*4bdc9457SAndroid Build Coastguard Worker }
1100*4bdc9457SAndroid Build Coastguard Worker 
1101*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X4,batch_eq_4)1102*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X4, batch_eq_4) {
1103*4bdc9457SAndroid Build Coastguard Worker   WindowMicrokernelTester()
1104*4bdc9457SAndroid Build Coastguard Worker     .rows(1)
1105*4bdc9457SAndroid Build Coastguard Worker     .batch(4)
1106*4bdc9457SAndroid Build Coastguard Worker     .shift(0)
1107*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_s16_window_ukernel__scalar_x4);
1108*4bdc9457SAndroid Build Coastguard Worker }
1109*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X4,batch_div_4)1110*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X4, batch_div_4) {
1111*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 8; batch < 40; batch += 4) {
1112*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1113*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
1114*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
1115*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x4);
1116*4bdc9457SAndroid Build Coastguard Worker   }
1117*4bdc9457SAndroid Build Coastguard Worker }
1118*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X4,batch_lt_4)1119*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X4, batch_lt_4) {
1120*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 1; batch < 4; batch++) {
1121*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1122*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
1123*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
1124*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x4);
1125*4bdc9457SAndroid Build Coastguard Worker   }
1126*4bdc9457SAndroid Build Coastguard Worker }
1127*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X4,batch_gt_4)1128*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X4, batch_gt_4) {
1129*4bdc9457SAndroid Build Coastguard Worker   for (size_t batch = 5; batch < 8; batch++) {
1130*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1131*4bdc9457SAndroid Build Coastguard Worker       .batch(batch)
1132*4bdc9457SAndroid Build Coastguard Worker       .shift(0)
1133*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x4);
1134*4bdc9457SAndroid Build Coastguard Worker   }
1135*4bdc9457SAndroid Build Coastguard Worker }
1136*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X4,rows_gt_1)1137*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X4, rows_gt_1) {
1138*4bdc9457SAndroid Build Coastguard Worker   for (size_t rows = 2; rows < 2; rows++) {
1139*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch <= 20; batch += 3) {
1140*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
1141*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1142*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
1143*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
1144*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__scalar_x4);
1145*4bdc9457SAndroid Build Coastguard Worker     }
1146*4bdc9457SAndroid Build Coastguard Worker   }
1147*4bdc9457SAndroid Build Coastguard Worker }
1148*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X4,inplace)1149*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X4, inplace) {
1150*4bdc9457SAndroid Build Coastguard Worker   for (size_t rows = 1; rows <= 3; rows += 1) {
1151*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch = 1; batch <= 20; batch += 3) {
1152*4bdc9457SAndroid Build Coastguard Worker       WindowMicrokernelTester()
1153*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1154*4bdc9457SAndroid Build Coastguard Worker         .batch(batch)
1155*4bdc9457SAndroid Build Coastguard Worker         .shift(0)
1156*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
1157*4bdc9457SAndroid Build Coastguard Worker         .iterations(1)
1158*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_s16_window_ukernel__scalar_x4);
1159*4bdc9457SAndroid Build Coastguard Worker     }
1160*4bdc9457SAndroid Build Coastguard Worker   }
1161*4bdc9457SAndroid Build Coastguard Worker }
1162*4bdc9457SAndroid Build Coastguard Worker 
TEST(S16_WINDOW__SCALAR_X4,shift)1163*4bdc9457SAndroid Build Coastguard Worker TEST(S16_WINDOW__SCALAR_X4, shift) {
1164*4bdc9457SAndroid Build Coastguard Worker   for (uint32_t shift = 0; shift < 32; shift++) {
1165*4bdc9457SAndroid Build Coastguard Worker     WindowMicrokernelTester()
1166*4bdc9457SAndroid Build Coastguard Worker       .rows(1)
1167*4bdc9457SAndroid Build Coastguard Worker       .batch(4)
1168*4bdc9457SAndroid Build Coastguard Worker       .shift(shift)
1169*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_s16_window_ukernel__scalar_x4);
1170*4bdc9457SAndroid Build Coastguard Worker   }
1171*4bdc9457SAndroid Build Coastguard Worker }
1172