xref: /aosp_15_r20/external/XNNPACK/test/x32-packx.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 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/x32-packx.yaml
8*4bdc9457SAndroid Build Coastguard Worker //   Generator: tools/generate-pack-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/packx.h>
17*4bdc9457SAndroid Build Coastguard Worker #include "pack-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(X32_PACKX_4X__NEON_ST4,k_eq_4)21*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, k_eq_4) {
22*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
23*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
24*4bdc9457SAndroid Build Coastguard Worker       .mr(4)
25*4bdc9457SAndroid Build Coastguard Worker       .m(4)
26*4bdc9457SAndroid Build Coastguard Worker       .k(4)
27*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_4x__neon_st4);
28*4bdc9457SAndroid Build Coastguard Worker   }
29*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__NEON_ST4,k_eq_4_subtile)30*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, k_eq_4_subtile) {
31*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
32*4bdc9457SAndroid Build Coastguard Worker     for (size_t m = 1; m <= 4; m++) {
33*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
34*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
35*4bdc9457SAndroid Build Coastguard Worker         .m(m)
36*4bdc9457SAndroid Build Coastguard Worker         .k(4)
37*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__neon_st4);
38*4bdc9457SAndroid Build Coastguard Worker     }
39*4bdc9457SAndroid Build Coastguard Worker   }
40*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__NEON_ST4,k_lt_4)41*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, k_lt_4) {
42*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
43*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k < 4; k++) {
44*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
45*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
46*4bdc9457SAndroid Build Coastguard Worker         .m(4)
47*4bdc9457SAndroid Build Coastguard Worker         .k(k)
48*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__neon_st4);
49*4bdc9457SAndroid Build Coastguard Worker     }
50*4bdc9457SAndroid Build Coastguard Worker   }
51*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__NEON_ST4,k_lt_4_subtile)52*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, k_lt_4_subtile) {
53*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
54*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k < 4; k++) {
55*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
56*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
57*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
58*4bdc9457SAndroid Build Coastguard Worker           .m(m)
59*4bdc9457SAndroid Build Coastguard Worker           .k(k)
60*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__neon_st4);
61*4bdc9457SAndroid Build Coastguard Worker       }
62*4bdc9457SAndroid Build Coastguard Worker     }
63*4bdc9457SAndroid Build Coastguard Worker   }
64*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__NEON_ST4,k_gt_4)65*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, k_gt_4) {
66*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
67*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 5; k < 8; k++) {
68*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
69*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
70*4bdc9457SAndroid Build Coastguard Worker         .m(4)
71*4bdc9457SAndroid Build Coastguard Worker         .k(k)
72*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__neon_st4);
73*4bdc9457SAndroid Build Coastguard Worker     }
74*4bdc9457SAndroid Build Coastguard Worker   }
75*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__NEON_ST4,k_gt_4_subtile)76*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, k_gt_4_subtile) {
77*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
78*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 5; k < 8; k++) {
79*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
80*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
81*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
82*4bdc9457SAndroid Build Coastguard Worker           .m(m)
83*4bdc9457SAndroid Build Coastguard Worker           .k(k)
84*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__neon_st4);
85*4bdc9457SAndroid Build Coastguard Worker       }
86*4bdc9457SAndroid Build Coastguard Worker     }
87*4bdc9457SAndroid Build Coastguard Worker   }
88*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__NEON_ST4,k_div_4)89*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, k_div_4) {
90*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
91*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 8; k < 40; k += 4) {
92*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
93*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
94*4bdc9457SAndroid Build Coastguard Worker         .m(4)
95*4bdc9457SAndroid Build Coastguard Worker         .k(k)
96*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__neon_st4);
97*4bdc9457SAndroid Build Coastguard Worker     }
98*4bdc9457SAndroid Build Coastguard Worker   }
99*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__NEON_ST4,k_div_4_subtile)100*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, k_div_4_subtile) {
101*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
102*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 8; k < 40; k += 4) {
103*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
104*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
105*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
106*4bdc9457SAndroid Build Coastguard Worker           .m(m)
107*4bdc9457SAndroid Build Coastguard Worker           .k(k)
108*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__neon_st4);
109*4bdc9457SAndroid Build Coastguard Worker       }
110*4bdc9457SAndroid Build Coastguard Worker     }
111*4bdc9457SAndroid Build Coastguard Worker   }
112*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__NEON_ST4,strided_x)113*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__NEON_ST4, strided_x) {
114*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
115*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k <= 20; k += 5) {
116*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
117*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
118*4bdc9457SAndroid Build Coastguard Worker         .m(4)
119*4bdc9457SAndroid Build Coastguard Worker         .k(k)
120*4bdc9457SAndroid Build Coastguard Worker         .x_stride(23)
121*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__neon_st4);
122*4bdc9457SAndroid Build Coastguard Worker     }
123*4bdc9457SAndroid Build Coastguard Worker   }
124*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
125*4bdc9457SAndroid Build Coastguard Worker 
126*4bdc9457SAndroid Build Coastguard Worker 
127*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(X32_PACKX_4X__SSE,k_eq_4)128*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, k_eq_4) {
129*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
130*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
131*4bdc9457SAndroid Build Coastguard Worker       .mr(4)
132*4bdc9457SAndroid Build Coastguard Worker       .m(4)
133*4bdc9457SAndroid Build Coastguard Worker       .k(4)
134*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_4x__sse);
135*4bdc9457SAndroid Build Coastguard Worker   }
136*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SSE,k_eq_4_subtile)137*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, k_eq_4_subtile) {
138*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
139*4bdc9457SAndroid Build Coastguard Worker     for (size_t m = 1; m <= 4; m++) {
140*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
141*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
142*4bdc9457SAndroid Build Coastguard Worker         .m(m)
143*4bdc9457SAndroid Build Coastguard Worker         .k(4)
144*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__sse);
145*4bdc9457SAndroid Build Coastguard Worker     }
146*4bdc9457SAndroid Build Coastguard Worker   }
147*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SSE,k_lt_4)148*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, k_lt_4) {
149*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
150*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k < 4; k++) {
151*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
152*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
153*4bdc9457SAndroid Build Coastguard Worker         .m(4)
154*4bdc9457SAndroid Build Coastguard Worker         .k(k)
155*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__sse);
156*4bdc9457SAndroid Build Coastguard Worker     }
157*4bdc9457SAndroid Build Coastguard Worker   }
158*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SSE,k_lt_4_subtile)159*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, k_lt_4_subtile) {
160*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
161*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k < 4; k++) {
162*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
163*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
164*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
165*4bdc9457SAndroid Build Coastguard Worker           .m(m)
166*4bdc9457SAndroid Build Coastguard Worker           .k(k)
167*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__sse);
168*4bdc9457SAndroid Build Coastguard Worker       }
169*4bdc9457SAndroid Build Coastguard Worker     }
170*4bdc9457SAndroid Build Coastguard Worker   }
171*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SSE,k_gt_4)172*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, k_gt_4) {
173*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
174*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 5; k < 8; k++) {
175*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
176*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
177*4bdc9457SAndroid Build Coastguard Worker         .m(4)
178*4bdc9457SAndroid Build Coastguard Worker         .k(k)
179*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__sse);
180*4bdc9457SAndroid Build Coastguard Worker     }
181*4bdc9457SAndroid Build Coastguard Worker   }
182*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SSE,k_gt_4_subtile)183*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, k_gt_4_subtile) {
184*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
185*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 5; k < 8; k++) {
186*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
187*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
188*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
189*4bdc9457SAndroid Build Coastguard Worker           .m(m)
190*4bdc9457SAndroid Build Coastguard Worker           .k(k)
191*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__sse);
192*4bdc9457SAndroid Build Coastguard Worker       }
193*4bdc9457SAndroid Build Coastguard Worker     }
194*4bdc9457SAndroid Build Coastguard Worker   }
195*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SSE,k_div_4)196*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, k_div_4) {
197*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
198*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 8; k < 40; k += 4) {
199*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
200*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
201*4bdc9457SAndroid Build Coastguard Worker         .m(4)
202*4bdc9457SAndroid Build Coastguard Worker         .k(k)
203*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__sse);
204*4bdc9457SAndroid Build Coastguard Worker     }
205*4bdc9457SAndroid Build Coastguard Worker   }
206*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SSE,k_div_4_subtile)207*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, k_div_4_subtile) {
208*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
209*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 8; k < 40; k += 4) {
210*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
211*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
212*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
213*4bdc9457SAndroid Build Coastguard Worker           .m(m)
214*4bdc9457SAndroid Build Coastguard Worker           .k(k)
215*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__sse);
216*4bdc9457SAndroid Build Coastguard Worker       }
217*4bdc9457SAndroid Build Coastguard Worker     }
218*4bdc9457SAndroid Build Coastguard Worker   }
219*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SSE,strided_x)220*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__SSE, strided_x) {
221*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_SSE;
222*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k <= 20; k += 5) {
223*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
224*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
225*4bdc9457SAndroid Build Coastguard Worker         .m(4)
226*4bdc9457SAndroid Build Coastguard Worker         .k(k)
227*4bdc9457SAndroid Build Coastguard Worker         .x_stride(23)
228*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__sse);
229*4bdc9457SAndroid Build Coastguard Worker     }
230*4bdc9457SAndroid Build Coastguard Worker   }
231*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
232*4bdc9457SAndroid Build Coastguard Worker 
233*4bdc9457SAndroid Build Coastguard Worker 
234*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(X32_PACKX_4X__WASMSIMD,k_eq_4)235*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, k_eq_4) {
236*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
237*4bdc9457SAndroid Build Coastguard Worker       .mr(4)
238*4bdc9457SAndroid Build Coastguard Worker       .m(4)
239*4bdc9457SAndroid Build Coastguard Worker       .k(4)
240*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
241*4bdc9457SAndroid Build Coastguard Worker   }
242*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__WASMSIMD,k_eq_4_subtile)243*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, k_eq_4_subtile) {
244*4bdc9457SAndroid Build Coastguard Worker     for (size_t m = 1; m <= 4; m++) {
245*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
246*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
247*4bdc9457SAndroid Build Coastguard Worker         .m(m)
248*4bdc9457SAndroid Build Coastguard Worker         .k(4)
249*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
250*4bdc9457SAndroid Build Coastguard Worker     }
251*4bdc9457SAndroid Build Coastguard Worker   }
252*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__WASMSIMD,k_lt_4)253*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, k_lt_4) {
254*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k < 4; k++) {
255*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
256*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
257*4bdc9457SAndroid Build Coastguard Worker         .m(4)
258*4bdc9457SAndroid Build Coastguard Worker         .k(k)
259*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
260*4bdc9457SAndroid Build Coastguard Worker     }
261*4bdc9457SAndroid Build Coastguard Worker   }
262*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__WASMSIMD,k_lt_4_subtile)263*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, k_lt_4_subtile) {
264*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k < 4; k++) {
265*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
266*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
267*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
268*4bdc9457SAndroid Build Coastguard Worker           .m(m)
269*4bdc9457SAndroid Build Coastguard Worker           .k(k)
270*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
271*4bdc9457SAndroid Build Coastguard Worker       }
272*4bdc9457SAndroid Build Coastguard Worker     }
273*4bdc9457SAndroid Build Coastguard Worker   }
274*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__WASMSIMD,k_gt_4)275*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, k_gt_4) {
276*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 5; k < 8; k++) {
277*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
278*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
279*4bdc9457SAndroid Build Coastguard Worker         .m(4)
280*4bdc9457SAndroid Build Coastguard Worker         .k(k)
281*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
282*4bdc9457SAndroid Build Coastguard Worker     }
283*4bdc9457SAndroid Build Coastguard Worker   }
284*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__WASMSIMD,k_gt_4_subtile)285*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, k_gt_4_subtile) {
286*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 5; k < 8; k++) {
287*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
288*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
289*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
290*4bdc9457SAndroid Build Coastguard Worker           .m(m)
291*4bdc9457SAndroid Build Coastguard Worker           .k(k)
292*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
293*4bdc9457SAndroid Build Coastguard Worker       }
294*4bdc9457SAndroid Build Coastguard Worker     }
295*4bdc9457SAndroid Build Coastguard Worker   }
296*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__WASMSIMD,k_div_4)297*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, k_div_4) {
298*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 8; k < 40; k += 4) {
299*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
300*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
301*4bdc9457SAndroid Build Coastguard Worker         .m(4)
302*4bdc9457SAndroid Build Coastguard Worker         .k(k)
303*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
304*4bdc9457SAndroid Build Coastguard Worker     }
305*4bdc9457SAndroid Build Coastguard Worker   }
306*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__WASMSIMD,k_div_4_subtile)307*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, k_div_4_subtile) {
308*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 8; k < 40; k += 4) {
309*4bdc9457SAndroid Build Coastguard Worker       for (size_t m = 1; m <= 4; m++) {
310*4bdc9457SAndroid Build Coastguard Worker         PackMicrokernelTester()
311*4bdc9457SAndroid Build Coastguard Worker           .mr(4)
312*4bdc9457SAndroid Build Coastguard Worker           .m(m)
313*4bdc9457SAndroid Build Coastguard Worker           .k(k)
314*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
315*4bdc9457SAndroid Build Coastguard Worker       }
316*4bdc9457SAndroid Build Coastguard Worker     }
317*4bdc9457SAndroid Build Coastguard Worker   }
318*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__WASMSIMD,strided_x)319*4bdc9457SAndroid Build Coastguard Worker   TEST(X32_PACKX_4X__WASMSIMD, strided_x) {
320*4bdc9457SAndroid Build Coastguard Worker     for (size_t k = 1; k <= 20; k += 5) {
321*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
322*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
323*4bdc9457SAndroid Build Coastguard Worker         .m(4)
324*4bdc9457SAndroid Build Coastguard Worker         .k(k)
325*4bdc9457SAndroid Build Coastguard Worker         .x_stride(23)
326*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__wasmsimd);
327*4bdc9457SAndroid Build Coastguard Worker     }
328*4bdc9457SAndroid Build Coastguard Worker   }
329*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
330*4bdc9457SAndroid Build Coastguard Worker 
331*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_2X__SCALAR,k_eq_1)332*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_2X__SCALAR, k_eq_1) {
333*4bdc9457SAndroid Build Coastguard Worker   PackMicrokernelTester()
334*4bdc9457SAndroid Build Coastguard Worker     .mr(2)
335*4bdc9457SAndroid Build Coastguard Worker     .m(2)
336*4bdc9457SAndroid Build Coastguard Worker     .k(1)
337*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_x32_packx_ukernel_2x__scalar);
338*4bdc9457SAndroid Build Coastguard Worker }
339*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_2X__SCALAR,k_eq_1_subtile)340*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_2X__SCALAR, k_eq_1_subtile) {
341*4bdc9457SAndroid Build Coastguard Worker   for (size_t m = 1; m <= 2; m++) {
342*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
343*4bdc9457SAndroid Build Coastguard Worker       .mr(2)
344*4bdc9457SAndroid Build Coastguard Worker       .m(m)
345*4bdc9457SAndroid Build Coastguard Worker       .k(1)
346*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_2x__scalar);
347*4bdc9457SAndroid Build Coastguard Worker   }
348*4bdc9457SAndroid Build Coastguard Worker }
349*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_2X__SCALAR,k_gt_1)350*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_2X__SCALAR, k_gt_1) {
351*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 2; k < 10; k++) {
352*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
353*4bdc9457SAndroid Build Coastguard Worker       .mr(2)
354*4bdc9457SAndroid Build Coastguard Worker       .m(2)
355*4bdc9457SAndroid Build Coastguard Worker       .k(k)
356*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_2x__scalar);
357*4bdc9457SAndroid Build Coastguard Worker   }
358*4bdc9457SAndroid Build Coastguard Worker }
359*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_2X__SCALAR,k_gt_1_subtile)360*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_2X__SCALAR, k_gt_1_subtile) {
361*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 2; k < 10; k++) {
362*4bdc9457SAndroid Build Coastguard Worker     for (size_t m = 1; m <= 2; m++) {
363*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
364*4bdc9457SAndroid Build Coastguard Worker         .mr(2)
365*4bdc9457SAndroid Build Coastguard Worker         .m(m)
366*4bdc9457SAndroid Build Coastguard Worker         .k(k)
367*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_2x__scalar);
368*4bdc9457SAndroid Build Coastguard Worker     }
369*4bdc9457SAndroid Build Coastguard Worker   }
370*4bdc9457SAndroid Build Coastguard Worker }
371*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_2X__SCALAR,strided_x)372*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_2X__SCALAR, strided_x) {
373*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 1; k <= 5; k += 2) {
374*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
375*4bdc9457SAndroid Build Coastguard Worker       .mr(2)
376*4bdc9457SAndroid Build Coastguard Worker       .m(2)
377*4bdc9457SAndroid Build Coastguard Worker       .k(k)
378*4bdc9457SAndroid Build Coastguard Worker       .x_stride(7)
379*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_2x__scalar);
380*4bdc9457SAndroid Build Coastguard Worker   }
381*4bdc9457SAndroid Build Coastguard Worker }
382*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_3X__SCALAR,k_eq_1)383*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_3X__SCALAR, k_eq_1) {
384*4bdc9457SAndroid Build Coastguard Worker   PackMicrokernelTester()
385*4bdc9457SAndroid Build Coastguard Worker     .mr(3)
386*4bdc9457SAndroid Build Coastguard Worker     .m(3)
387*4bdc9457SAndroid Build Coastguard Worker     .k(1)
388*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_x32_packx_ukernel_3x__scalar);
389*4bdc9457SAndroid Build Coastguard Worker }
390*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_3X__SCALAR,k_eq_1_subtile)391*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_3X__SCALAR, k_eq_1_subtile) {
392*4bdc9457SAndroid Build Coastguard Worker   for (size_t m = 1; m <= 3; m++) {
393*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
394*4bdc9457SAndroid Build Coastguard Worker       .mr(3)
395*4bdc9457SAndroid Build Coastguard Worker       .m(m)
396*4bdc9457SAndroid Build Coastguard Worker       .k(1)
397*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_3x__scalar);
398*4bdc9457SAndroid Build Coastguard Worker   }
399*4bdc9457SAndroid Build Coastguard Worker }
400*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_3X__SCALAR,k_gt_1)401*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_3X__SCALAR, k_gt_1) {
402*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 2; k < 10; k++) {
403*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
404*4bdc9457SAndroid Build Coastguard Worker       .mr(3)
405*4bdc9457SAndroid Build Coastguard Worker       .m(3)
406*4bdc9457SAndroid Build Coastguard Worker       .k(k)
407*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_3x__scalar);
408*4bdc9457SAndroid Build Coastguard Worker   }
409*4bdc9457SAndroid Build Coastguard Worker }
410*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_3X__SCALAR,k_gt_1_subtile)411*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_3X__SCALAR, k_gt_1_subtile) {
412*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 2; k < 10; k++) {
413*4bdc9457SAndroid Build Coastguard Worker     for (size_t m = 1; m <= 3; m++) {
414*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
415*4bdc9457SAndroid Build Coastguard Worker         .mr(3)
416*4bdc9457SAndroid Build Coastguard Worker         .m(m)
417*4bdc9457SAndroid Build Coastguard Worker         .k(k)
418*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_3x__scalar);
419*4bdc9457SAndroid Build Coastguard Worker     }
420*4bdc9457SAndroid Build Coastguard Worker   }
421*4bdc9457SAndroid Build Coastguard Worker }
422*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_3X__SCALAR,strided_x)423*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_3X__SCALAR, strided_x) {
424*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 1; k <= 5; k += 2) {
425*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
426*4bdc9457SAndroid Build Coastguard Worker       .mr(3)
427*4bdc9457SAndroid Build Coastguard Worker       .m(3)
428*4bdc9457SAndroid Build Coastguard Worker       .k(k)
429*4bdc9457SAndroid Build Coastguard Worker       .x_stride(7)
430*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_3x__scalar);
431*4bdc9457SAndroid Build Coastguard Worker   }
432*4bdc9457SAndroid Build Coastguard Worker }
433*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SCALAR,k_eq_1)434*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_4X__SCALAR, k_eq_1) {
435*4bdc9457SAndroid Build Coastguard Worker   PackMicrokernelTester()
436*4bdc9457SAndroid Build Coastguard Worker     .mr(4)
437*4bdc9457SAndroid Build Coastguard Worker     .m(4)
438*4bdc9457SAndroid Build Coastguard Worker     .k(1)
439*4bdc9457SAndroid Build Coastguard Worker     .Test(xnn_x32_packx_ukernel_4x__scalar);
440*4bdc9457SAndroid Build Coastguard Worker }
441*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SCALAR,k_eq_1_subtile)442*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_4X__SCALAR, k_eq_1_subtile) {
443*4bdc9457SAndroid Build Coastguard Worker   for (size_t m = 1; m <= 4; m++) {
444*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
445*4bdc9457SAndroid Build Coastguard Worker       .mr(4)
446*4bdc9457SAndroid Build Coastguard Worker       .m(m)
447*4bdc9457SAndroid Build Coastguard Worker       .k(1)
448*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_4x__scalar);
449*4bdc9457SAndroid Build Coastguard Worker   }
450*4bdc9457SAndroid Build Coastguard Worker }
451*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SCALAR,k_gt_1)452*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_4X__SCALAR, k_gt_1) {
453*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 2; k < 10; k++) {
454*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
455*4bdc9457SAndroid Build Coastguard Worker       .mr(4)
456*4bdc9457SAndroid Build Coastguard Worker       .m(4)
457*4bdc9457SAndroid Build Coastguard Worker       .k(k)
458*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_4x__scalar);
459*4bdc9457SAndroid Build Coastguard Worker   }
460*4bdc9457SAndroid Build Coastguard Worker }
461*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SCALAR,k_gt_1_subtile)462*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_4X__SCALAR, k_gt_1_subtile) {
463*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 2; k < 10; k++) {
464*4bdc9457SAndroid Build Coastguard Worker     for (size_t m = 1; m <= 4; m++) {
465*4bdc9457SAndroid Build Coastguard Worker       PackMicrokernelTester()
466*4bdc9457SAndroid Build Coastguard Worker         .mr(4)
467*4bdc9457SAndroid Build Coastguard Worker         .m(m)
468*4bdc9457SAndroid Build Coastguard Worker         .k(k)
469*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_x32_packx_ukernel_4x__scalar);
470*4bdc9457SAndroid Build Coastguard Worker     }
471*4bdc9457SAndroid Build Coastguard Worker   }
472*4bdc9457SAndroid Build Coastguard Worker }
473*4bdc9457SAndroid Build Coastguard Worker 
TEST(X32_PACKX_4X__SCALAR,strided_x)474*4bdc9457SAndroid Build Coastguard Worker TEST(X32_PACKX_4X__SCALAR, strided_x) {
475*4bdc9457SAndroid Build Coastguard Worker   for (size_t k = 1; k <= 5; k += 2) {
476*4bdc9457SAndroid Build Coastguard Worker     PackMicrokernelTester()
477*4bdc9457SAndroid Build Coastguard Worker       .mr(4)
478*4bdc9457SAndroid Build Coastguard Worker       .m(4)
479*4bdc9457SAndroid Build Coastguard Worker       .k(k)
480*4bdc9457SAndroid Build Coastguard Worker       .x_stride(7)
481*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_x32_packx_ukernel_4x__scalar);
482*4bdc9457SAndroid Build Coastguard Worker   }
483*4bdc9457SAndroid Build Coastguard Worker }