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