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