xref: /aosp_15_r20/external/XNNPACK/test/f32-vadd.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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