• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2019 Google LLC
2 //
3 // This source code is licensed under the BSD-style license found in the
4 // LICENSE file in the root directory of this source tree.
5 //
6 // Auto-generated file. Do not edit!
7 //   Specification: test/f32-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 }