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