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-vmaxc.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 "vbinaryc-microkernel-tester.h"
18
19
20 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VMAXC__NEON_X4,batch_eq_4)21 TEST(F32_VMAXC__NEON_X4, batch_eq_4) {
22 TEST_REQUIRES_ARM_NEON;
23 VBinOpCMicrokernelTester()
24 .batch_size(4)
25 .Test(xnn_f32_vmaxc_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::MaxC);
26 }
27
TEST(F32_VMAXC__NEON_X4,batch_div_4)28 TEST(F32_VMAXC__NEON_X4, batch_div_4) {
29 TEST_REQUIRES_ARM_NEON;
30 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
31 VBinOpCMicrokernelTester()
32 .batch_size(batch_size)
33 .Test(xnn_f32_vmaxc_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::MaxC);
34 }
35 }
36
TEST(F32_VMAXC__NEON_X4,batch_lt_4)37 TEST(F32_VMAXC__NEON_X4, batch_lt_4) {
38 TEST_REQUIRES_ARM_NEON;
39 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
40 VBinOpCMicrokernelTester()
41 .batch_size(batch_size)
42 .Test(xnn_f32_vmaxc_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::MaxC);
43 }
44 }
45
TEST(F32_VMAXC__NEON_X4,batch_gt_4)46 TEST(F32_VMAXC__NEON_X4, batch_gt_4) {
47 TEST_REQUIRES_ARM_NEON;
48 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
49 VBinOpCMicrokernelTester()
50 .batch_size(batch_size)
51 .Test(xnn_f32_vmaxc_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::MaxC);
52 }
53 }
54
TEST(F32_VMAXC__NEON_X4,inplace)55 TEST(F32_VMAXC__NEON_X4, inplace) {
56 TEST_REQUIRES_ARM_NEON;
57 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
58 VBinOpCMicrokernelTester()
59 .batch_size(batch_size)
60 .inplace(true)
61 .Test(xnn_f32_vmaxc_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::MaxC);
62 }
63 }
64
TEST(F32_VMAXC__NEON_X4,qmin)65 TEST(F32_VMAXC__NEON_X4, qmin) {
66 TEST_REQUIRES_ARM_NEON;
67 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
68 VBinOpCMicrokernelTester()
69 .batch_size(batch_size)
70 .qmin(128)
71 .Test(xnn_f32_vmaxc_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::MaxC);
72 }
73 }
74
TEST(F32_VMAXC__NEON_X4,qmax)75 TEST(F32_VMAXC__NEON_X4, qmax) {
76 TEST_REQUIRES_ARM_NEON;
77 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
78 VBinOpCMicrokernelTester()
79 .batch_size(batch_size)
80 .qmax(128)
81 .Test(xnn_f32_vmaxc_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::MaxC);
82 }
83 }
84 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
85
86
87 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VMAXC__NEON_X8,batch_eq_8)88 TEST(F32_VMAXC__NEON_X8, batch_eq_8) {
89 TEST_REQUIRES_ARM_NEON;
90 VBinOpCMicrokernelTester()
91 .batch_size(8)
92 .Test(xnn_f32_vmaxc_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::MaxC);
93 }
94
TEST(F32_VMAXC__NEON_X8,batch_div_8)95 TEST(F32_VMAXC__NEON_X8, batch_div_8) {
96 TEST_REQUIRES_ARM_NEON;
97 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
98 VBinOpCMicrokernelTester()
99 .batch_size(batch_size)
100 .Test(xnn_f32_vmaxc_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::MaxC);
101 }
102 }
103
TEST(F32_VMAXC__NEON_X8,batch_lt_8)104 TEST(F32_VMAXC__NEON_X8, batch_lt_8) {
105 TEST_REQUIRES_ARM_NEON;
106 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
107 VBinOpCMicrokernelTester()
108 .batch_size(batch_size)
109 .Test(xnn_f32_vmaxc_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::MaxC);
110 }
111 }
112
TEST(F32_VMAXC__NEON_X8,batch_gt_8)113 TEST(F32_VMAXC__NEON_X8, batch_gt_8) {
114 TEST_REQUIRES_ARM_NEON;
115 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
116 VBinOpCMicrokernelTester()
117 .batch_size(batch_size)
118 .Test(xnn_f32_vmaxc_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::MaxC);
119 }
120 }
121
TEST(F32_VMAXC__NEON_X8,inplace)122 TEST(F32_VMAXC__NEON_X8, inplace) {
123 TEST_REQUIRES_ARM_NEON;
124 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
125 VBinOpCMicrokernelTester()
126 .batch_size(batch_size)
127 .inplace(true)
128 .Test(xnn_f32_vmaxc_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::MaxC);
129 }
130 }
131
TEST(F32_VMAXC__NEON_X8,qmin)132 TEST(F32_VMAXC__NEON_X8, qmin) {
133 TEST_REQUIRES_ARM_NEON;
134 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
135 VBinOpCMicrokernelTester()
136 .batch_size(batch_size)
137 .qmin(128)
138 .Test(xnn_f32_vmaxc_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::MaxC);
139 }
140 }
141
TEST(F32_VMAXC__NEON_X8,qmax)142 TEST(F32_VMAXC__NEON_X8, qmax) {
143 TEST_REQUIRES_ARM_NEON;
144 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
145 VBinOpCMicrokernelTester()
146 .batch_size(batch_size)
147 .qmax(128)
148 .Test(xnn_f32_vmaxc_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::MaxC);
149 }
150 }
151 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
152
153
154 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAXC__SSE_X4,batch_eq_4)155 TEST(F32_VMAXC__SSE_X4, batch_eq_4) {
156 TEST_REQUIRES_X86_SSE;
157 VBinOpCMicrokernelTester()
158 .batch_size(4)
159 .Test(xnn_f32_vmaxc_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::MaxC);
160 }
161
TEST(F32_VMAXC__SSE_X4,batch_div_4)162 TEST(F32_VMAXC__SSE_X4, batch_div_4) {
163 TEST_REQUIRES_X86_SSE;
164 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
165 VBinOpCMicrokernelTester()
166 .batch_size(batch_size)
167 .Test(xnn_f32_vmaxc_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::MaxC);
168 }
169 }
170
TEST(F32_VMAXC__SSE_X4,batch_lt_4)171 TEST(F32_VMAXC__SSE_X4, batch_lt_4) {
172 TEST_REQUIRES_X86_SSE;
173 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
174 VBinOpCMicrokernelTester()
175 .batch_size(batch_size)
176 .Test(xnn_f32_vmaxc_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::MaxC);
177 }
178 }
179
TEST(F32_VMAXC__SSE_X4,batch_gt_4)180 TEST(F32_VMAXC__SSE_X4, batch_gt_4) {
181 TEST_REQUIRES_X86_SSE;
182 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
183 VBinOpCMicrokernelTester()
184 .batch_size(batch_size)
185 .Test(xnn_f32_vmaxc_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::MaxC);
186 }
187 }
188
TEST(F32_VMAXC__SSE_X4,inplace)189 TEST(F32_VMAXC__SSE_X4, inplace) {
190 TEST_REQUIRES_X86_SSE;
191 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
192 VBinOpCMicrokernelTester()
193 .batch_size(batch_size)
194 .inplace(true)
195 .Test(xnn_f32_vmaxc_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::MaxC);
196 }
197 }
198
TEST(F32_VMAXC__SSE_X4,qmin)199 TEST(F32_VMAXC__SSE_X4, qmin) {
200 TEST_REQUIRES_X86_SSE;
201 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
202 VBinOpCMicrokernelTester()
203 .batch_size(batch_size)
204 .qmin(128)
205 .Test(xnn_f32_vmaxc_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::MaxC);
206 }
207 }
208
TEST(F32_VMAXC__SSE_X4,qmax)209 TEST(F32_VMAXC__SSE_X4, qmax) {
210 TEST_REQUIRES_X86_SSE;
211 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
212 VBinOpCMicrokernelTester()
213 .batch_size(batch_size)
214 .qmax(128)
215 .Test(xnn_f32_vmaxc_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::MaxC);
216 }
217 }
218 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
219
220
221 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAXC__SSE_X8,batch_eq_8)222 TEST(F32_VMAXC__SSE_X8, batch_eq_8) {
223 TEST_REQUIRES_X86_SSE;
224 VBinOpCMicrokernelTester()
225 .batch_size(8)
226 .Test(xnn_f32_vmaxc_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::MaxC);
227 }
228
TEST(F32_VMAXC__SSE_X8,batch_div_8)229 TEST(F32_VMAXC__SSE_X8, batch_div_8) {
230 TEST_REQUIRES_X86_SSE;
231 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
232 VBinOpCMicrokernelTester()
233 .batch_size(batch_size)
234 .Test(xnn_f32_vmaxc_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::MaxC);
235 }
236 }
237
TEST(F32_VMAXC__SSE_X8,batch_lt_8)238 TEST(F32_VMAXC__SSE_X8, batch_lt_8) {
239 TEST_REQUIRES_X86_SSE;
240 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
241 VBinOpCMicrokernelTester()
242 .batch_size(batch_size)
243 .Test(xnn_f32_vmaxc_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::MaxC);
244 }
245 }
246
TEST(F32_VMAXC__SSE_X8,batch_gt_8)247 TEST(F32_VMAXC__SSE_X8, batch_gt_8) {
248 TEST_REQUIRES_X86_SSE;
249 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
250 VBinOpCMicrokernelTester()
251 .batch_size(batch_size)
252 .Test(xnn_f32_vmaxc_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::MaxC);
253 }
254 }
255
TEST(F32_VMAXC__SSE_X8,inplace)256 TEST(F32_VMAXC__SSE_X8, inplace) {
257 TEST_REQUIRES_X86_SSE;
258 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
259 VBinOpCMicrokernelTester()
260 .batch_size(batch_size)
261 .inplace(true)
262 .Test(xnn_f32_vmaxc_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::MaxC);
263 }
264 }
265
TEST(F32_VMAXC__SSE_X8,qmin)266 TEST(F32_VMAXC__SSE_X8, qmin) {
267 TEST_REQUIRES_X86_SSE;
268 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
269 VBinOpCMicrokernelTester()
270 .batch_size(batch_size)
271 .qmin(128)
272 .Test(xnn_f32_vmaxc_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::MaxC);
273 }
274 }
275
TEST(F32_VMAXC__SSE_X8,qmax)276 TEST(F32_VMAXC__SSE_X8, qmax) {
277 TEST_REQUIRES_X86_SSE;
278 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
279 VBinOpCMicrokernelTester()
280 .batch_size(batch_size)
281 .qmax(128)
282 .Test(xnn_f32_vmaxc_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::MaxC);
283 }
284 }
285 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
286
287
288 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAXC__AVX_X8,batch_eq_8)289 TEST(F32_VMAXC__AVX_X8, batch_eq_8) {
290 TEST_REQUIRES_X86_AVX;
291 VBinOpCMicrokernelTester()
292 .batch_size(8)
293 .Test(xnn_f32_vmaxc_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::MaxC);
294 }
295
TEST(F32_VMAXC__AVX_X8,batch_div_8)296 TEST(F32_VMAXC__AVX_X8, batch_div_8) {
297 TEST_REQUIRES_X86_AVX;
298 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
299 VBinOpCMicrokernelTester()
300 .batch_size(batch_size)
301 .Test(xnn_f32_vmaxc_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::MaxC);
302 }
303 }
304
TEST(F32_VMAXC__AVX_X8,batch_lt_8)305 TEST(F32_VMAXC__AVX_X8, batch_lt_8) {
306 TEST_REQUIRES_X86_AVX;
307 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
308 VBinOpCMicrokernelTester()
309 .batch_size(batch_size)
310 .Test(xnn_f32_vmaxc_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::MaxC);
311 }
312 }
313
TEST(F32_VMAXC__AVX_X8,batch_gt_8)314 TEST(F32_VMAXC__AVX_X8, batch_gt_8) {
315 TEST_REQUIRES_X86_AVX;
316 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
317 VBinOpCMicrokernelTester()
318 .batch_size(batch_size)
319 .Test(xnn_f32_vmaxc_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::MaxC);
320 }
321 }
322
TEST(F32_VMAXC__AVX_X8,inplace)323 TEST(F32_VMAXC__AVX_X8, inplace) {
324 TEST_REQUIRES_X86_AVX;
325 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
326 VBinOpCMicrokernelTester()
327 .batch_size(batch_size)
328 .inplace(true)
329 .Test(xnn_f32_vmaxc_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::MaxC);
330 }
331 }
332
TEST(F32_VMAXC__AVX_X8,qmin)333 TEST(F32_VMAXC__AVX_X8, qmin) {
334 TEST_REQUIRES_X86_AVX;
335 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
336 VBinOpCMicrokernelTester()
337 .batch_size(batch_size)
338 .qmin(128)
339 .Test(xnn_f32_vmaxc_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::MaxC);
340 }
341 }
342
TEST(F32_VMAXC__AVX_X8,qmax)343 TEST(F32_VMAXC__AVX_X8, qmax) {
344 TEST_REQUIRES_X86_AVX;
345 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
346 VBinOpCMicrokernelTester()
347 .batch_size(batch_size)
348 .qmax(128)
349 .Test(xnn_f32_vmaxc_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::MaxC);
350 }
351 }
352 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
353
354
355 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAXC__AVX_X16,batch_eq_16)356 TEST(F32_VMAXC__AVX_X16, batch_eq_16) {
357 TEST_REQUIRES_X86_AVX;
358 VBinOpCMicrokernelTester()
359 .batch_size(16)
360 .Test(xnn_f32_vmaxc_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::MaxC);
361 }
362
TEST(F32_VMAXC__AVX_X16,batch_div_16)363 TEST(F32_VMAXC__AVX_X16, batch_div_16) {
364 TEST_REQUIRES_X86_AVX;
365 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
366 VBinOpCMicrokernelTester()
367 .batch_size(batch_size)
368 .Test(xnn_f32_vmaxc_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::MaxC);
369 }
370 }
371
TEST(F32_VMAXC__AVX_X16,batch_lt_16)372 TEST(F32_VMAXC__AVX_X16, batch_lt_16) {
373 TEST_REQUIRES_X86_AVX;
374 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
375 VBinOpCMicrokernelTester()
376 .batch_size(batch_size)
377 .Test(xnn_f32_vmaxc_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::MaxC);
378 }
379 }
380
TEST(F32_VMAXC__AVX_X16,batch_gt_16)381 TEST(F32_VMAXC__AVX_X16, batch_gt_16) {
382 TEST_REQUIRES_X86_AVX;
383 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
384 VBinOpCMicrokernelTester()
385 .batch_size(batch_size)
386 .Test(xnn_f32_vmaxc_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::MaxC);
387 }
388 }
389
TEST(F32_VMAXC__AVX_X16,inplace)390 TEST(F32_VMAXC__AVX_X16, inplace) {
391 TEST_REQUIRES_X86_AVX;
392 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
393 VBinOpCMicrokernelTester()
394 .batch_size(batch_size)
395 .inplace(true)
396 .Test(xnn_f32_vmaxc_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::MaxC);
397 }
398 }
399
TEST(F32_VMAXC__AVX_X16,qmin)400 TEST(F32_VMAXC__AVX_X16, qmin) {
401 TEST_REQUIRES_X86_AVX;
402 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
403 VBinOpCMicrokernelTester()
404 .batch_size(batch_size)
405 .qmin(128)
406 .Test(xnn_f32_vmaxc_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::MaxC);
407 }
408 }
409
TEST(F32_VMAXC__AVX_X16,qmax)410 TEST(F32_VMAXC__AVX_X16, qmax) {
411 TEST_REQUIRES_X86_AVX;
412 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
413 VBinOpCMicrokernelTester()
414 .batch_size(batch_size)
415 .qmax(128)
416 .Test(xnn_f32_vmaxc_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::MaxC);
417 }
418 }
419 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
420
421
422 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAXC__AVX512F_X16,batch_eq_16)423 TEST(F32_VMAXC__AVX512F_X16, batch_eq_16) {
424 TEST_REQUIRES_X86_AVX512F;
425 VBinOpCMicrokernelTester()
426 .batch_size(16)
427 .Test(xnn_f32_vmaxc_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::MaxC);
428 }
429
TEST(F32_VMAXC__AVX512F_X16,batch_div_16)430 TEST(F32_VMAXC__AVX512F_X16, batch_div_16) {
431 TEST_REQUIRES_X86_AVX512F;
432 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
433 VBinOpCMicrokernelTester()
434 .batch_size(batch_size)
435 .Test(xnn_f32_vmaxc_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::MaxC);
436 }
437 }
438
TEST(F32_VMAXC__AVX512F_X16,batch_lt_16)439 TEST(F32_VMAXC__AVX512F_X16, batch_lt_16) {
440 TEST_REQUIRES_X86_AVX512F;
441 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
442 VBinOpCMicrokernelTester()
443 .batch_size(batch_size)
444 .Test(xnn_f32_vmaxc_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::MaxC);
445 }
446 }
447
TEST(F32_VMAXC__AVX512F_X16,batch_gt_16)448 TEST(F32_VMAXC__AVX512F_X16, batch_gt_16) {
449 TEST_REQUIRES_X86_AVX512F;
450 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
451 VBinOpCMicrokernelTester()
452 .batch_size(batch_size)
453 .Test(xnn_f32_vmaxc_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::MaxC);
454 }
455 }
456
TEST(F32_VMAXC__AVX512F_X16,inplace)457 TEST(F32_VMAXC__AVX512F_X16, inplace) {
458 TEST_REQUIRES_X86_AVX512F;
459 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
460 VBinOpCMicrokernelTester()
461 .batch_size(batch_size)
462 .inplace(true)
463 .Test(xnn_f32_vmaxc_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::MaxC);
464 }
465 }
466
TEST(F32_VMAXC__AVX512F_X16,qmin)467 TEST(F32_VMAXC__AVX512F_X16, qmin) {
468 TEST_REQUIRES_X86_AVX512F;
469 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
470 VBinOpCMicrokernelTester()
471 .batch_size(batch_size)
472 .qmin(128)
473 .Test(xnn_f32_vmaxc_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::MaxC);
474 }
475 }
476
TEST(F32_VMAXC__AVX512F_X16,qmax)477 TEST(F32_VMAXC__AVX512F_X16, qmax) {
478 TEST_REQUIRES_X86_AVX512F;
479 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
480 VBinOpCMicrokernelTester()
481 .batch_size(batch_size)
482 .qmax(128)
483 .Test(xnn_f32_vmaxc_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::MaxC);
484 }
485 }
486 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
487
488
489 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAXC__AVX512F_X32,batch_eq_32)490 TEST(F32_VMAXC__AVX512F_X32, batch_eq_32) {
491 TEST_REQUIRES_X86_AVX512F;
492 VBinOpCMicrokernelTester()
493 .batch_size(32)
494 .Test(xnn_f32_vmaxc_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::MaxC);
495 }
496
TEST(F32_VMAXC__AVX512F_X32,batch_div_32)497 TEST(F32_VMAXC__AVX512F_X32, batch_div_32) {
498 TEST_REQUIRES_X86_AVX512F;
499 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
500 VBinOpCMicrokernelTester()
501 .batch_size(batch_size)
502 .Test(xnn_f32_vmaxc_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::MaxC);
503 }
504 }
505
TEST(F32_VMAXC__AVX512F_X32,batch_lt_32)506 TEST(F32_VMAXC__AVX512F_X32, batch_lt_32) {
507 TEST_REQUIRES_X86_AVX512F;
508 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
509 VBinOpCMicrokernelTester()
510 .batch_size(batch_size)
511 .Test(xnn_f32_vmaxc_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::MaxC);
512 }
513 }
514
TEST(F32_VMAXC__AVX512F_X32,batch_gt_32)515 TEST(F32_VMAXC__AVX512F_X32, batch_gt_32) {
516 TEST_REQUIRES_X86_AVX512F;
517 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
518 VBinOpCMicrokernelTester()
519 .batch_size(batch_size)
520 .Test(xnn_f32_vmaxc_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::MaxC);
521 }
522 }
523
TEST(F32_VMAXC__AVX512F_X32,inplace)524 TEST(F32_VMAXC__AVX512F_X32, inplace) {
525 TEST_REQUIRES_X86_AVX512F;
526 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
527 VBinOpCMicrokernelTester()
528 .batch_size(batch_size)
529 .inplace(true)
530 .Test(xnn_f32_vmaxc_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::MaxC);
531 }
532 }
533
TEST(F32_VMAXC__AVX512F_X32,qmin)534 TEST(F32_VMAXC__AVX512F_X32, qmin) {
535 TEST_REQUIRES_X86_AVX512F;
536 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
537 VBinOpCMicrokernelTester()
538 .batch_size(batch_size)
539 .qmin(128)
540 .Test(xnn_f32_vmaxc_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::MaxC);
541 }
542 }
543
TEST(F32_VMAXC__AVX512F_X32,qmax)544 TEST(F32_VMAXC__AVX512F_X32, qmax) {
545 TEST_REQUIRES_X86_AVX512F;
546 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
547 VBinOpCMicrokernelTester()
548 .batch_size(batch_size)
549 .qmax(128)
550 .Test(xnn_f32_vmaxc_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::MaxC);
551 }
552 }
553 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
554
555
556 #if !XNN_ARCH_ASMJS && !XNN_ARCH_WASM
TEST(F32_VMAXC__PSIMD_X4,batch_eq_4)557 TEST(F32_VMAXC__PSIMD_X4, batch_eq_4) {
558 TEST_REQUIRES_PSIMD;
559 VBinOpCMicrokernelTester()
560 .batch_size(4)
561 .Test(xnn_f32_vmaxc_ukernel__psimd_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
562 }
563
TEST(F32_VMAXC__PSIMD_X4,batch_div_4)564 TEST(F32_VMAXC__PSIMD_X4, batch_div_4) {
565 TEST_REQUIRES_PSIMD;
566 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
567 VBinOpCMicrokernelTester()
568 .batch_size(batch_size)
569 .Test(xnn_f32_vmaxc_ukernel__psimd_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
570 }
571 }
572
TEST(F32_VMAXC__PSIMD_X4,batch_lt_4)573 TEST(F32_VMAXC__PSIMD_X4, batch_lt_4) {
574 TEST_REQUIRES_PSIMD;
575 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
576 VBinOpCMicrokernelTester()
577 .batch_size(batch_size)
578 .Test(xnn_f32_vmaxc_ukernel__psimd_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
579 }
580 }
581
TEST(F32_VMAXC__PSIMD_X4,batch_gt_4)582 TEST(F32_VMAXC__PSIMD_X4, batch_gt_4) {
583 TEST_REQUIRES_PSIMD;
584 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
585 VBinOpCMicrokernelTester()
586 .batch_size(batch_size)
587 .Test(xnn_f32_vmaxc_ukernel__psimd_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
588 }
589 }
590
TEST(F32_VMAXC__PSIMD_X4,inplace)591 TEST(F32_VMAXC__PSIMD_X4, inplace) {
592 TEST_REQUIRES_PSIMD;
593 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
594 VBinOpCMicrokernelTester()
595 .batch_size(batch_size)
596 .inplace(true)
597 .Test(xnn_f32_vmaxc_ukernel__psimd_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
598 }
599 }
600
TEST(F32_VMAXC__PSIMD_X4,qmin)601 TEST(F32_VMAXC__PSIMD_X4, qmin) {
602 TEST_REQUIRES_PSIMD;
603 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
604 VBinOpCMicrokernelTester()
605 .batch_size(batch_size)
606 .qmin(128)
607 .Test(xnn_f32_vmaxc_ukernel__psimd_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
608 }
609 }
610
TEST(F32_VMAXC__PSIMD_X4,qmax)611 TEST(F32_VMAXC__PSIMD_X4, qmax) {
612 TEST_REQUIRES_PSIMD;
613 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
614 VBinOpCMicrokernelTester()
615 .batch_size(batch_size)
616 .qmax(128)
617 .Test(xnn_f32_vmaxc_ukernel__psimd_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
618 }
619 }
620 #endif // !XNN_ARCH_ASMJS && !XNN_ARCH_WASM
621
622
623 #if !XNN_ARCH_ASMJS && !XNN_ARCH_WASM
TEST(F32_VMAXC__PSIMD_X8,batch_eq_8)624 TEST(F32_VMAXC__PSIMD_X8, batch_eq_8) {
625 TEST_REQUIRES_PSIMD;
626 VBinOpCMicrokernelTester()
627 .batch_size(8)
628 .Test(xnn_f32_vmaxc_ukernel__psimd_x8, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
629 }
630
TEST(F32_VMAXC__PSIMD_X8,batch_div_8)631 TEST(F32_VMAXC__PSIMD_X8, batch_div_8) {
632 TEST_REQUIRES_PSIMD;
633 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
634 VBinOpCMicrokernelTester()
635 .batch_size(batch_size)
636 .Test(xnn_f32_vmaxc_ukernel__psimd_x8, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
637 }
638 }
639
TEST(F32_VMAXC__PSIMD_X8,batch_lt_8)640 TEST(F32_VMAXC__PSIMD_X8, batch_lt_8) {
641 TEST_REQUIRES_PSIMD;
642 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
643 VBinOpCMicrokernelTester()
644 .batch_size(batch_size)
645 .Test(xnn_f32_vmaxc_ukernel__psimd_x8, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
646 }
647 }
648
TEST(F32_VMAXC__PSIMD_X8,batch_gt_8)649 TEST(F32_VMAXC__PSIMD_X8, batch_gt_8) {
650 TEST_REQUIRES_PSIMD;
651 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
652 VBinOpCMicrokernelTester()
653 .batch_size(batch_size)
654 .Test(xnn_f32_vmaxc_ukernel__psimd_x8, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
655 }
656 }
657
TEST(F32_VMAXC__PSIMD_X8,inplace)658 TEST(F32_VMAXC__PSIMD_X8, inplace) {
659 TEST_REQUIRES_PSIMD;
660 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
661 VBinOpCMicrokernelTester()
662 .batch_size(batch_size)
663 .inplace(true)
664 .Test(xnn_f32_vmaxc_ukernel__psimd_x8, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
665 }
666 }
667
TEST(F32_VMAXC__PSIMD_X8,qmin)668 TEST(F32_VMAXC__PSIMD_X8, qmin) {
669 TEST_REQUIRES_PSIMD;
670 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
671 VBinOpCMicrokernelTester()
672 .batch_size(batch_size)
673 .qmin(128)
674 .Test(xnn_f32_vmaxc_ukernel__psimd_x8, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
675 }
676 }
677
TEST(F32_VMAXC__PSIMD_X8,qmax)678 TEST(F32_VMAXC__PSIMD_X8, qmax) {
679 TEST_REQUIRES_PSIMD;
680 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
681 VBinOpCMicrokernelTester()
682 .batch_size(batch_size)
683 .qmax(128)
684 .Test(xnn_f32_vmaxc_ukernel__psimd_x8, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
685 }
686 }
687 #endif // !XNN_ARCH_ASMJS && !XNN_ARCH_WASM
688
689
690 #if XNN_ARCH_WASM
TEST(F32_VMAXC__WASM_X1,batch_eq_1)691 TEST(F32_VMAXC__WASM_X1, batch_eq_1) {
692 VBinOpCMicrokernelTester()
693 .batch_size(1)
694 .Test(xnn_f32_vmaxc_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
695 }
696
TEST(F32_VMAXC__WASM_X1,batch_gt_1)697 TEST(F32_VMAXC__WASM_X1, batch_gt_1) {
698 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
699 VBinOpCMicrokernelTester()
700 .batch_size(batch_size)
701 .Test(xnn_f32_vmaxc_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
702 }
703 }
704
TEST(F32_VMAXC__WASM_X1,inplace)705 TEST(F32_VMAXC__WASM_X1, inplace) {
706 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
707 VBinOpCMicrokernelTester()
708 .batch_size(batch_size)
709 .inplace(true)
710 .Test(xnn_f32_vmaxc_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
711 }
712 }
713
TEST(F32_VMAXC__WASM_X1,qmin)714 TEST(F32_VMAXC__WASM_X1, qmin) {
715 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
716 VBinOpCMicrokernelTester()
717 .batch_size(batch_size)
718 .qmin(128)
719 .Test(xnn_f32_vmaxc_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
720 }
721 }
722
TEST(F32_VMAXC__WASM_X1,qmax)723 TEST(F32_VMAXC__WASM_X1, qmax) {
724 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
725 VBinOpCMicrokernelTester()
726 .batch_size(batch_size)
727 .qmax(128)
728 .Test(xnn_f32_vmaxc_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
729 }
730 }
731 #endif // XNN_ARCH_WASM
732
733
734 #if XNN_ARCH_WASM
TEST(F32_VMAXC__WASM_X2,batch_eq_2)735 TEST(F32_VMAXC__WASM_X2, batch_eq_2) {
736 VBinOpCMicrokernelTester()
737 .batch_size(2)
738 .Test(xnn_f32_vmaxc_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
739 }
740
TEST(F32_VMAXC__WASM_X2,batch_div_2)741 TEST(F32_VMAXC__WASM_X2, batch_div_2) {
742 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
743 VBinOpCMicrokernelTester()
744 .batch_size(batch_size)
745 .Test(xnn_f32_vmaxc_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
746 }
747 }
748
TEST(F32_VMAXC__WASM_X2,batch_lt_2)749 TEST(F32_VMAXC__WASM_X2, batch_lt_2) {
750 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
751 VBinOpCMicrokernelTester()
752 .batch_size(batch_size)
753 .Test(xnn_f32_vmaxc_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
754 }
755 }
756
TEST(F32_VMAXC__WASM_X2,batch_gt_2)757 TEST(F32_VMAXC__WASM_X2, batch_gt_2) {
758 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
759 VBinOpCMicrokernelTester()
760 .batch_size(batch_size)
761 .Test(xnn_f32_vmaxc_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
762 }
763 }
764
TEST(F32_VMAXC__WASM_X2,inplace)765 TEST(F32_VMAXC__WASM_X2, inplace) {
766 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
767 VBinOpCMicrokernelTester()
768 .batch_size(batch_size)
769 .inplace(true)
770 .Test(xnn_f32_vmaxc_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
771 }
772 }
773
TEST(F32_VMAXC__WASM_X2,qmin)774 TEST(F32_VMAXC__WASM_X2, qmin) {
775 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
776 VBinOpCMicrokernelTester()
777 .batch_size(batch_size)
778 .qmin(128)
779 .Test(xnn_f32_vmaxc_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
780 }
781 }
782
TEST(F32_VMAXC__WASM_X2,qmax)783 TEST(F32_VMAXC__WASM_X2, qmax) {
784 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
785 VBinOpCMicrokernelTester()
786 .batch_size(batch_size)
787 .qmax(128)
788 .Test(xnn_f32_vmaxc_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
789 }
790 }
791 #endif // XNN_ARCH_WASM
792
793
794 #if XNN_ARCH_WASM
TEST(F32_VMAXC__WASM_X4,batch_eq_4)795 TEST(F32_VMAXC__WASM_X4, batch_eq_4) {
796 VBinOpCMicrokernelTester()
797 .batch_size(4)
798 .Test(xnn_f32_vmaxc_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
799 }
800
TEST(F32_VMAXC__WASM_X4,batch_div_4)801 TEST(F32_VMAXC__WASM_X4, batch_div_4) {
802 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
803 VBinOpCMicrokernelTester()
804 .batch_size(batch_size)
805 .Test(xnn_f32_vmaxc_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
806 }
807 }
808
TEST(F32_VMAXC__WASM_X4,batch_lt_4)809 TEST(F32_VMAXC__WASM_X4, batch_lt_4) {
810 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
811 VBinOpCMicrokernelTester()
812 .batch_size(batch_size)
813 .Test(xnn_f32_vmaxc_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
814 }
815 }
816
TEST(F32_VMAXC__WASM_X4,batch_gt_4)817 TEST(F32_VMAXC__WASM_X4, batch_gt_4) {
818 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
819 VBinOpCMicrokernelTester()
820 .batch_size(batch_size)
821 .Test(xnn_f32_vmaxc_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
822 }
823 }
824
TEST(F32_VMAXC__WASM_X4,inplace)825 TEST(F32_VMAXC__WASM_X4, inplace) {
826 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
827 VBinOpCMicrokernelTester()
828 .batch_size(batch_size)
829 .inplace(true)
830 .Test(xnn_f32_vmaxc_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
831 }
832 }
833
TEST(F32_VMAXC__WASM_X4,qmin)834 TEST(F32_VMAXC__WASM_X4, qmin) {
835 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
836 VBinOpCMicrokernelTester()
837 .batch_size(batch_size)
838 .qmin(128)
839 .Test(xnn_f32_vmaxc_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
840 }
841 }
842
TEST(F32_VMAXC__WASM_X4,qmax)843 TEST(F32_VMAXC__WASM_X4, qmax) {
844 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
845 VBinOpCMicrokernelTester()
846 .batch_size(batch_size)
847 .qmax(128)
848 .Test(xnn_f32_vmaxc_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
849 }
850 }
851 #endif // XNN_ARCH_WASM
852
853
TEST(F32_VMAXC__SCALAR_X1,batch_eq_1)854 TEST(F32_VMAXC__SCALAR_X1, batch_eq_1) {
855 VBinOpCMicrokernelTester()
856 .batch_size(1)
857 .Test(xnn_f32_vmaxc_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
858 }
859
TEST(F32_VMAXC__SCALAR_X1,batch_gt_1)860 TEST(F32_VMAXC__SCALAR_X1, batch_gt_1) {
861 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
862 VBinOpCMicrokernelTester()
863 .batch_size(batch_size)
864 .Test(xnn_f32_vmaxc_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
865 }
866 }
867
TEST(F32_VMAXC__SCALAR_X1,inplace)868 TEST(F32_VMAXC__SCALAR_X1, inplace) {
869 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
870 VBinOpCMicrokernelTester()
871 .batch_size(batch_size)
872 .inplace(true)
873 .Test(xnn_f32_vmaxc_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
874 }
875 }
876
TEST(F32_VMAXC__SCALAR_X1,qmin)877 TEST(F32_VMAXC__SCALAR_X1, qmin) {
878 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
879 VBinOpCMicrokernelTester()
880 .batch_size(batch_size)
881 .qmin(128)
882 .Test(xnn_f32_vmaxc_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
883 }
884 }
885
TEST(F32_VMAXC__SCALAR_X1,qmax)886 TEST(F32_VMAXC__SCALAR_X1, qmax) {
887 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
888 VBinOpCMicrokernelTester()
889 .batch_size(batch_size)
890 .qmax(128)
891 .Test(xnn_f32_vmaxc_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
892 }
893 }
894
TEST(F32_VMAXC__SCALAR_X2,batch_eq_2)895 TEST(F32_VMAXC__SCALAR_X2, batch_eq_2) {
896 VBinOpCMicrokernelTester()
897 .batch_size(2)
898 .Test(xnn_f32_vmaxc_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
899 }
900
TEST(F32_VMAXC__SCALAR_X2,batch_div_2)901 TEST(F32_VMAXC__SCALAR_X2, batch_div_2) {
902 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
903 VBinOpCMicrokernelTester()
904 .batch_size(batch_size)
905 .Test(xnn_f32_vmaxc_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
906 }
907 }
908
TEST(F32_VMAXC__SCALAR_X2,batch_lt_2)909 TEST(F32_VMAXC__SCALAR_X2, batch_lt_2) {
910 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
911 VBinOpCMicrokernelTester()
912 .batch_size(batch_size)
913 .Test(xnn_f32_vmaxc_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
914 }
915 }
916
TEST(F32_VMAXC__SCALAR_X2,batch_gt_2)917 TEST(F32_VMAXC__SCALAR_X2, batch_gt_2) {
918 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
919 VBinOpCMicrokernelTester()
920 .batch_size(batch_size)
921 .Test(xnn_f32_vmaxc_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
922 }
923 }
924
TEST(F32_VMAXC__SCALAR_X2,inplace)925 TEST(F32_VMAXC__SCALAR_X2, inplace) {
926 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
927 VBinOpCMicrokernelTester()
928 .batch_size(batch_size)
929 .inplace(true)
930 .Test(xnn_f32_vmaxc_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
931 }
932 }
933
TEST(F32_VMAXC__SCALAR_X2,qmin)934 TEST(F32_VMAXC__SCALAR_X2, qmin) {
935 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
936 VBinOpCMicrokernelTester()
937 .batch_size(batch_size)
938 .qmin(128)
939 .Test(xnn_f32_vmaxc_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
940 }
941 }
942
TEST(F32_VMAXC__SCALAR_X2,qmax)943 TEST(F32_VMAXC__SCALAR_X2, qmax) {
944 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
945 VBinOpCMicrokernelTester()
946 .batch_size(batch_size)
947 .qmax(128)
948 .Test(xnn_f32_vmaxc_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
949 }
950 }
951
TEST(F32_VMAXC__SCALAR_X4,batch_eq_4)952 TEST(F32_VMAXC__SCALAR_X4, batch_eq_4) {
953 VBinOpCMicrokernelTester()
954 .batch_size(4)
955 .Test(xnn_f32_vmaxc_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
956 }
957
TEST(F32_VMAXC__SCALAR_X4,batch_div_4)958 TEST(F32_VMAXC__SCALAR_X4, batch_div_4) {
959 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
960 VBinOpCMicrokernelTester()
961 .batch_size(batch_size)
962 .Test(xnn_f32_vmaxc_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
963 }
964 }
965
TEST(F32_VMAXC__SCALAR_X4,batch_lt_4)966 TEST(F32_VMAXC__SCALAR_X4, batch_lt_4) {
967 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
968 VBinOpCMicrokernelTester()
969 .batch_size(batch_size)
970 .Test(xnn_f32_vmaxc_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
971 }
972 }
973
TEST(F32_VMAXC__SCALAR_X4,batch_gt_4)974 TEST(F32_VMAXC__SCALAR_X4, batch_gt_4) {
975 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
976 VBinOpCMicrokernelTester()
977 .batch_size(batch_size)
978 .Test(xnn_f32_vmaxc_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
979 }
980 }
981
TEST(F32_VMAXC__SCALAR_X4,inplace)982 TEST(F32_VMAXC__SCALAR_X4, inplace) {
983 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
984 VBinOpCMicrokernelTester()
985 .batch_size(batch_size)
986 .inplace(true)
987 .Test(xnn_f32_vmaxc_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
988 }
989 }
990
TEST(F32_VMAXC__SCALAR_X4,qmin)991 TEST(F32_VMAXC__SCALAR_X4, qmin) {
992 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
993 VBinOpCMicrokernelTester()
994 .batch_size(batch_size)
995 .qmin(128)
996 .Test(xnn_f32_vmaxc_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
997 }
998 }
999
TEST(F32_VMAXC__SCALAR_X4,qmax)1000 TEST(F32_VMAXC__SCALAR_X4, qmax) {
1001 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1002 VBinOpCMicrokernelTester()
1003 .batch_size(batch_size)
1004 .qmax(128)
1005 .Test(xnn_f32_vmaxc_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::MaxC, VBinOpCMicrokernelTester::Variant::Scalar);
1006 }
1007 }