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-vadd-minmax.yaml
8 // Generator: tools/generate-vbinary-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/microparams-init.h>
17 #include <xnnpack/vbinary.h>
18 #include "vbinary-microkernel-tester.h"
19
20
21 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VADD_MINMAX__NEON_X4,batch_eq_4)22 TEST(F32_VADD_MINMAX__NEON_X4, batch_eq_4) {
23 TEST_REQUIRES_ARM_NEON;
24 VBinaryMicrokernelTester()
25 .batch_size(4)
26 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
27 }
28
TEST(F32_VADD_MINMAX__NEON_X4,batch_div_4)29 TEST(F32_VADD_MINMAX__NEON_X4, batch_div_4) {
30 TEST_REQUIRES_ARM_NEON;
31 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
32 VBinaryMicrokernelTester()
33 .batch_size(batch_size)
34 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
35 }
36 }
37
TEST(F32_VADD_MINMAX__NEON_X4,batch_lt_4)38 TEST(F32_VADD_MINMAX__NEON_X4, batch_lt_4) {
39 TEST_REQUIRES_ARM_NEON;
40 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
41 VBinaryMicrokernelTester()
42 .batch_size(batch_size)
43 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
44 }
45 }
46
TEST(F32_VADD_MINMAX__NEON_X4,batch_gt_4)47 TEST(F32_VADD_MINMAX__NEON_X4, batch_gt_4) {
48 TEST_REQUIRES_ARM_NEON;
49 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
50 VBinaryMicrokernelTester()
51 .batch_size(batch_size)
52 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
53 }
54 }
55
TEST(F32_VADD_MINMAX__NEON_X4,inplace_a)56 TEST(F32_VADD_MINMAX__NEON_X4, inplace_a) {
57 TEST_REQUIRES_ARM_NEON;
58 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
59 VBinaryMicrokernelTester()
60 .batch_size(batch_size)
61 .inplace_a(true)
62 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
63 }
64 }
65
TEST(F32_VADD_MINMAX__NEON_X4,inplace_b)66 TEST(F32_VADD_MINMAX__NEON_X4, inplace_b) {
67 TEST_REQUIRES_ARM_NEON;
68 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
69 VBinaryMicrokernelTester()
70 .batch_size(batch_size)
71 .inplace_b(true)
72 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
73 }
74 }
75
TEST(F32_VADD_MINMAX__NEON_X4,inplace_a_and_b)76 TEST(F32_VADD_MINMAX__NEON_X4, inplace_a_and_b) {
77 TEST_REQUIRES_ARM_NEON;
78 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
79 VBinaryMicrokernelTester()
80 .batch_size(batch_size)
81 .inplace_a(true)
82 .inplace_b(true)
83 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
84 }
85 }
86
TEST(F32_VADD_MINMAX__NEON_X4,qmin)87 TEST(F32_VADD_MINMAX__NEON_X4, qmin) {
88 TEST_REQUIRES_ARM_NEON;
89 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
90 VBinaryMicrokernelTester()
91 .batch_size(batch_size)
92 .qmin(128)
93 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
94 }
95 }
96
TEST(F32_VADD_MINMAX__NEON_X4,qmax)97 TEST(F32_VADD_MINMAX__NEON_X4, qmax) {
98 TEST_REQUIRES_ARM_NEON;
99 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
100 VBinaryMicrokernelTester()
101 .batch_size(batch_size)
102 .qmax(128)
103 .Test(xnn_f32_vadd_minmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
104 }
105 }
106 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
107
108
109 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VADD_MINMAX__NEON_X8,batch_eq_8)110 TEST(F32_VADD_MINMAX__NEON_X8, batch_eq_8) {
111 TEST_REQUIRES_ARM_NEON;
112 VBinaryMicrokernelTester()
113 .batch_size(8)
114 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
115 }
116
TEST(F32_VADD_MINMAX__NEON_X8,batch_div_8)117 TEST(F32_VADD_MINMAX__NEON_X8, batch_div_8) {
118 TEST_REQUIRES_ARM_NEON;
119 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
120 VBinaryMicrokernelTester()
121 .batch_size(batch_size)
122 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
123 }
124 }
125
TEST(F32_VADD_MINMAX__NEON_X8,batch_lt_8)126 TEST(F32_VADD_MINMAX__NEON_X8, batch_lt_8) {
127 TEST_REQUIRES_ARM_NEON;
128 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
129 VBinaryMicrokernelTester()
130 .batch_size(batch_size)
131 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
132 }
133 }
134
TEST(F32_VADD_MINMAX__NEON_X8,batch_gt_8)135 TEST(F32_VADD_MINMAX__NEON_X8, batch_gt_8) {
136 TEST_REQUIRES_ARM_NEON;
137 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
138 VBinaryMicrokernelTester()
139 .batch_size(batch_size)
140 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
141 }
142 }
143
TEST(F32_VADD_MINMAX__NEON_X8,inplace_a)144 TEST(F32_VADD_MINMAX__NEON_X8, inplace_a) {
145 TEST_REQUIRES_ARM_NEON;
146 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
147 VBinaryMicrokernelTester()
148 .batch_size(batch_size)
149 .inplace_a(true)
150 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
151 }
152 }
153
TEST(F32_VADD_MINMAX__NEON_X8,inplace_b)154 TEST(F32_VADD_MINMAX__NEON_X8, inplace_b) {
155 TEST_REQUIRES_ARM_NEON;
156 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
157 VBinaryMicrokernelTester()
158 .batch_size(batch_size)
159 .inplace_b(true)
160 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
161 }
162 }
163
TEST(F32_VADD_MINMAX__NEON_X8,inplace_a_and_b)164 TEST(F32_VADD_MINMAX__NEON_X8, inplace_a_and_b) {
165 TEST_REQUIRES_ARM_NEON;
166 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
167 VBinaryMicrokernelTester()
168 .batch_size(batch_size)
169 .inplace_a(true)
170 .inplace_b(true)
171 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
172 }
173 }
174
TEST(F32_VADD_MINMAX__NEON_X8,qmin)175 TEST(F32_VADD_MINMAX__NEON_X8, qmin) {
176 TEST_REQUIRES_ARM_NEON;
177 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
178 VBinaryMicrokernelTester()
179 .batch_size(batch_size)
180 .qmin(128)
181 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
182 }
183 }
184
TEST(F32_VADD_MINMAX__NEON_X8,qmax)185 TEST(F32_VADD_MINMAX__NEON_X8, qmax) {
186 TEST_REQUIRES_ARM_NEON;
187 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
188 VBinaryMicrokernelTester()
189 .batch_size(batch_size)
190 .qmax(128)
191 .Test(xnn_f32_vadd_minmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
192 }
193 }
194 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
195
196
197 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VADD_MINMAX__SSE_X4,batch_eq_4)198 TEST(F32_VADD_MINMAX__SSE_X4, batch_eq_4) {
199 TEST_REQUIRES_X86_SSE;
200 VBinaryMicrokernelTester()
201 .batch_size(4)
202 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
203 }
204
TEST(F32_VADD_MINMAX__SSE_X4,batch_div_4)205 TEST(F32_VADD_MINMAX__SSE_X4, batch_div_4) {
206 TEST_REQUIRES_X86_SSE;
207 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
208 VBinaryMicrokernelTester()
209 .batch_size(batch_size)
210 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
211 }
212 }
213
TEST(F32_VADD_MINMAX__SSE_X4,batch_lt_4)214 TEST(F32_VADD_MINMAX__SSE_X4, batch_lt_4) {
215 TEST_REQUIRES_X86_SSE;
216 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
217 VBinaryMicrokernelTester()
218 .batch_size(batch_size)
219 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
220 }
221 }
222
TEST(F32_VADD_MINMAX__SSE_X4,batch_gt_4)223 TEST(F32_VADD_MINMAX__SSE_X4, batch_gt_4) {
224 TEST_REQUIRES_X86_SSE;
225 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
226 VBinaryMicrokernelTester()
227 .batch_size(batch_size)
228 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
229 }
230 }
231
TEST(F32_VADD_MINMAX__SSE_X4,inplace_a)232 TEST(F32_VADD_MINMAX__SSE_X4, inplace_a) {
233 TEST_REQUIRES_X86_SSE;
234 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
235 VBinaryMicrokernelTester()
236 .batch_size(batch_size)
237 .inplace_a(true)
238 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
239 }
240 }
241
TEST(F32_VADD_MINMAX__SSE_X4,inplace_b)242 TEST(F32_VADD_MINMAX__SSE_X4, inplace_b) {
243 TEST_REQUIRES_X86_SSE;
244 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
245 VBinaryMicrokernelTester()
246 .batch_size(batch_size)
247 .inplace_b(true)
248 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
249 }
250 }
251
TEST(F32_VADD_MINMAX__SSE_X4,inplace_a_and_b)252 TEST(F32_VADD_MINMAX__SSE_X4, inplace_a_and_b) {
253 TEST_REQUIRES_X86_SSE;
254 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
255 VBinaryMicrokernelTester()
256 .batch_size(batch_size)
257 .inplace_a(true)
258 .inplace_b(true)
259 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
260 }
261 }
262
TEST(F32_VADD_MINMAX__SSE_X4,qmin)263 TEST(F32_VADD_MINMAX__SSE_X4, qmin) {
264 TEST_REQUIRES_X86_SSE;
265 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
266 VBinaryMicrokernelTester()
267 .batch_size(batch_size)
268 .qmin(128)
269 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
270 }
271 }
272
TEST(F32_VADD_MINMAX__SSE_X4,qmax)273 TEST(F32_VADD_MINMAX__SSE_X4, qmax) {
274 TEST_REQUIRES_X86_SSE;
275 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
276 VBinaryMicrokernelTester()
277 .batch_size(batch_size)
278 .qmax(128)
279 .Test(xnn_f32_vadd_minmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
280 }
281 }
282 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
283
284
285 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VADD_MINMAX__SSE_X8,batch_eq_8)286 TEST(F32_VADD_MINMAX__SSE_X8, batch_eq_8) {
287 TEST_REQUIRES_X86_SSE;
288 VBinaryMicrokernelTester()
289 .batch_size(8)
290 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
291 }
292
TEST(F32_VADD_MINMAX__SSE_X8,batch_div_8)293 TEST(F32_VADD_MINMAX__SSE_X8, batch_div_8) {
294 TEST_REQUIRES_X86_SSE;
295 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
296 VBinaryMicrokernelTester()
297 .batch_size(batch_size)
298 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
299 }
300 }
301
TEST(F32_VADD_MINMAX__SSE_X8,batch_lt_8)302 TEST(F32_VADD_MINMAX__SSE_X8, batch_lt_8) {
303 TEST_REQUIRES_X86_SSE;
304 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
305 VBinaryMicrokernelTester()
306 .batch_size(batch_size)
307 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
308 }
309 }
310
TEST(F32_VADD_MINMAX__SSE_X8,batch_gt_8)311 TEST(F32_VADD_MINMAX__SSE_X8, batch_gt_8) {
312 TEST_REQUIRES_X86_SSE;
313 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
314 VBinaryMicrokernelTester()
315 .batch_size(batch_size)
316 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
317 }
318 }
319
TEST(F32_VADD_MINMAX__SSE_X8,inplace_a)320 TEST(F32_VADD_MINMAX__SSE_X8, inplace_a) {
321 TEST_REQUIRES_X86_SSE;
322 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
323 VBinaryMicrokernelTester()
324 .batch_size(batch_size)
325 .inplace_a(true)
326 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
327 }
328 }
329
TEST(F32_VADD_MINMAX__SSE_X8,inplace_b)330 TEST(F32_VADD_MINMAX__SSE_X8, inplace_b) {
331 TEST_REQUIRES_X86_SSE;
332 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
333 VBinaryMicrokernelTester()
334 .batch_size(batch_size)
335 .inplace_b(true)
336 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
337 }
338 }
339
TEST(F32_VADD_MINMAX__SSE_X8,inplace_a_and_b)340 TEST(F32_VADD_MINMAX__SSE_X8, inplace_a_and_b) {
341 TEST_REQUIRES_X86_SSE;
342 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
343 VBinaryMicrokernelTester()
344 .batch_size(batch_size)
345 .inplace_a(true)
346 .inplace_b(true)
347 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
348 }
349 }
350
TEST(F32_VADD_MINMAX__SSE_X8,qmin)351 TEST(F32_VADD_MINMAX__SSE_X8, qmin) {
352 TEST_REQUIRES_X86_SSE;
353 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
354 VBinaryMicrokernelTester()
355 .batch_size(batch_size)
356 .qmin(128)
357 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
358 }
359 }
360
TEST(F32_VADD_MINMAX__SSE_X8,qmax)361 TEST(F32_VADD_MINMAX__SSE_X8, qmax) {
362 TEST_REQUIRES_X86_SSE;
363 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
364 VBinaryMicrokernelTester()
365 .batch_size(batch_size)
366 .qmax(128)
367 .Test(xnn_f32_vadd_minmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_sse_params);
368 }
369 }
370 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
371
372
373 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VADD_MINMAX__AVX_X8,batch_eq_8)374 TEST(F32_VADD_MINMAX__AVX_X8, batch_eq_8) {
375 TEST_REQUIRES_X86_AVX;
376 VBinaryMicrokernelTester()
377 .batch_size(8)
378 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
379 }
380
TEST(F32_VADD_MINMAX__AVX_X8,batch_div_8)381 TEST(F32_VADD_MINMAX__AVX_X8, batch_div_8) {
382 TEST_REQUIRES_X86_AVX;
383 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
384 VBinaryMicrokernelTester()
385 .batch_size(batch_size)
386 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
387 }
388 }
389
TEST(F32_VADD_MINMAX__AVX_X8,batch_lt_8)390 TEST(F32_VADD_MINMAX__AVX_X8, batch_lt_8) {
391 TEST_REQUIRES_X86_AVX;
392 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
393 VBinaryMicrokernelTester()
394 .batch_size(batch_size)
395 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
396 }
397 }
398
TEST(F32_VADD_MINMAX__AVX_X8,batch_gt_8)399 TEST(F32_VADD_MINMAX__AVX_X8, batch_gt_8) {
400 TEST_REQUIRES_X86_AVX;
401 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
402 VBinaryMicrokernelTester()
403 .batch_size(batch_size)
404 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
405 }
406 }
407
TEST(F32_VADD_MINMAX__AVX_X8,inplace_a)408 TEST(F32_VADD_MINMAX__AVX_X8, inplace_a) {
409 TEST_REQUIRES_X86_AVX;
410 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
411 VBinaryMicrokernelTester()
412 .batch_size(batch_size)
413 .inplace_a(true)
414 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
415 }
416 }
417
TEST(F32_VADD_MINMAX__AVX_X8,inplace_b)418 TEST(F32_VADD_MINMAX__AVX_X8, inplace_b) {
419 TEST_REQUIRES_X86_AVX;
420 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
421 VBinaryMicrokernelTester()
422 .batch_size(batch_size)
423 .inplace_b(true)
424 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
425 }
426 }
427
TEST(F32_VADD_MINMAX__AVX_X8,inplace_a_and_b)428 TEST(F32_VADD_MINMAX__AVX_X8, inplace_a_and_b) {
429 TEST_REQUIRES_X86_AVX;
430 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
431 VBinaryMicrokernelTester()
432 .batch_size(batch_size)
433 .inplace_a(true)
434 .inplace_b(true)
435 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
436 }
437 }
438
TEST(F32_VADD_MINMAX__AVX_X8,qmin)439 TEST(F32_VADD_MINMAX__AVX_X8, qmin) {
440 TEST_REQUIRES_X86_AVX;
441 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
442 VBinaryMicrokernelTester()
443 .batch_size(batch_size)
444 .qmin(128)
445 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
446 }
447 }
448
TEST(F32_VADD_MINMAX__AVX_X8,qmax)449 TEST(F32_VADD_MINMAX__AVX_X8, qmax) {
450 TEST_REQUIRES_X86_AVX;
451 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
452 VBinaryMicrokernelTester()
453 .batch_size(batch_size)
454 .qmax(128)
455 .Test(xnn_f32_vadd_minmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
456 }
457 }
458 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
459
460
461 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VADD_MINMAX__AVX_X16,batch_eq_16)462 TEST(F32_VADD_MINMAX__AVX_X16, batch_eq_16) {
463 TEST_REQUIRES_X86_AVX;
464 VBinaryMicrokernelTester()
465 .batch_size(16)
466 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
467 }
468
TEST(F32_VADD_MINMAX__AVX_X16,batch_div_16)469 TEST(F32_VADD_MINMAX__AVX_X16, batch_div_16) {
470 TEST_REQUIRES_X86_AVX;
471 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
472 VBinaryMicrokernelTester()
473 .batch_size(batch_size)
474 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
475 }
476 }
477
TEST(F32_VADD_MINMAX__AVX_X16,batch_lt_16)478 TEST(F32_VADD_MINMAX__AVX_X16, batch_lt_16) {
479 TEST_REQUIRES_X86_AVX;
480 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
481 VBinaryMicrokernelTester()
482 .batch_size(batch_size)
483 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
484 }
485 }
486
TEST(F32_VADD_MINMAX__AVX_X16,batch_gt_16)487 TEST(F32_VADD_MINMAX__AVX_X16, batch_gt_16) {
488 TEST_REQUIRES_X86_AVX;
489 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
490 VBinaryMicrokernelTester()
491 .batch_size(batch_size)
492 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
493 }
494 }
495
TEST(F32_VADD_MINMAX__AVX_X16,inplace_a)496 TEST(F32_VADD_MINMAX__AVX_X16, inplace_a) {
497 TEST_REQUIRES_X86_AVX;
498 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
499 VBinaryMicrokernelTester()
500 .batch_size(batch_size)
501 .inplace_a(true)
502 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
503 }
504 }
505
TEST(F32_VADD_MINMAX__AVX_X16,inplace_b)506 TEST(F32_VADD_MINMAX__AVX_X16, inplace_b) {
507 TEST_REQUIRES_X86_AVX;
508 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
509 VBinaryMicrokernelTester()
510 .batch_size(batch_size)
511 .inplace_b(true)
512 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
513 }
514 }
515
TEST(F32_VADD_MINMAX__AVX_X16,inplace_a_and_b)516 TEST(F32_VADD_MINMAX__AVX_X16, inplace_a_and_b) {
517 TEST_REQUIRES_X86_AVX;
518 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
519 VBinaryMicrokernelTester()
520 .batch_size(batch_size)
521 .inplace_a(true)
522 .inplace_b(true)
523 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
524 }
525 }
526
TEST(F32_VADD_MINMAX__AVX_X16,qmin)527 TEST(F32_VADD_MINMAX__AVX_X16, qmin) {
528 TEST_REQUIRES_X86_AVX;
529 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
530 VBinaryMicrokernelTester()
531 .batch_size(batch_size)
532 .qmin(128)
533 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
534 }
535 }
536
TEST(F32_VADD_MINMAX__AVX_X16,qmax)537 TEST(F32_VADD_MINMAX__AVX_X16, qmax) {
538 TEST_REQUIRES_X86_AVX;
539 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
540 VBinaryMicrokernelTester()
541 .batch_size(batch_size)
542 .qmax(128)
543 .Test(xnn_f32_vadd_minmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_avx_params);
544 }
545 }
546 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
547
548
549 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VADD_MINMAX__AVX512F_X16,batch_eq_16)550 TEST(F32_VADD_MINMAX__AVX512F_X16, batch_eq_16) {
551 TEST_REQUIRES_X86_AVX512F;
552 VBinaryMicrokernelTester()
553 .batch_size(16)
554 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
555 }
556
TEST(F32_VADD_MINMAX__AVX512F_X16,batch_div_16)557 TEST(F32_VADD_MINMAX__AVX512F_X16, batch_div_16) {
558 TEST_REQUIRES_X86_AVX512F;
559 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
560 VBinaryMicrokernelTester()
561 .batch_size(batch_size)
562 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
563 }
564 }
565
TEST(F32_VADD_MINMAX__AVX512F_X16,batch_lt_16)566 TEST(F32_VADD_MINMAX__AVX512F_X16, batch_lt_16) {
567 TEST_REQUIRES_X86_AVX512F;
568 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
569 VBinaryMicrokernelTester()
570 .batch_size(batch_size)
571 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
572 }
573 }
574
TEST(F32_VADD_MINMAX__AVX512F_X16,batch_gt_16)575 TEST(F32_VADD_MINMAX__AVX512F_X16, batch_gt_16) {
576 TEST_REQUIRES_X86_AVX512F;
577 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
578 VBinaryMicrokernelTester()
579 .batch_size(batch_size)
580 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
581 }
582 }
583
TEST(F32_VADD_MINMAX__AVX512F_X16,inplace_a)584 TEST(F32_VADD_MINMAX__AVX512F_X16, inplace_a) {
585 TEST_REQUIRES_X86_AVX512F;
586 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
587 VBinaryMicrokernelTester()
588 .batch_size(batch_size)
589 .inplace_a(true)
590 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
591 }
592 }
593
TEST(F32_VADD_MINMAX__AVX512F_X16,inplace_b)594 TEST(F32_VADD_MINMAX__AVX512F_X16, inplace_b) {
595 TEST_REQUIRES_X86_AVX512F;
596 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
597 VBinaryMicrokernelTester()
598 .batch_size(batch_size)
599 .inplace_b(true)
600 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
601 }
602 }
603
TEST(F32_VADD_MINMAX__AVX512F_X16,inplace_a_and_b)604 TEST(F32_VADD_MINMAX__AVX512F_X16, inplace_a_and_b) {
605 TEST_REQUIRES_X86_AVX512F;
606 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
607 VBinaryMicrokernelTester()
608 .batch_size(batch_size)
609 .inplace_a(true)
610 .inplace_b(true)
611 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
612 }
613 }
614
TEST(F32_VADD_MINMAX__AVX512F_X16,qmin)615 TEST(F32_VADD_MINMAX__AVX512F_X16, qmin) {
616 TEST_REQUIRES_X86_AVX512F;
617 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
618 VBinaryMicrokernelTester()
619 .batch_size(batch_size)
620 .qmin(128)
621 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
622 }
623 }
624
TEST(F32_VADD_MINMAX__AVX512F_X16,qmax)625 TEST(F32_VADD_MINMAX__AVX512F_X16, qmax) {
626 TEST_REQUIRES_X86_AVX512F;
627 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
628 VBinaryMicrokernelTester()
629 .batch_size(batch_size)
630 .qmax(128)
631 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
632 }
633 }
634 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
635
636
637 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VADD_MINMAX__AVX512F_X32,batch_eq_32)638 TEST(F32_VADD_MINMAX__AVX512F_X32, batch_eq_32) {
639 TEST_REQUIRES_X86_AVX512F;
640 VBinaryMicrokernelTester()
641 .batch_size(32)
642 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
643 }
644
TEST(F32_VADD_MINMAX__AVX512F_X32,batch_div_32)645 TEST(F32_VADD_MINMAX__AVX512F_X32, batch_div_32) {
646 TEST_REQUIRES_X86_AVX512F;
647 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
648 VBinaryMicrokernelTester()
649 .batch_size(batch_size)
650 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
651 }
652 }
653
TEST(F32_VADD_MINMAX__AVX512F_X32,batch_lt_32)654 TEST(F32_VADD_MINMAX__AVX512F_X32, batch_lt_32) {
655 TEST_REQUIRES_X86_AVX512F;
656 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
657 VBinaryMicrokernelTester()
658 .batch_size(batch_size)
659 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
660 }
661 }
662
TEST(F32_VADD_MINMAX__AVX512F_X32,batch_gt_32)663 TEST(F32_VADD_MINMAX__AVX512F_X32, batch_gt_32) {
664 TEST_REQUIRES_X86_AVX512F;
665 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
666 VBinaryMicrokernelTester()
667 .batch_size(batch_size)
668 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
669 }
670 }
671
TEST(F32_VADD_MINMAX__AVX512F_X32,inplace_a)672 TEST(F32_VADD_MINMAX__AVX512F_X32, inplace_a) {
673 TEST_REQUIRES_X86_AVX512F;
674 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
675 VBinaryMicrokernelTester()
676 .batch_size(batch_size)
677 .inplace_a(true)
678 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
679 }
680 }
681
TEST(F32_VADD_MINMAX__AVX512F_X32,inplace_b)682 TEST(F32_VADD_MINMAX__AVX512F_X32, inplace_b) {
683 TEST_REQUIRES_X86_AVX512F;
684 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
685 VBinaryMicrokernelTester()
686 .batch_size(batch_size)
687 .inplace_b(true)
688 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
689 }
690 }
691
TEST(F32_VADD_MINMAX__AVX512F_X32,inplace_a_and_b)692 TEST(F32_VADD_MINMAX__AVX512F_X32, inplace_a_and_b) {
693 TEST_REQUIRES_X86_AVX512F;
694 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
695 VBinaryMicrokernelTester()
696 .batch_size(batch_size)
697 .inplace_a(true)
698 .inplace_b(true)
699 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
700 }
701 }
702
TEST(F32_VADD_MINMAX__AVX512F_X32,qmin)703 TEST(F32_VADD_MINMAX__AVX512F_X32, qmin) {
704 TEST_REQUIRES_X86_AVX512F;
705 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
706 VBinaryMicrokernelTester()
707 .batch_size(batch_size)
708 .qmin(128)
709 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
710 }
711 }
712
TEST(F32_VADD_MINMAX__AVX512F_X32,qmax)713 TEST(F32_VADD_MINMAX__AVX512F_X32, qmax) {
714 TEST_REQUIRES_X86_AVX512F;
715 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
716 VBinaryMicrokernelTester()
717 .batch_size(batch_size)
718 .qmax(128)
719 .Test(xnn_f32_vadd_minmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
720 }
721 }
722 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
723
724
725 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,batch_eq_4)726 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, batch_eq_4) {
727 VBinaryMicrokernelTester()
728 .batch_size(4)
729 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
730 }
731
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,batch_div_4)732 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, batch_div_4) {
733 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
734 VBinaryMicrokernelTester()
735 .batch_size(batch_size)
736 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
737 }
738 }
739
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,batch_lt_4)740 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, batch_lt_4) {
741 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
742 VBinaryMicrokernelTester()
743 .batch_size(batch_size)
744 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
745 }
746 }
747
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,batch_gt_4)748 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, batch_gt_4) {
749 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
750 VBinaryMicrokernelTester()
751 .batch_size(batch_size)
752 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
753 }
754 }
755
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,inplace_a)756 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, inplace_a) {
757 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
758 VBinaryMicrokernelTester()
759 .batch_size(batch_size)
760 .inplace_a(true)
761 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
762 }
763 }
764
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,inplace_b)765 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, inplace_b) {
766 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
767 VBinaryMicrokernelTester()
768 .batch_size(batch_size)
769 .inplace_b(true)
770 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
771 }
772 }
773
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,inplace_a_and_b)774 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, inplace_a_and_b) {
775 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
776 VBinaryMicrokernelTester()
777 .batch_size(batch_size)
778 .inplace_a(true)
779 .inplace_b(true)
780 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
781 }
782 }
783
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,qmin)784 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, qmin) {
785 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
786 VBinaryMicrokernelTester()
787 .batch_size(batch_size)
788 .qmin(128)
789 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
790 }
791 }
792
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4,qmax)793 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X4, qmax) {
794 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
795 VBinaryMicrokernelTester()
796 .batch_size(batch_size)
797 .qmax(128)
798 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
799 }
800 }
801 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
802
803
804 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,batch_eq_8)805 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, batch_eq_8) {
806 VBinaryMicrokernelTester()
807 .batch_size(8)
808 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
809 }
810
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,batch_div_8)811 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, batch_div_8) {
812 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
813 VBinaryMicrokernelTester()
814 .batch_size(batch_size)
815 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
816 }
817 }
818
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,batch_lt_8)819 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, batch_lt_8) {
820 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
821 VBinaryMicrokernelTester()
822 .batch_size(batch_size)
823 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
824 }
825 }
826
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,batch_gt_8)827 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, batch_gt_8) {
828 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
829 VBinaryMicrokernelTester()
830 .batch_size(batch_size)
831 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
832 }
833 }
834
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,inplace_a)835 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, inplace_a) {
836 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
837 VBinaryMicrokernelTester()
838 .batch_size(batch_size)
839 .inplace_a(true)
840 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
841 }
842 }
843
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,inplace_b)844 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, inplace_b) {
845 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
846 VBinaryMicrokernelTester()
847 .batch_size(batch_size)
848 .inplace_b(true)
849 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
850 }
851 }
852
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,inplace_a_and_b)853 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, inplace_a_and_b) {
854 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
855 VBinaryMicrokernelTester()
856 .batch_size(batch_size)
857 .inplace_a(true)
858 .inplace_b(true)
859 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
860 }
861 }
862
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,qmin)863 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, qmin) {
864 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
865 VBinaryMicrokernelTester()
866 .batch_size(batch_size)
867 .qmin(128)
868 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
869 }
870 }
871
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8,qmax)872 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X8, qmax) {
873 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
874 VBinaryMicrokernelTester()
875 .batch_size(batch_size)
876 .qmax(128)
877 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
878 }
879 }
880 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
881
882
883 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,batch_eq_16)884 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, batch_eq_16) {
885 VBinaryMicrokernelTester()
886 .batch_size(16)
887 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
888 }
889
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,batch_div_16)890 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, batch_div_16) {
891 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
892 VBinaryMicrokernelTester()
893 .batch_size(batch_size)
894 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
895 }
896 }
897
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,batch_lt_16)898 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, batch_lt_16) {
899 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
900 VBinaryMicrokernelTester()
901 .batch_size(batch_size)
902 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
903 }
904 }
905
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,batch_gt_16)906 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, batch_gt_16) {
907 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
908 VBinaryMicrokernelTester()
909 .batch_size(batch_size)
910 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
911 }
912 }
913
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,inplace_a)914 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, inplace_a) {
915 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
916 VBinaryMicrokernelTester()
917 .batch_size(batch_size)
918 .inplace_a(true)
919 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
920 }
921 }
922
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,inplace_b)923 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, inplace_b) {
924 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
925 VBinaryMicrokernelTester()
926 .batch_size(batch_size)
927 .inplace_b(true)
928 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
929 }
930 }
931
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,inplace_a_and_b)932 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, inplace_a_and_b) {
933 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
934 VBinaryMicrokernelTester()
935 .batch_size(batch_size)
936 .inplace_a(true)
937 .inplace_b(true)
938 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
939 }
940 }
941
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,qmin)942 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, qmin) {
943 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
944 VBinaryMicrokernelTester()
945 .batch_size(batch_size)
946 .qmin(128)
947 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
948 }
949 }
950
TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16,qmax)951 TEST(F32_VADD_MINMAX__WASMSIMD_ARM_X16, qmax) {
952 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
953 VBinaryMicrokernelTester()
954 .batch_size(batch_size)
955 .qmax(128)
956 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
957 }
958 }
959 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
960
961
962 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,batch_eq_4)963 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, batch_eq_4) {
964 VBinaryMicrokernelTester()
965 .batch_size(4)
966 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
967 }
968
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,batch_div_4)969 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, batch_div_4) {
970 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
971 VBinaryMicrokernelTester()
972 .batch_size(batch_size)
973 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
974 }
975 }
976
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,batch_lt_4)977 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, batch_lt_4) {
978 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
979 VBinaryMicrokernelTester()
980 .batch_size(batch_size)
981 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
982 }
983 }
984
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,batch_gt_4)985 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, batch_gt_4) {
986 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
987 VBinaryMicrokernelTester()
988 .batch_size(batch_size)
989 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
990 }
991 }
992
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,inplace_a)993 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, inplace_a) {
994 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
995 VBinaryMicrokernelTester()
996 .batch_size(batch_size)
997 .inplace_a(true)
998 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
999 }
1000 }
1001
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,inplace_b)1002 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, inplace_b) {
1003 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1004 VBinaryMicrokernelTester()
1005 .batch_size(batch_size)
1006 .inplace_b(true)
1007 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1008 }
1009 }
1010
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,inplace_a_and_b)1011 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, inplace_a_and_b) {
1012 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1013 VBinaryMicrokernelTester()
1014 .batch_size(batch_size)
1015 .inplace_a(true)
1016 .inplace_b(true)
1017 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1018 }
1019 }
1020
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,qmin)1021 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, qmin) {
1022 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1023 VBinaryMicrokernelTester()
1024 .batch_size(batch_size)
1025 .qmin(128)
1026 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1027 }
1028 }
1029
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4,qmax)1030 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X4, qmax) {
1031 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1032 VBinaryMicrokernelTester()
1033 .batch_size(batch_size)
1034 .qmax(128)
1035 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1036 }
1037 }
1038 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1039
1040
1041 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,batch_eq_8)1042 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, batch_eq_8) {
1043 VBinaryMicrokernelTester()
1044 .batch_size(8)
1045 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1046 }
1047
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,batch_div_8)1048 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, batch_div_8) {
1049 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1050 VBinaryMicrokernelTester()
1051 .batch_size(batch_size)
1052 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1053 }
1054 }
1055
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,batch_lt_8)1056 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, batch_lt_8) {
1057 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1058 VBinaryMicrokernelTester()
1059 .batch_size(batch_size)
1060 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1061 }
1062 }
1063
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,batch_gt_8)1064 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, batch_gt_8) {
1065 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1066 VBinaryMicrokernelTester()
1067 .batch_size(batch_size)
1068 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1069 }
1070 }
1071
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,inplace_a)1072 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, inplace_a) {
1073 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1074 VBinaryMicrokernelTester()
1075 .batch_size(batch_size)
1076 .inplace_a(true)
1077 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1078 }
1079 }
1080
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,inplace_b)1081 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, inplace_b) {
1082 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1083 VBinaryMicrokernelTester()
1084 .batch_size(batch_size)
1085 .inplace_b(true)
1086 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1087 }
1088 }
1089
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,inplace_a_and_b)1090 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, inplace_a_and_b) {
1091 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1092 VBinaryMicrokernelTester()
1093 .batch_size(batch_size)
1094 .inplace_a(true)
1095 .inplace_b(true)
1096 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1097 }
1098 }
1099
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,qmin)1100 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, qmin) {
1101 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1102 VBinaryMicrokernelTester()
1103 .batch_size(batch_size)
1104 .qmin(128)
1105 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1106 }
1107 }
1108
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8,qmax)1109 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X8, qmax) {
1110 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1111 VBinaryMicrokernelTester()
1112 .batch_size(batch_size)
1113 .qmax(128)
1114 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1115 }
1116 }
1117 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1118
1119
1120 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,batch_eq_16)1121 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, batch_eq_16) {
1122 VBinaryMicrokernelTester()
1123 .batch_size(16)
1124 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1125 }
1126
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,batch_div_16)1127 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, batch_div_16) {
1128 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
1129 VBinaryMicrokernelTester()
1130 .batch_size(batch_size)
1131 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1132 }
1133 }
1134
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,batch_lt_16)1135 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, batch_lt_16) {
1136 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
1137 VBinaryMicrokernelTester()
1138 .batch_size(batch_size)
1139 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1140 }
1141 }
1142
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,batch_gt_16)1143 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, batch_gt_16) {
1144 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
1145 VBinaryMicrokernelTester()
1146 .batch_size(batch_size)
1147 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1148 }
1149 }
1150
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,inplace_a)1151 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, inplace_a) {
1152 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1153 VBinaryMicrokernelTester()
1154 .batch_size(batch_size)
1155 .inplace_a(true)
1156 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1157 }
1158 }
1159
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,inplace_b)1160 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, inplace_b) {
1161 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1162 VBinaryMicrokernelTester()
1163 .batch_size(batch_size)
1164 .inplace_b(true)
1165 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1166 }
1167 }
1168
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,inplace_a_and_b)1169 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, inplace_a_and_b) {
1170 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1171 VBinaryMicrokernelTester()
1172 .batch_size(batch_size)
1173 .inplace_a(true)
1174 .inplace_b(true)
1175 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1176 }
1177 }
1178
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,qmin)1179 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, qmin) {
1180 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1181 VBinaryMicrokernelTester()
1182 .batch_size(batch_size)
1183 .qmin(128)
1184 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1185 }
1186 }
1187
TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16,qmax)1188 TEST(F32_VADD_MINMAX__WASMSIMD_X86_X16, qmax) {
1189 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1190 VBinaryMicrokernelTester()
1191 .batch_size(batch_size)
1192 .qmax(128)
1193 .Test(xnn_f32_vadd_minmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_wasmsimd_params);
1194 }
1195 }
1196 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1197
1198
1199 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASM_X1,batch_eq_1)1200 TEST(F32_VADD_MINMAX__WASM_X1, batch_eq_1) {
1201 VBinaryMicrokernelTester()
1202 .batch_size(1)
1203 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1204 }
1205
TEST(F32_VADD_MINMAX__WASM_X1,batch_gt_1)1206 TEST(F32_VADD_MINMAX__WASM_X1, batch_gt_1) {
1207 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
1208 VBinaryMicrokernelTester()
1209 .batch_size(batch_size)
1210 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1211 }
1212 }
1213
TEST(F32_VADD_MINMAX__WASM_X1,inplace_a)1214 TEST(F32_VADD_MINMAX__WASM_X1, inplace_a) {
1215 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1216 VBinaryMicrokernelTester()
1217 .batch_size(batch_size)
1218 .inplace_a(true)
1219 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1220 }
1221 }
1222
TEST(F32_VADD_MINMAX__WASM_X1,inplace_b)1223 TEST(F32_VADD_MINMAX__WASM_X1, inplace_b) {
1224 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1225 VBinaryMicrokernelTester()
1226 .batch_size(batch_size)
1227 .inplace_b(true)
1228 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1229 }
1230 }
1231
TEST(F32_VADD_MINMAX__WASM_X1,inplace_a_and_b)1232 TEST(F32_VADD_MINMAX__WASM_X1, inplace_a_and_b) {
1233 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1234 VBinaryMicrokernelTester()
1235 .batch_size(batch_size)
1236 .inplace_a(true)
1237 .inplace_b(true)
1238 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1239 }
1240 }
1241
TEST(F32_VADD_MINMAX__WASM_X1,qmin)1242 TEST(F32_VADD_MINMAX__WASM_X1, qmin) {
1243 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1244 VBinaryMicrokernelTester()
1245 .batch_size(batch_size)
1246 .qmin(128)
1247 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1248 }
1249 }
1250
TEST(F32_VADD_MINMAX__WASM_X1,qmax)1251 TEST(F32_VADD_MINMAX__WASM_X1, qmax) {
1252 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1253 VBinaryMicrokernelTester()
1254 .batch_size(batch_size)
1255 .qmax(128)
1256 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1257 }
1258 }
1259 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1260
1261
1262 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASM_X2,batch_eq_2)1263 TEST(F32_VADD_MINMAX__WASM_X2, batch_eq_2) {
1264 VBinaryMicrokernelTester()
1265 .batch_size(2)
1266 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1267 }
1268
TEST(F32_VADD_MINMAX__WASM_X2,batch_div_2)1269 TEST(F32_VADD_MINMAX__WASM_X2, batch_div_2) {
1270 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
1271 VBinaryMicrokernelTester()
1272 .batch_size(batch_size)
1273 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1274 }
1275 }
1276
TEST(F32_VADD_MINMAX__WASM_X2,batch_lt_2)1277 TEST(F32_VADD_MINMAX__WASM_X2, batch_lt_2) {
1278 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
1279 VBinaryMicrokernelTester()
1280 .batch_size(batch_size)
1281 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1282 }
1283 }
1284
TEST(F32_VADD_MINMAX__WASM_X2,batch_gt_2)1285 TEST(F32_VADD_MINMAX__WASM_X2, batch_gt_2) {
1286 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
1287 VBinaryMicrokernelTester()
1288 .batch_size(batch_size)
1289 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1290 }
1291 }
1292
TEST(F32_VADD_MINMAX__WASM_X2,inplace_a)1293 TEST(F32_VADD_MINMAX__WASM_X2, inplace_a) {
1294 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1295 VBinaryMicrokernelTester()
1296 .batch_size(batch_size)
1297 .inplace_a(true)
1298 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1299 }
1300 }
1301
TEST(F32_VADD_MINMAX__WASM_X2,inplace_b)1302 TEST(F32_VADD_MINMAX__WASM_X2, inplace_b) {
1303 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1304 VBinaryMicrokernelTester()
1305 .batch_size(batch_size)
1306 .inplace_b(true)
1307 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1308 }
1309 }
1310
TEST(F32_VADD_MINMAX__WASM_X2,inplace_a_and_b)1311 TEST(F32_VADD_MINMAX__WASM_X2, inplace_a_and_b) {
1312 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1313 VBinaryMicrokernelTester()
1314 .batch_size(batch_size)
1315 .inplace_a(true)
1316 .inplace_b(true)
1317 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1318 }
1319 }
1320
TEST(F32_VADD_MINMAX__WASM_X2,qmin)1321 TEST(F32_VADD_MINMAX__WASM_X2, qmin) {
1322 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1323 VBinaryMicrokernelTester()
1324 .batch_size(batch_size)
1325 .qmin(128)
1326 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1327 }
1328 }
1329
TEST(F32_VADD_MINMAX__WASM_X2,qmax)1330 TEST(F32_VADD_MINMAX__WASM_X2, qmax) {
1331 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1332 VBinaryMicrokernelTester()
1333 .batch_size(batch_size)
1334 .qmax(128)
1335 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1336 }
1337 }
1338 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1339
1340
1341 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASM_X4,batch_eq_4)1342 TEST(F32_VADD_MINMAX__WASM_X4, batch_eq_4) {
1343 VBinaryMicrokernelTester()
1344 .batch_size(4)
1345 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1346 }
1347
TEST(F32_VADD_MINMAX__WASM_X4,batch_div_4)1348 TEST(F32_VADD_MINMAX__WASM_X4, batch_div_4) {
1349 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1350 VBinaryMicrokernelTester()
1351 .batch_size(batch_size)
1352 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1353 }
1354 }
1355
TEST(F32_VADD_MINMAX__WASM_X4,batch_lt_4)1356 TEST(F32_VADD_MINMAX__WASM_X4, batch_lt_4) {
1357 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1358 VBinaryMicrokernelTester()
1359 .batch_size(batch_size)
1360 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1361 }
1362 }
1363
TEST(F32_VADD_MINMAX__WASM_X4,batch_gt_4)1364 TEST(F32_VADD_MINMAX__WASM_X4, batch_gt_4) {
1365 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1366 VBinaryMicrokernelTester()
1367 .batch_size(batch_size)
1368 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1369 }
1370 }
1371
TEST(F32_VADD_MINMAX__WASM_X4,inplace_a)1372 TEST(F32_VADD_MINMAX__WASM_X4, inplace_a) {
1373 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1374 VBinaryMicrokernelTester()
1375 .batch_size(batch_size)
1376 .inplace_a(true)
1377 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1378 }
1379 }
1380
TEST(F32_VADD_MINMAX__WASM_X4,inplace_b)1381 TEST(F32_VADD_MINMAX__WASM_X4, inplace_b) {
1382 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1383 VBinaryMicrokernelTester()
1384 .batch_size(batch_size)
1385 .inplace_b(true)
1386 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1387 }
1388 }
1389
TEST(F32_VADD_MINMAX__WASM_X4,inplace_a_and_b)1390 TEST(F32_VADD_MINMAX__WASM_X4, inplace_a_and_b) {
1391 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1392 VBinaryMicrokernelTester()
1393 .batch_size(batch_size)
1394 .inplace_a(true)
1395 .inplace_b(true)
1396 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1397 }
1398 }
1399
TEST(F32_VADD_MINMAX__WASM_X4,qmin)1400 TEST(F32_VADD_MINMAX__WASM_X4, qmin) {
1401 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1402 VBinaryMicrokernelTester()
1403 .batch_size(batch_size)
1404 .qmin(128)
1405 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1406 }
1407 }
1408
TEST(F32_VADD_MINMAX__WASM_X4,qmax)1409 TEST(F32_VADD_MINMAX__WASM_X4, qmax) {
1410 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1411 VBinaryMicrokernelTester()
1412 .batch_size(batch_size)
1413 .qmax(128)
1414 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1415 }
1416 }
1417 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1418
1419
1420 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VADD_MINMAX__WASM_X8,batch_eq_8)1421 TEST(F32_VADD_MINMAX__WASM_X8, batch_eq_8) {
1422 VBinaryMicrokernelTester()
1423 .batch_size(8)
1424 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1425 }
1426
TEST(F32_VADD_MINMAX__WASM_X8,batch_div_8)1427 TEST(F32_VADD_MINMAX__WASM_X8, batch_div_8) {
1428 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1429 VBinaryMicrokernelTester()
1430 .batch_size(batch_size)
1431 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1432 }
1433 }
1434
TEST(F32_VADD_MINMAX__WASM_X8,batch_lt_8)1435 TEST(F32_VADD_MINMAX__WASM_X8, batch_lt_8) {
1436 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1437 VBinaryMicrokernelTester()
1438 .batch_size(batch_size)
1439 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1440 }
1441 }
1442
TEST(F32_VADD_MINMAX__WASM_X8,batch_gt_8)1443 TEST(F32_VADD_MINMAX__WASM_X8, batch_gt_8) {
1444 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1445 VBinaryMicrokernelTester()
1446 .batch_size(batch_size)
1447 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1448 }
1449 }
1450
TEST(F32_VADD_MINMAX__WASM_X8,inplace_a)1451 TEST(F32_VADD_MINMAX__WASM_X8, inplace_a) {
1452 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1453 VBinaryMicrokernelTester()
1454 .batch_size(batch_size)
1455 .inplace_a(true)
1456 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1457 }
1458 }
1459
TEST(F32_VADD_MINMAX__WASM_X8,inplace_b)1460 TEST(F32_VADD_MINMAX__WASM_X8, inplace_b) {
1461 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1462 VBinaryMicrokernelTester()
1463 .batch_size(batch_size)
1464 .inplace_b(true)
1465 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1466 }
1467 }
1468
TEST(F32_VADD_MINMAX__WASM_X8,inplace_a_and_b)1469 TEST(F32_VADD_MINMAX__WASM_X8, inplace_a_and_b) {
1470 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1471 VBinaryMicrokernelTester()
1472 .batch_size(batch_size)
1473 .inplace_a(true)
1474 .inplace_b(true)
1475 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1476 }
1477 }
1478
TEST(F32_VADD_MINMAX__WASM_X8,qmin)1479 TEST(F32_VADD_MINMAX__WASM_X8, qmin) {
1480 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1481 VBinaryMicrokernelTester()
1482 .batch_size(batch_size)
1483 .qmin(128)
1484 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1485 }
1486 }
1487
TEST(F32_VADD_MINMAX__WASM_X8,qmax)1488 TEST(F32_VADD_MINMAX__WASM_X8, qmax) {
1489 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1490 VBinaryMicrokernelTester()
1491 .batch_size(batch_size)
1492 .qmax(128)
1493 .Test(xnn_f32_vadd_minmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1494 }
1495 }
1496 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1497
1498
TEST(F32_VADD_MINMAX__SCALAR_X1,batch_eq_1)1499 TEST(F32_VADD_MINMAX__SCALAR_X1, batch_eq_1) {
1500 VBinaryMicrokernelTester()
1501 .batch_size(1)
1502 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1503 }
1504
TEST(F32_VADD_MINMAX__SCALAR_X1,batch_gt_1)1505 TEST(F32_VADD_MINMAX__SCALAR_X1, batch_gt_1) {
1506 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
1507 VBinaryMicrokernelTester()
1508 .batch_size(batch_size)
1509 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1510 }
1511 }
1512
TEST(F32_VADD_MINMAX__SCALAR_X1,inplace_a)1513 TEST(F32_VADD_MINMAX__SCALAR_X1, inplace_a) {
1514 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1515 VBinaryMicrokernelTester()
1516 .batch_size(batch_size)
1517 .inplace_a(true)
1518 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1519 }
1520 }
1521
TEST(F32_VADD_MINMAX__SCALAR_X1,inplace_b)1522 TEST(F32_VADD_MINMAX__SCALAR_X1, inplace_b) {
1523 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1524 VBinaryMicrokernelTester()
1525 .batch_size(batch_size)
1526 .inplace_b(true)
1527 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1528 }
1529 }
1530
TEST(F32_VADD_MINMAX__SCALAR_X1,inplace_a_and_b)1531 TEST(F32_VADD_MINMAX__SCALAR_X1, inplace_a_and_b) {
1532 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1533 VBinaryMicrokernelTester()
1534 .batch_size(batch_size)
1535 .inplace_a(true)
1536 .inplace_b(true)
1537 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1538 }
1539 }
1540
TEST(F32_VADD_MINMAX__SCALAR_X1,qmin)1541 TEST(F32_VADD_MINMAX__SCALAR_X1, qmin) {
1542 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1543 VBinaryMicrokernelTester()
1544 .batch_size(batch_size)
1545 .qmin(128)
1546 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1547 }
1548 }
1549
TEST(F32_VADD_MINMAX__SCALAR_X1,qmax)1550 TEST(F32_VADD_MINMAX__SCALAR_X1, qmax) {
1551 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1552 VBinaryMicrokernelTester()
1553 .batch_size(batch_size)
1554 .qmax(128)
1555 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1556 }
1557 }
1558
TEST(F32_VADD_MINMAX__SCALAR_X2,batch_eq_2)1559 TEST(F32_VADD_MINMAX__SCALAR_X2, batch_eq_2) {
1560 VBinaryMicrokernelTester()
1561 .batch_size(2)
1562 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1563 }
1564
TEST(F32_VADD_MINMAX__SCALAR_X2,batch_div_2)1565 TEST(F32_VADD_MINMAX__SCALAR_X2, batch_div_2) {
1566 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
1567 VBinaryMicrokernelTester()
1568 .batch_size(batch_size)
1569 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1570 }
1571 }
1572
TEST(F32_VADD_MINMAX__SCALAR_X2,batch_lt_2)1573 TEST(F32_VADD_MINMAX__SCALAR_X2, batch_lt_2) {
1574 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
1575 VBinaryMicrokernelTester()
1576 .batch_size(batch_size)
1577 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1578 }
1579 }
1580
TEST(F32_VADD_MINMAX__SCALAR_X2,batch_gt_2)1581 TEST(F32_VADD_MINMAX__SCALAR_X2, batch_gt_2) {
1582 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
1583 VBinaryMicrokernelTester()
1584 .batch_size(batch_size)
1585 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1586 }
1587 }
1588
TEST(F32_VADD_MINMAX__SCALAR_X2,inplace_a)1589 TEST(F32_VADD_MINMAX__SCALAR_X2, inplace_a) {
1590 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1591 VBinaryMicrokernelTester()
1592 .batch_size(batch_size)
1593 .inplace_a(true)
1594 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1595 }
1596 }
1597
TEST(F32_VADD_MINMAX__SCALAR_X2,inplace_b)1598 TEST(F32_VADD_MINMAX__SCALAR_X2, inplace_b) {
1599 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1600 VBinaryMicrokernelTester()
1601 .batch_size(batch_size)
1602 .inplace_b(true)
1603 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1604 }
1605 }
1606
TEST(F32_VADD_MINMAX__SCALAR_X2,inplace_a_and_b)1607 TEST(F32_VADD_MINMAX__SCALAR_X2, inplace_a_and_b) {
1608 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1609 VBinaryMicrokernelTester()
1610 .batch_size(batch_size)
1611 .inplace_a(true)
1612 .inplace_b(true)
1613 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1614 }
1615 }
1616
TEST(F32_VADD_MINMAX__SCALAR_X2,qmin)1617 TEST(F32_VADD_MINMAX__SCALAR_X2, qmin) {
1618 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1619 VBinaryMicrokernelTester()
1620 .batch_size(batch_size)
1621 .qmin(128)
1622 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1623 }
1624 }
1625
TEST(F32_VADD_MINMAX__SCALAR_X2,qmax)1626 TEST(F32_VADD_MINMAX__SCALAR_X2, qmax) {
1627 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1628 VBinaryMicrokernelTester()
1629 .batch_size(batch_size)
1630 .qmax(128)
1631 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1632 }
1633 }
1634
TEST(F32_VADD_MINMAX__SCALAR_X4,batch_eq_4)1635 TEST(F32_VADD_MINMAX__SCALAR_X4, batch_eq_4) {
1636 VBinaryMicrokernelTester()
1637 .batch_size(4)
1638 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1639 }
1640
TEST(F32_VADD_MINMAX__SCALAR_X4,batch_div_4)1641 TEST(F32_VADD_MINMAX__SCALAR_X4, batch_div_4) {
1642 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1643 VBinaryMicrokernelTester()
1644 .batch_size(batch_size)
1645 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1646 }
1647 }
1648
TEST(F32_VADD_MINMAX__SCALAR_X4,batch_lt_4)1649 TEST(F32_VADD_MINMAX__SCALAR_X4, batch_lt_4) {
1650 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1651 VBinaryMicrokernelTester()
1652 .batch_size(batch_size)
1653 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1654 }
1655 }
1656
TEST(F32_VADD_MINMAX__SCALAR_X4,batch_gt_4)1657 TEST(F32_VADD_MINMAX__SCALAR_X4, batch_gt_4) {
1658 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1659 VBinaryMicrokernelTester()
1660 .batch_size(batch_size)
1661 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1662 }
1663 }
1664
TEST(F32_VADD_MINMAX__SCALAR_X4,inplace_a)1665 TEST(F32_VADD_MINMAX__SCALAR_X4, inplace_a) {
1666 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1667 VBinaryMicrokernelTester()
1668 .batch_size(batch_size)
1669 .inplace_a(true)
1670 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1671 }
1672 }
1673
TEST(F32_VADD_MINMAX__SCALAR_X4,inplace_b)1674 TEST(F32_VADD_MINMAX__SCALAR_X4, inplace_b) {
1675 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1676 VBinaryMicrokernelTester()
1677 .batch_size(batch_size)
1678 .inplace_b(true)
1679 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1680 }
1681 }
1682
TEST(F32_VADD_MINMAX__SCALAR_X4,inplace_a_and_b)1683 TEST(F32_VADD_MINMAX__SCALAR_X4, inplace_a_and_b) {
1684 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1685 VBinaryMicrokernelTester()
1686 .batch_size(batch_size)
1687 .inplace_a(true)
1688 .inplace_b(true)
1689 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1690 }
1691 }
1692
TEST(F32_VADD_MINMAX__SCALAR_X4,qmin)1693 TEST(F32_VADD_MINMAX__SCALAR_X4, qmin) {
1694 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1695 VBinaryMicrokernelTester()
1696 .batch_size(batch_size)
1697 .qmin(128)
1698 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1699 }
1700 }
1701
TEST(F32_VADD_MINMAX__SCALAR_X4,qmax)1702 TEST(F32_VADD_MINMAX__SCALAR_X4, qmax) {
1703 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1704 VBinaryMicrokernelTester()
1705 .batch_size(batch_size)
1706 .qmax(128)
1707 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1708 }
1709 }
1710
TEST(F32_VADD_MINMAX__SCALAR_X8,batch_eq_8)1711 TEST(F32_VADD_MINMAX__SCALAR_X8, batch_eq_8) {
1712 VBinaryMicrokernelTester()
1713 .batch_size(8)
1714 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1715 }
1716
TEST(F32_VADD_MINMAX__SCALAR_X8,batch_div_8)1717 TEST(F32_VADD_MINMAX__SCALAR_X8, batch_div_8) {
1718 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1719 VBinaryMicrokernelTester()
1720 .batch_size(batch_size)
1721 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1722 }
1723 }
1724
TEST(F32_VADD_MINMAX__SCALAR_X8,batch_lt_8)1725 TEST(F32_VADD_MINMAX__SCALAR_X8, batch_lt_8) {
1726 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1727 VBinaryMicrokernelTester()
1728 .batch_size(batch_size)
1729 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1730 }
1731 }
1732
TEST(F32_VADD_MINMAX__SCALAR_X8,batch_gt_8)1733 TEST(F32_VADD_MINMAX__SCALAR_X8, batch_gt_8) {
1734 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1735 VBinaryMicrokernelTester()
1736 .batch_size(batch_size)
1737 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1738 }
1739 }
1740
TEST(F32_VADD_MINMAX__SCALAR_X8,inplace_a)1741 TEST(F32_VADD_MINMAX__SCALAR_X8, inplace_a) {
1742 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1743 VBinaryMicrokernelTester()
1744 .batch_size(batch_size)
1745 .inplace_a(true)
1746 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1747 }
1748 }
1749
TEST(F32_VADD_MINMAX__SCALAR_X8,inplace_b)1750 TEST(F32_VADD_MINMAX__SCALAR_X8, inplace_b) {
1751 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1752 VBinaryMicrokernelTester()
1753 .batch_size(batch_size)
1754 .inplace_b(true)
1755 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1756 }
1757 }
1758
TEST(F32_VADD_MINMAX__SCALAR_X8,inplace_a_and_b)1759 TEST(F32_VADD_MINMAX__SCALAR_X8, inplace_a_and_b) {
1760 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1761 VBinaryMicrokernelTester()
1762 .batch_size(batch_size)
1763 .inplace_a(true)
1764 .inplace_b(true)
1765 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1766 }
1767 }
1768
TEST(F32_VADD_MINMAX__SCALAR_X8,qmin)1769 TEST(F32_VADD_MINMAX__SCALAR_X8, qmin) {
1770 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1771 VBinaryMicrokernelTester()
1772 .batch_size(batch_size)
1773 .qmin(128)
1774 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1775 }
1776 }
1777
TEST(F32_VADD_MINMAX__SCALAR_X8,qmax)1778 TEST(F32_VADD_MINMAX__SCALAR_X8, qmax) {
1779 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1780 VBinaryMicrokernelTester()
1781 .batch_size(batch_size)
1782 .qmax(128)
1783 .Test(xnn_f32_vadd_minmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Add, xnn_init_f32_minmax_scalar_params);
1784 }
1785 }