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