xref: /aosp_15_r20/external/XNNPACK/test/f32-vrelu.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-vrelu.yaml
8 //   Generator: tools/generate-vunary-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/vunary.h>
17 #include "vunary-microkernel-tester.h"
18 
19 
20 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VRELU__NEON_X4,batch_eq_4)21   TEST(F32_VRELU__NEON_X4, batch_eq_4) {
22     TEST_REQUIRES_ARM_NEON;
23     VUnaryMicrokernelTester()
24       .batch_size(4)
25       .Test(xnn_f32_vrelu_ukernel__neon_x4);
26   }
27 
TEST(F32_VRELU__NEON_X4,batch_div_4)28   TEST(F32_VRELU__NEON_X4, batch_div_4) {
29     TEST_REQUIRES_ARM_NEON;
30     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
31       VUnaryMicrokernelTester()
32         .batch_size(batch_size)
33         .Test(xnn_f32_vrelu_ukernel__neon_x4);
34     }
35   }
36 
TEST(F32_VRELU__NEON_X4,batch_lt_4)37   TEST(F32_VRELU__NEON_X4, batch_lt_4) {
38     TEST_REQUIRES_ARM_NEON;
39     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
40       VUnaryMicrokernelTester()
41         .batch_size(batch_size)
42         .Test(xnn_f32_vrelu_ukernel__neon_x4);
43     }
44   }
45 
TEST(F32_VRELU__NEON_X4,batch_gt_4)46   TEST(F32_VRELU__NEON_X4, batch_gt_4) {
47     TEST_REQUIRES_ARM_NEON;
48     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
49       VUnaryMicrokernelTester()
50         .batch_size(batch_size)
51         .Test(xnn_f32_vrelu_ukernel__neon_x4);
52     }
53   }
54 
TEST(F32_VRELU__NEON_X4,inplace)55   TEST(F32_VRELU__NEON_X4, inplace) {
56     TEST_REQUIRES_ARM_NEON;
57     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
58       VUnaryMicrokernelTester()
59         .batch_size(batch_size)
60         .inplace(true)
61         .Test(xnn_f32_vrelu_ukernel__neon_x4);
62     }
63   }
64 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
65 
66 
67 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VRELU__NEON_X8,batch_eq_8)68   TEST(F32_VRELU__NEON_X8, batch_eq_8) {
69     TEST_REQUIRES_ARM_NEON;
70     VUnaryMicrokernelTester()
71       .batch_size(8)
72       .Test(xnn_f32_vrelu_ukernel__neon_x8);
73   }
74 
TEST(F32_VRELU__NEON_X8,batch_div_8)75   TEST(F32_VRELU__NEON_X8, batch_div_8) {
76     TEST_REQUIRES_ARM_NEON;
77     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
78       VUnaryMicrokernelTester()
79         .batch_size(batch_size)
80         .Test(xnn_f32_vrelu_ukernel__neon_x8);
81     }
82   }
83 
TEST(F32_VRELU__NEON_X8,batch_lt_8)84   TEST(F32_VRELU__NEON_X8, batch_lt_8) {
85     TEST_REQUIRES_ARM_NEON;
86     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
87       VUnaryMicrokernelTester()
88         .batch_size(batch_size)
89         .Test(xnn_f32_vrelu_ukernel__neon_x8);
90     }
91   }
92 
TEST(F32_VRELU__NEON_X8,batch_gt_8)93   TEST(F32_VRELU__NEON_X8, batch_gt_8) {
94     TEST_REQUIRES_ARM_NEON;
95     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
96       VUnaryMicrokernelTester()
97         .batch_size(batch_size)
98         .Test(xnn_f32_vrelu_ukernel__neon_x8);
99     }
100   }
101 
TEST(F32_VRELU__NEON_X8,inplace)102   TEST(F32_VRELU__NEON_X8, inplace) {
103     TEST_REQUIRES_ARM_NEON;
104     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
105       VUnaryMicrokernelTester()
106         .batch_size(batch_size)
107         .inplace(true)
108         .Test(xnn_f32_vrelu_ukernel__neon_x8);
109     }
110   }
111 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
112 
113 
114 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRELU__SSE_X4,batch_eq_4)115   TEST(F32_VRELU__SSE_X4, batch_eq_4) {
116     TEST_REQUIRES_X86_SSE;
117     VUnaryMicrokernelTester()
118       .batch_size(4)
119       .Test(xnn_f32_vrelu_ukernel__sse_x4);
120   }
121 
TEST(F32_VRELU__SSE_X4,batch_div_4)122   TEST(F32_VRELU__SSE_X4, batch_div_4) {
123     TEST_REQUIRES_X86_SSE;
124     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
125       VUnaryMicrokernelTester()
126         .batch_size(batch_size)
127         .Test(xnn_f32_vrelu_ukernel__sse_x4);
128     }
129   }
130 
TEST(F32_VRELU__SSE_X4,batch_lt_4)131   TEST(F32_VRELU__SSE_X4, batch_lt_4) {
132     TEST_REQUIRES_X86_SSE;
133     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
134       VUnaryMicrokernelTester()
135         .batch_size(batch_size)
136         .Test(xnn_f32_vrelu_ukernel__sse_x4);
137     }
138   }
139 
TEST(F32_VRELU__SSE_X4,batch_gt_4)140   TEST(F32_VRELU__SSE_X4, batch_gt_4) {
141     TEST_REQUIRES_X86_SSE;
142     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
143       VUnaryMicrokernelTester()
144         .batch_size(batch_size)
145         .Test(xnn_f32_vrelu_ukernel__sse_x4);
146     }
147   }
148 
TEST(F32_VRELU__SSE_X4,inplace)149   TEST(F32_VRELU__SSE_X4, inplace) {
150     TEST_REQUIRES_X86_SSE;
151     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
152       VUnaryMicrokernelTester()
153         .batch_size(batch_size)
154         .inplace(true)
155         .Test(xnn_f32_vrelu_ukernel__sse_x4);
156     }
157   }
158 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
159 
160 
161 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRELU__SSE_X8,batch_eq_8)162   TEST(F32_VRELU__SSE_X8, batch_eq_8) {
163     TEST_REQUIRES_X86_SSE;
164     VUnaryMicrokernelTester()
165       .batch_size(8)
166       .Test(xnn_f32_vrelu_ukernel__sse_x8);
167   }
168 
TEST(F32_VRELU__SSE_X8,batch_div_8)169   TEST(F32_VRELU__SSE_X8, batch_div_8) {
170     TEST_REQUIRES_X86_SSE;
171     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
172       VUnaryMicrokernelTester()
173         .batch_size(batch_size)
174         .Test(xnn_f32_vrelu_ukernel__sse_x8);
175     }
176   }
177 
TEST(F32_VRELU__SSE_X8,batch_lt_8)178   TEST(F32_VRELU__SSE_X8, batch_lt_8) {
179     TEST_REQUIRES_X86_SSE;
180     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
181       VUnaryMicrokernelTester()
182         .batch_size(batch_size)
183         .Test(xnn_f32_vrelu_ukernel__sse_x8);
184     }
185   }
186 
TEST(F32_VRELU__SSE_X8,batch_gt_8)187   TEST(F32_VRELU__SSE_X8, batch_gt_8) {
188     TEST_REQUIRES_X86_SSE;
189     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
190       VUnaryMicrokernelTester()
191         .batch_size(batch_size)
192         .Test(xnn_f32_vrelu_ukernel__sse_x8);
193     }
194   }
195 
TEST(F32_VRELU__SSE_X8,inplace)196   TEST(F32_VRELU__SSE_X8, inplace) {
197     TEST_REQUIRES_X86_SSE;
198     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
199       VUnaryMicrokernelTester()
200         .batch_size(batch_size)
201         .inplace(true)
202         .Test(xnn_f32_vrelu_ukernel__sse_x8);
203     }
204   }
205 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
206 
207 
208 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRELU__AVX_X8,batch_eq_8)209   TEST(F32_VRELU__AVX_X8, batch_eq_8) {
210     TEST_REQUIRES_X86_AVX;
211     VUnaryMicrokernelTester()
212       .batch_size(8)
213       .Test(xnn_f32_vrelu_ukernel__avx_x8);
214   }
215 
TEST(F32_VRELU__AVX_X8,batch_div_8)216   TEST(F32_VRELU__AVX_X8, batch_div_8) {
217     TEST_REQUIRES_X86_AVX;
218     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
219       VUnaryMicrokernelTester()
220         .batch_size(batch_size)
221         .Test(xnn_f32_vrelu_ukernel__avx_x8);
222     }
223   }
224 
TEST(F32_VRELU__AVX_X8,batch_lt_8)225   TEST(F32_VRELU__AVX_X8, batch_lt_8) {
226     TEST_REQUIRES_X86_AVX;
227     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
228       VUnaryMicrokernelTester()
229         .batch_size(batch_size)
230         .Test(xnn_f32_vrelu_ukernel__avx_x8);
231     }
232   }
233 
TEST(F32_VRELU__AVX_X8,batch_gt_8)234   TEST(F32_VRELU__AVX_X8, batch_gt_8) {
235     TEST_REQUIRES_X86_AVX;
236     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
237       VUnaryMicrokernelTester()
238         .batch_size(batch_size)
239         .Test(xnn_f32_vrelu_ukernel__avx_x8);
240     }
241   }
242 
TEST(F32_VRELU__AVX_X8,inplace)243   TEST(F32_VRELU__AVX_X8, inplace) {
244     TEST_REQUIRES_X86_AVX;
245     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
246       VUnaryMicrokernelTester()
247         .batch_size(batch_size)
248         .inplace(true)
249         .Test(xnn_f32_vrelu_ukernel__avx_x8);
250     }
251   }
252 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
253 
254 
255 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRELU__AVX_X16,batch_eq_16)256   TEST(F32_VRELU__AVX_X16, batch_eq_16) {
257     TEST_REQUIRES_X86_AVX;
258     VUnaryMicrokernelTester()
259       .batch_size(16)
260       .Test(xnn_f32_vrelu_ukernel__avx_x16);
261   }
262 
TEST(F32_VRELU__AVX_X16,batch_div_16)263   TEST(F32_VRELU__AVX_X16, batch_div_16) {
264     TEST_REQUIRES_X86_AVX;
265     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
266       VUnaryMicrokernelTester()
267         .batch_size(batch_size)
268         .Test(xnn_f32_vrelu_ukernel__avx_x16);
269     }
270   }
271 
TEST(F32_VRELU__AVX_X16,batch_lt_16)272   TEST(F32_VRELU__AVX_X16, batch_lt_16) {
273     TEST_REQUIRES_X86_AVX;
274     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
275       VUnaryMicrokernelTester()
276         .batch_size(batch_size)
277         .Test(xnn_f32_vrelu_ukernel__avx_x16);
278     }
279   }
280 
TEST(F32_VRELU__AVX_X16,batch_gt_16)281   TEST(F32_VRELU__AVX_X16, batch_gt_16) {
282     TEST_REQUIRES_X86_AVX;
283     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
284       VUnaryMicrokernelTester()
285         .batch_size(batch_size)
286         .Test(xnn_f32_vrelu_ukernel__avx_x16);
287     }
288   }
289 
TEST(F32_VRELU__AVX_X16,inplace)290   TEST(F32_VRELU__AVX_X16, inplace) {
291     TEST_REQUIRES_X86_AVX;
292     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
293       VUnaryMicrokernelTester()
294         .batch_size(batch_size)
295         .inplace(true)
296         .Test(xnn_f32_vrelu_ukernel__avx_x16);
297     }
298   }
299 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
300 
301 
302 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRELU__AVX512F_X16,batch_eq_16)303   TEST(F32_VRELU__AVX512F_X16, batch_eq_16) {
304     TEST_REQUIRES_X86_AVX512F;
305     VUnaryMicrokernelTester()
306       .batch_size(16)
307       .Test(xnn_f32_vrelu_ukernel__avx512f_x16);
308   }
309 
TEST(F32_VRELU__AVX512F_X16,batch_div_16)310   TEST(F32_VRELU__AVX512F_X16, batch_div_16) {
311     TEST_REQUIRES_X86_AVX512F;
312     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
313       VUnaryMicrokernelTester()
314         .batch_size(batch_size)
315         .Test(xnn_f32_vrelu_ukernel__avx512f_x16);
316     }
317   }
318 
TEST(F32_VRELU__AVX512F_X16,batch_lt_16)319   TEST(F32_VRELU__AVX512F_X16, batch_lt_16) {
320     TEST_REQUIRES_X86_AVX512F;
321     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
322       VUnaryMicrokernelTester()
323         .batch_size(batch_size)
324         .Test(xnn_f32_vrelu_ukernel__avx512f_x16);
325     }
326   }
327 
TEST(F32_VRELU__AVX512F_X16,batch_gt_16)328   TEST(F32_VRELU__AVX512F_X16, batch_gt_16) {
329     TEST_REQUIRES_X86_AVX512F;
330     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
331       VUnaryMicrokernelTester()
332         .batch_size(batch_size)
333         .Test(xnn_f32_vrelu_ukernel__avx512f_x16);
334     }
335   }
336 
TEST(F32_VRELU__AVX512F_X16,inplace)337   TEST(F32_VRELU__AVX512F_X16, inplace) {
338     TEST_REQUIRES_X86_AVX512F;
339     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
340       VUnaryMicrokernelTester()
341         .batch_size(batch_size)
342         .inplace(true)
343         .Test(xnn_f32_vrelu_ukernel__avx512f_x16);
344     }
345   }
346 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
347 
348 
349 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRELU__AVX512F_X32,batch_eq_32)350   TEST(F32_VRELU__AVX512F_X32, batch_eq_32) {
351     TEST_REQUIRES_X86_AVX512F;
352     VUnaryMicrokernelTester()
353       .batch_size(32)
354       .Test(xnn_f32_vrelu_ukernel__avx512f_x32);
355   }
356 
TEST(F32_VRELU__AVX512F_X32,batch_div_32)357   TEST(F32_VRELU__AVX512F_X32, batch_div_32) {
358     TEST_REQUIRES_X86_AVX512F;
359     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
360       VUnaryMicrokernelTester()
361         .batch_size(batch_size)
362         .Test(xnn_f32_vrelu_ukernel__avx512f_x32);
363     }
364   }
365 
TEST(F32_VRELU__AVX512F_X32,batch_lt_32)366   TEST(F32_VRELU__AVX512F_X32, batch_lt_32) {
367     TEST_REQUIRES_X86_AVX512F;
368     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
369       VUnaryMicrokernelTester()
370         .batch_size(batch_size)
371         .Test(xnn_f32_vrelu_ukernel__avx512f_x32);
372     }
373   }
374 
TEST(F32_VRELU__AVX512F_X32,batch_gt_32)375   TEST(F32_VRELU__AVX512F_X32, batch_gt_32) {
376     TEST_REQUIRES_X86_AVX512F;
377     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
378       VUnaryMicrokernelTester()
379         .batch_size(batch_size)
380         .Test(xnn_f32_vrelu_ukernel__avx512f_x32);
381     }
382   }
383 
TEST(F32_VRELU__AVX512F_X32,inplace)384   TEST(F32_VRELU__AVX512F_X32, inplace) {
385     TEST_REQUIRES_X86_AVX512F;
386     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
387       VUnaryMicrokernelTester()
388         .batch_size(batch_size)
389         .inplace(true)
390         .Test(xnn_f32_vrelu_ukernel__avx512f_x32);
391     }
392   }
393 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
394 
395 
TEST(F32_VRELU__SCALAR_X1,batch_eq_1)396 TEST(F32_VRELU__SCALAR_X1, batch_eq_1) {
397   VUnaryMicrokernelTester()
398     .batch_size(1)
399     .Test(xnn_f32_vrelu_ukernel__scalar_x1);
400 }
401 
TEST(F32_VRELU__SCALAR_X1,batch_gt_1)402 TEST(F32_VRELU__SCALAR_X1, batch_gt_1) {
403   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
404     VUnaryMicrokernelTester()
405       .batch_size(batch_size)
406       .Test(xnn_f32_vrelu_ukernel__scalar_x1);
407   }
408 }
409 
TEST(F32_VRELU__SCALAR_X1,inplace)410 TEST(F32_VRELU__SCALAR_X1, inplace) {
411   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
412     VUnaryMicrokernelTester()
413       .batch_size(batch_size)
414       .inplace(true)
415       .Test(xnn_f32_vrelu_ukernel__scalar_x1);
416   }
417 }
418 
419 
TEST(F32_VRELU__SCALAR_X2,batch_eq_2)420 TEST(F32_VRELU__SCALAR_X2, batch_eq_2) {
421   VUnaryMicrokernelTester()
422     .batch_size(2)
423     .Test(xnn_f32_vrelu_ukernel__scalar_x2);
424 }
425 
TEST(F32_VRELU__SCALAR_X2,batch_div_2)426 TEST(F32_VRELU__SCALAR_X2, batch_div_2) {
427   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
428     VUnaryMicrokernelTester()
429       .batch_size(batch_size)
430       .Test(xnn_f32_vrelu_ukernel__scalar_x2);
431   }
432 }
433 
TEST(F32_VRELU__SCALAR_X2,batch_lt_2)434 TEST(F32_VRELU__SCALAR_X2, batch_lt_2) {
435   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
436     VUnaryMicrokernelTester()
437       .batch_size(batch_size)
438       .Test(xnn_f32_vrelu_ukernel__scalar_x2);
439   }
440 }
441 
TEST(F32_VRELU__SCALAR_X2,batch_gt_2)442 TEST(F32_VRELU__SCALAR_X2, batch_gt_2) {
443   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
444     VUnaryMicrokernelTester()
445       .batch_size(batch_size)
446       .Test(xnn_f32_vrelu_ukernel__scalar_x2);
447   }
448 }
449 
TEST(F32_VRELU__SCALAR_X2,inplace)450 TEST(F32_VRELU__SCALAR_X2, inplace) {
451   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
452     VUnaryMicrokernelTester()
453       .batch_size(batch_size)
454       .inplace(true)
455       .Test(xnn_f32_vrelu_ukernel__scalar_x2);
456   }
457 }
458 
459 
TEST(F32_VRELU__SCALAR_X4,batch_eq_4)460 TEST(F32_VRELU__SCALAR_X4, batch_eq_4) {
461   VUnaryMicrokernelTester()
462     .batch_size(4)
463     .Test(xnn_f32_vrelu_ukernel__scalar_x4);
464 }
465 
TEST(F32_VRELU__SCALAR_X4,batch_div_4)466 TEST(F32_VRELU__SCALAR_X4, batch_div_4) {
467   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
468     VUnaryMicrokernelTester()
469       .batch_size(batch_size)
470       .Test(xnn_f32_vrelu_ukernel__scalar_x4);
471   }
472 }
473 
TEST(F32_VRELU__SCALAR_X4,batch_lt_4)474 TEST(F32_VRELU__SCALAR_X4, batch_lt_4) {
475   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
476     VUnaryMicrokernelTester()
477       .batch_size(batch_size)
478       .Test(xnn_f32_vrelu_ukernel__scalar_x4);
479   }
480 }
481 
TEST(F32_VRELU__SCALAR_X4,batch_gt_4)482 TEST(F32_VRELU__SCALAR_X4, batch_gt_4) {
483   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
484     VUnaryMicrokernelTester()
485       .batch_size(batch_size)
486       .Test(xnn_f32_vrelu_ukernel__scalar_x4);
487   }
488 }
489 
TEST(F32_VRELU__SCALAR_X4,inplace)490 TEST(F32_VRELU__SCALAR_X4, inplace) {
491   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
492     VUnaryMicrokernelTester()
493       .batch_size(batch_size)
494       .inplace(true)
495       .Test(xnn_f32_vrelu_ukernel__scalar_x4);
496   }
497 }
498 
499 
TEST(F32_VRELU__SCALAR_X8,batch_eq_8)500 TEST(F32_VRELU__SCALAR_X8, batch_eq_8) {
501   VUnaryMicrokernelTester()
502     .batch_size(8)
503     .Test(xnn_f32_vrelu_ukernel__scalar_x8);
504 }
505 
TEST(F32_VRELU__SCALAR_X8,batch_div_8)506 TEST(F32_VRELU__SCALAR_X8, batch_div_8) {
507   for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
508     VUnaryMicrokernelTester()
509       .batch_size(batch_size)
510       .Test(xnn_f32_vrelu_ukernel__scalar_x8);
511   }
512 }
513 
TEST(F32_VRELU__SCALAR_X8,batch_lt_8)514 TEST(F32_VRELU__SCALAR_X8, batch_lt_8) {
515   for (size_t batch_size = 1; batch_size < 8; batch_size++) {
516     VUnaryMicrokernelTester()
517       .batch_size(batch_size)
518       .Test(xnn_f32_vrelu_ukernel__scalar_x8);
519   }
520 }
521 
TEST(F32_VRELU__SCALAR_X8,batch_gt_8)522 TEST(F32_VRELU__SCALAR_X8, batch_gt_8) {
523   for (size_t batch_size = 9; batch_size < 16; batch_size++) {
524     VUnaryMicrokernelTester()
525       .batch_size(batch_size)
526       .Test(xnn_f32_vrelu_ukernel__scalar_x8);
527   }
528 }
529 
TEST(F32_VRELU__SCALAR_X8,inplace)530 TEST(F32_VRELU__SCALAR_X8, inplace) {
531   for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
532     VUnaryMicrokernelTester()
533       .batch_size(batch_size)
534       .inplace(true)
535       .Test(xnn_f32_vrelu_ukernel__scalar_x8);
536   }
537 }
538 
539 
540 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VRELU__WASM_X1,batch_eq_1)541   TEST(F32_VRELU__WASM_X1, batch_eq_1) {
542     VUnaryMicrokernelTester()
543       .batch_size(1)
544       .Test(xnn_f32_vrelu_ukernel__wasm_x1);
545   }
546 
TEST(F32_VRELU__WASM_X1,batch_gt_1)547   TEST(F32_VRELU__WASM_X1, batch_gt_1) {
548     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
549       VUnaryMicrokernelTester()
550         .batch_size(batch_size)
551         .Test(xnn_f32_vrelu_ukernel__wasm_x1);
552     }
553   }
554 
TEST(F32_VRELU__WASM_X1,inplace)555   TEST(F32_VRELU__WASM_X1, inplace) {
556     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
557       VUnaryMicrokernelTester()
558         .batch_size(batch_size)
559         .inplace(true)
560         .Test(xnn_f32_vrelu_ukernel__wasm_x1);
561     }
562   }
563 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
564 
565 
566 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VRELU__WASM_X2,batch_eq_2)567   TEST(F32_VRELU__WASM_X2, batch_eq_2) {
568     VUnaryMicrokernelTester()
569       .batch_size(2)
570       .Test(xnn_f32_vrelu_ukernel__wasm_x2);
571   }
572 
TEST(F32_VRELU__WASM_X2,batch_div_2)573   TEST(F32_VRELU__WASM_X2, batch_div_2) {
574     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
575       VUnaryMicrokernelTester()
576         .batch_size(batch_size)
577         .Test(xnn_f32_vrelu_ukernel__wasm_x2);
578     }
579   }
580 
TEST(F32_VRELU__WASM_X2,batch_lt_2)581   TEST(F32_VRELU__WASM_X2, batch_lt_2) {
582     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
583       VUnaryMicrokernelTester()
584         .batch_size(batch_size)
585         .Test(xnn_f32_vrelu_ukernel__wasm_x2);
586     }
587   }
588 
TEST(F32_VRELU__WASM_X2,batch_gt_2)589   TEST(F32_VRELU__WASM_X2, batch_gt_2) {
590     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
591       VUnaryMicrokernelTester()
592         .batch_size(batch_size)
593         .Test(xnn_f32_vrelu_ukernel__wasm_x2);
594     }
595   }
596 
TEST(F32_VRELU__WASM_X2,inplace)597   TEST(F32_VRELU__WASM_X2, inplace) {
598     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
599       VUnaryMicrokernelTester()
600         .batch_size(batch_size)
601         .inplace(true)
602         .Test(xnn_f32_vrelu_ukernel__wasm_x2);
603     }
604   }
605 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
606 
607 
608 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VRELU__WASM_X4,batch_eq_4)609   TEST(F32_VRELU__WASM_X4, batch_eq_4) {
610     VUnaryMicrokernelTester()
611       .batch_size(4)
612       .Test(xnn_f32_vrelu_ukernel__wasm_x4);
613   }
614 
TEST(F32_VRELU__WASM_X4,batch_div_4)615   TEST(F32_VRELU__WASM_X4, batch_div_4) {
616     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
617       VUnaryMicrokernelTester()
618         .batch_size(batch_size)
619         .Test(xnn_f32_vrelu_ukernel__wasm_x4);
620     }
621   }
622 
TEST(F32_VRELU__WASM_X4,batch_lt_4)623   TEST(F32_VRELU__WASM_X4, batch_lt_4) {
624     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
625       VUnaryMicrokernelTester()
626         .batch_size(batch_size)
627         .Test(xnn_f32_vrelu_ukernel__wasm_x4);
628     }
629   }
630 
TEST(F32_VRELU__WASM_X4,batch_gt_4)631   TEST(F32_VRELU__WASM_X4, batch_gt_4) {
632     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
633       VUnaryMicrokernelTester()
634         .batch_size(batch_size)
635         .Test(xnn_f32_vrelu_ukernel__wasm_x4);
636     }
637   }
638 
TEST(F32_VRELU__WASM_X4,inplace)639   TEST(F32_VRELU__WASM_X4, inplace) {
640     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
641       VUnaryMicrokernelTester()
642         .batch_size(batch_size)
643         .inplace(true)
644         .Test(xnn_f32_vrelu_ukernel__wasm_x4);
645     }
646   }
647 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
648 
649 
650 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VRELU__WASM_X8,batch_eq_8)651   TEST(F32_VRELU__WASM_X8, batch_eq_8) {
652     VUnaryMicrokernelTester()
653       .batch_size(8)
654       .Test(xnn_f32_vrelu_ukernel__wasm_x8);
655   }
656 
TEST(F32_VRELU__WASM_X8,batch_div_8)657   TEST(F32_VRELU__WASM_X8, batch_div_8) {
658     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
659       VUnaryMicrokernelTester()
660         .batch_size(batch_size)
661         .Test(xnn_f32_vrelu_ukernel__wasm_x8);
662     }
663   }
664 
TEST(F32_VRELU__WASM_X8,batch_lt_8)665   TEST(F32_VRELU__WASM_X8, batch_lt_8) {
666     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
667       VUnaryMicrokernelTester()
668         .batch_size(batch_size)
669         .Test(xnn_f32_vrelu_ukernel__wasm_x8);
670     }
671   }
672 
TEST(F32_VRELU__WASM_X8,batch_gt_8)673   TEST(F32_VRELU__WASM_X8, batch_gt_8) {
674     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
675       VUnaryMicrokernelTester()
676         .batch_size(batch_size)
677         .Test(xnn_f32_vrelu_ukernel__wasm_x8);
678     }
679   }
680 
TEST(F32_VRELU__WASM_X8,inplace)681   TEST(F32_VRELU__WASM_X8, inplace) {
682     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
683       VUnaryMicrokernelTester()
684         .batch_size(batch_size)
685         .inplace(true)
686         .Test(xnn_f32_vrelu_ukernel__wasm_x8);
687     }
688   }
689 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
690 
691 
692 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VRELU__WASMSIMD_X4,batch_eq_4)693   TEST(F32_VRELU__WASMSIMD_X4, batch_eq_4) {
694     VUnaryMicrokernelTester()
695       .batch_size(4)
696       .Test(xnn_f32_vrelu_ukernel__wasmsimd_x4);
697   }
698 
TEST(F32_VRELU__WASMSIMD_X4,batch_div_4)699   TEST(F32_VRELU__WASMSIMD_X4, batch_div_4) {
700     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
701       VUnaryMicrokernelTester()
702         .batch_size(batch_size)
703         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x4);
704     }
705   }
706 
TEST(F32_VRELU__WASMSIMD_X4,batch_lt_4)707   TEST(F32_VRELU__WASMSIMD_X4, batch_lt_4) {
708     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
709       VUnaryMicrokernelTester()
710         .batch_size(batch_size)
711         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x4);
712     }
713   }
714 
TEST(F32_VRELU__WASMSIMD_X4,batch_gt_4)715   TEST(F32_VRELU__WASMSIMD_X4, batch_gt_4) {
716     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
717       VUnaryMicrokernelTester()
718         .batch_size(batch_size)
719         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x4);
720     }
721   }
722 
TEST(F32_VRELU__WASMSIMD_X4,inplace)723   TEST(F32_VRELU__WASMSIMD_X4, inplace) {
724     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
725       VUnaryMicrokernelTester()
726         .batch_size(batch_size)
727         .inplace(true)
728         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x4);
729     }
730   }
731 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
732 
733 
734 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VRELU__WASMSIMD_X8,batch_eq_8)735   TEST(F32_VRELU__WASMSIMD_X8, batch_eq_8) {
736     VUnaryMicrokernelTester()
737       .batch_size(8)
738       .Test(xnn_f32_vrelu_ukernel__wasmsimd_x8);
739   }
740 
TEST(F32_VRELU__WASMSIMD_X8,batch_div_8)741   TEST(F32_VRELU__WASMSIMD_X8, batch_div_8) {
742     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
743       VUnaryMicrokernelTester()
744         .batch_size(batch_size)
745         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x8);
746     }
747   }
748 
TEST(F32_VRELU__WASMSIMD_X8,batch_lt_8)749   TEST(F32_VRELU__WASMSIMD_X8, batch_lt_8) {
750     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
751       VUnaryMicrokernelTester()
752         .batch_size(batch_size)
753         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x8);
754     }
755   }
756 
TEST(F32_VRELU__WASMSIMD_X8,batch_gt_8)757   TEST(F32_VRELU__WASMSIMD_X8, batch_gt_8) {
758     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
759       VUnaryMicrokernelTester()
760         .batch_size(batch_size)
761         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x8);
762     }
763   }
764 
TEST(F32_VRELU__WASMSIMD_X8,inplace)765   TEST(F32_VRELU__WASMSIMD_X8, inplace) {
766     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
767       VUnaryMicrokernelTester()
768         .batch_size(batch_size)
769         .inplace(true)
770         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x8);
771     }
772   }
773 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
774 
775 
776 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VRELU__WASMSIMD_X16,batch_eq_16)777   TEST(F32_VRELU__WASMSIMD_X16, batch_eq_16) {
778     VUnaryMicrokernelTester()
779       .batch_size(16)
780       .Test(xnn_f32_vrelu_ukernel__wasmsimd_x16);
781   }
782 
TEST(F32_VRELU__WASMSIMD_X16,batch_div_16)783   TEST(F32_VRELU__WASMSIMD_X16, batch_div_16) {
784     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
785       VUnaryMicrokernelTester()
786         .batch_size(batch_size)
787         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x16);
788     }
789   }
790 
TEST(F32_VRELU__WASMSIMD_X16,batch_lt_16)791   TEST(F32_VRELU__WASMSIMD_X16, batch_lt_16) {
792     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
793       VUnaryMicrokernelTester()
794         .batch_size(batch_size)
795         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x16);
796     }
797   }
798 
TEST(F32_VRELU__WASMSIMD_X16,batch_gt_16)799   TEST(F32_VRELU__WASMSIMD_X16, batch_gt_16) {
800     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
801       VUnaryMicrokernelTester()
802         .batch_size(batch_size)
803         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x16);
804     }
805   }
806 
TEST(F32_VRELU__WASMSIMD_X16,inplace)807   TEST(F32_VRELU__WASMSIMD_X16, inplace) {
808     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
809       VUnaryMicrokernelTester()
810         .batch_size(batch_size)
811         .inplace(true)
812         .Test(xnn_f32_vrelu_ukernel__wasmsimd_x16);
813     }
814   }
815 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
816 
817 
818 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_VRELU__WASM32_SHR_X1,batch_eq_1)819   TEST(F32_VRELU__WASM32_SHR_X1, batch_eq_1) {
820     VUnaryMicrokernelTester()
821       .batch_size(1)
822       .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x1);
823   }
824 
TEST(F32_VRELU__WASM32_SHR_X1,batch_gt_1)825   TEST(F32_VRELU__WASM32_SHR_X1, batch_gt_1) {
826     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
827       VUnaryMicrokernelTester()
828         .batch_size(batch_size)
829         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x1);
830     }
831   }
832 
TEST(F32_VRELU__WASM32_SHR_X1,inplace)833   TEST(F32_VRELU__WASM32_SHR_X1, inplace) {
834     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
835       VUnaryMicrokernelTester()
836         .batch_size(batch_size)
837         .inplace(true)
838         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x1);
839     }
840   }
841 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
842 
843 
844 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_VRELU__WASM32_SHR_X2,batch_eq_2)845   TEST(F32_VRELU__WASM32_SHR_X2, batch_eq_2) {
846     VUnaryMicrokernelTester()
847       .batch_size(2)
848       .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x2);
849   }
850 
TEST(F32_VRELU__WASM32_SHR_X2,batch_div_2)851   TEST(F32_VRELU__WASM32_SHR_X2, batch_div_2) {
852     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
853       VUnaryMicrokernelTester()
854         .batch_size(batch_size)
855         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x2);
856     }
857   }
858 
TEST(F32_VRELU__WASM32_SHR_X2,batch_lt_2)859   TEST(F32_VRELU__WASM32_SHR_X2, batch_lt_2) {
860     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
861       VUnaryMicrokernelTester()
862         .batch_size(batch_size)
863         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x2);
864     }
865   }
866 
TEST(F32_VRELU__WASM32_SHR_X2,batch_gt_2)867   TEST(F32_VRELU__WASM32_SHR_X2, batch_gt_2) {
868     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
869       VUnaryMicrokernelTester()
870         .batch_size(batch_size)
871         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x2);
872     }
873   }
874 
TEST(F32_VRELU__WASM32_SHR_X2,inplace)875   TEST(F32_VRELU__WASM32_SHR_X2, inplace) {
876     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
877       VUnaryMicrokernelTester()
878         .batch_size(batch_size)
879         .inplace(true)
880         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x2);
881     }
882   }
883 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
884 
885 
886 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_VRELU__WASM32_SHR_X4,batch_eq_4)887   TEST(F32_VRELU__WASM32_SHR_X4, batch_eq_4) {
888     VUnaryMicrokernelTester()
889       .batch_size(4)
890       .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x4);
891   }
892 
TEST(F32_VRELU__WASM32_SHR_X4,batch_div_4)893   TEST(F32_VRELU__WASM32_SHR_X4, batch_div_4) {
894     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
895       VUnaryMicrokernelTester()
896         .batch_size(batch_size)
897         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x4);
898     }
899   }
900 
TEST(F32_VRELU__WASM32_SHR_X4,batch_lt_4)901   TEST(F32_VRELU__WASM32_SHR_X4, batch_lt_4) {
902     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
903       VUnaryMicrokernelTester()
904         .batch_size(batch_size)
905         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x4);
906     }
907   }
908 
TEST(F32_VRELU__WASM32_SHR_X4,batch_gt_4)909   TEST(F32_VRELU__WASM32_SHR_X4, batch_gt_4) {
910     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
911       VUnaryMicrokernelTester()
912         .batch_size(batch_size)
913         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x4);
914     }
915   }
916 
TEST(F32_VRELU__WASM32_SHR_X4,inplace)917   TEST(F32_VRELU__WASM32_SHR_X4, inplace) {
918     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
919       VUnaryMicrokernelTester()
920         .batch_size(batch_size)
921         .inplace(true)
922         .Test(xnn_f32_vrelu_ukernel__wasm32_shr_x4);
923     }
924   }
925 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
926