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-vrsubc-minmax.yaml
8 // Generator: tools/generate-vbinary-test.py
9
10
11 #include <gtest/gtest.h>
12
13 #include <xnnpack/common.h>
14 #include <xnnpack/isa-checks.h>
15
16 #include <xnnpack/vbinary.h>
17 #include "vbinaryc-microkernel-tester.h"
18
19
20 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VRSUBC_MINMAX__NEON_X4,batch_eq_4)21 TEST(F32_VRSUBC_MINMAX__NEON_X4, batch_eq_4) {
22 TEST_REQUIRES_ARM_NEON;
23 VBinOpCMicrokernelTester()
24 .batch_size(4)
25 .Test(xnn_f32_vrsubc_minmax_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::RSubC);
26 }
27
TEST(F32_VRSUBC_MINMAX__NEON_X4,batch_div_4)28 TEST(F32_VRSUBC_MINMAX__NEON_X4, batch_div_4) {
29 TEST_REQUIRES_ARM_NEON;
30 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
31 VBinOpCMicrokernelTester()
32 .batch_size(batch_size)
33 .Test(xnn_f32_vrsubc_minmax_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::RSubC);
34 }
35 }
36
TEST(F32_VRSUBC_MINMAX__NEON_X4,batch_lt_4)37 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::RSubC);
43 }
44 }
45
TEST(F32_VRSUBC_MINMAX__NEON_X4,batch_gt_4)46 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::RSubC);
52 }
53 }
54
TEST(F32_VRSUBC_MINMAX__NEON_X4,inplace)55 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::RSubC);
62 }
63 }
64
TEST(F32_VRSUBC_MINMAX__NEON_X4,qmin)65 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::RSubC);
72 }
73 }
74
TEST(F32_VRSUBC_MINMAX__NEON_X4,qmax)75 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x4, VBinOpCMicrokernelTester::OpType::RSubC);
82 }
83 }
84 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
85
86
87 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VRSUBC_MINMAX__NEON_X8,batch_eq_8)88 TEST(F32_VRSUBC_MINMAX__NEON_X8, batch_eq_8) {
89 TEST_REQUIRES_ARM_NEON;
90 VBinOpCMicrokernelTester()
91 .batch_size(8)
92 .Test(xnn_f32_vrsubc_minmax_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::RSubC);
93 }
94
TEST(F32_VRSUBC_MINMAX__NEON_X8,batch_div_8)95 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::RSubC);
101 }
102 }
103
TEST(F32_VRSUBC_MINMAX__NEON_X8,batch_lt_8)104 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::RSubC);
110 }
111 }
112
TEST(F32_VRSUBC_MINMAX__NEON_X8,batch_gt_8)113 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::RSubC);
119 }
120 }
121
TEST(F32_VRSUBC_MINMAX__NEON_X8,inplace)122 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::RSubC);
129 }
130 }
131
TEST(F32_VRSUBC_MINMAX__NEON_X8,qmin)132 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::RSubC);
139 }
140 }
141
TEST(F32_VRSUBC_MINMAX__NEON_X8,qmax)142 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__neon_x8, VBinOpCMicrokernelTester::OpType::RSubC);
149 }
150 }
151 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
152
153
154 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRSUBC_MINMAX__SSE_X4,batch_eq_4)155 TEST(F32_VRSUBC_MINMAX__SSE_X4, batch_eq_4) {
156 TEST_REQUIRES_X86_SSE;
157 VBinOpCMicrokernelTester()
158 .batch_size(4)
159 .Test(xnn_f32_vrsubc_minmax_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::RSubC);
160 }
161
TEST(F32_VRSUBC_MINMAX__SSE_X4,batch_div_4)162 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::RSubC);
168 }
169 }
170
TEST(F32_VRSUBC_MINMAX__SSE_X4,batch_lt_4)171 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::RSubC);
177 }
178 }
179
TEST(F32_VRSUBC_MINMAX__SSE_X4,batch_gt_4)180 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::RSubC);
186 }
187 }
188
TEST(F32_VRSUBC_MINMAX__SSE_X4,inplace)189 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::RSubC);
196 }
197 }
198
TEST(F32_VRSUBC_MINMAX__SSE_X4,qmin)199 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::RSubC);
206 }
207 }
208
TEST(F32_VRSUBC_MINMAX__SSE_X4,qmax)209 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x4, VBinOpCMicrokernelTester::OpType::RSubC);
216 }
217 }
218 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
219
220
221 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRSUBC_MINMAX__SSE_X8,batch_eq_8)222 TEST(F32_VRSUBC_MINMAX__SSE_X8, batch_eq_8) {
223 TEST_REQUIRES_X86_SSE;
224 VBinOpCMicrokernelTester()
225 .batch_size(8)
226 .Test(xnn_f32_vrsubc_minmax_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::RSubC);
227 }
228
TEST(F32_VRSUBC_MINMAX__SSE_X8,batch_div_8)229 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::RSubC);
235 }
236 }
237
TEST(F32_VRSUBC_MINMAX__SSE_X8,batch_lt_8)238 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::RSubC);
244 }
245 }
246
TEST(F32_VRSUBC_MINMAX__SSE_X8,batch_gt_8)247 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::RSubC);
253 }
254 }
255
TEST(F32_VRSUBC_MINMAX__SSE_X8,inplace)256 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::RSubC);
263 }
264 }
265
TEST(F32_VRSUBC_MINMAX__SSE_X8,qmin)266 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::RSubC);
273 }
274 }
275
TEST(F32_VRSUBC_MINMAX__SSE_X8,qmax)276 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__sse_x8, VBinOpCMicrokernelTester::OpType::RSubC);
283 }
284 }
285 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
286
287
288 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRSUBC_MINMAX__AVX_X8,batch_eq_8)289 TEST(F32_VRSUBC_MINMAX__AVX_X8, batch_eq_8) {
290 TEST_REQUIRES_X86_AVX;
291 VBinOpCMicrokernelTester()
292 .batch_size(8)
293 .Test(xnn_f32_vrsubc_minmax_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::RSubC);
294 }
295
TEST(F32_VRSUBC_MINMAX__AVX_X8,batch_div_8)296 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::RSubC);
302 }
303 }
304
TEST(F32_VRSUBC_MINMAX__AVX_X8,batch_lt_8)305 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::RSubC);
311 }
312 }
313
TEST(F32_VRSUBC_MINMAX__AVX_X8,batch_gt_8)314 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::RSubC);
320 }
321 }
322
TEST(F32_VRSUBC_MINMAX__AVX_X8,inplace)323 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::RSubC);
330 }
331 }
332
TEST(F32_VRSUBC_MINMAX__AVX_X8,qmin)333 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::RSubC);
340 }
341 }
342
TEST(F32_VRSUBC_MINMAX__AVX_X8,qmax)343 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x8, VBinOpCMicrokernelTester::OpType::RSubC);
350 }
351 }
352 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
353
354
355 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRSUBC_MINMAX__AVX_X16,batch_eq_16)356 TEST(F32_VRSUBC_MINMAX__AVX_X16, batch_eq_16) {
357 TEST_REQUIRES_X86_AVX;
358 VBinOpCMicrokernelTester()
359 .batch_size(16)
360 .Test(xnn_f32_vrsubc_minmax_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::RSubC);
361 }
362
TEST(F32_VRSUBC_MINMAX__AVX_X16,batch_div_16)363 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::RSubC);
369 }
370 }
371
TEST(F32_VRSUBC_MINMAX__AVX_X16,batch_lt_16)372 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::RSubC);
378 }
379 }
380
TEST(F32_VRSUBC_MINMAX__AVX_X16,batch_gt_16)381 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::RSubC);
387 }
388 }
389
TEST(F32_VRSUBC_MINMAX__AVX_X16,inplace)390 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::RSubC);
397 }
398 }
399
TEST(F32_VRSUBC_MINMAX__AVX_X16,qmin)400 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::RSubC);
407 }
408 }
409
TEST(F32_VRSUBC_MINMAX__AVX_X16,qmax)410 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx_x16, VBinOpCMicrokernelTester::OpType::RSubC);
417 }
418 }
419 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
420
421
422 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRSUBC_MINMAX__AVX512F_X16,batch_eq_16)423 TEST(F32_VRSUBC_MINMAX__AVX512F_X16, batch_eq_16) {
424 TEST_REQUIRES_X86_AVX512F;
425 VBinOpCMicrokernelTester()
426 .batch_size(16)
427 .Test(xnn_f32_vrsubc_minmax_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::RSubC);
428 }
429
TEST(F32_VRSUBC_MINMAX__AVX512F_X16,batch_div_16)430 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::RSubC);
436 }
437 }
438
TEST(F32_VRSUBC_MINMAX__AVX512F_X16,batch_lt_16)439 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::RSubC);
445 }
446 }
447
TEST(F32_VRSUBC_MINMAX__AVX512F_X16,batch_gt_16)448 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::RSubC);
454 }
455 }
456
TEST(F32_VRSUBC_MINMAX__AVX512F_X16,inplace)457 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::RSubC);
464 }
465 }
466
TEST(F32_VRSUBC_MINMAX__AVX512F_X16,qmin)467 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::RSubC);
474 }
475 }
476
TEST(F32_VRSUBC_MINMAX__AVX512F_X16,qmax)477 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x16, VBinOpCMicrokernelTester::OpType::RSubC);
484 }
485 }
486 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
487
488
489 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VRSUBC_MINMAX__AVX512F_X32,batch_eq_32)490 TEST(F32_VRSUBC_MINMAX__AVX512F_X32, batch_eq_32) {
491 TEST_REQUIRES_X86_AVX512F;
492 VBinOpCMicrokernelTester()
493 .batch_size(32)
494 .Test(xnn_f32_vrsubc_minmax_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::RSubC);
495 }
496
TEST(F32_VRSUBC_MINMAX__AVX512F_X32,batch_div_32)497 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::RSubC);
503 }
504 }
505
TEST(F32_VRSUBC_MINMAX__AVX512F_X32,batch_lt_32)506 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::RSubC);
512 }
513 }
514
TEST(F32_VRSUBC_MINMAX__AVX512F_X32,batch_gt_32)515 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::RSubC);
521 }
522 }
523
TEST(F32_VRSUBC_MINMAX__AVX512F_X32,inplace)524 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::RSubC);
531 }
532 }
533
TEST(F32_VRSUBC_MINMAX__AVX512F_X32,qmin)534 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::RSubC);
541 }
542 }
543
TEST(F32_VRSUBC_MINMAX__AVX512F_X32,qmax)544 TEST(F32_VRSUBC_MINMAX__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_vrsubc_minmax_ukernel__avx512f_x32, VBinOpCMicrokernelTester::OpType::RSubC);
551 }
552 }
553 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
554
555
556 #if XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4,batch_eq_4)557 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4, batch_eq_4) {
558 VBinOpCMicrokernelTester()
559 .batch_size(4)
560 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
561 }
562
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4,batch_div_4)563 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4, batch_div_4) {
564 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
565 VBinOpCMicrokernelTester()
566 .batch_size(batch_size)
567 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
568 }
569 }
570
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4,batch_lt_4)571 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4, batch_lt_4) {
572 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
573 VBinOpCMicrokernelTester()
574 .batch_size(batch_size)
575 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
576 }
577 }
578
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4,batch_gt_4)579 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4, batch_gt_4) {
580 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
581 VBinOpCMicrokernelTester()
582 .batch_size(batch_size)
583 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
584 }
585 }
586
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4,inplace)587 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4, inplace) {
588 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
589 VBinOpCMicrokernelTester()
590 .batch_size(batch_size)
591 .inplace(true)
592 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
593 }
594 }
595
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4,qmin)596 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4, qmin) {
597 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
598 VBinOpCMicrokernelTester()
599 .batch_size(batch_size)
600 .qmin(128)
601 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
602 }
603 }
604
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4,qmax)605 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X4, qmax) {
606 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
607 VBinOpCMicrokernelTester()
608 .batch_size(batch_size)
609 .qmax(128)
610 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
611 }
612 }
613 #endif // XNN_ARCH_WASMSIMD
614
615
616 #if XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8,batch_eq_8)617 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8, batch_eq_8) {
618 VBinOpCMicrokernelTester()
619 .batch_size(8)
620 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
621 }
622
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8,batch_div_8)623 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8, batch_div_8) {
624 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
625 VBinOpCMicrokernelTester()
626 .batch_size(batch_size)
627 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
628 }
629 }
630
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8,batch_lt_8)631 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8, batch_lt_8) {
632 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
633 VBinOpCMicrokernelTester()
634 .batch_size(batch_size)
635 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
636 }
637 }
638
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8,batch_gt_8)639 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8, batch_gt_8) {
640 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
641 VBinOpCMicrokernelTester()
642 .batch_size(batch_size)
643 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
644 }
645 }
646
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8,inplace)647 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8, inplace) {
648 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
649 VBinOpCMicrokernelTester()
650 .batch_size(batch_size)
651 .inplace(true)
652 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
653 }
654 }
655
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8,qmin)656 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8, qmin) {
657 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
658 VBinOpCMicrokernelTester()
659 .batch_size(batch_size)
660 .qmin(128)
661 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
662 }
663 }
664
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8,qmax)665 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X8, qmax) {
666 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
667 VBinOpCMicrokernelTester()
668 .batch_size(batch_size)
669 .qmax(128)
670 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
671 }
672 }
673 #endif // XNN_ARCH_WASMSIMD
674
675
676 #if XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16,batch_eq_16)677 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16, batch_eq_16) {
678 VBinOpCMicrokernelTester()
679 .batch_size(16)
680 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x16, VBinOpCMicrokernelTester::OpType::RSubC);
681 }
682
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16,batch_div_16)683 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16, batch_div_16) {
684 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
685 VBinOpCMicrokernelTester()
686 .batch_size(batch_size)
687 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x16, VBinOpCMicrokernelTester::OpType::RSubC);
688 }
689 }
690
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16,batch_lt_16)691 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16, batch_lt_16) {
692 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
693 VBinOpCMicrokernelTester()
694 .batch_size(batch_size)
695 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x16, VBinOpCMicrokernelTester::OpType::RSubC);
696 }
697 }
698
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16,batch_gt_16)699 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16, batch_gt_16) {
700 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
701 VBinOpCMicrokernelTester()
702 .batch_size(batch_size)
703 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x16, VBinOpCMicrokernelTester::OpType::RSubC);
704 }
705 }
706
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16,inplace)707 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16, inplace) {
708 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
709 VBinOpCMicrokernelTester()
710 .batch_size(batch_size)
711 .inplace(true)
712 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x16, VBinOpCMicrokernelTester::OpType::RSubC);
713 }
714 }
715
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16,qmin)716 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16, qmin) {
717 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
718 VBinOpCMicrokernelTester()
719 .batch_size(batch_size)
720 .qmin(128)
721 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x16, VBinOpCMicrokernelTester::OpType::RSubC);
722 }
723 }
724
TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16,qmax)725 TEST(F32_VRSUBC_MINMAX__WASMSIMD_ARM_X16, qmax) {
726 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
727 VBinOpCMicrokernelTester()
728 .batch_size(batch_size)
729 .qmax(128)
730 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_arm_x16, VBinOpCMicrokernelTester::OpType::RSubC);
731 }
732 }
733 #endif // XNN_ARCH_WASMSIMD
734
735
736 #if XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4,batch_eq_4)737 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4, batch_eq_4) {
738 VBinOpCMicrokernelTester()
739 .batch_size(4)
740 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x4, VBinOpCMicrokernelTester::OpType::RSubC);
741 }
742
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4,batch_div_4)743 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4, batch_div_4) {
744 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
745 VBinOpCMicrokernelTester()
746 .batch_size(batch_size)
747 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x4, VBinOpCMicrokernelTester::OpType::RSubC);
748 }
749 }
750
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4,batch_lt_4)751 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4, batch_lt_4) {
752 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
753 VBinOpCMicrokernelTester()
754 .batch_size(batch_size)
755 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x4, VBinOpCMicrokernelTester::OpType::RSubC);
756 }
757 }
758
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4,batch_gt_4)759 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4, batch_gt_4) {
760 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
761 VBinOpCMicrokernelTester()
762 .batch_size(batch_size)
763 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x4, VBinOpCMicrokernelTester::OpType::RSubC);
764 }
765 }
766
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4,inplace)767 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4, inplace) {
768 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
769 VBinOpCMicrokernelTester()
770 .batch_size(batch_size)
771 .inplace(true)
772 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x4, VBinOpCMicrokernelTester::OpType::RSubC);
773 }
774 }
775
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4,qmin)776 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4, qmin) {
777 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
778 VBinOpCMicrokernelTester()
779 .batch_size(batch_size)
780 .qmin(128)
781 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x4, VBinOpCMicrokernelTester::OpType::RSubC);
782 }
783 }
784
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4,qmax)785 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X4, qmax) {
786 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
787 VBinOpCMicrokernelTester()
788 .batch_size(batch_size)
789 .qmax(128)
790 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x4, VBinOpCMicrokernelTester::OpType::RSubC);
791 }
792 }
793 #endif // XNN_ARCH_WASMSIMD
794
795
796 #if XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8,batch_eq_8)797 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8, batch_eq_8) {
798 VBinOpCMicrokernelTester()
799 .batch_size(8)
800 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x8, VBinOpCMicrokernelTester::OpType::RSubC);
801 }
802
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8,batch_div_8)803 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8, batch_div_8) {
804 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
805 VBinOpCMicrokernelTester()
806 .batch_size(batch_size)
807 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x8, VBinOpCMicrokernelTester::OpType::RSubC);
808 }
809 }
810
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8,batch_lt_8)811 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8, batch_lt_8) {
812 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
813 VBinOpCMicrokernelTester()
814 .batch_size(batch_size)
815 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x8, VBinOpCMicrokernelTester::OpType::RSubC);
816 }
817 }
818
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8,batch_gt_8)819 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8, batch_gt_8) {
820 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
821 VBinOpCMicrokernelTester()
822 .batch_size(batch_size)
823 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x8, VBinOpCMicrokernelTester::OpType::RSubC);
824 }
825 }
826
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8,inplace)827 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8, inplace) {
828 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
829 VBinOpCMicrokernelTester()
830 .batch_size(batch_size)
831 .inplace(true)
832 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x8, VBinOpCMicrokernelTester::OpType::RSubC);
833 }
834 }
835
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8,qmin)836 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8, qmin) {
837 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
838 VBinOpCMicrokernelTester()
839 .batch_size(batch_size)
840 .qmin(128)
841 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x8, VBinOpCMicrokernelTester::OpType::RSubC);
842 }
843 }
844
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8,qmax)845 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X8, qmax) {
846 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
847 VBinOpCMicrokernelTester()
848 .batch_size(batch_size)
849 .qmax(128)
850 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x8, VBinOpCMicrokernelTester::OpType::RSubC);
851 }
852 }
853 #endif // XNN_ARCH_WASMSIMD
854
855
856 #if XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16,batch_eq_16)857 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16, batch_eq_16) {
858 VBinOpCMicrokernelTester()
859 .batch_size(16)
860 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x16, VBinOpCMicrokernelTester::OpType::RSubC);
861 }
862
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16,batch_div_16)863 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16, batch_div_16) {
864 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
865 VBinOpCMicrokernelTester()
866 .batch_size(batch_size)
867 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x16, VBinOpCMicrokernelTester::OpType::RSubC);
868 }
869 }
870
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16,batch_lt_16)871 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16, batch_lt_16) {
872 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
873 VBinOpCMicrokernelTester()
874 .batch_size(batch_size)
875 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x16, VBinOpCMicrokernelTester::OpType::RSubC);
876 }
877 }
878
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16,batch_gt_16)879 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16, batch_gt_16) {
880 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
881 VBinOpCMicrokernelTester()
882 .batch_size(batch_size)
883 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x16, VBinOpCMicrokernelTester::OpType::RSubC);
884 }
885 }
886
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16,inplace)887 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16, inplace) {
888 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
889 VBinOpCMicrokernelTester()
890 .batch_size(batch_size)
891 .inplace(true)
892 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x16, VBinOpCMicrokernelTester::OpType::RSubC);
893 }
894 }
895
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16,qmin)896 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16, qmin) {
897 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
898 VBinOpCMicrokernelTester()
899 .batch_size(batch_size)
900 .qmin(128)
901 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x16, VBinOpCMicrokernelTester::OpType::RSubC);
902 }
903 }
904
TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16,qmax)905 TEST(F32_VRSUBC_MINMAX__WASMSIMD_X86_X16, qmax) {
906 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
907 VBinOpCMicrokernelTester()
908 .batch_size(batch_size)
909 .qmax(128)
910 .Test(xnn_f32_vrsubc_minmax_ukernel__wasmsimd_x86_x16, VBinOpCMicrokernelTester::OpType::RSubC);
911 }
912 }
913 #endif // XNN_ARCH_WASMSIMD
914
915
916 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASM_X1,batch_eq_1)917 TEST(F32_VRSUBC_MINMAX__WASM_X1, batch_eq_1) {
918 VBinOpCMicrokernelTester()
919 .batch_size(1)
920 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::RSubC);
921 }
922
TEST(F32_VRSUBC_MINMAX__WASM_X1,batch_gt_1)923 TEST(F32_VRSUBC_MINMAX__WASM_X1, batch_gt_1) {
924 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
925 VBinOpCMicrokernelTester()
926 .batch_size(batch_size)
927 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::RSubC);
928 }
929 }
930
TEST(F32_VRSUBC_MINMAX__WASM_X1,inplace)931 TEST(F32_VRSUBC_MINMAX__WASM_X1, inplace) {
932 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
933 VBinOpCMicrokernelTester()
934 .batch_size(batch_size)
935 .inplace(true)
936 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::RSubC);
937 }
938 }
939
TEST(F32_VRSUBC_MINMAX__WASM_X1,qmin)940 TEST(F32_VRSUBC_MINMAX__WASM_X1, qmin) {
941 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
942 VBinOpCMicrokernelTester()
943 .batch_size(batch_size)
944 .qmin(128)
945 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::RSubC);
946 }
947 }
948
TEST(F32_VRSUBC_MINMAX__WASM_X1,qmax)949 TEST(F32_VRSUBC_MINMAX__WASM_X1, qmax) {
950 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
951 VBinOpCMicrokernelTester()
952 .batch_size(batch_size)
953 .qmax(128)
954 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x1, VBinOpCMicrokernelTester::OpType::RSubC);
955 }
956 }
957 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
958
959
960 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASM_X2,batch_eq_2)961 TEST(F32_VRSUBC_MINMAX__WASM_X2, batch_eq_2) {
962 VBinOpCMicrokernelTester()
963 .batch_size(2)
964 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::RSubC);
965 }
966
TEST(F32_VRSUBC_MINMAX__WASM_X2,batch_div_2)967 TEST(F32_VRSUBC_MINMAX__WASM_X2, batch_div_2) {
968 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
969 VBinOpCMicrokernelTester()
970 .batch_size(batch_size)
971 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::RSubC);
972 }
973 }
974
TEST(F32_VRSUBC_MINMAX__WASM_X2,batch_lt_2)975 TEST(F32_VRSUBC_MINMAX__WASM_X2, batch_lt_2) {
976 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
977 VBinOpCMicrokernelTester()
978 .batch_size(batch_size)
979 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::RSubC);
980 }
981 }
982
TEST(F32_VRSUBC_MINMAX__WASM_X2,batch_gt_2)983 TEST(F32_VRSUBC_MINMAX__WASM_X2, batch_gt_2) {
984 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
985 VBinOpCMicrokernelTester()
986 .batch_size(batch_size)
987 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::RSubC);
988 }
989 }
990
TEST(F32_VRSUBC_MINMAX__WASM_X2,inplace)991 TEST(F32_VRSUBC_MINMAX__WASM_X2, inplace) {
992 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
993 VBinOpCMicrokernelTester()
994 .batch_size(batch_size)
995 .inplace(true)
996 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::RSubC);
997 }
998 }
999
TEST(F32_VRSUBC_MINMAX__WASM_X2,qmin)1000 TEST(F32_VRSUBC_MINMAX__WASM_X2, qmin) {
1001 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1002 VBinOpCMicrokernelTester()
1003 .batch_size(batch_size)
1004 .qmin(128)
1005 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::RSubC);
1006 }
1007 }
1008
TEST(F32_VRSUBC_MINMAX__WASM_X2,qmax)1009 TEST(F32_VRSUBC_MINMAX__WASM_X2, qmax) {
1010 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1011 VBinOpCMicrokernelTester()
1012 .batch_size(batch_size)
1013 .qmax(128)
1014 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x2, VBinOpCMicrokernelTester::OpType::RSubC);
1015 }
1016 }
1017 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
1018
1019
1020 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASM_X4,batch_eq_4)1021 TEST(F32_VRSUBC_MINMAX__WASM_X4, batch_eq_4) {
1022 VBinOpCMicrokernelTester()
1023 .batch_size(4)
1024 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
1025 }
1026
TEST(F32_VRSUBC_MINMAX__WASM_X4,batch_div_4)1027 TEST(F32_VRSUBC_MINMAX__WASM_X4, batch_div_4) {
1028 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1029 VBinOpCMicrokernelTester()
1030 .batch_size(batch_size)
1031 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
1032 }
1033 }
1034
TEST(F32_VRSUBC_MINMAX__WASM_X4,batch_lt_4)1035 TEST(F32_VRSUBC_MINMAX__WASM_X4, batch_lt_4) {
1036 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1037 VBinOpCMicrokernelTester()
1038 .batch_size(batch_size)
1039 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
1040 }
1041 }
1042
TEST(F32_VRSUBC_MINMAX__WASM_X4,batch_gt_4)1043 TEST(F32_VRSUBC_MINMAX__WASM_X4, batch_gt_4) {
1044 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1045 VBinOpCMicrokernelTester()
1046 .batch_size(batch_size)
1047 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
1048 }
1049 }
1050
TEST(F32_VRSUBC_MINMAX__WASM_X4,inplace)1051 TEST(F32_VRSUBC_MINMAX__WASM_X4, inplace) {
1052 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1053 VBinOpCMicrokernelTester()
1054 .batch_size(batch_size)
1055 .inplace(true)
1056 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
1057 }
1058 }
1059
TEST(F32_VRSUBC_MINMAX__WASM_X4,qmin)1060 TEST(F32_VRSUBC_MINMAX__WASM_X4, qmin) {
1061 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1062 VBinOpCMicrokernelTester()
1063 .batch_size(batch_size)
1064 .qmin(128)
1065 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
1066 }
1067 }
1068
TEST(F32_VRSUBC_MINMAX__WASM_X4,qmax)1069 TEST(F32_VRSUBC_MINMAX__WASM_X4, qmax) {
1070 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1071 VBinOpCMicrokernelTester()
1072 .batch_size(batch_size)
1073 .qmax(128)
1074 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x4, VBinOpCMicrokernelTester::OpType::RSubC);
1075 }
1076 }
1077 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
1078
1079
1080 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
TEST(F32_VRSUBC_MINMAX__WASM_X8,batch_eq_8)1081 TEST(F32_VRSUBC_MINMAX__WASM_X8, batch_eq_8) {
1082 VBinOpCMicrokernelTester()
1083 .batch_size(8)
1084 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
1085 }
1086
TEST(F32_VRSUBC_MINMAX__WASM_X8,batch_div_8)1087 TEST(F32_VRSUBC_MINMAX__WASM_X8, batch_div_8) {
1088 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1089 VBinOpCMicrokernelTester()
1090 .batch_size(batch_size)
1091 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
1092 }
1093 }
1094
TEST(F32_VRSUBC_MINMAX__WASM_X8,batch_lt_8)1095 TEST(F32_VRSUBC_MINMAX__WASM_X8, batch_lt_8) {
1096 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1097 VBinOpCMicrokernelTester()
1098 .batch_size(batch_size)
1099 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
1100 }
1101 }
1102
TEST(F32_VRSUBC_MINMAX__WASM_X8,batch_gt_8)1103 TEST(F32_VRSUBC_MINMAX__WASM_X8, batch_gt_8) {
1104 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1105 VBinOpCMicrokernelTester()
1106 .batch_size(batch_size)
1107 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
1108 }
1109 }
1110
TEST(F32_VRSUBC_MINMAX__WASM_X8,inplace)1111 TEST(F32_VRSUBC_MINMAX__WASM_X8, inplace) {
1112 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1113 VBinOpCMicrokernelTester()
1114 .batch_size(batch_size)
1115 .inplace(true)
1116 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
1117 }
1118 }
1119
TEST(F32_VRSUBC_MINMAX__WASM_X8,qmin)1120 TEST(F32_VRSUBC_MINMAX__WASM_X8, qmin) {
1121 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1122 VBinOpCMicrokernelTester()
1123 .batch_size(batch_size)
1124 .qmin(128)
1125 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
1126 }
1127 }
1128
TEST(F32_VRSUBC_MINMAX__WASM_X8,qmax)1129 TEST(F32_VRSUBC_MINMAX__WASM_X8, qmax) {
1130 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1131 VBinOpCMicrokernelTester()
1132 .batch_size(batch_size)
1133 .qmax(128)
1134 .Test(xnn_f32_vrsubc_minmax_ukernel__wasm_x8, VBinOpCMicrokernelTester::OpType::RSubC);
1135 }
1136 }
1137 #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
1138
1139
TEST(F32_VRSUBC_MINMAX__SCALAR_X1,batch_eq_1)1140 TEST(F32_VRSUBC_MINMAX__SCALAR_X1, batch_eq_1) {
1141 VBinOpCMicrokernelTester()
1142 .batch_size(1)
1143 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1144 }
1145
TEST(F32_VRSUBC_MINMAX__SCALAR_X1,batch_gt_1)1146 TEST(F32_VRSUBC_MINMAX__SCALAR_X1, batch_gt_1) {
1147 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
1148 VBinOpCMicrokernelTester()
1149 .batch_size(batch_size)
1150 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1151 }
1152 }
1153
TEST(F32_VRSUBC_MINMAX__SCALAR_X1,inplace)1154 TEST(F32_VRSUBC_MINMAX__SCALAR_X1, inplace) {
1155 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1156 VBinOpCMicrokernelTester()
1157 .batch_size(batch_size)
1158 .inplace(true)
1159 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1160 }
1161 }
1162
TEST(F32_VRSUBC_MINMAX__SCALAR_X1,qmin)1163 TEST(F32_VRSUBC_MINMAX__SCALAR_X1, qmin) {
1164 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1165 VBinOpCMicrokernelTester()
1166 .batch_size(batch_size)
1167 .qmin(128)
1168 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1169 }
1170 }
1171
TEST(F32_VRSUBC_MINMAX__SCALAR_X1,qmax)1172 TEST(F32_VRSUBC_MINMAX__SCALAR_X1, qmax) {
1173 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
1174 VBinOpCMicrokernelTester()
1175 .batch_size(batch_size)
1176 .qmax(128)
1177 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x1, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1178 }
1179 }
1180
TEST(F32_VRSUBC_MINMAX__SCALAR_X2,batch_eq_2)1181 TEST(F32_VRSUBC_MINMAX__SCALAR_X2, batch_eq_2) {
1182 VBinOpCMicrokernelTester()
1183 .batch_size(2)
1184 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1185 }
1186
TEST(F32_VRSUBC_MINMAX__SCALAR_X2,batch_div_2)1187 TEST(F32_VRSUBC_MINMAX__SCALAR_X2, batch_div_2) {
1188 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
1189 VBinOpCMicrokernelTester()
1190 .batch_size(batch_size)
1191 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1192 }
1193 }
1194
TEST(F32_VRSUBC_MINMAX__SCALAR_X2,batch_lt_2)1195 TEST(F32_VRSUBC_MINMAX__SCALAR_X2, batch_lt_2) {
1196 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
1197 VBinOpCMicrokernelTester()
1198 .batch_size(batch_size)
1199 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1200 }
1201 }
1202
TEST(F32_VRSUBC_MINMAX__SCALAR_X2,batch_gt_2)1203 TEST(F32_VRSUBC_MINMAX__SCALAR_X2, batch_gt_2) {
1204 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
1205 VBinOpCMicrokernelTester()
1206 .batch_size(batch_size)
1207 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1208 }
1209 }
1210
TEST(F32_VRSUBC_MINMAX__SCALAR_X2,inplace)1211 TEST(F32_VRSUBC_MINMAX__SCALAR_X2, inplace) {
1212 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1213 VBinOpCMicrokernelTester()
1214 .batch_size(batch_size)
1215 .inplace(true)
1216 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1217 }
1218 }
1219
TEST(F32_VRSUBC_MINMAX__SCALAR_X2,qmin)1220 TEST(F32_VRSUBC_MINMAX__SCALAR_X2, qmin) {
1221 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1222 VBinOpCMicrokernelTester()
1223 .batch_size(batch_size)
1224 .qmin(128)
1225 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1226 }
1227 }
1228
TEST(F32_VRSUBC_MINMAX__SCALAR_X2,qmax)1229 TEST(F32_VRSUBC_MINMAX__SCALAR_X2, qmax) {
1230 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
1231 VBinOpCMicrokernelTester()
1232 .batch_size(batch_size)
1233 .qmax(128)
1234 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x2, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1235 }
1236 }
1237
TEST(F32_VRSUBC_MINMAX__SCALAR_X4,batch_eq_4)1238 TEST(F32_VRSUBC_MINMAX__SCALAR_X4, batch_eq_4) {
1239 VBinOpCMicrokernelTester()
1240 .batch_size(4)
1241 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1242 }
1243
TEST(F32_VRSUBC_MINMAX__SCALAR_X4,batch_div_4)1244 TEST(F32_VRSUBC_MINMAX__SCALAR_X4, batch_div_4) {
1245 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1246 VBinOpCMicrokernelTester()
1247 .batch_size(batch_size)
1248 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1249 }
1250 }
1251
TEST(F32_VRSUBC_MINMAX__SCALAR_X4,batch_lt_4)1252 TEST(F32_VRSUBC_MINMAX__SCALAR_X4, batch_lt_4) {
1253 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1254 VBinOpCMicrokernelTester()
1255 .batch_size(batch_size)
1256 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1257 }
1258 }
1259
TEST(F32_VRSUBC_MINMAX__SCALAR_X4,batch_gt_4)1260 TEST(F32_VRSUBC_MINMAX__SCALAR_X4, batch_gt_4) {
1261 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1262 VBinOpCMicrokernelTester()
1263 .batch_size(batch_size)
1264 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1265 }
1266 }
1267
TEST(F32_VRSUBC_MINMAX__SCALAR_X4,inplace)1268 TEST(F32_VRSUBC_MINMAX__SCALAR_X4, inplace) {
1269 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1270 VBinOpCMicrokernelTester()
1271 .batch_size(batch_size)
1272 .inplace(true)
1273 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1274 }
1275 }
1276
TEST(F32_VRSUBC_MINMAX__SCALAR_X4,qmin)1277 TEST(F32_VRSUBC_MINMAX__SCALAR_X4, qmin) {
1278 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1279 VBinOpCMicrokernelTester()
1280 .batch_size(batch_size)
1281 .qmin(128)
1282 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1283 }
1284 }
1285
TEST(F32_VRSUBC_MINMAX__SCALAR_X4,qmax)1286 TEST(F32_VRSUBC_MINMAX__SCALAR_X4, qmax) {
1287 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1288 VBinOpCMicrokernelTester()
1289 .batch_size(batch_size)
1290 .qmax(128)
1291 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x4, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1292 }
1293 }
1294
TEST(F32_VRSUBC_MINMAX__SCALAR_X8,batch_eq_8)1295 TEST(F32_VRSUBC_MINMAX__SCALAR_X8, batch_eq_8) {
1296 VBinOpCMicrokernelTester()
1297 .batch_size(8)
1298 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x8, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1299 }
1300
TEST(F32_VRSUBC_MINMAX__SCALAR_X8,batch_div_8)1301 TEST(F32_VRSUBC_MINMAX__SCALAR_X8, batch_div_8) {
1302 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1303 VBinOpCMicrokernelTester()
1304 .batch_size(batch_size)
1305 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x8, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1306 }
1307 }
1308
TEST(F32_VRSUBC_MINMAX__SCALAR_X8,batch_lt_8)1309 TEST(F32_VRSUBC_MINMAX__SCALAR_X8, batch_lt_8) {
1310 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1311 VBinOpCMicrokernelTester()
1312 .batch_size(batch_size)
1313 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x8, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1314 }
1315 }
1316
TEST(F32_VRSUBC_MINMAX__SCALAR_X8,batch_gt_8)1317 TEST(F32_VRSUBC_MINMAX__SCALAR_X8, batch_gt_8) {
1318 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1319 VBinOpCMicrokernelTester()
1320 .batch_size(batch_size)
1321 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x8, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1322 }
1323 }
1324
TEST(F32_VRSUBC_MINMAX__SCALAR_X8,inplace)1325 TEST(F32_VRSUBC_MINMAX__SCALAR_X8, inplace) {
1326 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1327 VBinOpCMicrokernelTester()
1328 .batch_size(batch_size)
1329 .inplace(true)
1330 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x8, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1331 }
1332 }
1333
TEST(F32_VRSUBC_MINMAX__SCALAR_X8,qmin)1334 TEST(F32_VRSUBC_MINMAX__SCALAR_X8, qmin) {
1335 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1336 VBinOpCMicrokernelTester()
1337 .batch_size(batch_size)
1338 .qmin(128)
1339 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x8, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1340 }
1341 }
1342
TEST(F32_VRSUBC_MINMAX__SCALAR_X8,qmax)1343 TEST(F32_VRSUBC_MINMAX__SCALAR_X8, qmax) {
1344 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1345 VBinOpCMicrokernelTester()
1346 .batch_size(batch_size)
1347 .qmax(128)
1348 .Test(xnn_f32_vrsubc_minmax_ukernel__scalar_x8, VBinOpCMicrokernelTester::OpType::RSubC, VBinOpCMicrokernelTester::Variant::Scalar);
1349 }
1350 }