xref: /aosp_15_r20/external/XNNPACK/test/f32-vclamp.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-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