xref: /aosp_15_r20/external/XNNPACK/test/s16-vlshift.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-vlshift.yaml
8 //   Generator: tools/generate-vlshift-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/vlshift.h>
17 #include "vlshift-microkernel-tester.h"
18 
19 
20 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_VLSHIFT__NEON_X8,batch_eq_8)21   TEST(S16_VLSHIFT__NEON_X8, batch_eq_8) {
22     TEST_REQUIRES_ARM_NEON;
23     VLShiftMicrokernelTester()
24       .batch(8)
25       .Test(xnn_s16_vlshift_ukernel__neon_x8);
26   }
27 
TEST(S16_VLSHIFT__NEON_X8,batch_div_8)28   TEST(S16_VLSHIFT__NEON_X8, batch_div_8) {
29     TEST_REQUIRES_ARM_NEON;
30     for (size_t batch = 16; batch < 80; batch += 8) {
31       VLShiftMicrokernelTester()
32         .batch(batch)
33         .Test(xnn_s16_vlshift_ukernel__neon_x8);
34     }
35   }
36 
TEST(S16_VLSHIFT__NEON_X8,batch_lt_8)37   TEST(S16_VLSHIFT__NEON_X8, batch_lt_8) {
38     TEST_REQUIRES_ARM_NEON;
39     for (size_t batch = 1; batch < 8; batch++) {
40       VLShiftMicrokernelTester()
41         .batch(batch)
42         .Test(xnn_s16_vlshift_ukernel__neon_x8);
43     }
44   }
45 
TEST(S16_VLSHIFT__NEON_X8,batch_gt_8)46   TEST(S16_VLSHIFT__NEON_X8, batch_gt_8) {
47     TEST_REQUIRES_ARM_NEON;
48     for (size_t batch = 9; batch < 16; batch++) {
49       VLShiftMicrokernelTester()
50         .batch(batch)
51         .Test(xnn_s16_vlshift_ukernel__neon_x8);
52     }
53   }
54 
TEST(S16_VLSHIFT__NEON_X8,inplace)55   TEST(S16_VLSHIFT__NEON_X8, inplace) {
56     TEST_REQUIRES_ARM_NEON;
57     for (size_t batch = 1; batch <= 40; batch += 7) {
58       VLShiftMicrokernelTester()
59         .batch(batch)
60         .inplace(true)
61         .iterations(1)
62         .Test(xnn_s16_vlshift_ukernel__neon_x8);
63     }
64   }
65 
TEST(S16_VLSHIFT__NEON_X8,shift)66   TEST(S16_VLSHIFT__NEON_X8, shift) {
67     TEST_REQUIRES_ARM_NEON;
68     for (uint32_t shift = 0; shift < 16; shift++) {
69       VLShiftMicrokernelTester()
70         .batch(8)
71         .shift(shift)
72         .Test(xnn_s16_vlshift_ukernel__neon_x8);
73     }
74   }
75 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
76 
77 
78 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_VLSHIFT__NEON_X16,batch_eq_16)79   TEST(S16_VLSHIFT__NEON_X16, batch_eq_16) {
80     TEST_REQUIRES_ARM_NEON;
81     VLShiftMicrokernelTester()
82       .batch(16)
83       .Test(xnn_s16_vlshift_ukernel__neon_x16);
84   }
85 
TEST(S16_VLSHIFT__NEON_X16,batch_div_16)86   TEST(S16_VLSHIFT__NEON_X16, batch_div_16) {
87     TEST_REQUIRES_ARM_NEON;
88     for (size_t batch = 32; batch < 160; batch += 16) {
89       VLShiftMicrokernelTester()
90         .batch(batch)
91         .Test(xnn_s16_vlshift_ukernel__neon_x16);
92     }
93   }
94 
TEST(S16_VLSHIFT__NEON_X16,batch_lt_16)95   TEST(S16_VLSHIFT__NEON_X16, batch_lt_16) {
96     TEST_REQUIRES_ARM_NEON;
97     for (size_t batch = 1; batch < 16; batch++) {
98       VLShiftMicrokernelTester()
99         .batch(batch)
100         .Test(xnn_s16_vlshift_ukernel__neon_x16);
101     }
102   }
103 
TEST(S16_VLSHIFT__NEON_X16,batch_gt_16)104   TEST(S16_VLSHIFT__NEON_X16, batch_gt_16) {
105     TEST_REQUIRES_ARM_NEON;
106     for (size_t batch = 17; batch < 32; batch++) {
107       VLShiftMicrokernelTester()
108         .batch(batch)
109         .Test(xnn_s16_vlshift_ukernel__neon_x16);
110     }
111   }
112 
TEST(S16_VLSHIFT__NEON_X16,inplace)113   TEST(S16_VLSHIFT__NEON_X16, inplace) {
114     TEST_REQUIRES_ARM_NEON;
115     for (size_t batch = 1; batch <= 80; batch += 15) {
116       VLShiftMicrokernelTester()
117         .batch(batch)
118         .inplace(true)
119         .iterations(1)
120         .Test(xnn_s16_vlshift_ukernel__neon_x16);
121     }
122   }
123 
TEST(S16_VLSHIFT__NEON_X16,shift)124   TEST(S16_VLSHIFT__NEON_X16, shift) {
125     TEST_REQUIRES_ARM_NEON;
126     for (uint32_t shift = 0; shift < 16; shift++) {
127       VLShiftMicrokernelTester()
128         .batch(16)
129         .shift(shift)
130         .Test(xnn_s16_vlshift_ukernel__neon_x16);
131     }
132   }
133 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
134 
135 
136 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_VLSHIFT__NEON_X24,batch_eq_24)137   TEST(S16_VLSHIFT__NEON_X24, batch_eq_24) {
138     TEST_REQUIRES_ARM_NEON;
139     VLShiftMicrokernelTester()
140       .batch(24)
141       .Test(xnn_s16_vlshift_ukernel__neon_x24);
142   }
143 
TEST(S16_VLSHIFT__NEON_X24,batch_div_24)144   TEST(S16_VLSHIFT__NEON_X24, batch_div_24) {
145     TEST_REQUIRES_ARM_NEON;
146     for (size_t batch = 48; batch < 240; batch += 24) {
147       VLShiftMicrokernelTester()
148         .batch(batch)
149         .Test(xnn_s16_vlshift_ukernel__neon_x24);
150     }
151   }
152 
TEST(S16_VLSHIFT__NEON_X24,batch_lt_24)153   TEST(S16_VLSHIFT__NEON_X24, batch_lt_24) {
154     TEST_REQUIRES_ARM_NEON;
155     for (size_t batch = 1; batch < 24; batch++) {
156       VLShiftMicrokernelTester()
157         .batch(batch)
158         .Test(xnn_s16_vlshift_ukernel__neon_x24);
159     }
160   }
161 
TEST(S16_VLSHIFT__NEON_X24,batch_gt_24)162   TEST(S16_VLSHIFT__NEON_X24, batch_gt_24) {
163     TEST_REQUIRES_ARM_NEON;
164     for (size_t batch = 25; batch < 48; batch++) {
165       VLShiftMicrokernelTester()
166         .batch(batch)
167         .Test(xnn_s16_vlshift_ukernel__neon_x24);
168     }
169   }
170 
TEST(S16_VLSHIFT__NEON_X24,inplace)171   TEST(S16_VLSHIFT__NEON_X24, inplace) {
172     TEST_REQUIRES_ARM_NEON;
173     for (size_t batch = 1; batch <= 120; batch += 23) {
174       VLShiftMicrokernelTester()
175         .batch(batch)
176         .inplace(true)
177         .iterations(1)
178         .Test(xnn_s16_vlshift_ukernel__neon_x24);
179     }
180   }
181 
TEST(S16_VLSHIFT__NEON_X24,shift)182   TEST(S16_VLSHIFT__NEON_X24, shift) {
183     TEST_REQUIRES_ARM_NEON;
184     for (uint32_t shift = 0; shift < 16; shift++) {
185       VLShiftMicrokernelTester()
186         .batch(24)
187         .shift(shift)
188         .Test(xnn_s16_vlshift_ukernel__neon_x24);
189     }
190   }
191 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
192 
193 
194 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(S16_VLSHIFT__NEON_X32,batch_eq_32)195   TEST(S16_VLSHIFT__NEON_X32, batch_eq_32) {
196     TEST_REQUIRES_ARM_NEON;
197     VLShiftMicrokernelTester()
198       .batch(32)
199       .Test(xnn_s16_vlshift_ukernel__neon_x32);
200   }
201 
TEST(S16_VLSHIFT__NEON_X32,batch_div_32)202   TEST(S16_VLSHIFT__NEON_X32, batch_div_32) {
203     TEST_REQUIRES_ARM_NEON;
204     for (size_t batch = 64; batch < 320; batch += 32) {
205       VLShiftMicrokernelTester()
206         .batch(batch)
207         .Test(xnn_s16_vlshift_ukernel__neon_x32);
208     }
209   }
210 
TEST(S16_VLSHIFT__NEON_X32,batch_lt_32)211   TEST(S16_VLSHIFT__NEON_X32, batch_lt_32) {
212     TEST_REQUIRES_ARM_NEON;
213     for (size_t batch = 1; batch < 32; batch++) {
214       VLShiftMicrokernelTester()
215         .batch(batch)
216         .Test(xnn_s16_vlshift_ukernel__neon_x32);
217     }
218   }
219 
TEST(S16_VLSHIFT__NEON_X32,batch_gt_32)220   TEST(S16_VLSHIFT__NEON_X32, batch_gt_32) {
221     TEST_REQUIRES_ARM_NEON;
222     for (size_t batch = 33; batch < 64; batch++) {
223       VLShiftMicrokernelTester()
224         .batch(batch)
225         .Test(xnn_s16_vlshift_ukernel__neon_x32);
226     }
227   }
228 
TEST(S16_VLSHIFT__NEON_X32,inplace)229   TEST(S16_VLSHIFT__NEON_X32, inplace) {
230     TEST_REQUIRES_ARM_NEON;
231     for (size_t batch = 1; batch <= 160; batch += 31) {
232       VLShiftMicrokernelTester()
233         .batch(batch)
234         .inplace(true)
235         .iterations(1)
236         .Test(xnn_s16_vlshift_ukernel__neon_x32);
237     }
238   }
239 
TEST(S16_VLSHIFT__NEON_X32,shift)240   TEST(S16_VLSHIFT__NEON_X32, shift) {
241     TEST_REQUIRES_ARM_NEON;
242     for (uint32_t shift = 0; shift < 16; shift++) {
243       VLShiftMicrokernelTester()
244         .batch(32)
245         .shift(shift)
246         .Test(xnn_s16_vlshift_ukernel__neon_x32);
247     }
248   }
249 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
250 
251 
TEST(S16_VLSHIFT__SCALAR_X1,batch_eq_1)252 TEST(S16_VLSHIFT__SCALAR_X1, batch_eq_1) {
253   VLShiftMicrokernelTester()
254     .batch(1)
255     .Test(xnn_s16_vlshift_ukernel__scalar_x1);
256 }
257 
TEST(S16_VLSHIFT__SCALAR_X1,batch_gt_1)258 TEST(S16_VLSHIFT__SCALAR_X1, batch_gt_1) {
259   for (size_t batch = 2; batch < 10; batch++) {
260     VLShiftMicrokernelTester()
261       .batch(batch)
262       .Test(xnn_s16_vlshift_ukernel__scalar_x1);
263   }
264 }
265 
TEST(S16_VLSHIFT__SCALAR_X1,inplace)266 TEST(S16_VLSHIFT__SCALAR_X1, inplace) {
267   for (size_t batch = 1; batch <= 5; batch += 1) {
268     VLShiftMicrokernelTester()
269       .batch(batch)
270       .inplace(true)
271       .iterations(1)
272       .Test(xnn_s16_vlshift_ukernel__scalar_x1);
273   }
274 }
275 
TEST(S16_VLSHIFT__SCALAR_X1,shift)276 TEST(S16_VLSHIFT__SCALAR_X1, shift) {
277   for (uint32_t shift = 0; shift < 16; shift++) {
278     VLShiftMicrokernelTester()
279       .batch(1)
280       .shift(shift)
281       .Test(xnn_s16_vlshift_ukernel__scalar_x1);
282   }
283 }
284 
285 
TEST(S16_VLSHIFT__SCALAR_X2,batch_eq_2)286 TEST(S16_VLSHIFT__SCALAR_X2, batch_eq_2) {
287   VLShiftMicrokernelTester()
288     .batch(2)
289     .Test(xnn_s16_vlshift_ukernel__scalar_x2);
290 }
291 
TEST(S16_VLSHIFT__SCALAR_X2,batch_div_2)292 TEST(S16_VLSHIFT__SCALAR_X2, batch_div_2) {
293   for (size_t batch = 4; batch < 20; batch += 2) {
294     VLShiftMicrokernelTester()
295       .batch(batch)
296       .Test(xnn_s16_vlshift_ukernel__scalar_x2);
297   }
298 }
299 
TEST(S16_VLSHIFT__SCALAR_X2,batch_lt_2)300 TEST(S16_VLSHIFT__SCALAR_X2, batch_lt_2) {
301   for (size_t batch = 1; batch < 2; batch++) {
302     VLShiftMicrokernelTester()
303       .batch(batch)
304       .Test(xnn_s16_vlshift_ukernel__scalar_x2);
305   }
306 }
307 
TEST(S16_VLSHIFT__SCALAR_X2,batch_gt_2)308 TEST(S16_VLSHIFT__SCALAR_X2, batch_gt_2) {
309   for (size_t batch = 3; batch < 4; batch++) {
310     VLShiftMicrokernelTester()
311       .batch(batch)
312       .Test(xnn_s16_vlshift_ukernel__scalar_x2);
313   }
314 }
315 
TEST(S16_VLSHIFT__SCALAR_X2,inplace)316 TEST(S16_VLSHIFT__SCALAR_X2, inplace) {
317   for (size_t batch = 1; batch <= 10; batch += 1) {
318     VLShiftMicrokernelTester()
319       .batch(batch)
320       .inplace(true)
321       .iterations(1)
322       .Test(xnn_s16_vlshift_ukernel__scalar_x2);
323   }
324 }
325 
TEST(S16_VLSHIFT__SCALAR_X2,shift)326 TEST(S16_VLSHIFT__SCALAR_X2, shift) {
327   for (uint32_t shift = 0; shift < 16; shift++) {
328     VLShiftMicrokernelTester()
329       .batch(2)
330       .shift(shift)
331       .Test(xnn_s16_vlshift_ukernel__scalar_x2);
332   }
333 }
334 
335 
TEST(S16_VLSHIFT__SCALAR_X3,batch_eq_3)336 TEST(S16_VLSHIFT__SCALAR_X3, batch_eq_3) {
337   VLShiftMicrokernelTester()
338     .batch(3)
339     .Test(xnn_s16_vlshift_ukernel__scalar_x3);
340 }
341 
TEST(S16_VLSHIFT__SCALAR_X3,batch_div_3)342 TEST(S16_VLSHIFT__SCALAR_X3, batch_div_3) {
343   for (size_t batch = 6; batch < 30; batch += 3) {
344     VLShiftMicrokernelTester()
345       .batch(batch)
346       .Test(xnn_s16_vlshift_ukernel__scalar_x3);
347   }
348 }
349 
TEST(S16_VLSHIFT__SCALAR_X3,batch_lt_3)350 TEST(S16_VLSHIFT__SCALAR_X3, batch_lt_3) {
351   for (size_t batch = 1; batch < 3; batch++) {
352     VLShiftMicrokernelTester()
353       .batch(batch)
354       .Test(xnn_s16_vlshift_ukernel__scalar_x3);
355   }
356 }
357 
TEST(S16_VLSHIFT__SCALAR_X3,batch_gt_3)358 TEST(S16_VLSHIFT__SCALAR_X3, batch_gt_3) {
359   for (size_t batch = 4; batch < 6; batch++) {
360     VLShiftMicrokernelTester()
361       .batch(batch)
362       .Test(xnn_s16_vlshift_ukernel__scalar_x3);
363   }
364 }
365 
TEST(S16_VLSHIFT__SCALAR_X3,inplace)366 TEST(S16_VLSHIFT__SCALAR_X3, inplace) {
367   for (size_t batch = 1; batch <= 15; batch += 2) {
368     VLShiftMicrokernelTester()
369       .batch(batch)
370       .inplace(true)
371       .iterations(1)
372       .Test(xnn_s16_vlshift_ukernel__scalar_x3);
373   }
374 }
375 
TEST(S16_VLSHIFT__SCALAR_X3,shift)376 TEST(S16_VLSHIFT__SCALAR_X3, shift) {
377   for (uint32_t shift = 0; shift < 16; shift++) {
378     VLShiftMicrokernelTester()
379       .batch(3)
380       .shift(shift)
381       .Test(xnn_s16_vlshift_ukernel__scalar_x3);
382   }
383 }
384 
385 
TEST(S16_VLSHIFT__SCALAR_X4,batch_eq_4)386 TEST(S16_VLSHIFT__SCALAR_X4, batch_eq_4) {
387   VLShiftMicrokernelTester()
388     .batch(4)
389     .Test(xnn_s16_vlshift_ukernel__scalar_x4);
390 }
391 
TEST(S16_VLSHIFT__SCALAR_X4,batch_div_4)392 TEST(S16_VLSHIFT__SCALAR_X4, batch_div_4) {
393   for (size_t batch = 8; batch < 40; batch += 4) {
394     VLShiftMicrokernelTester()
395       .batch(batch)
396       .Test(xnn_s16_vlshift_ukernel__scalar_x4);
397   }
398 }
399 
TEST(S16_VLSHIFT__SCALAR_X4,batch_lt_4)400 TEST(S16_VLSHIFT__SCALAR_X4, batch_lt_4) {
401   for (size_t batch = 1; batch < 4; batch++) {
402     VLShiftMicrokernelTester()
403       .batch(batch)
404       .Test(xnn_s16_vlshift_ukernel__scalar_x4);
405   }
406 }
407 
TEST(S16_VLSHIFT__SCALAR_X4,batch_gt_4)408 TEST(S16_VLSHIFT__SCALAR_X4, batch_gt_4) {
409   for (size_t batch = 5; batch < 8; batch++) {
410     VLShiftMicrokernelTester()
411       .batch(batch)
412       .Test(xnn_s16_vlshift_ukernel__scalar_x4);
413   }
414 }
415 
TEST(S16_VLSHIFT__SCALAR_X4,inplace)416 TEST(S16_VLSHIFT__SCALAR_X4, inplace) {
417   for (size_t batch = 1; batch <= 20; batch += 3) {
418     VLShiftMicrokernelTester()
419       .batch(batch)
420       .inplace(true)
421       .iterations(1)
422       .Test(xnn_s16_vlshift_ukernel__scalar_x4);
423   }
424 }
425 
TEST(S16_VLSHIFT__SCALAR_X4,shift)426 TEST(S16_VLSHIFT__SCALAR_X4, shift) {
427   for (uint32_t shift = 0; shift < 16; shift++) {
428     VLShiftMicrokernelTester()
429       .batch(4)
430       .shift(shift)
431       .Test(xnn_s16_vlshift_ukernel__scalar_x4);
432   }
433 }
434