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