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-vlrelu.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_VLRELU__NEON_X4,batch_eq_4)21 TEST(F32_VLRELU__NEON_X4, batch_eq_4) {
22 TEST_REQUIRES_ARM_NEON;
23 VUnaryMicrokernelTester()
24 .batch_size(4)
25 .Test(xnn_f32_vlrelu_ukernel__neon_x4, xnn_init_f32_lrelu_scalar_params);
26 }
27
TEST(F32_VLRELU__NEON_X4,batch_div_4)28 TEST(F32_VLRELU__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_vlrelu_ukernel__neon_x4, xnn_init_f32_lrelu_scalar_params);
34 }
35 }
36
TEST(F32_VLRELU__NEON_X4,batch_lt_4)37 TEST(F32_VLRELU__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_vlrelu_ukernel__neon_x4, xnn_init_f32_lrelu_scalar_params);
43 }
44 }
45
TEST(F32_VLRELU__NEON_X4,batch_gt_4)46 TEST(F32_VLRELU__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_vlrelu_ukernel__neon_x4, xnn_init_f32_lrelu_scalar_params);
52 }
53 }
54
TEST(F32_VLRELU__NEON_X4,inplace)55 TEST(F32_VLRELU__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_vlrelu_ukernel__neon_x4, xnn_init_f32_lrelu_scalar_params);
62 }
63 }
64
TEST(F32_VLRELU__NEON_X4,slope)65 TEST(F32_VLRELU__NEON_X4, slope) {
66 TEST_REQUIRES_ARM_NEON;
67 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
68 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
69 VUnaryMicrokernelTester()
70 .batch_size(batch_size)
71 .slope(slope)
72 .Test(xnn_f32_vlrelu_ukernel__neon_x4, xnn_init_f32_lrelu_scalar_params);
73 }
74 }
75 }
76 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
77
78
79 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VLRELU__NEON_X8,batch_eq_8)80 TEST(F32_VLRELU__NEON_X8, batch_eq_8) {
81 TEST_REQUIRES_ARM_NEON;
82 VUnaryMicrokernelTester()
83 .batch_size(8)
84 .Test(xnn_f32_vlrelu_ukernel__neon_x8, xnn_init_f32_lrelu_scalar_params);
85 }
86
TEST(F32_VLRELU__NEON_X8,batch_div_8)87 TEST(F32_VLRELU__NEON_X8, batch_div_8) {
88 TEST_REQUIRES_ARM_NEON;
89 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
90 VUnaryMicrokernelTester()
91 .batch_size(batch_size)
92 .Test(xnn_f32_vlrelu_ukernel__neon_x8, xnn_init_f32_lrelu_scalar_params);
93 }
94 }
95
TEST(F32_VLRELU__NEON_X8,batch_lt_8)96 TEST(F32_VLRELU__NEON_X8, batch_lt_8) {
97 TEST_REQUIRES_ARM_NEON;
98 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
99 VUnaryMicrokernelTester()
100 .batch_size(batch_size)
101 .Test(xnn_f32_vlrelu_ukernel__neon_x8, xnn_init_f32_lrelu_scalar_params);
102 }
103 }
104
TEST(F32_VLRELU__NEON_X8,batch_gt_8)105 TEST(F32_VLRELU__NEON_X8, batch_gt_8) {
106 TEST_REQUIRES_ARM_NEON;
107 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
108 VUnaryMicrokernelTester()
109 .batch_size(batch_size)
110 .Test(xnn_f32_vlrelu_ukernel__neon_x8, xnn_init_f32_lrelu_scalar_params);
111 }
112 }
113
TEST(F32_VLRELU__NEON_X8,inplace)114 TEST(F32_VLRELU__NEON_X8, inplace) {
115 TEST_REQUIRES_ARM_NEON;
116 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
117 VUnaryMicrokernelTester()
118 .batch_size(batch_size)
119 .inplace(true)
120 .Test(xnn_f32_vlrelu_ukernel__neon_x8, xnn_init_f32_lrelu_scalar_params);
121 }
122 }
123
TEST(F32_VLRELU__NEON_X8,slope)124 TEST(F32_VLRELU__NEON_X8, slope) {
125 TEST_REQUIRES_ARM_NEON;
126 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
127 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
128 VUnaryMicrokernelTester()
129 .batch_size(batch_size)
130 .slope(slope)
131 .Test(xnn_f32_vlrelu_ukernel__neon_x8, xnn_init_f32_lrelu_scalar_params);
132 }
133 }
134 }
135 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
136
137
138 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__SSE_X4,batch_eq_4)139 TEST(F32_VLRELU__SSE_X4, batch_eq_4) {
140 TEST_REQUIRES_X86_SSE;
141 VUnaryMicrokernelTester()
142 .batch_size(4)
143 .Test(xnn_f32_vlrelu_ukernel__sse_x4, xnn_init_f32_lrelu_sse_params);
144 }
145
TEST(F32_VLRELU__SSE_X4,batch_div_4)146 TEST(F32_VLRELU__SSE_X4, batch_div_4) {
147 TEST_REQUIRES_X86_SSE;
148 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
149 VUnaryMicrokernelTester()
150 .batch_size(batch_size)
151 .Test(xnn_f32_vlrelu_ukernel__sse_x4, xnn_init_f32_lrelu_sse_params);
152 }
153 }
154
TEST(F32_VLRELU__SSE_X4,batch_lt_4)155 TEST(F32_VLRELU__SSE_X4, batch_lt_4) {
156 TEST_REQUIRES_X86_SSE;
157 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
158 VUnaryMicrokernelTester()
159 .batch_size(batch_size)
160 .Test(xnn_f32_vlrelu_ukernel__sse_x4, xnn_init_f32_lrelu_sse_params);
161 }
162 }
163
TEST(F32_VLRELU__SSE_X4,batch_gt_4)164 TEST(F32_VLRELU__SSE_X4, batch_gt_4) {
165 TEST_REQUIRES_X86_SSE;
166 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
167 VUnaryMicrokernelTester()
168 .batch_size(batch_size)
169 .Test(xnn_f32_vlrelu_ukernel__sse_x4, xnn_init_f32_lrelu_sse_params);
170 }
171 }
172
TEST(F32_VLRELU__SSE_X4,inplace)173 TEST(F32_VLRELU__SSE_X4, inplace) {
174 TEST_REQUIRES_X86_SSE;
175 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
176 VUnaryMicrokernelTester()
177 .batch_size(batch_size)
178 .inplace(true)
179 .Test(xnn_f32_vlrelu_ukernel__sse_x4, xnn_init_f32_lrelu_sse_params);
180 }
181 }
182
TEST(F32_VLRELU__SSE_X4,slope)183 TEST(F32_VLRELU__SSE_X4, slope) {
184 TEST_REQUIRES_X86_SSE;
185 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
186 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
187 VUnaryMicrokernelTester()
188 .batch_size(batch_size)
189 .slope(slope)
190 .Test(xnn_f32_vlrelu_ukernel__sse_x4, xnn_init_f32_lrelu_sse_params);
191 }
192 }
193 }
194 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
195
196
197 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__SSE_X8,batch_eq_8)198 TEST(F32_VLRELU__SSE_X8, batch_eq_8) {
199 TEST_REQUIRES_X86_SSE;
200 VUnaryMicrokernelTester()
201 .batch_size(8)
202 .Test(xnn_f32_vlrelu_ukernel__sse_x8, xnn_init_f32_lrelu_sse_params);
203 }
204
TEST(F32_VLRELU__SSE_X8,batch_div_8)205 TEST(F32_VLRELU__SSE_X8, batch_div_8) {
206 TEST_REQUIRES_X86_SSE;
207 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
208 VUnaryMicrokernelTester()
209 .batch_size(batch_size)
210 .Test(xnn_f32_vlrelu_ukernel__sse_x8, xnn_init_f32_lrelu_sse_params);
211 }
212 }
213
TEST(F32_VLRELU__SSE_X8,batch_lt_8)214 TEST(F32_VLRELU__SSE_X8, batch_lt_8) {
215 TEST_REQUIRES_X86_SSE;
216 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
217 VUnaryMicrokernelTester()
218 .batch_size(batch_size)
219 .Test(xnn_f32_vlrelu_ukernel__sse_x8, xnn_init_f32_lrelu_sse_params);
220 }
221 }
222
TEST(F32_VLRELU__SSE_X8,batch_gt_8)223 TEST(F32_VLRELU__SSE_X8, batch_gt_8) {
224 TEST_REQUIRES_X86_SSE;
225 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
226 VUnaryMicrokernelTester()
227 .batch_size(batch_size)
228 .Test(xnn_f32_vlrelu_ukernel__sse_x8, xnn_init_f32_lrelu_sse_params);
229 }
230 }
231
TEST(F32_VLRELU__SSE_X8,inplace)232 TEST(F32_VLRELU__SSE_X8, inplace) {
233 TEST_REQUIRES_X86_SSE;
234 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
235 VUnaryMicrokernelTester()
236 .batch_size(batch_size)
237 .inplace(true)
238 .Test(xnn_f32_vlrelu_ukernel__sse_x8, xnn_init_f32_lrelu_sse_params);
239 }
240 }
241
TEST(F32_VLRELU__SSE_X8,slope)242 TEST(F32_VLRELU__SSE_X8, slope) {
243 TEST_REQUIRES_X86_SSE;
244 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
245 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
246 VUnaryMicrokernelTester()
247 .batch_size(batch_size)
248 .slope(slope)
249 .Test(xnn_f32_vlrelu_ukernel__sse_x8, xnn_init_f32_lrelu_sse_params);
250 }
251 }
252 }
253 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
254
255
256 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__SSE2_X4,batch_eq_4)257 TEST(F32_VLRELU__SSE2_X4, batch_eq_4) {
258 TEST_REQUIRES_X86_SSE2;
259 VUnaryMicrokernelTester()
260 .batch_size(4)
261 .Test(xnn_f32_vlrelu_ukernel__sse2_x4, xnn_init_f32_lrelu_sse_params);
262 }
263
TEST(F32_VLRELU__SSE2_X4,batch_div_4)264 TEST(F32_VLRELU__SSE2_X4, batch_div_4) {
265 TEST_REQUIRES_X86_SSE2;
266 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
267 VUnaryMicrokernelTester()
268 .batch_size(batch_size)
269 .Test(xnn_f32_vlrelu_ukernel__sse2_x4, xnn_init_f32_lrelu_sse_params);
270 }
271 }
272
TEST(F32_VLRELU__SSE2_X4,batch_lt_4)273 TEST(F32_VLRELU__SSE2_X4, batch_lt_4) {
274 TEST_REQUIRES_X86_SSE2;
275 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
276 VUnaryMicrokernelTester()
277 .batch_size(batch_size)
278 .Test(xnn_f32_vlrelu_ukernel__sse2_x4, xnn_init_f32_lrelu_sse_params);
279 }
280 }
281
TEST(F32_VLRELU__SSE2_X4,batch_gt_4)282 TEST(F32_VLRELU__SSE2_X4, batch_gt_4) {
283 TEST_REQUIRES_X86_SSE2;
284 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
285 VUnaryMicrokernelTester()
286 .batch_size(batch_size)
287 .Test(xnn_f32_vlrelu_ukernel__sse2_x4, xnn_init_f32_lrelu_sse_params);
288 }
289 }
290
TEST(F32_VLRELU__SSE2_X4,inplace)291 TEST(F32_VLRELU__SSE2_X4, inplace) {
292 TEST_REQUIRES_X86_SSE2;
293 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
294 VUnaryMicrokernelTester()
295 .batch_size(batch_size)
296 .inplace(true)
297 .Test(xnn_f32_vlrelu_ukernel__sse2_x4, xnn_init_f32_lrelu_sse_params);
298 }
299 }
300
TEST(F32_VLRELU__SSE2_X4,slope)301 TEST(F32_VLRELU__SSE2_X4, slope) {
302 TEST_REQUIRES_X86_SSE2;
303 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
304 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
305 VUnaryMicrokernelTester()
306 .batch_size(batch_size)
307 .slope(slope)
308 .Test(xnn_f32_vlrelu_ukernel__sse2_x4, xnn_init_f32_lrelu_sse_params);
309 }
310 }
311 }
312 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
313
314
315 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__SSE2_X8,batch_eq_8)316 TEST(F32_VLRELU__SSE2_X8, batch_eq_8) {
317 TEST_REQUIRES_X86_SSE2;
318 VUnaryMicrokernelTester()
319 .batch_size(8)
320 .Test(xnn_f32_vlrelu_ukernel__sse2_x8, xnn_init_f32_lrelu_sse_params);
321 }
322
TEST(F32_VLRELU__SSE2_X8,batch_div_8)323 TEST(F32_VLRELU__SSE2_X8, batch_div_8) {
324 TEST_REQUIRES_X86_SSE2;
325 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
326 VUnaryMicrokernelTester()
327 .batch_size(batch_size)
328 .Test(xnn_f32_vlrelu_ukernel__sse2_x8, xnn_init_f32_lrelu_sse_params);
329 }
330 }
331
TEST(F32_VLRELU__SSE2_X8,batch_lt_8)332 TEST(F32_VLRELU__SSE2_X8, batch_lt_8) {
333 TEST_REQUIRES_X86_SSE2;
334 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
335 VUnaryMicrokernelTester()
336 .batch_size(batch_size)
337 .Test(xnn_f32_vlrelu_ukernel__sse2_x8, xnn_init_f32_lrelu_sse_params);
338 }
339 }
340
TEST(F32_VLRELU__SSE2_X8,batch_gt_8)341 TEST(F32_VLRELU__SSE2_X8, batch_gt_8) {
342 TEST_REQUIRES_X86_SSE2;
343 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
344 VUnaryMicrokernelTester()
345 .batch_size(batch_size)
346 .Test(xnn_f32_vlrelu_ukernel__sse2_x8, xnn_init_f32_lrelu_sse_params);
347 }
348 }
349
TEST(F32_VLRELU__SSE2_X8,inplace)350 TEST(F32_VLRELU__SSE2_X8, inplace) {
351 TEST_REQUIRES_X86_SSE2;
352 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
353 VUnaryMicrokernelTester()
354 .batch_size(batch_size)
355 .inplace(true)
356 .Test(xnn_f32_vlrelu_ukernel__sse2_x8, xnn_init_f32_lrelu_sse_params);
357 }
358 }
359
TEST(F32_VLRELU__SSE2_X8,slope)360 TEST(F32_VLRELU__SSE2_X8, slope) {
361 TEST_REQUIRES_X86_SSE2;
362 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
363 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
364 VUnaryMicrokernelTester()
365 .batch_size(batch_size)
366 .slope(slope)
367 .Test(xnn_f32_vlrelu_ukernel__sse2_x8, xnn_init_f32_lrelu_sse_params);
368 }
369 }
370 }
371 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
372
373
374 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__SSE41_X4,batch_eq_4)375 TEST(F32_VLRELU__SSE41_X4, batch_eq_4) {
376 TEST_REQUIRES_X86_SSE41;
377 VUnaryMicrokernelTester()
378 .batch_size(4)
379 .Test(xnn_f32_vlrelu_ukernel__sse41_x4, xnn_init_f32_lrelu_sse_params);
380 }
381
TEST(F32_VLRELU__SSE41_X4,batch_div_4)382 TEST(F32_VLRELU__SSE41_X4, batch_div_4) {
383 TEST_REQUIRES_X86_SSE41;
384 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
385 VUnaryMicrokernelTester()
386 .batch_size(batch_size)
387 .Test(xnn_f32_vlrelu_ukernel__sse41_x4, xnn_init_f32_lrelu_sse_params);
388 }
389 }
390
TEST(F32_VLRELU__SSE41_X4,batch_lt_4)391 TEST(F32_VLRELU__SSE41_X4, batch_lt_4) {
392 TEST_REQUIRES_X86_SSE41;
393 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
394 VUnaryMicrokernelTester()
395 .batch_size(batch_size)
396 .Test(xnn_f32_vlrelu_ukernel__sse41_x4, xnn_init_f32_lrelu_sse_params);
397 }
398 }
399
TEST(F32_VLRELU__SSE41_X4,batch_gt_4)400 TEST(F32_VLRELU__SSE41_X4, batch_gt_4) {
401 TEST_REQUIRES_X86_SSE41;
402 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
403 VUnaryMicrokernelTester()
404 .batch_size(batch_size)
405 .Test(xnn_f32_vlrelu_ukernel__sse41_x4, xnn_init_f32_lrelu_sse_params);
406 }
407 }
408
TEST(F32_VLRELU__SSE41_X4,inplace)409 TEST(F32_VLRELU__SSE41_X4, inplace) {
410 TEST_REQUIRES_X86_SSE41;
411 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
412 VUnaryMicrokernelTester()
413 .batch_size(batch_size)
414 .inplace(true)
415 .Test(xnn_f32_vlrelu_ukernel__sse41_x4, xnn_init_f32_lrelu_sse_params);
416 }
417 }
418
TEST(F32_VLRELU__SSE41_X4,slope)419 TEST(F32_VLRELU__SSE41_X4, slope) {
420 TEST_REQUIRES_X86_SSE41;
421 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
422 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
423 VUnaryMicrokernelTester()
424 .batch_size(batch_size)
425 .slope(slope)
426 .Test(xnn_f32_vlrelu_ukernel__sse41_x4, xnn_init_f32_lrelu_sse_params);
427 }
428 }
429 }
430 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
431
432
433 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__SSE41_X8,batch_eq_8)434 TEST(F32_VLRELU__SSE41_X8, batch_eq_8) {
435 TEST_REQUIRES_X86_SSE41;
436 VUnaryMicrokernelTester()
437 .batch_size(8)
438 .Test(xnn_f32_vlrelu_ukernel__sse41_x8, xnn_init_f32_lrelu_sse_params);
439 }
440
TEST(F32_VLRELU__SSE41_X8,batch_div_8)441 TEST(F32_VLRELU__SSE41_X8, batch_div_8) {
442 TEST_REQUIRES_X86_SSE41;
443 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
444 VUnaryMicrokernelTester()
445 .batch_size(batch_size)
446 .Test(xnn_f32_vlrelu_ukernel__sse41_x8, xnn_init_f32_lrelu_sse_params);
447 }
448 }
449
TEST(F32_VLRELU__SSE41_X8,batch_lt_8)450 TEST(F32_VLRELU__SSE41_X8, batch_lt_8) {
451 TEST_REQUIRES_X86_SSE41;
452 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
453 VUnaryMicrokernelTester()
454 .batch_size(batch_size)
455 .Test(xnn_f32_vlrelu_ukernel__sse41_x8, xnn_init_f32_lrelu_sse_params);
456 }
457 }
458
TEST(F32_VLRELU__SSE41_X8,batch_gt_8)459 TEST(F32_VLRELU__SSE41_X8, batch_gt_8) {
460 TEST_REQUIRES_X86_SSE41;
461 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
462 VUnaryMicrokernelTester()
463 .batch_size(batch_size)
464 .Test(xnn_f32_vlrelu_ukernel__sse41_x8, xnn_init_f32_lrelu_sse_params);
465 }
466 }
467
TEST(F32_VLRELU__SSE41_X8,inplace)468 TEST(F32_VLRELU__SSE41_X8, inplace) {
469 TEST_REQUIRES_X86_SSE41;
470 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
471 VUnaryMicrokernelTester()
472 .batch_size(batch_size)
473 .inplace(true)
474 .Test(xnn_f32_vlrelu_ukernel__sse41_x8, xnn_init_f32_lrelu_sse_params);
475 }
476 }
477
TEST(F32_VLRELU__SSE41_X8,slope)478 TEST(F32_VLRELU__SSE41_X8, slope) {
479 TEST_REQUIRES_X86_SSE41;
480 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
481 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
482 VUnaryMicrokernelTester()
483 .batch_size(batch_size)
484 .slope(slope)
485 .Test(xnn_f32_vlrelu_ukernel__sse41_x8, xnn_init_f32_lrelu_sse_params);
486 }
487 }
488 }
489 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
490
491
492 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__AVX_X8,batch_eq_8)493 TEST(F32_VLRELU__AVX_X8, batch_eq_8) {
494 TEST_REQUIRES_X86_AVX;
495 VUnaryMicrokernelTester()
496 .batch_size(8)
497 .Test(xnn_f32_vlrelu_ukernel__avx_x8, xnn_init_f32_lrelu_avx_params);
498 }
499
TEST(F32_VLRELU__AVX_X8,batch_div_8)500 TEST(F32_VLRELU__AVX_X8, batch_div_8) {
501 TEST_REQUIRES_X86_AVX;
502 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
503 VUnaryMicrokernelTester()
504 .batch_size(batch_size)
505 .Test(xnn_f32_vlrelu_ukernel__avx_x8, xnn_init_f32_lrelu_avx_params);
506 }
507 }
508
TEST(F32_VLRELU__AVX_X8,batch_lt_8)509 TEST(F32_VLRELU__AVX_X8, batch_lt_8) {
510 TEST_REQUIRES_X86_AVX;
511 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
512 VUnaryMicrokernelTester()
513 .batch_size(batch_size)
514 .Test(xnn_f32_vlrelu_ukernel__avx_x8, xnn_init_f32_lrelu_avx_params);
515 }
516 }
517
TEST(F32_VLRELU__AVX_X8,batch_gt_8)518 TEST(F32_VLRELU__AVX_X8, batch_gt_8) {
519 TEST_REQUIRES_X86_AVX;
520 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
521 VUnaryMicrokernelTester()
522 .batch_size(batch_size)
523 .Test(xnn_f32_vlrelu_ukernel__avx_x8, xnn_init_f32_lrelu_avx_params);
524 }
525 }
526
TEST(F32_VLRELU__AVX_X8,inplace)527 TEST(F32_VLRELU__AVX_X8, inplace) {
528 TEST_REQUIRES_X86_AVX;
529 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
530 VUnaryMicrokernelTester()
531 .batch_size(batch_size)
532 .inplace(true)
533 .Test(xnn_f32_vlrelu_ukernel__avx_x8, xnn_init_f32_lrelu_avx_params);
534 }
535 }
536
TEST(F32_VLRELU__AVX_X8,slope)537 TEST(F32_VLRELU__AVX_X8, slope) {
538 TEST_REQUIRES_X86_AVX;
539 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
540 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
541 VUnaryMicrokernelTester()
542 .batch_size(batch_size)
543 .slope(slope)
544 .Test(xnn_f32_vlrelu_ukernel__avx_x8, xnn_init_f32_lrelu_avx_params);
545 }
546 }
547 }
548 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
549
550
551 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__AVX_X16,batch_eq_16)552 TEST(F32_VLRELU__AVX_X16, batch_eq_16) {
553 TEST_REQUIRES_X86_AVX;
554 VUnaryMicrokernelTester()
555 .batch_size(16)
556 .Test(xnn_f32_vlrelu_ukernel__avx_x16, xnn_init_f32_lrelu_avx_params);
557 }
558
TEST(F32_VLRELU__AVX_X16,batch_div_16)559 TEST(F32_VLRELU__AVX_X16, batch_div_16) {
560 TEST_REQUIRES_X86_AVX;
561 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
562 VUnaryMicrokernelTester()
563 .batch_size(batch_size)
564 .Test(xnn_f32_vlrelu_ukernel__avx_x16, xnn_init_f32_lrelu_avx_params);
565 }
566 }
567
TEST(F32_VLRELU__AVX_X16,batch_lt_16)568 TEST(F32_VLRELU__AVX_X16, batch_lt_16) {
569 TEST_REQUIRES_X86_AVX;
570 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
571 VUnaryMicrokernelTester()
572 .batch_size(batch_size)
573 .Test(xnn_f32_vlrelu_ukernel__avx_x16, xnn_init_f32_lrelu_avx_params);
574 }
575 }
576
TEST(F32_VLRELU__AVX_X16,batch_gt_16)577 TEST(F32_VLRELU__AVX_X16, batch_gt_16) {
578 TEST_REQUIRES_X86_AVX;
579 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
580 VUnaryMicrokernelTester()
581 .batch_size(batch_size)
582 .Test(xnn_f32_vlrelu_ukernel__avx_x16, xnn_init_f32_lrelu_avx_params);
583 }
584 }
585
TEST(F32_VLRELU__AVX_X16,inplace)586 TEST(F32_VLRELU__AVX_X16, inplace) {
587 TEST_REQUIRES_X86_AVX;
588 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
589 VUnaryMicrokernelTester()
590 .batch_size(batch_size)
591 .inplace(true)
592 .Test(xnn_f32_vlrelu_ukernel__avx_x16, xnn_init_f32_lrelu_avx_params);
593 }
594 }
595
TEST(F32_VLRELU__AVX_X16,slope)596 TEST(F32_VLRELU__AVX_X16, slope) {
597 TEST_REQUIRES_X86_AVX;
598 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
599 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
600 VUnaryMicrokernelTester()
601 .batch_size(batch_size)
602 .slope(slope)
603 .Test(xnn_f32_vlrelu_ukernel__avx_x16, xnn_init_f32_lrelu_avx_params);
604 }
605 }
606 }
607 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
608
609
610 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__AVX512F_X16,batch_eq_16)611 TEST(F32_VLRELU__AVX512F_X16, batch_eq_16) {
612 TEST_REQUIRES_X86_AVX512F;
613 VUnaryMicrokernelTester()
614 .batch_size(16)
615 .Test(xnn_f32_vlrelu_ukernel__avx512f_x16, xnn_init_f32_lrelu_scalar_params);
616 }
617
TEST(F32_VLRELU__AVX512F_X16,batch_div_16)618 TEST(F32_VLRELU__AVX512F_X16, batch_div_16) {
619 TEST_REQUIRES_X86_AVX512F;
620 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
621 VUnaryMicrokernelTester()
622 .batch_size(batch_size)
623 .Test(xnn_f32_vlrelu_ukernel__avx512f_x16, xnn_init_f32_lrelu_scalar_params);
624 }
625 }
626
TEST(F32_VLRELU__AVX512F_X16,batch_lt_16)627 TEST(F32_VLRELU__AVX512F_X16, batch_lt_16) {
628 TEST_REQUIRES_X86_AVX512F;
629 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
630 VUnaryMicrokernelTester()
631 .batch_size(batch_size)
632 .Test(xnn_f32_vlrelu_ukernel__avx512f_x16, xnn_init_f32_lrelu_scalar_params);
633 }
634 }
635
TEST(F32_VLRELU__AVX512F_X16,batch_gt_16)636 TEST(F32_VLRELU__AVX512F_X16, batch_gt_16) {
637 TEST_REQUIRES_X86_AVX512F;
638 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
639 VUnaryMicrokernelTester()
640 .batch_size(batch_size)
641 .Test(xnn_f32_vlrelu_ukernel__avx512f_x16, xnn_init_f32_lrelu_scalar_params);
642 }
643 }
644
TEST(F32_VLRELU__AVX512F_X16,inplace)645 TEST(F32_VLRELU__AVX512F_X16, inplace) {
646 TEST_REQUIRES_X86_AVX512F;
647 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
648 VUnaryMicrokernelTester()
649 .batch_size(batch_size)
650 .inplace(true)
651 .Test(xnn_f32_vlrelu_ukernel__avx512f_x16, xnn_init_f32_lrelu_scalar_params);
652 }
653 }
654
TEST(F32_VLRELU__AVX512F_X16,slope)655 TEST(F32_VLRELU__AVX512F_X16, slope) {
656 TEST_REQUIRES_X86_AVX512F;
657 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
658 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
659 VUnaryMicrokernelTester()
660 .batch_size(batch_size)
661 .slope(slope)
662 .Test(xnn_f32_vlrelu_ukernel__avx512f_x16, xnn_init_f32_lrelu_scalar_params);
663 }
664 }
665 }
666 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
667
668
669 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VLRELU__AVX512F_X32,batch_eq_32)670 TEST(F32_VLRELU__AVX512F_X32, batch_eq_32) {
671 TEST_REQUIRES_X86_AVX512F;
672 VUnaryMicrokernelTester()
673 .batch_size(32)
674 .Test(xnn_f32_vlrelu_ukernel__avx512f_x32, xnn_init_f32_lrelu_scalar_params);
675 }
676
TEST(F32_VLRELU__AVX512F_X32,batch_div_32)677 TEST(F32_VLRELU__AVX512F_X32, batch_div_32) {
678 TEST_REQUIRES_X86_AVX512F;
679 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
680 VUnaryMicrokernelTester()
681 .batch_size(batch_size)
682 .Test(xnn_f32_vlrelu_ukernel__avx512f_x32, xnn_init_f32_lrelu_scalar_params);
683 }
684 }
685
TEST(F32_VLRELU__AVX512F_X32,batch_lt_32)686 TEST(F32_VLRELU__AVX512F_X32, batch_lt_32) {
687 TEST_REQUIRES_X86_AVX512F;
688 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
689 VUnaryMicrokernelTester()
690 .batch_size(batch_size)
691 .Test(xnn_f32_vlrelu_ukernel__avx512f_x32, xnn_init_f32_lrelu_scalar_params);
692 }
693 }
694
TEST(F32_VLRELU__AVX512F_X32,batch_gt_32)695 TEST(F32_VLRELU__AVX512F_X32, batch_gt_32) {
696 TEST_REQUIRES_X86_AVX512F;
697 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
698 VUnaryMicrokernelTester()
699 .batch_size(batch_size)
700 .Test(xnn_f32_vlrelu_ukernel__avx512f_x32, xnn_init_f32_lrelu_scalar_params);
701 }
702 }
703
TEST(F32_VLRELU__AVX512F_X32,inplace)704 TEST(F32_VLRELU__AVX512F_X32, inplace) {
705 TEST_REQUIRES_X86_AVX512F;
706 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
707 VUnaryMicrokernelTester()
708 .batch_size(batch_size)
709 .inplace(true)
710 .Test(xnn_f32_vlrelu_ukernel__avx512f_x32, xnn_init_f32_lrelu_scalar_params);
711 }
712 }
713
TEST(F32_VLRELU__AVX512F_X32,slope)714 TEST(F32_VLRELU__AVX512F_X32, slope) {
715 TEST_REQUIRES_X86_AVX512F;
716 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
717 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
718 VUnaryMicrokernelTester()
719 .batch_size(batch_size)
720 .slope(slope)
721 .Test(xnn_f32_vlrelu_ukernel__avx512f_x32, xnn_init_f32_lrelu_scalar_params);
722 }
723 }
724 }
725 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
726
727
728 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4,batch_eq_4)729 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, batch_eq_4) {
730 VUnaryMicrokernelTester()
731 .batch_size(4)
732 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4, xnn_init_f32_lrelu_wasmsimd_params);
733 }
734
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4,batch_div_4)735 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, batch_div_4) {
736 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
737 VUnaryMicrokernelTester()
738 .batch_size(batch_size)
739 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4, xnn_init_f32_lrelu_wasmsimd_params);
740 }
741 }
742
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4,batch_lt_4)743 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, batch_lt_4) {
744 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
745 VUnaryMicrokernelTester()
746 .batch_size(batch_size)
747 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4, xnn_init_f32_lrelu_wasmsimd_params);
748 }
749 }
750
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4,batch_gt_4)751 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, batch_gt_4) {
752 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
753 VUnaryMicrokernelTester()
754 .batch_size(batch_size)
755 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4, xnn_init_f32_lrelu_wasmsimd_params);
756 }
757 }
758
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4,inplace)759 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, inplace) {
760 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
761 VUnaryMicrokernelTester()
762 .batch_size(batch_size)
763 .inplace(true)
764 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4, xnn_init_f32_lrelu_wasmsimd_params);
765 }
766 }
767
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4,slope)768 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, slope) {
769 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
770 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
771 VUnaryMicrokernelTester()
772 .batch_size(batch_size)
773 .slope(slope)
774 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4, xnn_init_f32_lrelu_wasmsimd_params);
775 }
776 }
777 }
778 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
779
780
781 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8,batch_eq_8)782 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, batch_eq_8) {
783 VUnaryMicrokernelTester()
784 .batch_size(8)
785 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8, xnn_init_f32_lrelu_wasmsimd_params);
786 }
787
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8,batch_div_8)788 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, batch_div_8) {
789 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
790 VUnaryMicrokernelTester()
791 .batch_size(batch_size)
792 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8, xnn_init_f32_lrelu_wasmsimd_params);
793 }
794 }
795
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8,batch_lt_8)796 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, batch_lt_8) {
797 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
798 VUnaryMicrokernelTester()
799 .batch_size(batch_size)
800 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8, xnn_init_f32_lrelu_wasmsimd_params);
801 }
802 }
803
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8,batch_gt_8)804 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, batch_gt_8) {
805 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
806 VUnaryMicrokernelTester()
807 .batch_size(batch_size)
808 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8, xnn_init_f32_lrelu_wasmsimd_params);
809 }
810 }
811
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8,inplace)812 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, inplace) {
813 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
814 VUnaryMicrokernelTester()
815 .batch_size(batch_size)
816 .inplace(true)
817 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8, xnn_init_f32_lrelu_wasmsimd_params);
818 }
819 }
820
TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8,slope)821 TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, slope) {
822 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
823 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
824 VUnaryMicrokernelTester()
825 .batch_size(batch_size)
826 .slope(slope)
827 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8, xnn_init_f32_lrelu_wasmsimd_params);
828 }
829 }
830 }
831 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
832
833
834 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VLRELU__WASMSIMD_MINMAX_X4,batch_eq_4)835 TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, batch_eq_4) {
836 VUnaryMicrokernelTester()
837 .batch_size(4)
838 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4, xnn_init_f32_lrelu_wasmsimd_params);
839 }
840
TEST(F32_VLRELU__WASMSIMD_MINMAX_X4,batch_div_4)841 TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, batch_div_4) {
842 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
843 VUnaryMicrokernelTester()
844 .batch_size(batch_size)
845 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4, xnn_init_f32_lrelu_wasmsimd_params);
846 }
847 }
848
TEST(F32_VLRELU__WASMSIMD_MINMAX_X4,batch_lt_4)849 TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, batch_lt_4) {
850 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
851 VUnaryMicrokernelTester()
852 .batch_size(batch_size)
853 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4, xnn_init_f32_lrelu_wasmsimd_params);
854 }
855 }
856
TEST(F32_VLRELU__WASMSIMD_MINMAX_X4,batch_gt_4)857 TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, batch_gt_4) {
858 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
859 VUnaryMicrokernelTester()
860 .batch_size(batch_size)
861 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4, xnn_init_f32_lrelu_wasmsimd_params);
862 }
863 }
864
TEST(F32_VLRELU__WASMSIMD_MINMAX_X4,inplace)865 TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, inplace) {
866 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
867 VUnaryMicrokernelTester()
868 .batch_size(batch_size)
869 .inplace(true)
870 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4, xnn_init_f32_lrelu_wasmsimd_params);
871 }
872 }
873
TEST(F32_VLRELU__WASMSIMD_MINMAX_X4,slope)874 TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, slope) {
875 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
876 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
877 VUnaryMicrokernelTester()
878 .batch_size(batch_size)
879 .slope(slope)
880 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4, xnn_init_f32_lrelu_wasmsimd_params);
881 }
882 }
883 }
884 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
885
886
887 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VLRELU__WASMSIMD_MINMAX_X8,batch_eq_8)888 TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, batch_eq_8) {
889 VUnaryMicrokernelTester()
890 .batch_size(8)
891 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8, xnn_init_f32_lrelu_wasmsimd_params);
892 }
893
TEST(F32_VLRELU__WASMSIMD_MINMAX_X8,batch_div_8)894 TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, batch_div_8) {
895 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
896 VUnaryMicrokernelTester()
897 .batch_size(batch_size)
898 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8, xnn_init_f32_lrelu_wasmsimd_params);
899 }
900 }
901
TEST(F32_VLRELU__WASMSIMD_MINMAX_X8,batch_lt_8)902 TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, batch_lt_8) {
903 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
904 VUnaryMicrokernelTester()
905 .batch_size(batch_size)
906 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8, xnn_init_f32_lrelu_wasmsimd_params);
907 }
908 }
909
TEST(F32_VLRELU__WASMSIMD_MINMAX_X8,batch_gt_8)910 TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, batch_gt_8) {
911 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
912 VUnaryMicrokernelTester()
913 .batch_size(batch_size)
914 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8, xnn_init_f32_lrelu_wasmsimd_params);
915 }
916 }
917
TEST(F32_VLRELU__WASMSIMD_MINMAX_X8,inplace)918 TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, inplace) {
919 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
920 VUnaryMicrokernelTester()
921 .batch_size(batch_size)
922 .inplace(true)
923 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8, xnn_init_f32_lrelu_wasmsimd_params);
924 }
925 }
926
TEST(F32_VLRELU__WASMSIMD_MINMAX_X8,slope)927 TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, slope) {
928 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
929 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
930 VUnaryMicrokernelTester()
931 .batch_size(batch_size)
932 .slope(slope)
933 .Test(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8, xnn_init_f32_lrelu_wasmsimd_params);
934 }
935 }
936 }
937 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
938
939
940 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VLRELU__WASM_X1,batch_eq_1)941 TEST(F32_VLRELU__WASM_X1, batch_eq_1) {
942 VUnaryMicrokernelTester()
943 .batch_size(1)
944 .Test(xnn_f32_vlrelu_ukernel__wasm_x1, xnn_init_f32_lrelu_scalar_params);
945 }
946
TEST(F32_VLRELU__WASM_X1,batch_gt_1)947 TEST(F32_VLRELU__WASM_X1, batch_gt_1) {
948 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
949 VUnaryMicrokernelTester()
950 .batch_size(batch_size)
951 .Test(xnn_f32_vlrelu_ukernel__wasm_x1, xnn_init_f32_lrelu_scalar_params);
952 }
953 }
954
TEST(F32_VLRELU__WASM_X1,inplace)955 TEST(F32_VLRELU__WASM_X1, inplace) {
956 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
957 VUnaryMicrokernelTester()
958 .batch_size(batch_size)
959 .inplace(true)
960 .Test(xnn_f32_vlrelu_ukernel__wasm_x1, xnn_init_f32_lrelu_scalar_params);
961 }
962 }
963
TEST(F32_VLRELU__WASM_X1,slope)964 TEST(F32_VLRELU__WASM_X1, slope) {
965 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
966 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
967 VUnaryMicrokernelTester()
968 .batch_size(batch_size)
969 .slope(slope)
970 .Test(xnn_f32_vlrelu_ukernel__wasm_x1, xnn_init_f32_lrelu_scalar_params);
971 }
972 }
973 }
974 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
975
976
977 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VLRELU__WASM_X2,batch_eq_2)978 TEST(F32_VLRELU__WASM_X2, batch_eq_2) {
979 VUnaryMicrokernelTester()
980 .batch_size(2)
981 .Test(xnn_f32_vlrelu_ukernel__wasm_x2, xnn_init_f32_lrelu_scalar_params);
982 }
983
TEST(F32_VLRELU__WASM_X2,batch_div_2)984 TEST(F32_VLRELU__WASM_X2, batch_div_2) {
985 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
986 VUnaryMicrokernelTester()
987 .batch_size(batch_size)
988 .Test(xnn_f32_vlrelu_ukernel__wasm_x2, xnn_init_f32_lrelu_scalar_params);
989 }
990 }
991
TEST(F32_VLRELU__WASM_X2,batch_lt_2)992 TEST(F32_VLRELU__WASM_X2, batch_lt_2) {
993 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
994 VUnaryMicrokernelTester()
995 .batch_size(batch_size)
996 .Test(xnn_f32_vlrelu_ukernel__wasm_x2, xnn_init_f32_lrelu_scalar_params);
997 }
998 }
999
TEST(F32_VLRELU__WASM_X2,batch_gt_2)1000 TEST(F32_VLRELU__WASM_X2, batch_gt_2) {
1001 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
1002 VUnaryMicrokernelTester()
1003 .batch_size(batch_size)
1004 .Test(xnn_f32_vlrelu_ukernel__wasm_x2, xnn_init_f32_lrelu_scalar_params);
1005 }
1006 }
1007
TEST(F32_VLRELU__WASM_X2,inplace)1008 TEST(F32_VLRELU__WASM_X2, inplace) {
1009 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1010 VUnaryMicrokernelTester()
1011 .batch_size(batch_size)
1012 .inplace(true)
1013 .Test(xnn_f32_vlrelu_ukernel__wasm_x2, xnn_init_f32_lrelu_scalar_params);
1014 }
1015 }
1016
TEST(F32_VLRELU__WASM_X2,slope)1017 TEST(F32_VLRELU__WASM_X2, slope) {
1018 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
1019 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1020 VUnaryMicrokernelTester()
1021 .batch_size(batch_size)
1022 .slope(slope)
1023 .Test(xnn_f32_vlrelu_ukernel__wasm_x2, xnn_init_f32_lrelu_scalar_params);
1024 }
1025 }
1026 }
1027 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1028
1029
1030 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VLRELU__WASM_X4,batch_eq_4)1031 TEST(F32_VLRELU__WASM_X4, batch_eq_4) {
1032 VUnaryMicrokernelTester()
1033 .batch_size(4)
1034 .Test(xnn_f32_vlrelu_ukernel__wasm_x4, xnn_init_f32_lrelu_scalar_params);
1035 }
1036
TEST(F32_VLRELU__WASM_X4,batch_div_4)1037 TEST(F32_VLRELU__WASM_X4, batch_div_4) {
1038 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1039 VUnaryMicrokernelTester()
1040 .batch_size(batch_size)
1041 .Test(xnn_f32_vlrelu_ukernel__wasm_x4, xnn_init_f32_lrelu_scalar_params);
1042 }
1043 }
1044
TEST(F32_VLRELU__WASM_X4,batch_lt_4)1045 TEST(F32_VLRELU__WASM_X4, batch_lt_4) {
1046 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1047 VUnaryMicrokernelTester()
1048 .batch_size(batch_size)
1049 .Test(xnn_f32_vlrelu_ukernel__wasm_x4, xnn_init_f32_lrelu_scalar_params);
1050 }
1051 }
1052
TEST(F32_VLRELU__WASM_X4,batch_gt_4)1053 TEST(F32_VLRELU__WASM_X4, batch_gt_4) {
1054 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1055 VUnaryMicrokernelTester()
1056 .batch_size(batch_size)
1057 .Test(xnn_f32_vlrelu_ukernel__wasm_x4, xnn_init_f32_lrelu_scalar_params);
1058 }
1059 }
1060
TEST(F32_VLRELU__WASM_X4,inplace)1061 TEST(F32_VLRELU__WASM_X4, inplace) {
1062 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1063 VUnaryMicrokernelTester()
1064 .batch_size(batch_size)
1065 .inplace(true)
1066 .Test(xnn_f32_vlrelu_ukernel__wasm_x4, xnn_init_f32_lrelu_scalar_params);
1067 }
1068 }
1069
TEST(F32_VLRELU__WASM_X4,slope)1070 TEST(F32_VLRELU__WASM_X4, slope) {
1071 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
1072 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1073 VUnaryMicrokernelTester()
1074 .batch_size(batch_size)
1075 .slope(slope)
1076 .Test(xnn_f32_vlrelu_ukernel__wasm_x4, xnn_init_f32_lrelu_scalar_params);
1077 }
1078 }
1079 }
1080 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1081
1082
TEST(F32_VLRELU__SCALAR_X1,batch_eq_1)1083 TEST(F32_VLRELU__SCALAR_X1, batch_eq_1) {
1084 VUnaryMicrokernelTester()
1085 .batch_size(1)
1086 .Test(xnn_f32_vlrelu_ukernel__scalar_x1, xnn_init_f32_lrelu_scalar_params);
1087 }
1088
TEST(F32_VLRELU__SCALAR_X1,batch_gt_1)1089 TEST(F32_VLRELU__SCALAR_X1, batch_gt_1) {
1090 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
1091 VUnaryMicrokernelTester()
1092 .batch_size(batch_size)
1093 .Test(xnn_f32_vlrelu_ukernel__scalar_x1, xnn_init_f32_lrelu_scalar_params);
1094 }
1095 }
1096
TEST(F32_VLRELU__SCALAR_X1,inplace)1097 TEST(F32_VLRELU__SCALAR_X1, inplace) {
1098 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1099 VUnaryMicrokernelTester()
1100 .batch_size(batch_size)
1101 .inplace(true)
1102 .Test(xnn_f32_vlrelu_ukernel__scalar_x1, xnn_init_f32_lrelu_scalar_params);
1103 }
1104 }
1105
TEST(F32_VLRELU__SCALAR_X1,slope)1106 TEST(F32_VLRELU__SCALAR_X1, slope) {
1107 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
1108 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1109 VUnaryMicrokernelTester()
1110 .batch_size(batch_size)
1111 .slope(slope)
1112 .Test(xnn_f32_vlrelu_ukernel__scalar_x1, xnn_init_f32_lrelu_scalar_params);
1113 }
1114 }
1115 }
1116
1117
TEST(F32_VLRELU__SCALAR_X2,batch_eq_2)1118 TEST(F32_VLRELU__SCALAR_X2, batch_eq_2) {
1119 VUnaryMicrokernelTester()
1120 .batch_size(2)
1121 .Test(xnn_f32_vlrelu_ukernel__scalar_x2, xnn_init_f32_lrelu_scalar_params);
1122 }
1123
TEST(F32_VLRELU__SCALAR_X2,batch_div_2)1124 TEST(F32_VLRELU__SCALAR_X2, batch_div_2) {
1125 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
1126 VUnaryMicrokernelTester()
1127 .batch_size(batch_size)
1128 .Test(xnn_f32_vlrelu_ukernel__scalar_x2, xnn_init_f32_lrelu_scalar_params);
1129 }
1130 }
1131
TEST(F32_VLRELU__SCALAR_X2,batch_lt_2)1132 TEST(F32_VLRELU__SCALAR_X2, batch_lt_2) {
1133 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
1134 VUnaryMicrokernelTester()
1135 .batch_size(batch_size)
1136 .Test(xnn_f32_vlrelu_ukernel__scalar_x2, xnn_init_f32_lrelu_scalar_params);
1137 }
1138 }
1139
TEST(F32_VLRELU__SCALAR_X2,batch_gt_2)1140 TEST(F32_VLRELU__SCALAR_X2, batch_gt_2) {
1141 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
1142 VUnaryMicrokernelTester()
1143 .batch_size(batch_size)
1144 .Test(xnn_f32_vlrelu_ukernel__scalar_x2, xnn_init_f32_lrelu_scalar_params);
1145 }
1146 }
1147
TEST(F32_VLRELU__SCALAR_X2,inplace)1148 TEST(F32_VLRELU__SCALAR_X2, inplace) {
1149 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1150 VUnaryMicrokernelTester()
1151 .batch_size(batch_size)
1152 .inplace(true)
1153 .Test(xnn_f32_vlrelu_ukernel__scalar_x2, xnn_init_f32_lrelu_scalar_params);
1154 }
1155 }
1156
TEST(F32_VLRELU__SCALAR_X2,slope)1157 TEST(F32_VLRELU__SCALAR_X2, slope) {
1158 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
1159 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1160 VUnaryMicrokernelTester()
1161 .batch_size(batch_size)
1162 .slope(slope)
1163 .Test(xnn_f32_vlrelu_ukernel__scalar_x2, xnn_init_f32_lrelu_scalar_params);
1164 }
1165 }
1166 }
1167
1168
TEST(F32_VLRELU__SCALAR_X4,batch_eq_4)1169 TEST(F32_VLRELU__SCALAR_X4, batch_eq_4) {
1170 VUnaryMicrokernelTester()
1171 .batch_size(4)
1172 .Test(xnn_f32_vlrelu_ukernel__scalar_x4, xnn_init_f32_lrelu_scalar_params);
1173 }
1174
TEST(F32_VLRELU__SCALAR_X4,batch_div_4)1175 TEST(F32_VLRELU__SCALAR_X4, batch_div_4) {
1176 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1177 VUnaryMicrokernelTester()
1178 .batch_size(batch_size)
1179 .Test(xnn_f32_vlrelu_ukernel__scalar_x4, xnn_init_f32_lrelu_scalar_params);
1180 }
1181 }
1182
TEST(F32_VLRELU__SCALAR_X4,batch_lt_4)1183 TEST(F32_VLRELU__SCALAR_X4, batch_lt_4) {
1184 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1185 VUnaryMicrokernelTester()
1186 .batch_size(batch_size)
1187 .Test(xnn_f32_vlrelu_ukernel__scalar_x4, xnn_init_f32_lrelu_scalar_params);
1188 }
1189 }
1190
TEST(F32_VLRELU__SCALAR_X4,batch_gt_4)1191 TEST(F32_VLRELU__SCALAR_X4, batch_gt_4) {
1192 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1193 VUnaryMicrokernelTester()
1194 .batch_size(batch_size)
1195 .Test(xnn_f32_vlrelu_ukernel__scalar_x4, xnn_init_f32_lrelu_scalar_params);
1196 }
1197 }
1198
TEST(F32_VLRELU__SCALAR_X4,inplace)1199 TEST(F32_VLRELU__SCALAR_X4, inplace) {
1200 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1201 VUnaryMicrokernelTester()
1202 .batch_size(batch_size)
1203 .inplace(true)
1204 .Test(xnn_f32_vlrelu_ukernel__scalar_x4, xnn_init_f32_lrelu_scalar_params);
1205 }
1206 }
1207
TEST(F32_VLRELU__SCALAR_X4,slope)1208 TEST(F32_VLRELU__SCALAR_X4, slope) {
1209 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
1210 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1211 VUnaryMicrokernelTester()
1212 .batch_size(batch_size)
1213 .slope(slope)
1214 .Test(xnn_f32_vlrelu_ukernel__scalar_x4, xnn_init_f32_lrelu_scalar_params);
1215 }
1216 }
1217 }
1218