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