blob: 729bcba1ad2d4a3ee355f9c50dfaabd75187b20c [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -07001// Copyright 2019 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
XNNPACK Teamb455b122019-09-27 18:10:33 -07006#include <gtest/gtest.h>
7
Marat Dukhan1dadbf72019-10-01 10:46:20 -07008#include <xnnpack/common.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -07009#include <xnnpack/isa-checks.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070010
Marat Dukhan1dadbf72019-10-01 10:46:20 -070011#include <xnnpack/zip.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070012#include "zip-microkernel-tester.h"
13
14
Marat Dukhan1dadbf72019-10-01 10:46:20 -070015#if XNN_ARCH_ARM || XNN_ARCH_ARM64
XNNPACK Teamb455b122019-09-27 18:10:33 -070016 TEST(X32_ZIP_X2__NEON, n_eq_4) {
17 TEST_REQUIRES_ARM_NEON;
18 ZipMicrokernelTester()
19 .n(4)
20 .g(2)
21 .Test(xnn_x32_zip_x2_ukernel__neon);
22 }
23
24 TEST(X32_ZIP_X2__NEON, n_div_4) {
25 TEST_REQUIRES_ARM_NEON;
26 for (size_t n = 4; n < 64; n += 4) {
27 ZipMicrokernelTester()
28 .n(n)
29 .g(2)
30 .Test(xnn_x32_zip_x2_ukernel__neon);
31 }
32 }
33
34 TEST(X32_ZIP_X2__NEON, n_gt_4) {
35 TEST_REQUIRES_ARM_NEON;
36 for (size_t n = 5; n < 8; n++) {
37 ZipMicrokernelTester()
38 .n(n)
39 .g(2)
40 .Test(xnn_x32_zip_x2_ukernel__neon);
41 }
42 }
43
44 TEST(X32_ZIP_X2__NEON, n_lt_4) {
45 TEST_REQUIRES_ARM_NEON;
46 for (size_t n = 1; n < 4; n++) {
47 ZipMicrokernelTester()
48 .n(n)
49 .g(2)
50 .Test(xnn_x32_zip_x2_ukernel__neon);
51 }
52 }
53
54 TEST(X32_ZIP_X3__NEON, n_eq_4) {
55 TEST_REQUIRES_ARM_NEON;
56 ZipMicrokernelTester()
57 .n(4)
58 .g(3)
59 .Test(xnn_x32_zip_x3_ukernel__neon);
60 }
61
62 TEST(X32_ZIP_X3__NEON, n_div_4) {
63 TEST_REQUIRES_ARM_NEON;
64 for (size_t n = 4; n < 64; n += 4) {
65 ZipMicrokernelTester()
66 .n(n)
67 .g(3)
68 .Test(xnn_x32_zip_x3_ukernel__neon);
69 }
70 }
71
72 TEST(X32_ZIP_X3__NEON, n_gt_4) {
73 TEST_REQUIRES_ARM_NEON;
74 for (size_t n = 5; n < 8; n++) {
75 ZipMicrokernelTester()
76 .n(n)
77 .g(3)
78 .Test(xnn_x32_zip_x3_ukernel__neon);
79 }
80 }
81
82 TEST(X32_ZIP_X3__NEON, n_lt_4) {
83 TEST_REQUIRES_ARM_NEON;
84 for (size_t n = 1; n < 4; n++) {
85 ZipMicrokernelTester()
86 .n(n)
87 .g(3)
88 .Test(xnn_x32_zip_x3_ukernel__neon);
89 }
90 }
91
92 TEST(X32_ZIP_X4__NEON, n_eq_4) {
93 TEST_REQUIRES_ARM_NEON;
94 ZipMicrokernelTester()
95 .n(4)
96 .g(4)
97 .Test(xnn_x32_zip_x4_ukernel__neon);
98 }
99
100 TEST(X32_ZIP_X4__NEON, n_div_4) {
101 TEST_REQUIRES_ARM_NEON;
102 for (size_t n = 4; n < 64; n += 4) {
103 ZipMicrokernelTester()
104 .n(n)
105 .g(4)
106 .Test(xnn_x32_zip_x4_ukernel__neon);
107 }
108 }
109
110 TEST(X32_ZIP_X4__NEON, n_gt_4) {
111 TEST_REQUIRES_ARM_NEON;
112 for (size_t n = 5; n < 8; n++) {
113 ZipMicrokernelTester()
114 .n(n)
115 .g(4)
116 .Test(xnn_x32_zip_x4_ukernel__neon);
117 }
118 }
119
120 TEST(X32_ZIP_X4__NEON, n_lt_4) {
121 TEST_REQUIRES_ARM_NEON;
122 for (size_t n = 1; n < 4; n++) {
123 ZipMicrokernelTester()
124 .n(n)
125 .g(4)
126 .Test(xnn_x32_zip_x4_ukernel__neon);
127 }
128 }
129
130 TEST(X32_ZIP_XM__NEON, n_eq_4_m_eq_4) {
131 TEST_REQUIRES_ARM_NEON;
132 ZipMicrokernelTester()
133 .n(4)
134 .g(4)
135 .Test(xnn_x32_zip_xm_ukernel__neon);
136 }
137
138 TEST(X32_ZIP_XM__NEON, n_eq_4_m_div_4) {
139 TEST_REQUIRES_ARM_NEON;
140 for (size_t g = 4; g < 32; g += 4) {
141 ZipMicrokernelTester()
142 .n(4)
143 .g(g)
144 .Test(xnn_x32_zip_xm_ukernel__neon);
145 }
146 }
147
148 TEST(X32_ZIP_XM__NEON, n_eq_4_m_gt_4) {
149 TEST_REQUIRES_ARM_NEON;
150 for (size_t g = 5; g < 8; g++) {
151 ZipMicrokernelTester()
152 .n(4)
153 .g(g)
154 .Test(xnn_x32_zip_xm_ukernel__neon);
155 }
156 }
157
158 TEST(X32_ZIP_XM__NEON, n_div_4_m_eq_4) {
159 TEST_REQUIRES_ARM_NEON;
160 for (size_t n = 4; n < 64; n += 4) {
161 ZipMicrokernelTester()
162 .n(n)
163 .g(4)
164 .Test(xnn_x32_zip_xm_ukernel__neon);
165 }
166 }
167
168 TEST(X32_ZIP_XM__NEON, n_div_4_m_div_4) {
169 TEST_REQUIRES_ARM_NEON;
170 for (size_t n = 4; n < 64; n += 4) {
171 for (size_t g = 4; g < 32; g += 4) {
172 ZipMicrokernelTester()
173 .n(n)
174 .g(g)
175 .Test(xnn_x32_zip_xm_ukernel__neon);
176 }
177 }
178 }
179
180 TEST(X32_ZIP_XM__NEON, n_div_4_m_gt_4) {
181 TEST_REQUIRES_ARM_NEON;
182 for (size_t n = 4; n < 64; n += 4) {
183 for (size_t g = 5; g < 8; g++) {
184 ZipMicrokernelTester()
185 .n(n)
186 .g(g)
187 .Test(xnn_x32_zip_xm_ukernel__neon);
188 }
189 }
190 }
191
192 TEST(X32_ZIP_XM__NEON, n_gt_4_m_eq_4) {
193 TEST_REQUIRES_ARM_NEON;
194 for (size_t n = 5; n < 8; n++) {
195 ZipMicrokernelTester()
196 .n(n)
197 .g(4)
198 .Test(xnn_x32_zip_xm_ukernel__neon);
199 }
200 }
201
202 TEST(X32_ZIP_XM__NEON, n_gt_4_m_div_4) {
203 TEST_REQUIRES_ARM_NEON;
204 for (size_t n = 5; n < 8; n++) {
205 for (size_t g = 4; g < 32; g += 4) {
206 ZipMicrokernelTester()
207 .n(n)
208 .g(g)
209 .Test(xnn_x32_zip_xm_ukernel__neon);
210 }
211 }
212 }
213
214 TEST(X32_ZIP_XM__NEON, n_gt_4_m_gt_4) {
215 TEST_REQUIRES_ARM_NEON;
216 for (size_t n = 5; n < 8; n++) {
217 for (size_t g = 5; g < 8; g++) {
218 ZipMicrokernelTester()
219 .n(n)
220 .g(g)
221 .Test(xnn_x32_zip_xm_ukernel__neon);
222 }
223 }
224 }
225
226 TEST(X32_ZIP_XM__NEON, n_lt_4_m_eq_4) {
227 TEST_REQUIRES_ARM_NEON;
228 for (size_t n = 1; n < 4; n++) {
229 ZipMicrokernelTester()
230 .n(n)
231 .g(4)
232 .Test(xnn_x32_zip_xm_ukernel__neon);
233 }
234 }
235
236 TEST(X32_ZIP_XM__NEON, n_lt_4_m_div_4) {
237 TEST_REQUIRES_ARM_NEON;
238 for (size_t n = 1; n < 4; n++) {
239 for (size_t g = 4; g < 32; g += 4) {
240 ZipMicrokernelTester()
241 .n(n)
242 .g(g)
243 .Test(xnn_x32_zip_xm_ukernel__neon);
244 }
245 }
246 }
247
248 TEST(X32_ZIP_XM__NEON, n_lt_4_m_gt_4) {
249 TEST_REQUIRES_ARM_NEON;
250 for (size_t n = 1; n < 4; n++) {
251 for (size_t g = 5; g < 8; g++) {
252 ZipMicrokernelTester()
253 .n(n)
254 .g(g)
255 .Test(xnn_x32_zip_xm_ukernel__neon);
256 }
257 }
258 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -0700259#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
XNNPACK Teamb455b122019-09-27 18:10:33 -0700260
Marat Dukhan1dadbf72019-10-01 10:46:20 -0700261#if XNN_ARCH_X86 || XNN_ARCH_X86_64
XNNPACK Teamb455b122019-09-27 18:10:33 -0700262 TEST(X32_ZIP_X2__SSE2, n_eq_4) {
263 TEST_REQUIRES_X86_SSE2;
264 ZipMicrokernelTester()
265 .n(4)
266 .g(2)
267 .Test(xnn_x32_zip_x2_ukernel__sse2);
268 }
269
270 TEST(X32_ZIP_X2__SSE2, n_div_4) {
271 TEST_REQUIRES_X86_SSE2;
272 for (size_t n = 4; n < 64; n += 4) {
273 ZipMicrokernelTester()
274 .n(n)
275 .g(2)
276 .Test(xnn_x32_zip_x2_ukernel__sse2);
277 }
278 }
279
280 TEST(X32_ZIP_X2__SSE2, n_gt_4) {
281 TEST_REQUIRES_X86_SSE2;
282 for (size_t n = 5; n < 8; n++) {
283 ZipMicrokernelTester()
284 .n(n)
285 .g(2)
286 .Test(xnn_x32_zip_x2_ukernel__sse2);
287 }
288 }
289
290 TEST(X32_ZIP_X2__SSE2, n_lt_4) {
291 TEST_REQUIRES_X86_SSE2;
292 for (size_t n = 1; n < 4; n++) {
293 ZipMicrokernelTester()
294 .n(n)
295 .g(2)
296 .Test(xnn_x32_zip_x2_ukernel__sse2);
297 }
298 }
299
300 TEST(X32_ZIP_X3__SSE2, n_eq_4) {
301 TEST_REQUIRES_X86_SSE2;
302 ZipMicrokernelTester()
303 .n(4)
304 .g(3)
305 .Test(xnn_x32_zip_x3_ukernel__sse2);
306 }
307
308 TEST(X32_ZIP_X3__SSE2, n_div_4) {
309 TEST_REQUIRES_X86_SSE2;
310 for (size_t n = 4; n < 64; n += 4) {
311 ZipMicrokernelTester()
312 .n(n)
313 .g(3)
314 .Test(xnn_x32_zip_x3_ukernel__sse2);
315 }
316 }
317
318 TEST(X32_ZIP_X3__SSE2, n_gt_4) {
319 TEST_REQUIRES_X86_SSE2;
320 for (size_t n = 5; n < 8; n++) {
321 ZipMicrokernelTester()
322 .n(n)
323 .g(3)
324 .Test(xnn_x32_zip_x3_ukernel__sse2);
325 }
326 }
327
328 TEST(X32_ZIP_X3__SSE2, n_lt_4) {
329 TEST_REQUIRES_X86_SSE2;
330 for (size_t n = 1; n < 4; n++) {
331 ZipMicrokernelTester()
332 .n(n)
333 .g(3)
334 .Test(xnn_x32_zip_x3_ukernel__sse2);
335 }
336 }
337
338 TEST(X32_ZIP_X4__SSE2, n_eq_4) {
339 TEST_REQUIRES_X86_SSE2;
340 ZipMicrokernelTester()
341 .n(4)
342 .g(4)
343 .Test(xnn_x32_zip_x4_ukernel__sse2);
344 }
345
346 TEST(X32_ZIP_X4__SSE2, n_div_4) {
347 TEST_REQUIRES_X86_SSE2;
348 for (size_t n = 4; n < 64; n += 4) {
349 ZipMicrokernelTester()
350 .n(n)
351 .g(4)
352 .Test(xnn_x32_zip_x4_ukernel__sse2);
353 }
354 }
355
356 TEST(X32_ZIP_X4__SSE2, n_gt_4) {
357 TEST_REQUIRES_X86_SSE2;
358 for (size_t n = 5; n < 8; n++) {
359 ZipMicrokernelTester()
360 .n(n)
361 .g(4)
362 .Test(xnn_x32_zip_x4_ukernel__sse2);
363 }
364 }
365
366 TEST(X32_ZIP_X4__SSE2, n_lt_4) {
367 TEST_REQUIRES_X86_SSE2;
368 for (size_t n = 1; n < 4; n++) {
369 ZipMicrokernelTester()
370 .n(n)
371 .g(4)
372 .Test(xnn_x32_zip_x4_ukernel__sse2);
373 }
374 }
375
376 TEST(X32_ZIP_XM__SSE2, n_eq_4_m_eq_4) {
377 TEST_REQUIRES_X86_SSE2;
378 ZipMicrokernelTester()
379 .n(4)
380 .g(4)
381 .Test(xnn_x32_zip_xm_ukernel__sse2);
382 }
383
384 TEST(X32_ZIP_XM__SSE2, n_eq_4_m_div_4) {
385 TEST_REQUIRES_X86_SSE2;
386 for (size_t g = 4; g < 32; g += 4) {
387 ZipMicrokernelTester()
388 .n(4)
389 .g(g)
390 .Test(xnn_x32_zip_xm_ukernel__sse2);
391 }
392 }
393
394 TEST(X32_ZIP_XM__SSE2, n_eq_4_m_gt_4) {
395 TEST_REQUIRES_X86_SSE2;
396 for (size_t g = 5; g < 8; g++) {
397 ZipMicrokernelTester()
398 .n(4)
399 .g(g)
400 .Test(xnn_x32_zip_xm_ukernel__sse2);
401 }
402 }
403
404 TEST(X32_ZIP_XM__SSE2, n_div_4_m_eq_4) {
405 TEST_REQUIRES_X86_SSE2;
406 for (size_t n = 4; n < 64; n += 4) {
407 ZipMicrokernelTester()
408 .n(n)
409 .g(4)
410 .Test(xnn_x32_zip_xm_ukernel__sse2);
411 }
412 }
413
414 TEST(X32_ZIP_XM__SSE2, n_div_4_m_div_4) {
415 TEST_REQUIRES_X86_SSE2;
416 for (size_t n = 4; n < 64; n += 4) {
417 for (size_t g = 4; g < 32; g += 4) {
418 ZipMicrokernelTester()
419 .n(n)
420 .g(g)
421 .Test(xnn_x32_zip_xm_ukernel__sse2);
422 }
423 }
424 }
425
426 TEST(X32_ZIP_XM__SSE2, n_div_4_m_gt_4) {
427 TEST_REQUIRES_X86_SSE2;
428 for (size_t n = 4; n < 64; n += 4) {
429 for (size_t g = 5; g < 8; g++) {
430 ZipMicrokernelTester()
431 .n(n)
432 .g(g)
433 .Test(xnn_x32_zip_xm_ukernel__sse2);
434 }
435 }
436 }
437
438 TEST(X32_ZIP_XM__SSE2, n_gt_4_m_eq_4) {
439 TEST_REQUIRES_X86_SSE2;
440 for (size_t n = 5; n < 8; n++) {
441 ZipMicrokernelTester()
442 .n(n)
443 .g(4)
444 .Test(xnn_x32_zip_xm_ukernel__sse2);
445 }
446 }
447
448 TEST(X32_ZIP_XM__SSE2, n_gt_4_m_div_4) {
449 TEST_REQUIRES_X86_SSE2;
450 for (size_t n = 5; n < 8; n++) {
451 for (size_t g = 4; g < 32; g += 4) {
452 ZipMicrokernelTester()
453 .n(n)
454 .g(g)
455 .Test(xnn_x32_zip_xm_ukernel__sse2);
456 }
457 }
458 }
459
460 TEST(X32_ZIP_XM__SSE2, n_gt_4_m_gt_4) {
461 TEST_REQUIRES_X86_SSE2;
462 for (size_t n = 5; n < 8; n++) {
463 for (size_t g = 5; g < 8; g++) {
464 ZipMicrokernelTester()
465 .n(n)
466 .g(g)
467 .Test(xnn_x32_zip_xm_ukernel__sse2);
468 }
469 }
470 }
471
472 TEST(X32_ZIP_XM__SSE2, n_lt_4_m_eq_4) {
473 TEST_REQUIRES_X86_SSE2;
474 for (size_t n = 1; n < 4; n++) {
475 ZipMicrokernelTester()
476 .n(n)
477 .g(4)
478 .Test(xnn_x32_zip_xm_ukernel__sse2);
479 }
480 }
481
482 TEST(X32_ZIP_XM__SSE2, n_lt_4_m_div_4) {
483 TEST_REQUIRES_X86_SSE2;
484 for (size_t n = 1; n < 4; n++) {
485 for (size_t g = 4; g < 32; g += 4) {
486 ZipMicrokernelTester()
487 .n(n)
488 .g(g)
489 .Test(xnn_x32_zip_xm_ukernel__sse2);
490 }
491 }
492 }
493
494 TEST(X32_ZIP_XM__SSE2, n_lt_4_m_gt_4) {
495 TEST_REQUIRES_X86_SSE2;
496 for (size_t n = 1; n < 4; n++) {
497 for (size_t g = 5; g < 8; g++) {
498 ZipMicrokernelTester()
499 .n(n)
500 .g(g)
501 .Test(xnn_x32_zip_xm_ukernel__sse2);
502 }
503 }
504 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -0700505#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
XNNPACK Teamb455b122019-09-27 18:10:33 -0700506
Marat Dukhan1dadbf72019-10-01 10:46:20 -0700507#if !XNN_ARCH_WASM && !XNN_ARCH_ASMJS
XNNPACK Teamb455b122019-09-27 18:10:33 -0700508 TEST(X32_ZIP_X2__PSIMD, n_eq_4) {
509 TEST_REQUIRES_PSIMD;
510 ZipMicrokernelTester()
511 .n(4)
512 .g(2)
513 .Test(xnn_x32_zip_x2_ukernel__psimd);
514 }
515
516 TEST(X32_ZIP_X2__PSIMD, n_div_4) {
517 TEST_REQUIRES_PSIMD;
518 for (size_t n = 4; n < 64; n += 4) {
519 ZipMicrokernelTester()
520 .n(n)
521 .g(2)
522 .Test(xnn_x32_zip_x2_ukernel__psimd);
523 }
524 }
525
526 TEST(X32_ZIP_X2__PSIMD, n_gt_4) {
527 TEST_REQUIRES_PSIMD;
528 for (size_t n = 5; n < 8; n++) {
529 ZipMicrokernelTester()
530 .n(n)
531 .g(2)
532 .Test(xnn_x32_zip_x2_ukernel__psimd);
533 }
534 }
535
536 TEST(X32_ZIP_X2__PSIMD, n_lt_4) {
537 TEST_REQUIRES_PSIMD;
538 for (size_t n = 1; n < 4; n++) {
539 ZipMicrokernelTester()
540 .n(n)
541 .g(2)
542 .Test(xnn_x32_zip_x2_ukernel__psimd);
543 }
544 }
545
546 TEST(X32_ZIP_X3__PSIMD, n_eq_4) {
547 TEST_REQUIRES_PSIMD;
548 ZipMicrokernelTester()
549 .n(4)
550 .g(3)
551 .Test(xnn_x32_zip_x3_ukernel__psimd);
552 }
553
554 TEST(X32_ZIP_X3__PSIMD, n_div_4) {
555 TEST_REQUIRES_PSIMD;
556 for (size_t n = 4; n < 64; n += 4) {
557 ZipMicrokernelTester()
558 .n(n)
559 .g(3)
560 .Test(xnn_x32_zip_x3_ukernel__psimd);
561 }
562 }
563
564 TEST(X32_ZIP_X3__PSIMD, n_gt_4) {
565 TEST_REQUIRES_PSIMD;
566 for (size_t n = 5; n < 8; n++) {
567 ZipMicrokernelTester()
568 .n(n)
569 .g(3)
570 .Test(xnn_x32_zip_x3_ukernel__psimd);
571 }
572 }
573
574 TEST(X32_ZIP_X3__PSIMD, n_lt_4) {
575 TEST_REQUIRES_PSIMD;
576 for (size_t n = 1; n < 4; n++) {
577 ZipMicrokernelTester()
578 .n(n)
579 .g(3)
580 .Test(xnn_x32_zip_x3_ukernel__psimd);
581 }
582 }
583
584 TEST(X32_ZIP_X4__PSIMD, n_eq_4) {
585 TEST_REQUIRES_PSIMD;
586 ZipMicrokernelTester()
587 .n(4)
588 .g(4)
589 .Test(xnn_x32_zip_x4_ukernel__psimd);
590 }
591
592 TEST(X32_ZIP_X4__PSIMD, n_div_4) {
593 TEST_REQUIRES_PSIMD;
594 for (size_t n = 4; n < 64; n += 4) {
595 ZipMicrokernelTester()
596 .n(n)
597 .g(4)
598 .Test(xnn_x32_zip_x4_ukernel__psimd);
599 }
600 }
601
602 TEST(X32_ZIP_X4__PSIMD, n_gt_4) {
603 TEST_REQUIRES_PSIMD;
604 for (size_t n = 5; n < 8; n++) {
605 ZipMicrokernelTester()
606 .n(n)
607 .g(4)
608 .Test(xnn_x32_zip_x4_ukernel__psimd);
609 }
610 }
611
612 TEST(X32_ZIP_X4__PSIMD, n_lt_4) {
613 TEST_REQUIRES_PSIMD;
614 for (size_t n = 1; n < 4; n++) {
615 ZipMicrokernelTester()
616 .n(n)
617 .g(4)
618 .Test(xnn_x32_zip_x4_ukernel__psimd);
619 }
620 }
621
622 TEST(X32_ZIP_XM__PSIMD, n_eq_4_m_eq_4) {
623 TEST_REQUIRES_PSIMD;
624 ZipMicrokernelTester()
625 .n(4)
626 .g(4)
627 .Test(xnn_x32_zip_xm_ukernel__psimd);
628 }
629
630 TEST(X32_ZIP_XM__PSIMD, n_eq_4_m_div_4) {
631 TEST_REQUIRES_PSIMD;
632 for (size_t g = 4; g < 32; g += 4) {
633 ZipMicrokernelTester()
634 .n(4)
635 .g(g)
636 .Test(xnn_x32_zip_xm_ukernel__psimd);
637 }
638 }
639
640 TEST(X32_ZIP_XM__PSIMD, n_eq_4_m_gt_4) {
641 TEST_REQUIRES_PSIMD;
642 for (size_t g = 5; g < 8; g++) {
643 ZipMicrokernelTester()
644 .n(4)
645 .g(g)
646 .Test(xnn_x32_zip_xm_ukernel__psimd);
647 }
648 }
649
650 TEST(X32_ZIP_XM__PSIMD, n_div_4_m_eq_4) {
651 TEST_REQUIRES_PSIMD;
652 for (size_t n = 4; n < 64; n += 4) {
653 ZipMicrokernelTester()
654 .n(n)
655 .g(4)
656 .Test(xnn_x32_zip_xm_ukernel__psimd);
657 }
658 }
659
660 TEST(X32_ZIP_XM__PSIMD, n_div_4_m_div_4) {
661 TEST_REQUIRES_PSIMD;
662 for (size_t n = 4; n < 64; n += 4) {
663 for (size_t g = 4; g < 32; g += 4) {
664 ZipMicrokernelTester()
665 .n(n)
666 .g(g)
667 .Test(xnn_x32_zip_xm_ukernel__psimd);
668 }
669 }
670 }
671
672 TEST(X32_ZIP_XM__PSIMD, n_div_4_m_gt_4) {
673 TEST_REQUIRES_PSIMD;
674 for (size_t n = 4; n < 64; n += 4) {
675 for (size_t g = 5; g < 8; g++) {
676 ZipMicrokernelTester()
677 .n(n)
678 .g(g)
679 .Test(xnn_x32_zip_xm_ukernel__psimd);
680 }
681 }
682 }
683
684 TEST(X32_ZIP_XM__PSIMD, n_gt_4_m_eq_4) {
685 TEST_REQUIRES_PSIMD;
686 for (size_t n = 5; n < 8; n++) {
687 ZipMicrokernelTester()
688 .n(n)
689 .g(4)
690 .Test(xnn_x32_zip_xm_ukernel__psimd);
691 }
692 }
693
694 TEST(X32_ZIP_XM__PSIMD, n_gt_4_m_div_4) {
695 TEST_REQUIRES_PSIMD;
696 for (size_t n = 5; n < 8; n++) {
697 for (size_t g = 4; g < 32; g += 4) {
698 ZipMicrokernelTester()
699 .n(n)
700 .g(g)
701 .Test(xnn_x32_zip_xm_ukernel__psimd);
702 }
703 }
704 }
705
706 TEST(X32_ZIP_XM__PSIMD, n_gt_4_m_gt_4) {
707 TEST_REQUIRES_PSIMD;
708 for (size_t n = 5; n < 8; n++) {
709 for (size_t g = 5; g < 8; g++) {
710 ZipMicrokernelTester()
711 .n(n)
712 .g(g)
713 .Test(xnn_x32_zip_xm_ukernel__psimd);
714 }
715 }
716 }
717
718 TEST(X32_ZIP_XM__PSIMD, n_lt_4_m_eq_4) {
719 TEST_REQUIRES_PSIMD;
720 for (size_t n = 1; n < 4; n++) {
721 ZipMicrokernelTester()
722 .n(n)
723 .g(4)
724 .Test(xnn_x32_zip_xm_ukernel__psimd);
725 }
726 }
727
728 TEST(X32_ZIP_XM__PSIMD, n_lt_4_m_div_4) {
729 TEST_REQUIRES_PSIMD;
730 for (size_t n = 1; n < 4; n++) {
731 for (size_t g = 4; g < 32; g += 4) {
732 ZipMicrokernelTester()
733 .n(n)
734 .g(g)
735 .Test(xnn_x32_zip_xm_ukernel__psimd);
736 }
737 }
738 }
739
740 TEST(X32_ZIP_XM__PSIMD, n_lt_4_m_gt_4) {
741 TEST_REQUIRES_PSIMD;
742 for (size_t n = 1; n < 4; n++) {
743 for (size_t g = 5; g < 8; g++) {
744 ZipMicrokernelTester()
745 .n(n)
746 .g(g)
747 .Test(xnn_x32_zip_xm_ukernel__psimd);
748 }
749 }
750 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -0700751#endif // !XNN_ARCH_WASM && !XNN_ARCH_ASMJS
XNNPACK Teamb455b122019-09-27 18:10:33 -0700752
753TEST(X32_ZIP_X2__SCALAR, n_eq_1) {
754 ZipMicrokernelTester()
755 .n(1)
756 .g(2)
757 .Test(xnn_x32_zip_x2_ukernel__scalar);
758}
759
760TEST(X32_ZIP_X2__SCALAR, n_gt_1) {
761 for (size_t n = 2; n < 8; n++) {
762 ZipMicrokernelTester()
763 .n(n)
764 .g(2)
765 .Test(xnn_x32_zip_x2_ukernel__scalar);
766 }
767}
768
769TEST(X32_ZIP_X3__SCALAR, n_eq_1) {
770 ZipMicrokernelTester()
771 .n(9)
772 .g(3)
773 .Test(xnn_x32_zip_x3_ukernel__scalar);
774}
775
776TEST(X32_ZIP_X3__SCALAR, n_gt_1) {
777 for (size_t n = 2; n < 8; n++) {
778 ZipMicrokernelTester()
779 .n(n)
780 .g(3)
781 .Test(xnn_x32_zip_x3_ukernel__scalar);
782 }
783}
784
785TEST(X32_ZIP_X4__SCALAR, n_eq_1) {
786 ZipMicrokernelTester()
787 .n(1)
788 .g(4)
789 .Test(xnn_x32_zip_x4_ukernel__scalar);
790}
791
792TEST(X32_ZIP_X4__SCALAR, n_gt_1) {
793 for (size_t n = 2; n < 8; n++) {
794 ZipMicrokernelTester()
795 .n(n)
796 .g(4)
797 .Test(xnn_x32_zip_x4_ukernel__scalar);
798 }
799}
800
801TEST(X32_ZIP_XM__SCALAR, n_eq_1_m_eq_4) {
802 ZipMicrokernelTester()
803 .n(1)
804 .g(4)
805 .Test(xnn_x32_zip_xm_ukernel__scalar);
806}
807
808TEST(X32_ZIP_XM__SCALAR, n_eq_1_m_div_4) {
809 for (size_t g = 4; g < 32; g += 4) {
810 ZipMicrokernelTester()
811 .n(1)
812 .g(g)
813 .Test(xnn_x32_zip_xm_ukernel__scalar);
814 }
815}
816
817TEST(X32_ZIP_XM__SCALAR, n_eq_1_m_gt_4) {
818 for (size_t g = 5; g < 8; g++) {
819 ZipMicrokernelTester()
820 .n(1)
821 .g(g)
822 .Test(xnn_x32_zip_xm_ukernel__scalar);
823 }
824}
825
826TEST(X32_ZIP_XM__SCALAR, n_gt_1_m_eq_4) {
827 for (size_t n = 2; n < 8; n++) {
828 ZipMicrokernelTester()
829 .n(n)
830 .g(4)
831 .Test(xnn_x32_zip_xm_ukernel__scalar);
832 }
833}
834
835TEST(X32_ZIP_XM__SCALAR, n_gt_1_m_div_4) {
836 for (size_t n = 2; n < 8; n++) {
837 for (size_t g = 4; g < 32; g += 4) {
838 ZipMicrokernelTester()
839 .n(n)
840 .g(g)
841 .Test(xnn_x32_zip_xm_ukernel__scalar);
842 }
843 }
844}
845
846TEST(X32_ZIP_XM__SCALAR, n_gt_1_m_gt_4) {
847 for (size_t n = 2; n < 8; n++) {
848 for (size_t g = 5; g < 8; g++) {
849 ZipMicrokernelTester()
850 .n(n)
851 .g(g)
852 .Test(xnn_x32_zip_xm_ukernel__scalar);
853 }
854 }
855}