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