xref: /aosp_15_r20/external/XNNPACK/test/f32-vmax.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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-vmax.yaml
8 //   Generator: tools/generate-vbinary-test.py
9 
10 
11 #include <gtest/gtest.h>
12 
13 #include <xnnpack/common.h>
14 #include <xnnpack/isa-checks.h>
15 
16 #include <xnnpack/microparams-init.h>
17 #include <xnnpack/vbinary.h>
18 #include "vbinary-microkernel-tester.h"
19 
20 
21 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VMAX__NEON_X4,batch_eq_4)22   TEST(F32_VMAX__NEON_X4, batch_eq_4) {
23     TEST_REQUIRES_ARM_NEON;
24     VBinaryMicrokernelTester()
25       .batch_size(4)
26       .Test(xnn_f32_vmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Max);
27   }
28 
TEST(F32_VMAX__NEON_X4,batch_div_4)29   TEST(F32_VMAX__NEON_X4, batch_div_4) {
30     TEST_REQUIRES_ARM_NEON;
31     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
32       VBinaryMicrokernelTester()
33         .batch_size(batch_size)
34         .Test(xnn_f32_vmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Max);
35     }
36   }
37 
TEST(F32_VMAX__NEON_X4,batch_lt_4)38   TEST(F32_VMAX__NEON_X4, batch_lt_4) {
39     TEST_REQUIRES_ARM_NEON;
40     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
41       VBinaryMicrokernelTester()
42         .batch_size(batch_size)
43         .Test(xnn_f32_vmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Max);
44     }
45   }
46 
TEST(F32_VMAX__NEON_X4,batch_gt_4)47   TEST(F32_VMAX__NEON_X4, batch_gt_4) {
48     TEST_REQUIRES_ARM_NEON;
49     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
50       VBinaryMicrokernelTester()
51         .batch_size(batch_size)
52         .Test(xnn_f32_vmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Max);
53     }
54   }
55 
TEST(F32_VMAX__NEON_X4,inplace_a)56   TEST(F32_VMAX__NEON_X4, inplace_a) {
57     TEST_REQUIRES_ARM_NEON;
58     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
59       VBinaryMicrokernelTester()
60         .batch_size(batch_size)
61         .inplace_a(true)
62         .Test(xnn_f32_vmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Max);
63     }
64   }
65 
TEST(F32_VMAX__NEON_X4,inplace_b)66   TEST(F32_VMAX__NEON_X4, inplace_b) {
67     TEST_REQUIRES_ARM_NEON;
68     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
69       VBinaryMicrokernelTester()
70         .batch_size(batch_size)
71         .inplace_b(true)
72         .Test(xnn_f32_vmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Max);
73     }
74   }
75 
TEST(F32_VMAX__NEON_X4,inplace_a_and_b)76   TEST(F32_VMAX__NEON_X4, inplace_a_and_b) {
77     TEST_REQUIRES_ARM_NEON;
78     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
79       VBinaryMicrokernelTester()
80         .batch_size(batch_size)
81         .inplace_a(true)
82         .inplace_b(true)
83         .Test(xnn_f32_vmax_ukernel__neon_x4, VBinaryMicrokernelTester::OpType::Max);
84     }
85   }
86 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
87 
88 
89 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VMAX__NEON_X8,batch_eq_8)90   TEST(F32_VMAX__NEON_X8, batch_eq_8) {
91     TEST_REQUIRES_ARM_NEON;
92     VBinaryMicrokernelTester()
93       .batch_size(8)
94       .Test(xnn_f32_vmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Max);
95   }
96 
TEST(F32_VMAX__NEON_X8,batch_div_8)97   TEST(F32_VMAX__NEON_X8, batch_div_8) {
98     TEST_REQUIRES_ARM_NEON;
99     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
100       VBinaryMicrokernelTester()
101         .batch_size(batch_size)
102         .Test(xnn_f32_vmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Max);
103     }
104   }
105 
TEST(F32_VMAX__NEON_X8,batch_lt_8)106   TEST(F32_VMAX__NEON_X8, batch_lt_8) {
107     TEST_REQUIRES_ARM_NEON;
108     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
109       VBinaryMicrokernelTester()
110         .batch_size(batch_size)
111         .Test(xnn_f32_vmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Max);
112     }
113   }
114 
TEST(F32_VMAX__NEON_X8,batch_gt_8)115   TEST(F32_VMAX__NEON_X8, batch_gt_8) {
116     TEST_REQUIRES_ARM_NEON;
117     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
118       VBinaryMicrokernelTester()
119         .batch_size(batch_size)
120         .Test(xnn_f32_vmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Max);
121     }
122   }
123 
TEST(F32_VMAX__NEON_X8,inplace_a)124   TEST(F32_VMAX__NEON_X8, inplace_a) {
125     TEST_REQUIRES_ARM_NEON;
126     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
127       VBinaryMicrokernelTester()
128         .batch_size(batch_size)
129         .inplace_a(true)
130         .Test(xnn_f32_vmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Max);
131     }
132   }
133 
TEST(F32_VMAX__NEON_X8,inplace_b)134   TEST(F32_VMAX__NEON_X8, inplace_b) {
135     TEST_REQUIRES_ARM_NEON;
136     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
137       VBinaryMicrokernelTester()
138         .batch_size(batch_size)
139         .inplace_b(true)
140         .Test(xnn_f32_vmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Max);
141     }
142   }
143 
TEST(F32_VMAX__NEON_X8,inplace_a_and_b)144   TEST(F32_VMAX__NEON_X8, inplace_a_and_b) {
145     TEST_REQUIRES_ARM_NEON;
146     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
147       VBinaryMicrokernelTester()
148         .batch_size(batch_size)
149         .inplace_a(true)
150         .inplace_b(true)
151         .Test(xnn_f32_vmax_ukernel__neon_x8, VBinaryMicrokernelTester::OpType::Max);
152     }
153   }
154 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
155 
156 
157 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAX__SSE_X4,batch_eq_4)158   TEST(F32_VMAX__SSE_X4, batch_eq_4) {
159     TEST_REQUIRES_X86_SSE;
160     VBinaryMicrokernelTester()
161       .batch_size(4)
162       .Test(xnn_f32_vmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Max);
163   }
164 
TEST(F32_VMAX__SSE_X4,batch_div_4)165   TEST(F32_VMAX__SSE_X4, batch_div_4) {
166     TEST_REQUIRES_X86_SSE;
167     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
168       VBinaryMicrokernelTester()
169         .batch_size(batch_size)
170         .Test(xnn_f32_vmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Max);
171     }
172   }
173 
TEST(F32_VMAX__SSE_X4,batch_lt_4)174   TEST(F32_VMAX__SSE_X4, batch_lt_4) {
175     TEST_REQUIRES_X86_SSE;
176     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
177       VBinaryMicrokernelTester()
178         .batch_size(batch_size)
179         .Test(xnn_f32_vmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Max);
180     }
181   }
182 
TEST(F32_VMAX__SSE_X4,batch_gt_4)183   TEST(F32_VMAX__SSE_X4, batch_gt_4) {
184     TEST_REQUIRES_X86_SSE;
185     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
186       VBinaryMicrokernelTester()
187         .batch_size(batch_size)
188         .Test(xnn_f32_vmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Max);
189     }
190   }
191 
TEST(F32_VMAX__SSE_X4,inplace_a)192   TEST(F32_VMAX__SSE_X4, inplace_a) {
193     TEST_REQUIRES_X86_SSE;
194     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
195       VBinaryMicrokernelTester()
196         .batch_size(batch_size)
197         .inplace_a(true)
198         .Test(xnn_f32_vmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Max);
199     }
200   }
201 
TEST(F32_VMAX__SSE_X4,inplace_b)202   TEST(F32_VMAX__SSE_X4, inplace_b) {
203     TEST_REQUIRES_X86_SSE;
204     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
205       VBinaryMicrokernelTester()
206         .batch_size(batch_size)
207         .inplace_b(true)
208         .Test(xnn_f32_vmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Max);
209     }
210   }
211 
TEST(F32_VMAX__SSE_X4,inplace_a_and_b)212   TEST(F32_VMAX__SSE_X4, inplace_a_and_b) {
213     TEST_REQUIRES_X86_SSE;
214     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
215       VBinaryMicrokernelTester()
216         .batch_size(batch_size)
217         .inplace_a(true)
218         .inplace_b(true)
219         .Test(xnn_f32_vmax_ukernel__sse_x4, VBinaryMicrokernelTester::OpType::Max);
220     }
221   }
222 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
223 
224 
225 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAX__SSE_X8,batch_eq_8)226   TEST(F32_VMAX__SSE_X8, batch_eq_8) {
227     TEST_REQUIRES_X86_SSE;
228     VBinaryMicrokernelTester()
229       .batch_size(8)
230       .Test(xnn_f32_vmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Max);
231   }
232 
TEST(F32_VMAX__SSE_X8,batch_div_8)233   TEST(F32_VMAX__SSE_X8, batch_div_8) {
234     TEST_REQUIRES_X86_SSE;
235     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
236       VBinaryMicrokernelTester()
237         .batch_size(batch_size)
238         .Test(xnn_f32_vmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Max);
239     }
240   }
241 
TEST(F32_VMAX__SSE_X8,batch_lt_8)242   TEST(F32_VMAX__SSE_X8, batch_lt_8) {
243     TEST_REQUIRES_X86_SSE;
244     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
245       VBinaryMicrokernelTester()
246         .batch_size(batch_size)
247         .Test(xnn_f32_vmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Max);
248     }
249   }
250 
TEST(F32_VMAX__SSE_X8,batch_gt_8)251   TEST(F32_VMAX__SSE_X8, batch_gt_8) {
252     TEST_REQUIRES_X86_SSE;
253     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
254       VBinaryMicrokernelTester()
255         .batch_size(batch_size)
256         .Test(xnn_f32_vmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Max);
257     }
258   }
259 
TEST(F32_VMAX__SSE_X8,inplace_a)260   TEST(F32_VMAX__SSE_X8, inplace_a) {
261     TEST_REQUIRES_X86_SSE;
262     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
263       VBinaryMicrokernelTester()
264         .batch_size(batch_size)
265         .inplace_a(true)
266         .Test(xnn_f32_vmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Max);
267     }
268   }
269 
TEST(F32_VMAX__SSE_X8,inplace_b)270   TEST(F32_VMAX__SSE_X8, inplace_b) {
271     TEST_REQUIRES_X86_SSE;
272     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
273       VBinaryMicrokernelTester()
274         .batch_size(batch_size)
275         .inplace_b(true)
276         .Test(xnn_f32_vmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Max);
277     }
278   }
279 
TEST(F32_VMAX__SSE_X8,inplace_a_and_b)280   TEST(F32_VMAX__SSE_X8, inplace_a_and_b) {
281     TEST_REQUIRES_X86_SSE;
282     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
283       VBinaryMicrokernelTester()
284         .batch_size(batch_size)
285         .inplace_a(true)
286         .inplace_b(true)
287         .Test(xnn_f32_vmax_ukernel__sse_x8, VBinaryMicrokernelTester::OpType::Max);
288     }
289   }
290 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
291 
292 
293 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAX__AVX_X8,batch_eq_8)294   TEST(F32_VMAX__AVX_X8, batch_eq_8) {
295     TEST_REQUIRES_X86_AVX;
296     VBinaryMicrokernelTester()
297       .batch_size(8)
298       .Test(xnn_f32_vmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
299   }
300 
TEST(F32_VMAX__AVX_X8,batch_div_8)301   TEST(F32_VMAX__AVX_X8, batch_div_8) {
302     TEST_REQUIRES_X86_AVX;
303     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
304       VBinaryMicrokernelTester()
305         .batch_size(batch_size)
306         .Test(xnn_f32_vmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
307     }
308   }
309 
TEST(F32_VMAX__AVX_X8,batch_lt_8)310   TEST(F32_VMAX__AVX_X8, batch_lt_8) {
311     TEST_REQUIRES_X86_AVX;
312     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
313       VBinaryMicrokernelTester()
314         .batch_size(batch_size)
315         .Test(xnn_f32_vmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
316     }
317   }
318 
TEST(F32_VMAX__AVX_X8,batch_gt_8)319   TEST(F32_VMAX__AVX_X8, batch_gt_8) {
320     TEST_REQUIRES_X86_AVX;
321     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
322       VBinaryMicrokernelTester()
323         .batch_size(batch_size)
324         .Test(xnn_f32_vmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
325     }
326   }
327 
TEST(F32_VMAX__AVX_X8,inplace_a)328   TEST(F32_VMAX__AVX_X8, inplace_a) {
329     TEST_REQUIRES_X86_AVX;
330     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
331       VBinaryMicrokernelTester()
332         .batch_size(batch_size)
333         .inplace_a(true)
334         .Test(xnn_f32_vmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
335     }
336   }
337 
TEST(F32_VMAX__AVX_X8,inplace_b)338   TEST(F32_VMAX__AVX_X8, inplace_b) {
339     TEST_REQUIRES_X86_AVX;
340     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
341       VBinaryMicrokernelTester()
342         .batch_size(batch_size)
343         .inplace_b(true)
344         .Test(xnn_f32_vmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
345     }
346   }
347 
TEST(F32_VMAX__AVX_X8,inplace_a_and_b)348   TEST(F32_VMAX__AVX_X8, inplace_a_and_b) {
349     TEST_REQUIRES_X86_AVX;
350     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
351       VBinaryMicrokernelTester()
352         .batch_size(batch_size)
353         .inplace_a(true)
354         .inplace_b(true)
355         .Test(xnn_f32_vmax_ukernel__avx_x8, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
356     }
357   }
358 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
359 
360 
361 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAX__AVX_X16,batch_eq_16)362   TEST(F32_VMAX__AVX_X16, batch_eq_16) {
363     TEST_REQUIRES_X86_AVX;
364     VBinaryMicrokernelTester()
365       .batch_size(16)
366       .Test(xnn_f32_vmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
367   }
368 
TEST(F32_VMAX__AVX_X16,batch_div_16)369   TEST(F32_VMAX__AVX_X16, batch_div_16) {
370     TEST_REQUIRES_X86_AVX;
371     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
372       VBinaryMicrokernelTester()
373         .batch_size(batch_size)
374         .Test(xnn_f32_vmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
375     }
376   }
377 
TEST(F32_VMAX__AVX_X16,batch_lt_16)378   TEST(F32_VMAX__AVX_X16, batch_lt_16) {
379     TEST_REQUIRES_X86_AVX;
380     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
381       VBinaryMicrokernelTester()
382         .batch_size(batch_size)
383         .Test(xnn_f32_vmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
384     }
385   }
386 
TEST(F32_VMAX__AVX_X16,batch_gt_16)387   TEST(F32_VMAX__AVX_X16, batch_gt_16) {
388     TEST_REQUIRES_X86_AVX;
389     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
390       VBinaryMicrokernelTester()
391         .batch_size(batch_size)
392         .Test(xnn_f32_vmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
393     }
394   }
395 
TEST(F32_VMAX__AVX_X16,inplace_a)396   TEST(F32_VMAX__AVX_X16, inplace_a) {
397     TEST_REQUIRES_X86_AVX;
398     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
399       VBinaryMicrokernelTester()
400         .batch_size(batch_size)
401         .inplace_a(true)
402         .Test(xnn_f32_vmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
403     }
404   }
405 
TEST(F32_VMAX__AVX_X16,inplace_b)406   TEST(F32_VMAX__AVX_X16, inplace_b) {
407     TEST_REQUIRES_X86_AVX;
408     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
409       VBinaryMicrokernelTester()
410         .batch_size(batch_size)
411         .inplace_b(true)
412         .Test(xnn_f32_vmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
413     }
414   }
415 
TEST(F32_VMAX__AVX_X16,inplace_a_and_b)416   TEST(F32_VMAX__AVX_X16, inplace_a_and_b) {
417     TEST_REQUIRES_X86_AVX;
418     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
419       VBinaryMicrokernelTester()
420         .batch_size(batch_size)
421         .inplace_a(true)
422         .inplace_b(true)
423         .Test(xnn_f32_vmax_ukernel__avx_x16, VBinaryMicrokernelTester::OpType::Max, xnn_init_f32_default_avx_params);
424     }
425   }
426 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
427 
428 
429 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAX__AVX512F_X16,batch_eq_16)430   TEST(F32_VMAX__AVX512F_X16, batch_eq_16) {
431     TEST_REQUIRES_X86_AVX512F;
432     VBinaryMicrokernelTester()
433       .batch_size(16)
434       .Test(xnn_f32_vmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Max);
435   }
436 
TEST(F32_VMAX__AVX512F_X16,batch_div_16)437   TEST(F32_VMAX__AVX512F_X16, batch_div_16) {
438     TEST_REQUIRES_X86_AVX512F;
439     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
440       VBinaryMicrokernelTester()
441         .batch_size(batch_size)
442         .Test(xnn_f32_vmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Max);
443     }
444   }
445 
TEST(F32_VMAX__AVX512F_X16,batch_lt_16)446   TEST(F32_VMAX__AVX512F_X16, batch_lt_16) {
447     TEST_REQUIRES_X86_AVX512F;
448     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
449       VBinaryMicrokernelTester()
450         .batch_size(batch_size)
451         .Test(xnn_f32_vmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Max);
452     }
453   }
454 
TEST(F32_VMAX__AVX512F_X16,batch_gt_16)455   TEST(F32_VMAX__AVX512F_X16, batch_gt_16) {
456     TEST_REQUIRES_X86_AVX512F;
457     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
458       VBinaryMicrokernelTester()
459         .batch_size(batch_size)
460         .Test(xnn_f32_vmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Max);
461     }
462   }
463 
TEST(F32_VMAX__AVX512F_X16,inplace_a)464   TEST(F32_VMAX__AVX512F_X16, inplace_a) {
465     TEST_REQUIRES_X86_AVX512F;
466     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
467       VBinaryMicrokernelTester()
468         .batch_size(batch_size)
469         .inplace_a(true)
470         .Test(xnn_f32_vmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Max);
471     }
472   }
473 
TEST(F32_VMAX__AVX512F_X16,inplace_b)474   TEST(F32_VMAX__AVX512F_X16, inplace_b) {
475     TEST_REQUIRES_X86_AVX512F;
476     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
477       VBinaryMicrokernelTester()
478         .batch_size(batch_size)
479         .inplace_b(true)
480         .Test(xnn_f32_vmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Max);
481     }
482   }
483 
TEST(F32_VMAX__AVX512F_X16,inplace_a_and_b)484   TEST(F32_VMAX__AVX512F_X16, inplace_a_and_b) {
485     TEST_REQUIRES_X86_AVX512F;
486     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
487       VBinaryMicrokernelTester()
488         .batch_size(batch_size)
489         .inplace_a(true)
490         .inplace_b(true)
491         .Test(xnn_f32_vmax_ukernel__avx512f_x16, VBinaryMicrokernelTester::OpType::Max);
492     }
493   }
494 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
495 
496 
497 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMAX__AVX512F_X32,batch_eq_32)498   TEST(F32_VMAX__AVX512F_X32, batch_eq_32) {
499     TEST_REQUIRES_X86_AVX512F;
500     VBinaryMicrokernelTester()
501       .batch_size(32)
502       .Test(xnn_f32_vmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Max);
503   }
504 
TEST(F32_VMAX__AVX512F_X32,batch_div_32)505   TEST(F32_VMAX__AVX512F_X32, batch_div_32) {
506     TEST_REQUIRES_X86_AVX512F;
507     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
508       VBinaryMicrokernelTester()
509         .batch_size(batch_size)
510         .Test(xnn_f32_vmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Max);
511     }
512   }
513 
TEST(F32_VMAX__AVX512F_X32,batch_lt_32)514   TEST(F32_VMAX__AVX512F_X32, batch_lt_32) {
515     TEST_REQUIRES_X86_AVX512F;
516     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
517       VBinaryMicrokernelTester()
518         .batch_size(batch_size)
519         .Test(xnn_f32_vmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Max);
520     }
521   }
522 
TEST(F32_VMAX__AVX512F_X32,batch_gt_32)523   TEST(F32_VMAX__AVX512F_X32, batch_gt_32) {
524     TEST_REQUIRES_X86_AVX512F;
525     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
526       VBinaryMicrokernelTester()
527         .batch_size(batch_size)
528         .Test(xnn_f32_vmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Max);
529     }
530   }
531 
TEST(F32_VMAX__AVX512F_X32,inplace_a)532   TEST(F32_VMAX__AVX512F_X32, inplace_a) {
533     TEST_REQUIRES_X86_AVX512F;
534     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
535       VBinaryMicrokernelTester()
536         .batch_size(batch_size)
537         .inplace_a(true)
538         .Test(xnn_f32_vmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Max);
539     }
540   }
541 
TEST(F32_VMAX__AVX512F_X32,inplace_b)542   TEST(F32_VMAX__AVX512F_X32, inplace_b) {
543     TEST_REQUIRES_X86_AVX512F;
544     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
545       VBinaryMicrokernelTester()
546         .batch_size(batch_size)
547         .inplace_b(true)
548         .Test(xnn_f32_vmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Max);
549     }
550   }
551 
TEST(F32_VMAX__AVX512F_X32,inplace_a_and_b)552   TEST(F32_VMAX__AVX512F_X32, inplace_a_and_b) {
553     TEST_REQUIRES_X86_AVX512F;
554     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
555       VBinaryMicrokernelTester()
556         .batch_size(batch_size)
557         .inplace_a(true)
558         .inplace_b(true)
559         .Test(xnn_f32_vmax_ukernel__avx512f_x32, VBinaryMicrokernelTester::OpType::Max);
560     }
561   }
562 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
563 
564 
565 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASMSIMD_ARM_X4,batch_eq_4)566   TEST(F32_VMAX__WASMSIMD_ARM_X4, batch_eq_4) {
567     VBinaryMicrokernelTester()
568       .batch_size(4)
569       .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Max);
570   }
571 
TEST(F32_VMAX__WASMSIMD_ARM_X4,batch_div_4)572   TEST(F32_VMAX__WASMSIMD_ARM_X4, batch_div_4) {
573     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
574       VBinaryMicrokernelTester()
575         .batch_size(batch_size)
576         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Max);
577     }
578   }
579 
TEST(F32_VMAX__WASMSIMD_ARM_X4,batch_lt_4)580   TEST(F32_VMAX__WASMSIMD_ARM_X4, batch_lt_4) {
581     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
582       VBinaryMicrokernelTester()
583         .batch_size(batch_size)
584         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Max);
585     }
586   }
587 
TEST(F32_VMAX__WASMSIMD_ARM_X4,batch_gt_4)588   TEST(F32_VMAX__WASMSIMD_ARM_X4, batch_gt_4) {
589     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
590       VBinaryMicrokernelTester()
591         .batch_size(batch_size)
592         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Max);
593     }
594   }
595 
TEST(F32_VMAX__WASMSIMD_ARM_X4,inplace_a)596   TEST(F32_VMAX__WASMSIMD_ARM_X4, inplace_a) {
597     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
598       VBinaryMicrokernelTester()
599         .batch_size(batch_size)
600         .inplace_a(true)
601         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Max);
602     }
603   }
604 
TEST(F32_VMAX__WASMSIMD_ARM_X4,inplace_b)605   TEST(F32_VMAX__WASMSIMD_ARM_X4, inplace_b) {
606     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
607       VBinaryMicrokernelTester()
608         .batch_size(batch_size)
609         .inplace_b(true)
610         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Max);
611     }
612   }
613 
TEST(F32_VMAX__WASMSIMD_ARM_X4,inplace_a_and_b)614   TEST(F32_VMAX__WASMSIMD_ARM_X4, inplace_a_and_b) {
615     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
616       VBinaryMicrokernelTester()
617         .batch_size(batch_size)
618         .inplace_a(true)
619         .inplace_b(true)
620         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x4, VBinaryMicrokernelTester::OpType::Max);
621     }
622   }
623 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
624 
625 
626 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASMSIMD_ARM_X8,batch_eq_8)627   TEST(F32_VMAX__WASMSIMD_ARM_X8, batch_eq_8) {
628     VBinaryMicrokernelTester()
629       .batch_size(8)
630       .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Max);
631   }
632 
TEST(F32_VMAX__WASMSIMD_ARM_X8,batch_div_8)633   TEST(F32_VMAX__WASMSIMD_ARM_X8, batch_div_8) {
634     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
635       VBinaryMicrokernelTester()
636         .batch_size(batch_size)
637         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Max);
638     }
639   }
640 
TEST(F32_VMAX__WASMSIMD_ARM_X8,batch_lt_8)641   TEST(F32_VMAX__WASMSIMD_ARM_X8, batch_lt_8) {
642     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
643       VBinaryMicrokernelTester()
644         .batch_size(batch_size)
645         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Max);
646     }
647   }
648 
TEST(F32_VMAX__WASMSIMD_ARM_X8,batch_gt_8)649   TEST(F32_VMAX__WASMSIMD_ARM_X8, batch_gt_8) {
650     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
651       VBinaryMicrokernelTester()
652         .batch_size(batch_size)
653         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Max);
654     }
655   }
656 
TEST(F32_VMAX__WASMSIMD_ARM_X8,inplace_a)657   TEST(F32_VMAX__WASMSIMD_ARM_X8, inplace_a) {
658     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
659       VBinaryMicrokernelTester()
660         .batch_size(batch_size)
661         .inplace_a(true)
662         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Max);
663     }
664   }
665 
TEST(F32_VMAX__WASMSIMD_ARM_X8,inplace_b)666   TEST(F32_VMAX__WASMSIMD_ARM_X8, inplace_b) {
667     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
668       VBinaryMicrokernelTester()
669         .batch_size(batch_size)
670         .inplace_b(true)
671         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Max);
672     }
673   }
674 
TEST(F32_VMAX__WASMSIMD_ARM_X8,inplace_a_and_b)675   TEST(F32_VMAX__WASMSIMD_ARM_X8, inplace_a_and_b) {
676     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
677       VBinaryMicrokernelTester()
678         .batch_size(batch_size)
679         .inplace_a(true)
680         .inplace_b(true)
681         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x8, VBinaryMicrokernelTester::OpType::Max);
682     }
683   }
684 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
685 
686 
687 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASMSIMD_ARM_X16,batch_eq_16)688   TEST(F32_VMAX__WASMSIMD_ARM_X16, batch_eq_16) {
689     VBinaryMicrokernelTester()
690       .batch_size(16)
691       .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Max);
692   }
693 
TEST(F32_VMAX__WASMSIMD_ARM_X16,batch_div_16)694   TEST(F32_VMAX__WASMSIMD_ARM_X16, batch_div_16) {
695     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
696       VBinaryMicrokernelTester()
697         .batch_size(batch_size)
698         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Max);
699     }
700   }
701 
TEST(F32_VMAX__WASMSIMD_ARM_X16,batch_lt_16)702   TEST(F32_VMAX__WASMSIMD_ARM_X16, batch_lt_16) {
703     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
704       VBinaryMicrokernelTester()
705         .batch_size(batch_size)
706         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Max);
707     }
708   }
709 
TEST(F32_VMAX__WASMSIMD_ARM_X16,batch_gt_16)710   TEST(F32_VMAX__WASMSIMD_ARM_X16, batch_gt_16) {
711     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
712       VBinaryMicrokernelTester()
713         .batch_size(batch_size)
714         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Max);
715     }
716   }
717 
TEST(F32_VMAX__WASMSIMD_ARM_X16,inplace_a)718   TEST(F32_VMAX__WASMSIMD_ARM_X16, inplace_a) {
719     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
720       VBinaryMicrokernelTester()
721         .batch_size(batch_size)
722         .inplace_a(true)
723         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Max);
724     }
725   }
726 
TEST(F32_VMAX__WASMSIMD_ARM_X16,inplace_b)727   TEST(F32_VMAX__WASMSIMD_ARM_X16, inplace_b) {
728     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
729       VBinaryMicrokernelTester()
730         .batch_size(batch_size)
731         .inplace_b(true)
732         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Max);
733     }
734   }
735 
TEST(F32_VMAX__WASMSIMD_ARM_X16,inplace_a_and_b)736   TEST(F32_VMAX__WASMSIMD_ARM_X16, inplace_a_and_b) {
737     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
738       VBinaryMicrokernelTester()
739         .batch_size(batch_size)
740         .inplace_a(true)
741         .inplace_b(true)
742         .Test(xnn_f32_vmax_ukernel__wasmsimd_arm_x16, VBinaryMicrokernelTester::OpType::Max);
743     }
744   }
745 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
746 
747 
748 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASMSIMD_X86_X4,batch_eq_4)749   TEST(F32_VMAX__WASMSIMD_X86_X4, batch_eq_4) {
750     VBinaryMicrokernelTester()
751       .batch_size(4)
752       .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Max);
753   }
754 
TEST(F32_VMAX__WASMSIMD_X86_X4,batch_div_4)755   TEST(F32_VMAX__WASMSIMD_X86_X4, batch_div_4) {
756     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
757       VBinaryMicrokernelTester()
758         .batch_size(batch_size)
759         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Max);
760     }
761   }
762 
TEST(F32_VMAX__WASMSIMD_X86_X4,batch_lt_4)763   TEST(F32_VMAX__WASMSIMD_X86_X4, batch_lt_4) {
764     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
765       VBinaryMicrokernelTester()
766         .batch_size(batch_size)
767         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Max);
768     }
769   }
770 
TEST(F32_VMAX__WASMSIMD_X86_X4,batch_gt_4)771   TEST(F32_VMAX__WASMSIMD_X86_X4, batch_gt_4) {
772     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
773       VBinaryMicrokernelTester()
774         .batch_size(batch_size)
775         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Max);
776     }
777   }
778 
TEST(F32_VMAX__WASMSIMD_X86_X4,inplace_a)779   TEST(F32_VMAX__WASMSIMD_X86_X4, inplace_a) {
780     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
781       VBinaryMicrokernelTester()
782         .batch_size(batch_size)
783         .inplace_a(true)
784         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Max);
785     }
786   }
787 
TEST(F32_VMAX__WASMSIMD_X86_X4,inplace_b)788   TEST(F32_VMAX__WASMSIMD_X86_X4, inplace_b) {
789     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
790       VBinaryMicrokernelTester()
791         .batch_size(batch_size)
792         .inplace_b(true)
793         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Max);
794     }
795   }
796 
TEST(F32_VMAX__WASMSIMD_X86_X4,inplace_a_and_b)797   TEST(F32_VMAX__WASMSIMD_X86_X4, inplace_a_and_b) {
798     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
799       VBinaryMicrokernelTester()
800         .batch_size(batch_size)
801         .inplace_a(true)
802         .inplace_b(true)
803         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x4, VBinaryMicrokernelTester::OpType::Max);
804     }
805   }
806 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
807 
808 
809 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASMSIMD_X86_X8,batch_eq_8)810   TEST(F32_VMAX__WASMSIMD_X86_X8, batch_eq_8) {
811     VBinaryMicrokernelTester()
812       .batch_size(8)
813       .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Max);
814   }
815 
TEST(F32_VMAX__WASMSIMD_X86_X8,batch_div_8)816   TEST(F32_VMAX__WASMSIMD_X86_X8, batch_div_8) {
817     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
818       VBinaryMicrokernelTester()
819         .batch_size(batch_size)
820         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Max);
821     }
822   }
823 
TEST(F32_VMAX__WASMSIMD_X86_X8,batch_lt_8)824   TEST(F32_VMAX__WASMSIMD_X86_X8, batch_lt_8) {
825     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
826       VBinaryMicrokernelTester()
827         .batch_size(batch_size)
828         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Max);
829     }
830   }
831 
TEST(F32_VMAX__WASMSIMD_X86_X8,batch_gt_8)832   TEST(F32_VMAX__WASMSIMD_X86_X8, batch_gt_8) {
833     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
834       VBinaryMicrokernelTester()
835         .batch_size(batch_size)
836         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Max);
837     }
838   }
839 
TEST(F32_VMAX__WASMSIMD_X86_X8,inplace_a)840   TEST(F32_VMAX__WASMSIMD_X86_X8, inplace_a) {
841     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
842       VBinaryMicrokernelTester()
843         .batch_size(batch_size)
844         .inplace_a(true)
845         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Max);
846     }
847   }
848 
TEST(F32_VMAX__WASMSIMD_X86_X8,inplace_b)849   TEST(F32_VMAX__WASMSIMD_X86_X8, inplace_b) {
850     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
851       VBinaryMicrokernelTester()
852         .batch_size(batch_size)
853         .inplace_b(true)
854         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Max);
855     }
856   }
857 
TEST(F32_VMAX__WASMSIMD_X86_X8,inplace_a_and_b)858   TEST(F32_VMAX__WASMSIMD_X86_X8, inplace_a_and_b) {
859     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
860       VBinaryMicrokernelTester()
861         .batch_size(batch_size)
862         .inplace_a(true)
863         .inplace_b(true)
864         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x8, VBinaryMicrokernelTester::OpType::Max);
865     }
866   }
867 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
868 
869 
870 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASMSIMD_X86_X16,batch_eq_16)871   TEST(F32_VMAX__WASMSIMD_X86_X16, batch_eq_16) {
872     VBinaryMicrokernelTester()
873       .batch_size(16)
874       .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Max);
875   }
876 
TEST(F32_VMAX__WASMSIMD_X86_X16,batch_div_16)877   TEST(F32_VMAX__WASMSIMD_X86_X16, batch_div_16) {
878     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
879       VBinaryMicrokernelTester()
880         .batch_size(batch_size)
881         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Max);
882     }
883   }
884 
TEST(F32_VMAX__WASMSIMD_X86_X16,batch_lt_16)885   TEST(F32_VMAX__WASMSIMD_X86_X16, batch_lt_16) {
886     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
887       VBinaryMicrokernelTester()
888         .batch_size(batch_size)
889         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Max);
890     }
891   }
892 
TEST(F32_VMAX__WASMSIMD_X86_X16,batch_gt_16)893   TEST(F32_VMAX__WASMSIMD_X86_X16, batch_gt_16) {
894     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
895       VBinaryMicrokernelTester()
896         .batch_size(batch_size)
897         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Max);
898     }
899   }
900 
TEST(F32_VMAX__WASMSIMD_X86_X16,inplace_a)901   TEST(F32_VMAX__WASMSIMD_X86_X16, inplace_a) {
902     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
903       VBinaryMicrokernelTester()
904         .batch_size(batch_size)
905         .inplace_a(true)
906         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Max);
907     }
908   }
909 
TEST(F32_VMAX__WASMSIMD_X86_X16,inplace_b)910   TEST(F32_VMAX__WASMSIMD_X86_X16, inplace_b) {
911     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
912       VBinaryMicrokernelTester()
913         .batch_size(batch_size)
914         .inplace_b(true)
915         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Max);
916     }
917   }
918 
TEST(F32_VMAX__WASMSIMD_X86_X16,inplace_a_and_b)919   TEST(F32_VMAX__WASMSIMD_X86_X16, inplace_a_and_b) {
920     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
921       VBinaryMicrokernelTester()
922         .batch_size(batch_size)
923         .inplace_a(true)
924         .inplace_b(true)
925         .Test(xnn_f32_vmax_ukernel__wasmsimd_x86_x16, VBinaryMicrokernelTester::OpType::Max);
926     }
927   }
928 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
929 
930 
931 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASM_X1,batch_eq_1)932   TEST(F32_VMAX__WASM_X1, batch_eq_1) {
933     VBinaryMicrokernelTester()
934       .batch_size(1)
935       .Test(xnn_f32_vmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Max);
936   }
937 
TEST(F32_VMAX__WASM_X1,batch_gt_1)938   TEST(F32_VMAX__WASM_X1, batch_gt_1) {
939     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
940       VBinaryMicrokernelTester()
941         .batch_size(batch_size)
942         .Test(xnn_f32_vmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Max);
943     }
944   }
945 
TEST(F32_VMAX__WASM_X1,inplace_a)946   TEST(F32_VMAX__WASM_X1, inplace_a) {
947     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
948       VBinaryMicrokernelTester()
949         .batch_size(batch_size)
950         .inplace_a(true)
951         .Test(xnn_f32_vmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Max);
952     }
953   }
954 
TEST(F32_VMAX__WASM_X1,inplace_b)955   TEST(F32_VMAX__WASM_X1, inplace_b) {
956     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
957       VBinaryMicrokernelTester()
958         .batch_size(batch_size)
959         .inplace_b(true)
960         .Test(xnn_f32_vmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Max);
961     }
962   }
963 
TEST(F32_VMAX__WASM_X1,inplace_a_and_b)964   TEST(F32_VMAX__WASM_X1, inplace_a_and_b) {
965     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
966       VBinaryMicrokernelTester()
967         .batch_size(batch_size)
968         .inplace_a(true)
969         .inplace_b(true)
970         .Test(xnn_f32_vmax_ukernel__wasm_x1, VBinaryMicrokernelTester::OpType::Max);
971     }
972   }
973 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
974 
975 
976 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASM_X2,batch_eq_2)977   TEST(F32_VMAX__WASM_X2, batch_eq_2) {
978     VBinaryMicrokernelTester()
979       .batch_size(2)
980       .Test(xnn_f32_vmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Max);
981   }
982 
TEST(F32_VMAX__WASM_X2,batch_div_2)983   TEST(F32_VMAX__WASM_X2, batch_div_2) {
984     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
985       VBinaryMicrokernelTester()
986         .batch_size(batch_size)
987         .Test(xnn_f32_vmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Max);
988     }
989   }
990 
TEST(F32_VMAX__WASM_X2,batch_lt_2)991   TEST(F32_VMAX__WASM_X2, batch_lt_2) {
992     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
993       VBinaryMicrokernelTester()
994         .batch_size(batch_size)
995         .Test(xnn_f32_vmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Max);
996     }
997   }
998 
TEST(F32_VMAX__WASM_X2,batch_gt_2)999   TEST(F32_VMAX__WASM_X2, batch_gt_2) {
1000     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
1001       VBinaryMicrokernelTester()
1002         .batch_size(batch_size)
1003         .Test(xnn_f32_vmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Max);
1004     }
1005   }
1006 
TEST(F32_VMAX__WASM_X2,inplace_a)1007   TEST(F32_VMAX__WASM_X2, inplace_a) {
1008     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1009       VBinaryMicrokernelTester()
1010         .batch_size(batch_size)
1011         .inplace_a(true)
1012         .Test(xnn_f32_vmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Max);
1013     }
1014   }
1015 
TEST(F32_VMAX__WASM_X2,inplace_b)1016   TEST(F32_VMAX__WASM_X2, inplace_b) {
1017     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1018       VBinaryMicrokernelTester()
1019         .batch_size(batch_size)
1020         .inplace_b(true)
1021         .Test(xnn_f32_vmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Max);
1022     }
1023   }
1024 
TEST(F32_VMAX__WASM_X2,inplace_a_and_b)1025   TEST(F32_VMAX__WASM_X2, inplace_a_and_b) {
1026     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1027       VBinaryMicrokernelTester()
1028         .batch_size(batch_size)
1029         .inplace_a(true)
1030         .inplace_b(true)
1031         .Test(xnn_f32_vmax_ukernel__wasm_x2, VBinaryMicrokernelTester::OpType::Max);
1032     }
1033   }
1034 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1035 
1036 
1037 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASM_X4,batch_eq_4)1038   TEST(F32_VMAX__WASM_X4, batch_eq_4) {
1039     VBinaryMicrokernelTester()
1040       .batch_size(4)
1041       .Test(xnn_f32_vmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Max);
1042   }
1043 
TEST(F32_VMAX__WASM_X4,batch_div_4)1044   TEST(F32_VMAX__WASM_X4, batch_div_4) {
1045     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1046       VBinaryMicrokernelTester()
1047         .batch_size(batch_size)
1048         .Test(xnn_f32_vmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Max);
1049     }
1050   }
1051 
TEST(F32_VMAX__WASM_X4,batch_lt_4)1052   TEST(F32_VMAX__WASM_X4, batch_lt_4) {
1053     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1054       VBinaryMicrokernelTester()
1055         .batch_size(batch_size)
1056         .Test(xnn_f32_vmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Max);
1057     }
1058   }
1059 
TEST(F32_VMAX__WASM_X4,batch_gt_4)1060   TEST(F32_VMAX__WASM_X4, batch_gt_4) {
1061     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1062       VBinaryMicrokernelTester()
1063         .batch_size(batch_size)
1064         .Test(xnn_f32_vmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Max);
1065     }
1066   }
1067 
TEST(F32_VMAX__WASM_X4,inplace_a)1068   TEST(F32_VMAX__WASM_X4, inplace_a) {
1069     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1070       VBinaryMicrokernelTester()
1071         .batch_size(batch_size)
1072         .inplace_a(true)
1073         .Test(xnn_f32_vmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Max);
1074     }
1075   }
1076 
TEST(F32_VMAX__WASM_X4,inplace_b)1077   TEST(F32_VMAX__WASM_X4, inplace_b) {
1078     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1079       VBinaryMicrokernelTester()
1080         .batch_size(batch_size)
1081         .inplace_b(true)
1082         .Test(xnn_f32_vmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Max);
1083     }
1084   }
1085 
TEST(F32_VMAX__WASM_X4,inplace_a_and_b)1086   TEST(F32_VMAX__WASM_X4, inplace_a_and_b) {
1087     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1088       VBinaryMicrokernelTester()
1089         .batch_size(batch_size)
1090         .inplace_a(true)
1091         .inplace_b(true)
1092         .Test(xnn_f32_vmax_ukernel__wasm_x4, VBinaryMicrokernelTester::OpType::Max);
1093     }
1094   }
1095 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1096 
1097 
1098 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMAX__WASM_X8,batch_eq_8)1099   TEST(F32_VMAX__WASM_X8, batch_eq_8) {
1100     VBinaryMicrokernelTester()
1101       .batch_size(8)
1102       .Test(xnn_f32_vmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Max);
1103   }
1104 
TEST(F32_VMAX__WASM_X8,batch_div_8)1105   TEST(F32_VMAX__WASM_X8, batch_div_8) {
1106     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1107       VBinaryMicrokernelTester()
1108         .batch_size(batch_size)
1109         .Test(xnn_f32_vmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Max);
1110     }
1111   }
1112 
TEST(F32_VMAX__WASM_X8,batch_lt_8)1113   TEST(F32_VMAX__WASM_X8, batch_lt_8) {
1114     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1115       VBinaryMicrokernelTester()
1116         .batch_size(batch_size)
1117         .Test(xnn_f32_vmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Max);
1118     }
1119   }
1120 
TEST(F32_VMAX__WASM_X8,batch_gt_8)1121   TEST(F32_VMAX__WASM_X8, batch_gt_8) {
1122     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1123       VBinaryMicrokernelTester()
1124         .batch_size(batch_size)
1125         .Test(xnn_f32_vmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Max);
1126     }
1127   }
1128 
TEST(F32_VMAX__WASM_X8,inplace_a)1129   TEST(F32_VMAX__WASM_X8, inplace_a) {
1130     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1131       VBinaryMicrokernelTester()
1132         .batch_size(batch_size)
1133         .inplace_a(true)
1134         .Test(xnn_f32_vmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Max);
1135     }
1136   }
1137 
TEST(F32_VMAX__WASM_X8,inplace_b)1138   TEST(F32_VMAX__WASM_X8, inplace_b) {
1139     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1140       VBinaryMicrokernelTester()
1141         .batch_size(batch_size)
1142         .inplace_b(true)
1143         .Test(xnn_f32_vmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Max);
1144     }
1145   }
1146 
TEST(F32_VMAX__WASM_X8,inplace_a_and_b)1147   TEST(F32_VMAX__WASM_X8, inplace_a_and_b) {
1148     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1149       VBinaryMicrokernelTester()
1150         .batch_size(batch_size)
1151         .inplace_a(true)
1152         .inplace_b(true)
1153         .Test(xnn_f32_vmax_ukernel__wasm_x8, VBinaryMicrokernelTester::OpType::Max);
1154     }
1155   }
1156 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1157 
1158 
TEST(F32_VMAX__SCALAR_X1,batch_eq_1)1159 TEST(F32_VMAX__SCALAR_X1, batch_eq_1) {
1160   VBinaryMicrokernelTester()
1161     .batch_size(1)
1162     .Test(xnn_f32_vmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Max);
1163 }
1164 
TEST(F32_VMAX__SCALAR_X1,batch_gt_1)1165 TEST(F32_VMAX__SCALAR_X1, batch_gt_1) {
1166   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
1167     VBinaryMicrokernelTester()
1168       .batch_size(batch_size)
1169       .Test(xnn_f32_vmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Max);
1170   }
1171 }
1172 
TEST(F32_VMAX__SCALAR_X1,inplace_a)1173 TEST(F32_VMAX__SCALAR_X1, inplace_a) {
1174   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1175     VBinaryMicrokernelTester()
1176       .batch_size(batch_size)
1177       .inplace_a(true)
1178       .Test(xnn_f32_vmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Max);
1179   }
1180 }
1181 
TEST(F32_VMAX__SCALAR_X1,inplace_b)1182 TEST(F32_VMAX__SCALAR_X1, inplace_b) {
1183   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1184     VBinaryMicrokernelTester()
1185       .batch_size(batch_size)
1186       .inplace_b(true)
1187       .Test(xnn_f32_vmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Max);
1188   }
1189 }
1190 
TEST(F32_VMAX__SCALAR_X1,inplace_a_and_b)1191 TEST(F32_VMAX__SCALAR_X1, inplace_a_and_b) {
1192   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1193     VBinaryMicrokernelTester()
1194       .batch_size(batch_size)
1195       .inplace_a(true)
1196       .inplace_b(true)
1197       .Test(xnn_f32_vmax_ukernel__scalar_x1, VBinaryMicrokernelTester::OpType::Max);
1198   }
1199 }
1200 
1201 
TEST(F32_VMAX__SCALAR_X2,batch_eq_2)1202 TEST(F32_VMAX__SCALAR_X2, batch_eq_2) {
1203   VBinaryMicrokernelTester()
1204     .batch_size(2)
1205     .Test(xnn_f32_vmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Max);
1206 }
1207 
TEST(F32_VMAX__SCALAR_X2,batch_div_2)1208 TEST(F32_VMAX__SCALAR_X2, batch_div_2) {
1209   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
1210     VBinaryMicrokernelTester()
1211       .batch_size(batch_size)
1212       .Test(xnn_f32_vmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Max);
1213   }
1214 }
1215 
TEST(F32_VMAX__SCALAR_X2,batch_lt_2)1216 TEST(F32_VMAX__SCALAR_X2, batch_lt_2) {
1217   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
1218     VBinaryMicrokernelTester()
1219       .batch_size(batch_size)
1220       .Test(xnn_f32_vmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Max);
1221   }
1222 }
1223 
TEST(F32_VMAX__SCALAR_X2,batch_gt_2)1224 TEST(F32_VMAX__SCALAR_X2, batch_gt_2) {
1225   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
1226     VBinaryMicrokernelTester()
1227       .batch_size(batch_size)
1228       .Test(xnn_f32_vmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Max);
1229   }
1230 }
1231 
TEST(F32_VMAX__SCALAR_X2,inplace_a)1232 TEST(F32_VMAX__SCALAR_X2, inplace_a) {
1233   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1234     VBinaryMicrokernelTester()
1235       .batch_size(batch_size)
1236       .inplace_a(true)
1237       .Test(xnn_f32_vmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Max);
1238   }
1239 }
1240 
TEST(F32_VMAX__SCALAR_X2,inplace_b)1241 TEST(F32_VMAX__SCALAR_X2, inplace_b) {
1242   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1243     VBinaryMicrokernelTester()
1244       .batch_size(batch_size)
1245       .inplace_b(true)
1246       .Test(xnn_f32_vmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Max);
1247   }
1248 }
1249 
TEST(F32_VMAX__SCALAR_X2,inplace_a_and_b)1250 TEST(F32_VMAX__SCALAR_X2, inplace_a_and_b) {
1251   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1252     VBinaryMicrokernelTester()
1253       .batch_size(batch_size)
1254       .inplace_a(true)
1255       .inplace_b(true)
1256       .Test(xnn_f32_vmax_ukernel__scalar_x2, VBinaryMicrokernelTester::OpType::Max);
1257   }
1258 }
1259 
1260 
TEST(F32_VMAX__SCALAR_X4,batch_eq_4)1261 TEST(F32_VMAX__SCALAR_X4, batch_eq_4) {
1262   VBinaryMicrokernelTester()
1263     .batch_size(4)
1264     .Test(xnn_f32_vmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Max);
1265 }
1266 
TEST(F32_VMAX__SCALAR_X4,batch_div_4)1267 TEST(F32_VMAX__SCALAR_X4, batch_div_4) {
1268   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1269     VBinaryMicrokernelTester()
1270       .batch_size(batch_size)
1271       .Test(xnn_f32_vmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Max);
1272   }
1273 }
1274 
TEST(F32_VMAX__SCALAR_X4,batch_lt_4)1275 TEST(F32_VMAX__SCALAR_X4, batch_lt_4) {
1276   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1277     VBinaryMicrokernelTester()
1278       .batch_size(batch_size)
1279       .Test(xnn_f32_vmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Max);
1280   }
1281 }
1282 
TEST(F32_VMAX__SCALAR_X4,batch_gt_4)1283 TEST(F32_VMAX__SCALAR_X4, batch_gt_4) {
1284   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1285     VBinaryMicrokernelTester()
1286       .batch_size(batch_size)
1287       .Test(xnn_f32_vmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Max);
1288   }
1289 }
1290 
TEST(F32_VMAX__SCALAR_X4,inplace_a)1291 TEST(F32_VMAX__SCALAR_X4, inplace_a) {
1292   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1293     VBinaryMicrokernelTester()
1294       .batch_size(batch_size)
1295       .inplace_a(true)
1296       .Test(xnn_f32_vmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Max);
1297   }
1298 }
1299 
TEST(F32_VMAX__SCALAR_X4,inplace_b)1300 TEST(F32_VMAX__SCALAR_X4, inplace_b) {
1301   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1302     VBinaryMicrokernelTester()
1303       .batch_size(batch_size)
1304       .inplace_b(true)
1305       .Test(xnn_f32_vmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Max);
1306   }
1307 }
1308 
TEST(F32_VMAX__SCALAR_X4,inplace_a_and_b)1309 TEST(F32_VMAX__SCALAR_X4, inplace_a_and_b) {
1310   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1311     VBinaryMicrokernelTester()
1312       .batch_size(batch_size)
1313       .inplace_a(true)
1314       .inplace_b(true)
1315       .Test(xnn_f32_vmax_ukernel__scalar_x4, VBinaryMicrokernelTester::OpType::Max);
1316   }
1317 }
1318 
1319 
TEST(F32_VMAX__SCALAR_X8,batch_eq_8)1320 TEST(F32_VMAX__SCALAR_X8, batch_eq_8) {
1321   VBinaryMicrokernelTester()
1322     .batch_size(8)
1323     .Test(xnn_f32_vmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Max);
1324 }
1325 
TEST(F32_VMAX__SCALAR_X8,batch_div_8)1326 TEST(F32_VMAX__SCALAR_X8, batch_div_8) {
1327   for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1328     VBinaryMicrokernelTester()
1329       .batch_size(batch_size)
1330       .Test(xnn_f32_vmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Max);
1331   }
1332 }
1333 
TEST(F32_VMAX__SCALAR_X8,batch_lt_8)1334 TEST(F32_VMAX__SCALAR_X8, batch_lt_8) {
1335   for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1336     VBinaryMicrokernelTester()
1337       .batch_size(batch_size)
1338       .Test(xnn_f32_vmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Max);
1339   }
1340 }
1341 
TEST(F32_VMAX__SCALAR_X8,batch_gt_8)1342 TEST(F32_VMAX__SCALAR_X8, batch_gt_8) {
1343   for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1344     VBinaryMicrokernelTester()
1345       .batch_size(batch_size)
1346       .Test(xnn_f32_vmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Max);
1347   }
1348 }
1349 
TEST(F32_VMAX__SCALAR_X8,inplace_a)1350 TEST(F32_VMAX__SCALAR_X8, inplace_a) {
1351   for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1352     VBinaryMicrokernelTester()
1353       .batch_size(batch_size)
1354       .inplace_a(true)
1355       .Test(xnn_f32_vmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Max);
1356   }
1357 }
1358 
TEST(F32_VMAX__SCALAR_X8,inplace_b)1359 TEST(F32_VMAX__SCALAR_X8, inplace_b) {
1360   for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1361     VBinaryMicrokernelTester()
1362       .batch_size(batch_size)
1363       .inplace_b(true)
1364       .Test(xnn_f32_vmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Max);
1365   }
1366 }
1367 
TEST(F32_VMAX__SCALAR_X8,inplace_a_and_b)1368 TEST(F32_VMAX__SCALAR_X8, inplace_a_and_b) {
1369   for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1370     VBinaryMicrokernelTester()
1371       .batch_size(batch_size)
1372       .inplace_a(true)
1373       .inplace_b(true)
1374       .Test(xnn_f32_vmax_ukernel__scalar_x8, VBinaryMicrokernelTester::OpType::Max);
1375   }
1376 }
1377