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/cs16-vsquareabs.yaml
8 // Generator: tools/generate-vsquareabs-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/vsquareabs.h>
17 #include "vsquareabs-microkernel-tester.h"
18
19
TEST(CS16_VSQUAREABS__SCALAR_X1,batch_eq_1)20 TEST(CS16_VSQUAREABS__SCALAR_X1, batch_eq_1) {
21 VSquareAbsMicrokernelTester()
22 .batch_size(1)
23 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x1);
24 }
25
TEST(CS16_VSQUAREABS__SCALAR_X1,batch_gt_1)26 TEST(CS16_VSQUAREABS__SCALAR_X1, batch_gt_1) {
27 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
28 VSquareAbsMicrokernelTester()
29 .batch_size(batch_size)
30 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x1);
31 }
32 }
33
34
TEST(CS16_VSQUAREABS__SCALAR_X2,batch_eq_2)35 TEST(CS16_VSQUAREABS__SCALAR_X2, batch_eq_2) {
36 VSquareAbsMicrokernelTester()
37 .batch_size(2)
38 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x2);
39 }
40
TEST(CS16_VSQUAREABS__SCALAR_X2,batch_div_2)41 TEST(CS16_VSQUAREABS__SCALAR_X2, batch_div_2) {
42 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
43 VSquareAbsMicrokernelTester()
44 .batch_size(batch_size)
45 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x2);
46 }
47 }
48
TEST(CS16_VSQUAREABS__SCALAR_X2,batch_lt_2)49 TEST(CS16_VSQUAREABS__SCALAR_X2, batch_lt_2) {
50 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
51 VSquareAbsMicrokernelTester()
52 .batch_size(batch_size)
53 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x2);
54 }
55 }
56
TEST(CS16_VSQUAREABS__SCALAR_X2,batch_gt_2)57 TEST(CS16_VSQUAREABS__SCALAR_X2, batch_gt_2) {
58 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
59 VSquareAbsMicrokernelTester()
60 .batch_size(batch_size)
61 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x2);
62 }
63 }
64
65
TEST(CS16_VSQUAREABS__SCALAR_X3,batch_eq_3)66 TEST(CS16_VSQUAREABS__SCALAR_X3, batch_eq_3) {
67 VSquareAbsMicrokernelTester()
68 .batch_size(3)
69 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x3);
70 }
71
TEST(CS16_VSQUAREABS__SCALAR_X3,batch_div_3)72 TEST(CS16_VSQUAREABS__SCALAR_X3, batch_div_3) {
73 for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
74 VSquareAbsMicrokernelTester()
75 .batch_size(batch_size)
76 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x3);
77 }
78 }
79
TEST(CS16_VSQUAREABS__SCALAR_X3,batch_lt_3)80 TEST(CS16_VSQUAREABS__SCALAR_X3, batch_lt_3) {
81 for (size_t batch_size = 1; batch_size < 3; batch_size++) {
82 VSquareAbsMicrokernelTester()
83 .batch_size(batch_size)
84 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x3);
85 }
86 }
87
TEST(CS16_VSQUAREABS__SCALAR_X3,batch_gt_3)88 TEST(CS16_VSQUAREABS__SCALAR_X3, batch_gt_3) {
89 for (size_t batch_size = 4; batch_size < 6; batch_size++) {
90 VSquareAbsMicrokernelTester()
91 .batch_size(batch_size)
92 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x3);
93 }
94 }
95
96
TEST(CS16_VSQUAREABS__SCALAR_X4,batch_eq_4)97 TEST(CS16_VSQUAREABS__SCALAR_X4, batch_eq_4) {
98 VSquareAbsMicrokernelTester()
99 .batch_size(4)
100 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x4);
101 }
102
TEST(CS16_VSQUAREABS__SCALAR_X4,batch_div_4)103 TEST(CS16_VSQUAREABS__SCALAR_X4, batch_div_4) {
104 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
105 VSquareAbsMicrokernelTester()
106 .batch_size(batch_size)
107 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x4);
108 }
109 }
110
TEST(CS16_VSQUAREABS__SCALAR_X4,batch_lt_4)111 TEST(CS16_VSQUAREABS__SCALAR_X4, batch_lt_4) {
112 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
113 VSquareAbsMicrokernelTester()
114 .batch_size(batch_size)
115 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x4);
116 }
117 }
118
TEST(CS16_VSQUAREABS__SCALAR_X4,batch_gt_4)119 TEST(CS16_VSQUAREABS__SCALAR_X4, batch_gt_4) {
120 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
121 VSquareAbsMicrokernelTester()
122 .batch_size(batch_size)
123 .Test(xnn_cs16_vsquareabs_ukernel__scalar_x4);
124 }
125 }
126
127
128 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X4,batch_eq_4)129 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X4, batch_eq_4) {
130 TEST_REQUIRES_ARM_NEON;
131 VSquareAbsMicrokernelTester()
132 .batch_size(4)
133 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x4);
134 }
135
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X4,batch_div_4)136 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X4, batch_div_4) {
137 TEST_REQUIRES_ARM_NEON;
138 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
139 VSquareAbsMicrokernelTester()
140 .batch_size(batch_size)
141 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x4);
142 }
143 }
144
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X4,batch_lt_4)145 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X4, batch_lt_4) {
146 TEST_REQUIRES_ARM_NEON;
147 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
148 VSquareAbsMicrokernelTester()
149 .batch_size(batch_size)
150 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x4);
151 }
152 }
153
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X4,batch_gt_4)154 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X4, batch_gt_4) {
155 TEST_REQUIRES_ARM_NEON;
156 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
157 VSquareAbsMicrokernelTester()
158 .batch_size(batch_size)
159 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x4);
160 }
161 }
162 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
163
164
165 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X8,batch_eq_8)166 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X8, batch_eq_8) {
167 TEST_REQUIRES_ARM_NEON;
168 VSquareAbsMicrokernelTester()
169 .batch_size(8)
170 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x8);
171 }
172
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X8,batch_div_8)173 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X8, batch_div_8) {
174 TEST_REQUIRES_ARM_NEON;
175 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
176 VSquareAbsMicrokernelTester()
177 .batch_size(batch_size)
178 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x8);
179 }
180 }
181
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X8,batch_lt_8)182 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X8, batch_lt_8) {
183 TEST_REQUIRES_ARM_NEON;
184 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
185 VSquareAbsMicrokernelTester()
186 .batch_size(batch_size)
187 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x8);
188 }
189 }
190
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X8,batch_gt_8)191 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X8, batch_gt_8) {
192 TEST_REQUIRES_ARM_NEON;
193 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
194 VSquareAbsMicrokernelTester()
195 .batch_size(batch_size)
196 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x8);
197 }
198 }
199 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
200
201
202 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X12,batch_eq_12)203 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X12, batch_eq_12) {
204 TEST_REQUIRES_ARM_NEON;
205 VSquareAbsMicrokernelTester()
206 .batch_size(12)
207 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x12);
208 }
209
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X12,batch_div_12)210 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X12, batch_div_12) {
211 TEST_REQUIRES_ARM_NEON;
212 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
213 VSquareAbsMicrokernelTester()
214 .batch_size(batch_size)
215 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x12);
216 }
217 }
218
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X12,batch_lt_12)219 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X12, batch_lt_12) {
220 TEST_REQUIRES_ARM_NEON;
221 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
222 VSquareAbsMicrokernelTester()
223 .batch_size(batch_size)
224 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x12);
225 }
226 }
227
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X12,batch_gt_12)228 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X12, batch_gt_12) {
229 TEST_REQUIRES_ARM_NEON;
230 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
231 VSquareAbsMicrokernelTester()
232 .batch_size(batch_size)
233 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x12);
234 }
235 }
236 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
237
238
239 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X16,batch_eq_16)240 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X16, batch_eq_16) {
241 TEST_REQUIRES_ARM_NEON;
242 VSquareAbsMicrokernelTester()
243 .batch_size(16)
244 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x16);
245 }
246
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X16,batch_div_16)247 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X16, batch_div_16) {
248 TEST_REQUIRES_ARM_NEON;
249 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
250 VSquareAbsMicrokernelTester()
251 .batch_size(batch_size)
252 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x16);
253 }
254 }
255
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X16,batch_lt_16)256 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X16, batch_lt_16) {
257 TEST_REQUIRES_ARM_NEON;
258 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
259 VSquareAbsMicrokernelTester()
260 .batch_size(batch_size)
261 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x16);
262 }
263 }
264
TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X16,batch_gt_16)265 TEST(CS16_VSQUAREABS__NEON_MLAL_LD128_X16, batch_gt_16) {
266 TEST_REQUIRES_ARM_NEON;
267 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
268 VSquareAbsMicrokernelTester()
269 .batch_size(batch_size)
270 .Test(xnn_cs16_vsquareabs_ukernel__neon_mlal_ld128_x16);
271 }
272 }
273 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
274