1 // Copyright (c) Facebook, Inc. and its affiliates.
2 // All rights reserved.
3 //
4 // Copyright 2019 Google LLC
5 //
6 // This source code is licensed under the BSD-style license found in the
7 // LICENSE file in the root directory of this source tree.
8 //
9 // Auto-generated file. Do not edit!
10 // Specification: test/f32-dwconv.yaml
11 // Generator: tools/generate-dwconv-test.py
12
13
14 #include <gtest/gtest.h>
15
16 #include <xnnpack/common.h>
17 #include <xnnpack/isa-checks.h>
18
19 #include <xnnpack/dwconv.h>
20 #include "dwconv-microkernel-tester.h"
21
22
23 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X3__WASMSIMD,c_eq_4)24 TEST(F32_DWCONV_UP4X3__WASMSIMD, c_eq_4) {
25 DWConvMicrokernelTester()
26 .cr(4)
27 .kr(3)
28 .channels(4)
29 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
30 }
31
TEST(F32_DWCONV_UP4X3__WASMSIMD,c_div_4)32 TEST(F32_DWCONV_UP4X3__WASMSIMD, c_div_4) {
33 for (uint32_t channels = 8; channels < 64; channels += 12) {
34 DWConvMicrokernelTester()
35 .cr(4)
36 .kr(3)
37 .channels(channels)
38 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
39 }
40 }
41
TEST(F32_DWCONV_UP4X3__WASMSIMD,c_lt_4)42 TEST(F32_DWCONV_UP4X3__WASMSIMD, c_lt_4) {
43 for (uint32_t channels = 1; channels < 4; channels++) {
44 DWConvMicrokernelTester()
45 .cr(4)
46 .kr(3)
47 .channels(channels)
48 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
49 }
50 }
51
TEST(F32_DWCONV_UP4X3__WASMSIMD,c_gt_4)52 TEST(F32_DWCONV_UP4X3__WASMSIMD, c_gt_4) {
53 for (uint32_t channels = 5; channels < 8; channels++) {
54 DWConvMicrokernelTester()
55 .cr(4)
56 .kr(3)
57 .channels(channels)
58 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
59 }
60 }
61
TEST(F32_DWCONV_UP4X3__WASMSIMD,multipixel)62 TEST(F32_DWCONV_UP4X3__WASMSIMD, multipixel) {
63 for (size_t channels = 1; channels <= 20; channels += 3) {
64 DWConvMicrokernelTester()
65 .cr(4)
66 .kr(3)
67 .channels(channels)
68 .width(3)
69 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
70 }
71 }
72
TEST(F32_DWCONV_UP4X3__WASMSIMD,multipixel_with_step)73 TEST(F32_DWCONV_UP4X3__WASMSIMD, multipixel_with_step) {
74 for (size_t channels = 1; channels <= 20; channels += 3) {
75 for (size_t step = 2; step <= 3; step++) {
76 DWConvMicrokernelTester()
77 .cr(4)
78 .kr(3)
79 .channels(channels)
80 .width(3)
81 .step(step)
82 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
83 }
84 }
85 }
86
TEST(F32_DWCONV_UP4X3__WASMSIMD,multipixel_with_output_stride)87 TEST(F32_DWCONV_UP4X3__WASMSIMD, multipixel_with_output_stride) {
88 for (size_t channels = 1; channels <= 20; channels += 3) {
89 DWConvMicrokernelTester()
90 .cr(4)
91 .kr(3)
92 .channels(4)
93 .width(5)
94 .output_stride(23)
95 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
96 }
97 }
98
TEST(F32_DWCONV_UP4X3__WASMSIMD,input_offset)99 TEST(F32_DWCONV_UP4X3__WASMSIMD, input_offset) {
100 for (uint32_t channels = 8; channels < 64; channels += 12) {
101 DWConvMicrokernelTester()
102 .cr(4)
103 .kr(3)
104 .channels(channels)
105 .input_offset(112)
106 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
107 }
108 }
109
TEST(F32_DWCONV_UP4X3__WASMSIMD,zero)110 TEST(F32_DWCONV_UP4X3__WASMSIMD, zero) {
111 for (uint32_t mz = 0; mz < 3; mz++) {
112 for (uint32_t channels = 8; channels < 64; channels += 12) {
113 DWConvMicrokernelTester()
114 .cr(4)
115 .kr(3)
116 .channels(channels)
117 .input_offset(112)
118 .zero_index(mz)
119 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmsimd);
120 }
121 }
122 }
123 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
124
125
126 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X4__WASMSIMD,c_eq_4)127 TEST(F32_DWCONV_UP4X4__WASMSIMD, c_eq_4) {
128 DWConvMicrokernelTester()
129 .cr(4)
130 .kr(4)
131 .channels(4)
132 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
133 }
134
TEST(F32_DWCONV_UP4X4__WASMSIMD,c_div_4)135 TEST(F32_DWCONV_UP4X4__WASMSIMD, c_div_4) {
136 for (uint32_t channels = 8; channels < 64; channels += 12) {
137 DWConvMicrokernelTester()
138 .cr(4)
139 .kr(4)
140 .channels(channels)
141 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
142 }
143 }
144
TEST(F32_DWCONV_UP4X4__WASMSIMD,c_lt_4)145 TEST(F32_DWCONV_UP4X4__WASMSIMD, c_lt_4) {
146 for (uint32_t channels = 1; channels < 4; channels++) {
147 DWConvMicrokernelTester()
148 .cr(4)
149 .kr(4)
150 .channels(channels)
151 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
152 }
153 }
154
TEST(F32_DWCONV_UP4X4__WASMSIMD,c_gt_4)155 TEST(F32_DWCONV_UP4X4__WASMSIMD, c_gt_4) {
156 for (uint32_t channels = 5; channels < 8; channels++) {
157 DWConvMicrokernelTester()
158 .cr(4)
159 .kr(4)
160 .channels(channels)
161 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
162 }
163 }
164
TEST(F32_DWCONV_UP4X4__WASMSIMD,multipixel)165 TEST(F32_DWCONV_UP4X4__WASMSIMD, multipixel) {
166 for (size_t channels = 1; channels <= 20; channels += 3) {
167 DWConvMicrokernelTester()
168 .cr(4)
169 .kr(4)
170 .channels(channels)
171 .width(3)
172 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
173 }
174 }
175
TEST(F32_DWCONV_UP4X4__WASMSIMD,multipixel_with_step)176 TEST(F32_DWCONV_UP4X4__WASMSIMD, multipixel_with_step) {
177 for (size_t channels = 1; channels <= 20; channels += 3) {
178 for (size_t step = 2; step <= 4; step++) {
179 DWConvMicrokernelTester()
180 .cr(4)
181 .kr(4)
182 .channels(channels)
183 .width(3)
184 .step(step)
185 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
186 }
187 }
188 }
189
TEST(F32_DWCONV_UP4X4__WASMSIMD,multipixel_with_output_stride)190 TEST(F32_DWCONV_UP4X4__WASMSIMD, multipixel_with_output_stride) {
191 for (size_t channels = 1; channels <= 20; channels += 3) {
192 DWConvMicrokernelTester()
193 .cr(4)
194 .kr(4)
195 .channels(4)
196 .width(5)
197 .output_stride(23)
198 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
199 }
200 }
201
TEST(F32_DWCONV_UP4X4__WASMSIMD,input_offset)202 TEST(F32_DWCONV_UP4X4__WASMSIMD, input_offset) {
203 for (uint32_t channels = 8; channels < 64; channels += 12) {
204 DWConvMicrokernelTester()
205 .cr(4)
206 .kr(4)
207 .channels(channels)
208 .input_offset(112)
209 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
210 }
211 }
212
TEST(F32_DWCONV_UP4X4__WASMSIMD,zero)213 TEST(F32_DWCONV_UP4X4__WASMSIMD, zero) {
214 for (uint32_t mz = 0; mz < 4; mz++) {
215 for (uint32_t channels = 8; channels < 64; channels += 12) {
216 DWConvMicrokernelTester()
217 .cr(4)
218 .kr(4)
219 .channels(channels)
220 .input_offset(112)
221 .zero_index(mz)
222 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmsimd);
223 }
224 }
225 }
226 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
227
228
229 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X9__WASMSIMD,c_eq_4)230 TEST(F32_DWCONV_UP4X9__WASMSIMD, c_eq_4) {
231 DWConvMicrokernelTester()
232 .cr(4)
233 .kr(9)
234 .channels(4)
235 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
236 }
237
TEST(F32_DWCONV_UP4X9__WASMSIMD,c_div_4)238 TEST(F32_DWCONV_UP4X9__WASMSIMD, c_div_4) {
239 for (uint32_t channels = 8; channels < 64; channels += 12) {
240 DWConvMicrokernelTester()
241 .cr(4)
242 .kr(9)
243 .channels(channels)
244 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
245 }
246 }
247
TEST(F32_DWCONV_UP4X9__WASMSIMD,c_lt_4)248 TEST(F32_DWCONV_UP4X9__WASMSIMD, c_lt_4) {
249 for (uint32_t channels = 1; channels < 4; channels++) {
250 DWConvMicrokernelTester()
251 .cr(4)
252 .kr(9)
253 .channels(channels)
254 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
255 }
256 }
257
TEST(F32_DWCONV_UP4X9__WASMSIMD,c_gt_4)258 TEST(F32_DWCONV_UP4X9__WASMSIMD, c_gt_4) {
259 for (uint32_t channels = 5; channels < 8; channels++) {
260 DWConvMicrokernelTester()
261 .cr(4)
262 .kr(9)
263 .channels(channels)
264 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
265 }
266 }
267
TEST(F32_DWCONV_UP4X9__WASMSIMD,multipixel)268 TEST(F32_DWCONV_UP4X9__WASMSIMD, multipixel) {
269 for (size_t channels = 1; channels <= 20; channels += 3) {
270 DWConvMicrokernelTester()
271 .cr(4)
272 .kr(9)
273 .channels(channels)
274 .width(3)
275 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
276 }
277 }
278
TEST(F32_DWCONV_UP4X9__WASMSIMD,multipixel_with_step)279 TEST(F32_DWCONV_UP4X9__WASMSIMD, multipixel_with_step) {
280 for (size_t channels = 1; channels <= 20; channels += 3) {
281 for (size_t step = 2; step <= 9; step++) {
282 DWConvMicrokernelTester()
283 .cr(4)
284 .kr(9)
285 .channels(channels)
286 .width(3)
287 .step(step)
288 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
289 }
290 }
291 }
292
TEST(F32_DWCONV_UP4X9__WASMSIMD,multipixel_with_output_stride)293 TEST(F32_DWCONV_UP4X9__WASMSIMD, multipixel_with_output_stride) {
294 for (size_t channels = 1; channels <= 20; channels += 3) {
295 DWConvMicrokernelTester()
296 .cr(4)
297 .kr(9)
298 .channels(4)
299 .width(5)
300 .output_stride(23)
301 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
302 }
303 }
304
TEST(F32_DWCONV_UP4X9__WASMSIMD,input_offset)305 TEST(F32_DWCONV_UP4X9__WASMSIMD, input_offset) {
306 for (uint32_t channels = 8; channels < 64; channels += 12) {
307 DWConvMicrokernelTester()
308 .cr(4)
309 .kr(9)
310 .channels(channels)
311 .input_offset(112)
312 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
313 }
314 }
315
TEST(F32_DWCONV_UP4X9__WASMSIMD,zero)316 TEST(F32_DWCONV_UP4X9__WASMSIMD, zero) {
317 for (uint32_t mz = 0; mz < 9; mz++) {
318 for (uint32_t channels = 8; channels < 64; channels += 12) {
319 DWConvMicrokernelTester()
320 .cr(4)
321 .kr(9)
322 .channels(channels)
323 .input_offset(112)
324 .zero_index(mz)
325 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd);
326 }
327 }
328 }
329 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
330
331
332 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,c_eq_4)333 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, c_eq_4) {
334 DWConvMicrokernelTester()
335 .cr(4)
336 .kr(9)
337 .channels(4)
338 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
339 }
340
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,c_div_4)341 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, c_div_4) {
342 for (uint32_t channels = 8; channels < 64; channels += 12) {
343 DWConvMicrokernelTester()
344 .cr(4)
345 .kr(9)
346 .channels(channels)
347 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
348 }
349 }
350
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,c_lt_4)351 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, c_lt_4) {
352 for (uint32_t channels = 1; channels < 4; channels++) {
353 DWConvMicrokernelTester()
354 .cr(4)
355 .kr(9)
356 .channels(channels)
357 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
358 }
359 }
360
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,c_gt_4)361 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, c_gt_4) {
362 for (uint32_t channels = 5; channels < 8; channels++) {
363 DWConvMicrokernelTester()
364 .cr(4)
365 .kr(9)
366 .channels(channels)
367 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
368 }
369 }
370
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,multipixel)371 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, multipixel) {
372 for (size_t channels = 1; channels <= 20; channels += 3) {
373 DWConvMicrokernelTester()
374 .cr(4)
375 .kr(9)
376 .channels(channels)
377 .width(3)
378 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
379 }
380 }
381
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,multipixel_with_step)382 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, multipixel_with_step) {
383 for (size_t channels = 1; channels <= 20; channels += 3) {
384 for (size_t step = 2; step <= 9; step++) {
385 DWConvMicrokernelTester()
386 .cr(4)
387 .kr(9)
388 .channels(channels)
389 .width(3)
390 .step(step)
391 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
392 }
393 }
394 }
395
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,multipixel_with_output_stride)396 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, multipixel_with_output_stride) {
397 for (size_t channels = 1; channels <= 20; channels += 3) {
398 DWConvMicrokernelTester()
399 .cr(4)
400 .kr(9)
401 .channels(4)
402 .width(5)
403 .output_stride(23)
404 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
405 }
406 }
407
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,input_offset)408 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, input_offset) {
409 for (uint32_t channels = 8; channels < 64; channels += 12) {
410 DWConvMicrokernelTester()
411 .cr(4)
412 .kr(9)
413 .channels(channels)
414 .input_offset(112)
415 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
416 }
417 }
418
TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2,zero)419 TEST(F32_DWCONV_UP4X9__WASMSIMD_ACC2, zero) {
420 for (uint32_t mz = 0; mz < 9; mz++) {
421 for (uint32_t channels = 8; channels < 64; channels += 12) {
422 DWConvMicrokernelTester()
423 .cr(4)
424 .kr(9)
425 .channels(channels)
426 .input_offset(112)
427 .zero_index(mz)
428 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmsimd_acc2);
429 }
430 }
431 }
432 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
433
434
435 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X25__WASMSIMD,c_eq_4)436 TEST(F32_DWCONV_UP4X25__WASMSIMD, c_eq_4) {
437 DWConvMicrokernelTester()
438 .cr(4)
439 .kr(25)
440 .channels(4)
441 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
442 }
443
TEST(F32_DWCONV_UP4X25__WASMSIMD,c_div_4)444 TEST(F32_DWCONV_UP4X25__WASMSIMD, c_div_4) {
445 for (uint32_t channels = 8; channels < 64; channels += 12) {
446 DWConvMicrokernelTester()
447 .cr(4)
448 .kr(25)
449 .channels(channels)
450 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
451 }
452 }
453
TEST(F32_DWCONV_UP4X25__WASMSIMD,c_lt_4)454 TEST(F32_DWCONV_UP4X25__WASMSIMD, c_lt_4) {
455 for (uint32_t channels = 1; channels < 4; channels++) {
456 DWConvMicrokernelTester()
457 .cr(4)
458 .kr(25)
459 .channels(channels)
460 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
461 }
462 }
463
TEST(F32_DWCONV_UP4X25__WASMSIMD,c_gt_4)464 TEST(F32_DWCONV_UP4X25__WASMSIMD, c_gt_4) {
465 for (uint32_t channels = 5; channels < 8; channels++) {
466 DWConvMicrokernelTester()
467 .cr(4)
468 .kr(25)
469 .channels(channels)
470 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
471 }
472 }
473
TEST(F32_DWCONV_UP4X25__WASMSIMD,multipixel)474 TEST(F32_DWCONV_UP4X25__WASMSIMD, multipixel) {
475 for (size_t channels = 1; channels <= 20; channels += 3) {
476 DWConvMicrokernelTester()
477 .cr(4)
478 .kr(25)
479 .channels(channels)
480 .width(3)
481 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
482 }
483 }
484
TEST(F32_DWCONV_UP4X25__WASMSIMD,multipixel_with_step)485 TEST(F32_DWCONV_UP4X25__WASMSIMD, multipixel_with_step) {
486 for (size_t channels = 1; channels <= 20; channels += 3) {
487 for (size_t step = 2; step <= 25; step++) {
488 DWConvMicrokernelTester()
489 .cr(4)
490 .kr(25)
491 .channels(channels)
492 .width(3)
493 .step(step)
494 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
495 }
496 }
497 }
498
TEST(F32_DWCONV_UP4X25__WASMSIMD,multipixel_with_output_stride)499 TEST(F32_DWCONV_UP4X25__WASMSIMD, multipixel_with_output_stride) {
500 for (size_t channels = 1; channels <= 20; channels += 3) {
501 DWConvMicrokernelTester()
502 .cr(4)
503 .kr(25)
504 .channels(4)
505 .width(5)
506 .output_stride(23)
507 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
508 }
509 }
510
TEST(F32_DWCONV_UP4X25__WASMSIMD,input_offset)511 TEST(F32_DWCONV_UP4X25__WASMSIMD, input_offset) {
512 for (uint32_t channels = 8; channels < 64; channels += 12) {
513 DWConvMicrokernelTester()
514 .cr(4)
515 .kr(25)
516 .channels(channels)
517 .input_offset(112)
518 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
519 }
520 }
521
TEST(F32_DWCONV_UP4X25__WASMSIMD,zero)522 TEST(F32_DWCONV_UP4X25__WASMSIMD, zero) {
523 for (uint32_t mz = 0; mz < 25; mz++) {
524 for (uint32_t channels = 8; channels < 64; channels += 12) {
525 DWConvMicrokernelTester()
526 .cr(4)
527 .kr(25)
528 .channels(channels)
529 .input_offset(112)
530 .zero_index(mz)
531 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmsimd);
532 }
533 }
534 }
535 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
536
537
538 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X3__WASMSIMD,c_eq_8)539 TEST(F32_DWCONV_UP8X3__WASMSIMD, c_eq_8) {
540 DWConvMicrokernelTester()
541 .cr(8)
542 .kr(3)
543 .channels(8)
544 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
545 }
546
TEST(F32_DWCONV_UP8X3__WASMSIMD,c_div_8)547 TEST(F32_DWCONV_UP8X3__WASMSIMD, c_div_8) {
548 for (uint32_t channels = 16; channels < 128; channels += 24) {
549 DWConvMicrokernelTester()
550 .cr(8)
551 .kr(3)
552 .channels(channels)
553 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
554 }
555 }
556
TEST(F32_DWCONV_UP8X3__WASMSIMD,c_lt_8)557 TEST(F32_DWCONV_UP8X3__WASMSIMD, c_lt_8) {
558 for (uint32_t channels = 1; channels < 8; channels++) {
559 DWConvMicrokernelTester()
560 .cr(8)
561 .kr(3)
562 .channels(channels)
563 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
564 }
565 }
566
TEST(F32_DWCONV_UP8X3__WASMSIMD,c_gt_8)567 TEST(F32_DWCONV_UP8X3__WASMSIMD, c_gt_8) {
568 for (uint32_t channels = 9; channels < 16; channels++) {
569 DWConvMicrokernelTester()
570 .cr(8)
571 .kr(3)
572 .channels(channels)
573 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
574 }
575 }
576
TEST(F32_DWCONV_UP8X3__WASMSIMD,multipixel)577 TEST(F32_DWCONV_UP8X3__WASMSIMD, multipixel) {
578 for (size_t channels = 1; channels <= 40; channels += 7) {
579 DWConvMicrokernelTester()
580 .cr(8)
581 .kr(3)
582 .channels(channels)
583 .width(3)
584 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
585 }
586 }
587
TEST(F32_DWCONV_UP8X3__WASMSIMD,multipixel_with_step)588 TEST(F32_DWCONV_UP8X3__WASMSIMD, multipixel_with_step) {
589 for (size_t channels = 1; channels <= 40; channels += 7) {
590 for (size_t step = 2; step <= 3; step++) {
591 DWConvMicrokernelTester()
592 .cr(8)
593 .kr(3)
594 .channels(channels)
595 .width(3)
596 .step(step)
597 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
598 }
599 }
600 }
601
TEST(F32_DWCONV_UP8X3__WASMSIMD,multipixel_with_output_stride)602 TEST(F32_DWCONV_UP8X3__WASMSIMD, multipixel_with_output_stride) {
603 for (size_t channels = 1; channels <= 40; channels += 7) {
604 DWConvMicrokernelTester()
605 .cr(8)
606 .kr(3)
607 .channels(8)
608 .width(5)
609 .output_stride(43)
610 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
611 }
612 }
613
TEST(F32_DWCONV_UP8X3__WASMSIMD,input_offset)614 TEST(F32_DWCONV_UP8X3__WASMSIMD, input_offset) {
615 for (uint32_t channels = 16; channels < 128; channels += 24) {
616 DWConvMicrokernelTester()
617 .cr(8)
618 .kr(3)
619 .channels(channels)
620 .input_offset(176)
621 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
622 }
623 }
624
TEST(F32_DWCONV_UP8X3__WASMSIMD,zero)625 TEST(F32_DWCONV_UP8X3__WASMSIMD, zero) {
626 for (uint32_t mz = 0; mz < 3; mz++) {
627 for (uint32_t channels = 16; channels < 128; channels += 24) {
628 DWConvMicrokernelTester()
629 .cr(8)
630 .kr(3)
631 .channels(channels)
632 .input_offset(176)
633 .zero_index(mz)
634 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmsimd);
635 }
636 }
637 }
638 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
639
640
641 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X4__WASMSIMD,c_eq_8)642 TEST(F32_DWCONV_UP8X4__WASMSIMD, c_eq_8) {
643 DWConvMicrokernelTester()
644 .cr(8)
645 .kr(4)
646 .channels(8)
647 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
648 }
649
TEST(F32_DWCONV_UP8X4__WASMSIMD,c_div_8)650 TEST(F32_DWCONV_UP8X4__WASMSIMD, c_div_8) {
651 for (uint32_t channels = 16; channels < 128; channels += 24) {
652 DWConvMicrokernelTester()
653 .cr(8)
654 .kr(4)
655 .channels(channels)
656 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
657 }
658 }
659
TEST(F32_DWCONV_UP8X4__WASMSIMD,c_lt_8)660 TEST(F32_DWCONV_UP8X4__WASMSIMD, c_lt_8) {
661 for (uint32_t channels = 1; channels < 8; channels++) {
662 DWConvMicrokernelTester()
663 .cr(8)
664 .kr(4)
665 .channels(channels)
666 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
667 }
668 }
669
TEST(F32_DWCONV_UP8X4__WASMSIMD,c_gt_8)670 TEST(F32_DWCONV_UP8X4__WASMSIMD, c_gt_8) {
671 for (uint32_t channels = 9; channels < 16; channels++) {
672 DWConvMicrokernelTester()
673 .cr(8)
674 .kr(4)
675 .channels(channels)
676 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
677 }
678 }
679
TEST(F32_DWCONV_UP8X4__WASMSIMD,multipixel)680 TEST(F32_DWCONV_UP8X4__WASMSIMD, multipixel) {
681 for (size_t channels = 1; channels <= 40; channels += 7) {
682 DWConvMicrokernelTester()
683 .cr(8)
684 .kr(4)
685 .channels(channels)
686 .width(3)
687 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
688 }
689 }
690
TEST(F32_DWCONV_UP8X4__WASMSIMD,multipixel_with_step)691 TEST(F32_DWCONV_UP8X4__WASMSIMD, multipixel_with_step) {
692 for (size_t channels = 1; channels <= 40; channels += 7) {
693 for (size_t step = 2; step <= 4; step++) {
694 DWConvMicrokernelTester()
695 .cr(8)
696 .kr(4)
697 .channels(channels)
698 .width(3)
699 .step(step)
700 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
701 }
702 }
703 }
704
TEST(F32_DWCONV_UP8X4__WASMSIMD,multipixel_with_output_stride)705 TEST(F32_DWCONV_UP8X4__WASMSIMD, multipixel_with_output_stride) {
706 for (size_t channels = 1; channels <= 40; channels += 7) {
707 DWConvMicrokernelTester()
708 .cr(8)
709 .kr(4)
710 .channels(8)
711 .width(5)
712 .output_stride(43)
713 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
714 }
715 }
716
TEST(F32_DWCONV_UP8X4__WASMSIMD,input_offset)717 TEST(F32_DWCONV_UP8X4__WASMSIMD, input_offset) {
718 for (uint32_t channels = 16; channels < 128; channels += 24) {
719 DWConvMicrokernelTester()
720 .cr(8)
721 .kr(4)
722 .channels(channels)
723 .input_offset(176)
724 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
725 }
726 }
727
TEST(F32_DWCONV_UP8X4__WASMSIMD,zero)728 TEST(F32_DWCONV_UP8X4__WASMSIMD, zero) {
729 for (uint32_t mz = 0; mz < 4; mz++) {
730 for (uint32_t channels = 16; channels < 128; channels += 24) {
731 DWConvMicrokernelTester()
732 .cr(8)
733 .kr(4)
734 .channels(channels)
735 .input_offset(176)
736 .zero_index(mz)
737 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmsimd);
738 }
739 }
740 }
741 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
742
743
744 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X9__WASMSIMD,c_eq_8)745 TEST(F32_DWCONV_UP8X9__WASMSIMD, c_eq_8) {
746 DWConvMicrokernelTester()
747 .cr(8)
748 .kr(9)
749 .channels(8)
750 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
751 }
752
TEST(F32_DWCONV_UP8X9__WASMSIMD,c_div_8)753 TEST(F32_DWCONV_UP8X9__WASMSIMD, c_div_8) {
754 for (uint32_t channels = 16; channels < 128; channels += 24) {
755 DWConvMicrokernelTester()
756 .cr(8)
757 .kr(9)
758 .channels(channels)
759 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
760 }
761 }
762
TEST(F32_DWCONV_UP8X9__WASMSIMD,c_lt_8)763 TEST(F32_DWCONV_UP8X9__WASMSIMD, c_lt_8) {
764 for (uint32_t channels = 1; channels < 8; channels++) {
765 DWConvMicrokernelTester()
766 .cr(8)
767 .kr(9)
768 .channels(channels)
769 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
770 }
771 }
772
TEST(F32_DWCONV_UP8X9__WASMSIMD,c_gt_8)773 TEST(F32_DWCONV_UP8X9__WASMSIMD, c_gt_8) {
774 for (uint32_t channels = 9; channels < 16; channels++) {
775 DWConvMicrokernelTester()
776 .cr(8)
777 .kr(9)
778 .channels(channels)
779 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
780 }
781 }
782
TEST(F32_DWCONV_UP8X9__WASMSIMD,multipixel)783 TEST(F32_DWCONV_UP8X9__WASMSIMD, multipixel) {
784 for (size_t channels = 1; channels <= 40; channels += 7) {
785 DWConvMicrokernelTester()
786 .cr(8)
787 .kr(9)
788 .channels(channels)
789 .width(3)
790 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
791 }
792 }
793
TEST(F32_DWCONV_UP8X9__WASMSIMD,multipixel_with_step)794 TEST(F32_DWCONV_UP8X9__WASMSIMD, multipixel_with_step) {
795 for (size_t channels = 1; channels <= 40; channels += 7) {
796 for (size_t step = 2; step <= 9; step++) {
797 DWConvMicrokernelTester()
798 .cr(8)
799 .kr(9)
800 .channels(channels)
801 .width(3)
802 .step(step)
803 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
804 }
805 }
806 }
807
TEST(F32_DWCONV_UP8X9__WASMSIMD,multipixel_with_output_stride)808 TEST(F32_DWCONV_UP8X9__WASMSIMD, multipixel_with_output_stride) {
809 for (size_t channels = 1; channels <= 40; channels += 7) {
810 DWConvMicrokernelTester()
811 .cr(8)
812 .kr(9)
813 .channels(8)
814 .width(5)
815 .output_stride(43)
816 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
817 }
818 }
819
TEST(F32_DWCONV_UP8X9__WASMSIMD,input_offset)820 TEST(F32_DWCONV_UP8X9__WASMSIMD, input_offset) {
821 for (uint32_t channels = 16; channels < 128; channels += 24) {
822 DWConvMicrokernelTester()
823 .cr(8)
824 .kr(9)
825 .channels(channels)
826 .input_offset(176)
827 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
828 }
829 }
830
TEST(F32_DWCONV_UP8X9__WASMSIMD,zero)831 TEST(F32_DWCONV_UP8X9__WASMSIMD, zero) {
832 for (uint32_t mz = 0; mz < 9; mz++) {
833 for (uint32_t channels = 16; channels < 128; channels += 24) {
834 DWConvMicrokernelTester()
835 .cr(8)
836 .kr(9)
837 .channels(channels)
838 .input_offset(176)
839 .zero_index(mz)
840 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd);
841 }
842 }
843 }
844 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
845
846
847 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,c_eq_8)848 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, c_eq_8) {
849 DWConvMicrokernelTester()
850 .cr(8)
851 .kr(9)
852 .channels(8)
853 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
854 }
855
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,c_div_8)856 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, c_div_8) {
857 for (uint32_t channels = 16; channels < 128; channels += 24) {
858 DWConvMicrokernelTester()
859 .cr(8)
860 .kr(9)
861 .channels(channels)
862 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
863 }
864 }
865
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,c_lt_8)866 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, c_lt_8) {
867 for (uint32_t channels = 1; channels < 8; channels++) {
868 DWConvMicrokernelTester()
869 .cr(8)
870 .kr(9)
871 .channels(channels)
872 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
873 }
874 }
875
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,c_gt_8)876 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, c_gt_8) {
877 for (uint32_t channels = 9; channels < 16; channels++) {
878 DWConvMicrokernelTester()
879 .cr(8)
880 .kr(9)
881 .channels(channels)
882 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
883 }
884 }
885
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,multipixel)886 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, multipixel) {
887 for (size_t channels = 1; channels <= 40; channels += 7) {
888 DWConvMicrokernelTester()
889 .cr(8)
890 .kr(9)
891 .channels(channels)
892 .width(3)
893 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
894 }
895 }
896
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,multipixel_with_step)897 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, multipixel_with_step) {
898 for (size_t channels = 1; channels <= 40; channels += 7) {
899 for (size_t step = 2; step <= 9; step++) {
900 DWConvMicrokernelTester()
901 .cr(8)
902 .kr(9)
903 .channels(channels)
904 .width(3)
905 .step(step)
906 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
907 }
908 }
909 }
910
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,multipixel_with_output_stride)911 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, multipixel_with_output_stride) {
912 for (size_t channels = 1; channels <= 40; channels += 7) {
913 DWConvMicrokernelTester()
914 .cr(8)
915 .kr(9)
916 .channels(8)
917 .width(5)
918 .output_stride(43)
919 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
920 }
921 }
922
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,input_offset)923 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, input_offset) {
924 for (uint32_t channels = 16; channels < 128; channels += 24) {
925 DWConvMicrokernelTester()
926 .cr(8)
927 .kr(9)
928 .channels(channels)
929 .input_offset(176)
930 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
931 }
932 }
933
TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2,zero)934 TEST(F32_DWCONV_UP8X9__WASMSIMD_ACC2, zero) {
935 for (uint32_t mz = 0; mz < 9; mz++) {
936 for (uint32_t channels = 16; channels < 128; channels += 24) {
937 DWConvMicrokernelTester()
938 .cr(8)
939 .kr(9)
940 .channels(channels)
941 .input_offset(176)
942 .zero_index(mz)
943 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmsimd_acc2);
944 }
945 }
946 }
947 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
948
949
950 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X25__WASMSIMD,c_eq_8)951 TEST(F32_DWCONV_UP8X25__WASMSIMD, c_eq_8) {
952 DWConvMicrokernelTester()
953 .cr(8)
954 .kr(25)
955 .channels(8)
956 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
957 }
958
TEST(F32_DWCONV_UP8X25__WASMSIMD,c_div_8)959 TEST(F32_DWCONV_UP8X25__WASMSIMD, c_div_8) {
960 for (uint32_t channels = 16; channels < 128; channels += 24) {
961 DWConvMicrokernelTester()
962 .cr(8)
963 .kr(25)
964 .channels(channels)
965 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
966 }
967 }
968
TEST(F32_DWCONV_UP8X25__WASMSIMD,c_lt_8)969 TEST(F32_DWCONV_UP8X25__WASMSIMD, c_lt_8) {
970 for (uint32_t channels = 1; channels < 8; channels++) {
971 DWConvMicrokernelTester()
972 .cr(8)
973 .kr(25)
974 .channels(channels)
975 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
976 }
977 }
978
TEST(F32_DWCONV_UP8X25__WASMSIMD,c_gt_8)979 TEST(F32_DWCONV_UP8X25__WASMSIMD, c_gt_8) {
980 for (uint32_t channels = 9; channels < 16; channels++) {
981 DWConvMicrokernelTester()
982 .cr(8)
983 .kr(25)
984 .channels(channels)
985 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
986 }
987 }
988
TEST(F32_DWCONV_UP8X25__WASMSIMD,multipixel)989 TEST(F32_DWCONV_UP8X25__WASMSIMD, multipixel) {
990 for (size_t channels = 1; channels <= 40; channels += 7) {
991 DWConvMicrokernelTester()
992 .cr(8)
993 .kr(25)
994 .channels(channels)
995 .width(3)
996 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
997 }
998 }
999
TEST(F32_DWCONV_UP8X25__WASMSIMD,multipixel_with_step)1000 TEST(F32_DWCONV_UP8X25__WASMSIMD, multipixel_with_step) {
1001 for (size_t channels = 1; channels <= 40; channels += 7) {
1002 for (size_t step = 2; step <= 25; step++) {
1003 DWConvMicrokernelTester()
1004 .cr(8)
1005 .kr(25)
1006 .channels(channels)
1007 .width(3)
1008 .step(step)
1009 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
1010 }
1011 }
1012 }
1013
TEST(F32_DWCONV_UP8X25__WASMSIMD,multipixel_with_output_stride)1014 TEST(F32_DWCONV_UP8X25__WASMSIMD, multipixel_with_output_stride) {
1015 for (size_t channels = 1; channels <= 40; channels += 7) {
1016 DWConvMicrokernelTester()
1017 .cr(8)
1018 .kr(25)
1019 .channels(8)
1020 .width(5)
1021 .output_stride(43)
1022 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
1023 }
1024 }
1025
TEST(F32_DWCONV_UP8X25__WASMSIMD,input_offset)1026 TEST(F32_DWCONV_UP8X25__WASMSIMD, input_offset) {
1027 for (uint32_t channels = 16; channels < 128; channels += 24) {
1028 DWConvMicrokernelTester()
1029 .cr(8)
1030 .kr(25)
1031 .channels(channels)
1032 .input_offset(176)
1033 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
1034 }
1035 }
1036
TEST(F32_DWCONV_UP8X25__WASMSIMD,zero)1037 TEST(F32_DWCONV_UP8X25__WASMSIMD, zero) {
1038 for (uint32_t mz = 0; mz < 25; mz++) {
1039 for (uint32_t channels = 16; channels < 128; channels += 24) {
1040 DWConvMicrokernelTester()
1041 .cr(8)
1042 .kr(25)
1043 .channels(channels)
1044 .input_offset(176)
1045 .zero_index(mz)
1046 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmsimd);
1047 }
1048 }
1049 }
1050 #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1051
1052
1053 #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,c_eq_4)1054 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, c_eq_4) {
1055 DWConvMicrokernelTester()
1056 .cr(4)
1057 .kr(3)
1058 .channels(4)
1059 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1060 }
1061
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,c_div_4)1062 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, c_div_4) {
1063 for (uint32_t channels = 8; channels < 64; channels += 12) {
1064 DWConvMicrokernelTester()
1065 .cr(4)
1066 .kr(3)
1067 .channels(channels)
1068 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1069 }
1070 }
1071
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,c_lt_4)1072 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, c_lt_4) {
1073 for (uint32_t channels = 1; channels < 4; channels++) {
1074 DWConvMicrokernelTester()
1075 .cr(4)
1076 .kr(3)
1077 .channels(channels)
1078 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1079 }
1080 }
1081
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,c_gt_4)1082 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, c_gt_4) {
1083 for (uint32_t channels = 5; channels < 8; channels++) {
1084 DWConvMicrokernelTester()
1085 .cr(4)
1086 .kr(3)
1087 .channels(channels)
1088 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1089 }
1090 }
1091
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,multipixel)1092 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, multipixel) {
1093 for (size_t channels = 1; channels <= 20; channels += 3) {
1094 DWConvMicrokernelTester()
1095 .cr(4)
1096 .kr(3)
1097 .channels(channels)
1098 .width(3)
1099 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1100 }
1101 }
1102
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,multipixel_with_step)1103 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, multipixel_with_step) {
1104 for (size_t channels = 1; channels <= 20; channels += 3) {
1105 for (size_t step = 2; step <= 3; step++) {
1106 DWConvMicrokernelTester()
1107 .cr(4)
1108 .kr(3)
1109 .channels(channels)
1110 .width(3)
1111 .step(step)
1112 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1113 }
1114 }
1115 }
1116
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,multipixel_with_output_stride)1117 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, multipixel_with_output_stride) {
1118 for (size_t channels = 1; channels <= 20; channels += 3) {
1119 DWConvMicrokernelTester()
1120 .cr(4)
1121 .kr(3)
1122 .channels(4)
1123 .width(5)
1124 .output_stride(23)
1125 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1126 }
1127 }
1128
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,input_offset)1129 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, input_offset) {
1130 for (uint32_t channels = 8; channels < 64; channels += 12) {
1131 DWConvMicrokernelTester()
1132 .cr(4)
1133 .kr(3)
1134 .channels(channels)
1135 .input_offset(112)
1136 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1137 }
1138 }
1139
TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA,zero)1140 TEST(F32_DWCONV_UP4X3__WASMRELAXEDSIMD_FMA, zero) {
1141 for (uint32_t mz = 0; mz < 3; mz++) {
1142 for (uint32_t channels = 8; channels < 64; channels += 12) {
1143 DWConvMicrokernelTester()
1144 .cr(4)
1145 .kr(3)
1146 .channels(channels)
1147 .input_offset(112)
1148 .zero_index(mz)
1149 .Test(xnn_f32_dwconv_ukernel_up4x3__wasmrelaxedsimd_fma);
1150 }
1151 }
1152 }
1153 #endif // XNN_ARCH_WASMRELAXEDSIMD
1154
1155
1156 #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,c_eq_4)1157 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, c_eq_4) {
1158 DWConvMicrokernelTester()
1159 .cr(4)
1160 .kr(4)
1161 .channels(4)
1162 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1163 }
1164
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,c_div_4)1165 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, c_div_4) {
1166 for (uint32_t channels = 8; channels < 64; channels += 12) {
1167 DWConvMicrokernelTester()
1168 .cr(4)
1169 .kr(4)
1170 .channels(channels)
1171 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1172 }
1173 }
1174
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,c_lt_4)1175 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, c_lt_4) {
1176 for (uint32_t channels = 1; channels < 4; channels++) {
1177 DWConvMicrokernelTester()
1178 .cr(4)
1179 .kr(4)
1180 .channels(channels)
1181 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1182 }
1183 }
1184
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,c_gt_4)1185 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, c_gt_4) {
1186 for (uint32_t channels = 5; channels < 8; channels++) {
1187 DWConvMicrokernelTester()
1188 .cr(4)
1189 .kr(4)
1190 .channels(channels)
1191 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1192 }
1193 }
1194
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,multipixel)1195 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, multipixel) {
1196 for (size_t channels = 1; channels <= 20; channels += 3) {
1197 DWConvMicrokernelTester()
1198 .cr(4)
1199 .kr(4)
1200 .channels(channels)
1201 .width(3)
1202 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1203 }
1204 }
1205
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,multipixel_with_step)1206 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, multipixel_with_step) {
1207 for (size_t channels = 1; channels <= 20; channels += 3) {
1208 for (size_t step = 2; step <= 4; step++) {
1209 DWConvMicrokernelTester()
1210 .cr(4)
1211 .kr(4)
1212 .channels(channels)
1213 .width(3)
1214 .step(step)
1215 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1216 }
1217 }
1218 }
1219
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,multipixel_with_output_stride)1220 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, multipixel_with_output_stride) {
1221 for (size_t channels = 1; channels <= 20; channels += 3) {
1222 DWConvMicrokernelTester()
1223 .cr(4)
1224 .kr(4)
1225 .channels(4)
1226 .width(5)
1227 .output_stride(23)
1228 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1229 }
1230 }
1231
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,input_offset)1232 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, input_offset) {
1233 for (uint32_t channels = 8; channels < 64; channels += 12) {
1234 DWConvMicrokernelTester()
1235 .cr(4)
1236 .kr(4)
1237 .channels(channels)
1238 .input_offset(112)
1239 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1240 }
1241 }
1242
TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA,zero)1243 TEST(F32_DWCONV_UP4X4__WASMRELAXEDSIMD_FMA, zero) {
1244 for (uint32_t mz = 0; mz < 4; mz++) {
1245 for (uint32_t channels = 8; channels < 64; channels += 12) {
1246 DWConvMicrokernelTester()
1247 .cr(4)
1248 .kr(4)
1249 .channels(channels)
1250 .input_offset(112)
1251 .zero_index(mz)
1252 .Test(xnn_f32_dwconv_ukernel_up4x4__wasmrelaxedsimd_fma);
1253 }
1254 }
1255 }
1256 #endif // XNN_ARCH_WASMRELAXEDSIMD
1257
1258
1259 #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,c_eq_4)1260 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, c_eq_4) {
1261 DWConvMicrokernelTester()
1262 .cr(4)
1263 .kr(9)
1264 .channels(4)
1265 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1266 }
1267
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,c_div_4)1268 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, c_div_4) {
1269 for (uint32_t channels = 8; channels < 64; channels += 12) {
1270 DWConvMicrokernelTester()
1271 .cr(4)
1272 .kr(9)
1273 .channels(channels)
1274 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1275 }
1276 }
1277
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,c_lt_4)1278 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, c_lt_4) {
1279 for (uint32_t channels = 1; channels < 4; channels++) {
1280 DWConvMicrokernelTester()
1281 .cr(4)
1282 .kr(9)
1283 .channels(channels)
1284 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1285 }
1286 }
1287
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,c_gt_4)1288 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, c_gt_4) {
1289 for (uint32_t channels = 5; channels < 8; channels++) {
1290 DWConvMicrokernelTester()
1291 .cr(4)
1292 .kr(9)
1293 .channels(channels)
1294 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1295 }
1296 }
1297
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,multipixel)1298 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, multipixel) {
1299 for (size_t channels = 1; channels <= 20; channels += 3) {
1300 DWConvMicrokernelTester()
1301 .cr(4)
1302 .kr(9)
1303 .channels(channels)
1304 .width(3)
1305 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1306 }
1307 }
1308
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,multipixel_with_step)1309 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, multipixel_with_step) {
1310 for (size_t channels = 1; channels <= 20; channels += 3) {
1311 for (size_t step = 2; step <= 9; step++) {
1312 DWConvMicrokernelTester()
1313 .cr(4)
1314 .kr(9)
1315 .channels(channels)
1316 .width(3)
1317 .step(step)
1318 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1319 }
1320 }
1321 }
1322
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,multipixel_with_output_stride)1323 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, multipixel_with_output_stride) {
1324 for (size_t channels = 1; channels <= 20; channels += 3) {
1325 DWConvMicrokernelTester()
1326 .cr(4)
1327 .kr(9)
1328 .channels(4)
1329 .width(5)
1330 .output_stride(23)
1331 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1332 }
1333 }
1334
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,input_offset)1335 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, input_offset) {
1336 for (uint32_t channels = 8; channels < 64; channels += 12) {
1337 DWConvMicrokernelTester()
1338 .cr(4)
1339 .kr(9)
1340 .channels(channels)
1341 .input_offset(112)
1342 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1343 }
1344 }
1345
TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA,zero)1346 TEST(F32_DWCONV_UP4X9__WASMRELAXEDSIMD_FMA, zero) {
1347 for (uint32_t mz = 0; mz < 9; mz++) {
1348 for (uint32_t channels = 8; channels < 64; channels += 12) {
1349 DWConvMicrokernelTester()
1350 .cr(4)
1351 .kr(9)
1352 .channels(channels)
1353 .input_offset(112)
1354 .zero_index(mz)
1355 .Test(xnn_f32_dwconv_ukernel_up4x9__wasmrelaxedsimd_fma);
1356 }
1357 }
1358 }
1359 #endif // XNN_ARCH_WASMRELAXEDSIMD
1360
1361
1362 #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,c_eq_4)1363 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, c_eq_4) {
1364 DWConvMicrokernelTester()
1365 .cr(4)
1366 .kr(25)
1367 .channels(4)
1368 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1369 }
1370
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,c_div_4)1371 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, c_div_4) {
1372 for (uint32_t channels = 8; channels < 64; channels += 12) {
1373 DWConvMicrokernelTester()
1374 .cr(4)
1375 .kr(25)
1376 .channels(channels)
1377 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1378 }
1379 }
1380
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,c_lt_4)1381 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, c_lt_4) {
1382 for (uint32_t channels = 1; channels < 4; channels++) {
1383 DWConvMicrokernelTester()
1384 .cr(4)
1385 .kr(25)
1386 .channels(channels)
1387 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1388 }
1389 }
1390
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,c_gt_4)1391 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, c_gt_4) {
1392 for (uint32_t channels = 5; channels < 8; channels++) {
1393 DWConvMicrokernelTester()
1394 .cr(4)
1395 .kr(25)
1396 .channels(channels)
1397 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1398 }
1399 }
1400
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,multipixel)1401 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, multipixel) {
1402 for (size_t channels = 1; channels <= 20; channels += 3) {
1403 DWConvMicrokernelTester()
1404 .cr(4)
1405 .kr(25)
1406 .channels(channels)
1407 .width(3)
1408 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1409 }
1410 }
1411
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,multipixel_with_step)1412 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, multipixel_with_step) {
1413 for (size_t channels = 1; channels <= 20; channels += 3) {
1414 for (size_t step = 2; step <= 25; step++) {
1415 DWConvMicrokernelTester()
1416 .cr(4)
1417 .kr(25)
1418 .channels(channels)
1419 .width(3)
1420 .step(step)
1421 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1422 }
1423 }
1424 }
1425
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,multipixel_with_output_stride)1426 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, multipixel_with_output_stride) {
1427 for (size_t channels = 1; channels <= 20; channels += 3) {
1428 DWConvMicrokernelTester()
1429 .cr(4)
1430 .kr(25)
1431 .channels(4)
1432 .width(5)
1433 .output_stride(23)
1434 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1435 }
1436 }
1437
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,input_offset)1438 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, input_offset) {
1439 for (uint32_t channels = 8; channels < 64; channels += 12) {
1440 DWConvMicrokernelTester()
1441 .cr(4)
1442 .kr(25)
1443 .channels(channels)
1444 .input_offset(112)
1445 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1446 }
1447 }
1448
TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA,zero)1449 TEST(F32_DWCONV_UP4X25__WASMRELAXEDSIMD_FMA, zero) {
1450 for (uint32_t mz = 0; mz < 25; mz++) {
1451 for (uint32_t channels = 8; channels < 64; channels += 12) {
1452 DWConvMicrokernelTester()
1453 .cr(4)
1454 .kr(25)
1455 .channels(channels)
1456 .input_offset(112)
1457 .zero_index(mz)
1458 .Test(xnn_f32_dwconv_ukernel_up4x25__wasmrelaxedsimd_fma);
1459 }
1460 }
1461 }
1462 #endif // XNN_ARCH_WASMRELAXEDSIMD
1463
1464
1465 #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,c_eq_8)1466 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, c_eq_8) {
1467 DWConvMicrokernelTester()
1468 .cr(8)
1469 .kr(3)
1470 .channels(8)
1471 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1472 }
1473
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,c_div_8)1474 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, c_div_8) {
1475 for (uint32_t channels = 16; channels < 128; channels += 24) {
1476 DWConvMicrokernelTester()
1477 .cr(8)
1478 .kr(3)
1479 .channels(channels)
1480 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1481 }
1482 }
1483
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,c_lt_8)1484 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, c_lt_8) {
1485 for (uint32_t channels = 1; channels < 8; channels++) {
1486 DWConvMicrokernelTester()
1487 .cr(8)
1488 .kr(3)
1489 .channels(channels)
1490 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1491 }
1492 }
1493
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,c_gt_8)1494 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, c_gt_8) {
1495 for (uint32_t channels = 9; channels < 16; channels++) {
1496 DWConvMicrokernelTester()
1497 .cr(8)
1498 .kr(3)
1499 .channels(channels)
1500 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1501 }
1502 }
1503
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,multipixel)1504 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, multipixel) {
1505 for (size_t channels = 1; channels <= 40; channels += 7) {
1506 DWConvMicrokernelTester()
1507 .cr(8)
1508 .kr(3)
1509 .channels(channels)
1510 .width(3)
1511 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1512 }
1513 }
1514
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,multipixel_with_step)1515 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, multipixel_with_step) {
1516 for (size_t channels = 1; channels <= 40; channels += 7) {
1517 for (size_t step = 2; step <= 3; step++) {
1518 DWConvMicrokernelTester()
1519 .cr(8)
1520 .kr(3)
1521 .channels(channels)
1522 .width(3)
1523 .step(step)
1524 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1525 }
1526 }
1527 }
1528
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,multipixel_with_output_stride)1529 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, multipixel_with_output_stride) {
1530 for (size_t channels = 1; channels <= 40; channels += 7) {
1531 DWConvMicrokernelTester()
1532 .cr(8)
1533 .kr(3)
1534 .channels(8)
1535 .width(5)
1536 .output_stride(43)
1537 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1538 }
1539 }
1540
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,input_offset)1541 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, input_offset) {
1542 for (uint32_t channels = 16; channels < 128; channels += 24) {
1543 DWConvMicrokernelTester()
1544 .cr(8)
1545 .kr(3)
1546 .channels(channels)
1547 .input_offset(176)
1548 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1549 }
1550 }
1551
TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA,zero)1552 TEST(F32_DWCONV_UP8X3__WASMRELAXEDSIMD_FMA, zero) {
1553 for (uint32_t mz = 0; mz < 3; mz++) {
1554 for (uint32_t channels = 16; channels < 128; channels += 24) {
1555 DWConvMicrokernelTester()
1556 .cr(8)
1557 .kr(3)
1558 .channels(channels)
1559 .input_offset(176)
1560 .zero_index(mz)
1561 .Test(xnn_f32_dwconv_ukernel_up8x3__wasmrelaxedsimd_fma);
1562 }
1563 }
1564 }
1565 #endif // XNN_ARCH_WASMRELAXEDSIMD
1566
1567
1568 #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,c_eq_8)1569 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, c_eq_8) {
1570 DWConvMicrokernelTester()
1571 .cr(8)
1572 .kr(4)
1573 .channels(8)
1574 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1575 }
1576
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,c_div_8)1577 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, c_div_8) {
1578 for (uint32_t channels = 16; channels < 128; channels += 24) {
1579 DWConvMicrokernelTester()
1580 .cr(8)
1581 .kr(4)
1582 .channels(channels)
1583 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1584 }
1585 }
1586
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,c_lt_8)1587 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, c_lt_8) {
1588 for (uint32_t channels = 1; channels < 8; channels++) {
1589 DWConvMicrokernelTester()
1590 .cr(8)
1591 .kr(4)
1592 .channels(channels)
1593 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1594 }
1595 }
1596
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,c_gt_8)1597 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, c_gt_8) {
1598 for (uint32_t channels = 9; channels < 16; channels++) {
1599 DWConvMicrokernelTester()
1600 .cr(8)
1601 .kr(4)
1602 .channels(channels)
1603 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1604 }
1605 }
1606
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,multipixel)1607 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, multipixel) {
1608 for (size_t channels = 1; channels <= 40; channels += 7) {
1609 DWConvMicrokernelTester()
1610 .cr(8)
1611 .kr(4)
1612 .channels(channels)
1613 .width(3)
1614 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1615 }
1616 }
1617
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,multipixel_with_step)1618 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, multipixel_with_step) {
1619 for (size_t channels = 1; channels <= 40; channels += 7) {
1620 for (size_t step = 2; step <= 4; step++) {
1621 DWConvMicrokernelTester()
1622 .cr(8)
1623 .kr(4)
1624 .channels(channels)
1625 .width(3)
1626 .step(step)
1627 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1628 }
1629 }
1630 }
1631
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,multipixel_with_output_stride)1632 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, multipixel_with_output_stride) {
1633 for (size_t channels = 1; channels <= 40; channels += 7) {
1634 DWConvMicrokernelTester()
1635 .cr(8)
1636 .kr(4)
1637 .channels(8)
1638 .width(5)
1639 .output_stride(43)
1640 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1641 }
1642 }
1643
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,input_offset)1644 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, input_offset) {
1645 for (uint32_t channels = 16; channels < 128; channels += 24) {
1646 DWConvMicrokernelTester()
1647 .cr(8)
1648 .kr(4)
1649 .channels(channels)
1650 .input_offset(176)
1651 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1652 }
1653 }
1654
TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA,zero)1655 TEST(F32_DWCONV_UP8X4__WASMRELAXEDSIMD_FMA, zero) {
1656 for (uint32_t mz = 0; mz < 4; mz++) {
1657 for (uint32_t channels = 16; channels < 128; channels += 24) {
1658 DWConvMicrokernelTester()
1659 .cr(8)
1660 .kr(4)
1661 .channels(channels)
1662 .input_offset(176)
1663 .zero_index(mz)
1664 .Test(xnn_f32_dwconv_ukernel_up8x4__wasmrelaxedsimd_fma);
1665 }
1666 }
1667 }
1668 #endif // XNN_ARCH_WASMRELAXEDSIMD
1669
1670
1671 #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,c_eq_8)1672 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, c_eq_8) {
1673 DWConvMicrokernelTester()
1674 .cr(8)
1675 .kr(9)
1676 .channels(8)
1677 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1678 }
1679
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,c_div_8)1680 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, c_div_8) {
1681 for (uint32_t channels = 16; channels < 128; channels += 24) {
1682 DWConvMicrokernelTester()
1683 .cr(8)
1684 .kr(9)
1685 .channels(channels)
1686 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1687 }
1688 }
1689
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,c_lt_8)1690 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, c_lt_8) {
1691 for (uint32_t channels = 1; channels < 8; channels++) {
1692 DWConvMicrokernelTester()
1693 .cr(8)
1694 .kr(9)
1695 .channels(channels)
1696 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1697 }
1698 }
1699
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,c_gt_8)1700 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, c_gt_8) {
1701 for (uint32_t channels = 9; channels < 16; channels++) {
1702 DWConvMicrokernelTester()
1703 .cr(8)
1704 .kr(9)
1705 .channels(channels)
1706 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1707 }
1708 }
1709
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,multipixel)1710 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, multipixel) {
1711 for (size_t channels = 1; channels <= 40; channels += 7) {
1712 DWConvMicrokernelTester()
1713 .cr(8)
1714 .kr(9)
1715 .channels(channels)
1716 .width(3)
1717 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1718 }
1719 }
1720
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,multipixel_with_step)1721 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, multipixel_with_step) {
1722 for (size_t channels = 1; channels <= 40; channels += 7) {
1723 for (size_t step = 2; step <= 9; step++) {
1724 DWConvMicrokernelTester()
1725 .cr(8)
1726 .kr(9)
1727 .channels(channels)
1728 .width(3)
1729 .step(step)
1730 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1731 }
1732 }
1733 }
1734
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,multipixel_with_output_stride)1735 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, multipixel_with_output_stride) {
1736 for (size_t channels = 1; channels <= 40; channels += 7) {
1737 DWConvMicrokernelTester()
1738 .cr(8)
1739 .kr(9)
1740 .channels(8)
1741 .width(5)
1742 .output_stride(43)
1743 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1744 }
1745 }
1746
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,input_offset)1747 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, input_offset) {
1748 for (uint32_t channels = 16; channels < 128; channels += 24) {
1749 DWConvMicrokernelTester()
1750 .cr(8)
1751 .kr(9)
1752 .channels(channels)
1753 .input_offset(176)
1754 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1755 }
1756 }
1757
TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA,zero)1758 TEST(F32_DWCONV_UP8X9__WASMRELAXEDSIMD_FMA, zero) {
1759 for (uint32_t mz = 0; mz < 9; mz++) {
1760 for (uint32_t channels = 16; channels < 128; channels += 24) {
1761 DWConvMicrokernelTester()
1762 .cr(8)
1763 .kr(9)
1764 .channels(channels)
1765 .input_offset(176)
1766 .zero_index(mz)
1767 .Test(xnn_f32_dwconv_ukernel_up8x9__wasmrelaxedsimd_fma);
1768 }
1769 }
1770 }
1771 #endif // XNN_ARCH_WASMRELAXEDSIMD
1772
1773
1774 #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,c_eq_8)1775 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, c_eq_8) {
1776 DWConvMicrokernelTester()
1777 .cr(8)
1778 .kr(25)
1779 .channels(8)
1780 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1781 }
1782
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,c_div_8)1783 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, c_div_8) {
1784 for (uint32_t channels = 16; channels < 128; channels += 24) {
1785 DWConvMicrokernelTester()
1786 .cr(8)
1787 .kr(25)
1788 .channels(channels)
1789 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1790 }
1791 }
1792
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,c_lt_8)1793 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, c_lt_8) {
1794 for (uint32_t channels = 1; channels < 8; channels++) {
1795 DWConvMicrokernelTester()
1796 .cr(8)
1797 .kr(25)
1798 .channels(channels)
1799 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1800 }
1801 }
1802
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,c_gt_8)1803 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, c_gt_8) {
1804 for (uint32_t channels = 9; channels < 16; channels++) {
1805 DWConvMicrokernelTester()
1806 .cr(8)
1807 .kr(25)
1808 .channels(channels)
1809 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1810 }
1811 }
1812
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,multipixel)1813 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, multipixel) {
1814 for (size_t channels = 1; channels <= 40; channels += 7) {
1815 DWConvMicrokernelTester()
1816 .cr(8)
1817 .kr(25)
1818 .channels(channels)
1819 .width(3)
1820 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1821 }
1822 }
1823
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,multipixel_with_step)1824 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, multipixel_with_step) {
1825 for (size_t channels = 1; channels <= 40; channels += 7) {
1826 for (size_t step = 2; step <= 25; step++) {
1827 DWConvMicrokernelTester()
1828 .cr(8)
1829 .kr(25)
1830 .channels(channels)
1831 .width(3)
1832 .step(step)
1833 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1834 }
1835 }
1836 }
1837
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,multipixel_with_output_stride)1838 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, multipixel_with_output_stride) {
1839 for (size_t channels = 1; channels <= 40; channels += 7) {
1840 DWConvMicrokernelTester()
1841 .cr(8)
1842 .kr(25)
1843 .channels(8)
1844 .width(5)
1845 .output_stride(43)
1846 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1847 }
1848 }
1849
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,input_offset)1850 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, input_offset) {
1851 for (uint32_t channels = 16; channels < 128; channels += 24) {
1852 DWConvMicrokernelTester()
1853 .cr(8)
1854 .kr(25)
1855 .channels(channels)
1856 .input_offset(176)
1857 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1858 }
1859 }
1860
TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA,zero)1861 TEST(F32_DWCONV_UP8X25__WASMRELAXEDSIMD_FMA, zero) {
1862 for (uint32_t mz = 0; mz < 25; mz++) {
1863 for (uint32_t channels = 16; channels < 128; channels += 24) {
1864 DWConvMicrokernelTester()
1865 .cr(8)
1866 .kr(25)
1867 .channels(channels)
1868 .input_offset(176)
1869 .zero_index(mz)
1870 .Test(xnn_f32_dwconv_ukernel_up8x25__wasmrelaxedsimd_fma);
1871 }
1872 }
1873 }
1874 #endif // XNN_ARCH_WASMRELAXEDSIMD
1875
1876
TEST(F32_DWCONV_UP1X3__SCALAR,c_eq_1)1877 TEST(F32_DWCONV_UP1X3__SCALAR, c_eq_1) {
1878 DWConvMicrokernelTester()
1879 .cr(1)
1880 .kr(3)
1881 .channels(1)
1882 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar);
1883 }
1884
TEST(F32_DWCONV_UP1X3__SCALAR,c_gt_1)1885 TEST(F32_DWCONV_UP1X3__SCALAR, c_gt_1) {
1886 for (uint32_t channels = 2; channels < 10; channels++) {
1887 DWConvMicrokernelTester()
1888 .cr(1)
1889 .kr(3)
1890 .channels(channels)
1891 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar);
1892 }
1893 }
1894
TEST(F32_DWCONV_UP1X3__SCALAR,multipixel)1895 TEST(F32_DWCONV_UP1X3__SCALAR, multipixel) {
1896 for (size_t channels = 1; channels <= 5; channels += 1) {
1897 DWConvMicrokernelTester()
1898 .cr(1)
1899 .kr(3)
1900 .channels(channels)
1901 .width(3)
1902 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar);
1903 }
1904 }
1905
TEST(F32_DWCONV_UP1X3__SCALAR,multipixel_with_step)1906 TEST(F32_DWCONV_UP1X3__SCALAR, multipixel_with_step) {
1907 for (size_t channels = 1; channels <= 5; channels += 1) {
1908 for (size_t step = 2; step <= 3; step++) {
1909 DWConvMicrokernelTester()
1910 .cr(1)
1911 .kr(3)
1912 .channels(channels)
1913 .width(3)
1914 .step(step)
1915 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar);
1916 }
1917 }
1918 }
1919
TEST(F32_DWCONV_UP1X3__SCALAR,multipixel_with_output_stride)1920 TEST(F32_DWCONV_UP1X3__SCALAR, multipixel_with_output_stride) {
1921 for (size_t channels = 1; channels <= 5; channels += 1) {
1922 DWConvMicrokernelTester()
1923 .cr(1)
1924 .kr(3)
1925 .channels(1)
1926 .width(5)
1927 .output_stride(7)
1928 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar);
1929 }
1930 }
1931
TEST(F32_DWCONV_UP1X3__SCALAR,input_offset)1932 TEST(F32_DWCONV_UP1X3__SCALAR, input_offset) {
1933 for (uint32_t channels = 2; channels < 16; channels += 3) {
1934 DWConvMicrokernelTester()
1935 .cr(1)
1936 .kr(3)
1937 .channels(channels)
1938 .input_offset(48)
1939 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar);
1940 }
1941 }
1942
TEST(F32_DWCONV_UP1X3__SCALAR,zero)1943 TEST(F32_DWCONV_UP1X3__SCALAR, zero) {
1944 for (uint32_t mz = 0; mz < 3; mz++) {
1945 for (uint32_t channels = 2; channels < 16; channels += 3) {
1946 DWConvMicrokernelTester()
1947 .cr(1)
1948 .kr(3)
1949 .channels(channels)
1950 .input_offset(48)
1951 .zero_index(mz)
1952 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar);
1953 }
1954 }
1955 }
1956
TEST(F32_DWCONV_UP1X3__SCALAR_ACC2,c_eq_1)1957 TEST(F32_DWCONV_UP1X3__SCALAR_ACC2, c_eq_1) {
1958 DWConvMicrokernelTester()
1959 .cr(1)
1960 .kr(3)
1961 .channels(1)
1962 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar_acc2);
1963 }
1964
TEST(F32_DWCONV_UP1X3__SCALAR_ACC2,c_gt_1)1965 TEST(F32_DWCONV_UP1X3__SCALAR_ACC2, c_gt_1) {
1966 for (uint32_t channels = 2; channels < 10; channels++) {
1967 DWConvMicrokernelTester()
1968 .cr(1)
1969 .kr(3)
1970 .channels(channels)
1971 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar_acc2);
1972 }
1973 }
1974
TEST(F32_DWCONV_UP1X3__SCALAR_ACC2,multipixel)1975 TEST(F32_DWCONV_UP1X3__SCALAR_ACC2, multipixel) {
1976 for (size_t channels = 1; channels <= 5; channels += 1) {
1977 DWConvMicrokernelTester()
1978 .cr(1)
1979 .kr(3)
1980 .channels(channels)
1981 .width(3)
1982 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar_acc2);
1983 }
1984 }
1985
TEST(F32_DWCONV_UP1X3__SCALAR_ACC2,multipixel_with_step)1986 TEST(F32_DWCONV_UP1X3__SCALAR_ACC2, multipixel_with_step) {
1987 for (size_t channels = 1; channels <= 5; channels += 1) {
1988 for (size_t step = 2; step <= 3; step++) {
1989 DWConvMicrokernelTester()
1990 .cr(1)
1991 .kr(3)
1992 .channels(channels)
1993 .width(3)
1994 .step(step)
1995 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar_acc2);
1996 }
1997 }
1998 }
1999
TEST(F32_DWCONV_UP1X3__SCALAR_ACC2,multipixel_with_output_stride)2000 TEST(F32_DWCONV_UP1X3__SCALAR_ACC2, multipixel_with_output_stride) {
2001 for (size_t channels = 1; channels <= 5; channels += 1) {
2002 DWConvMicrokernelTester()
2003 .cr(1)
2004 .kr(3)
2005 .channels(1)
2006 .width(5)
2007 .output_stride(7)
2008 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar_acc2);
2009 }
2010 }
2011
TEST(F32_DWCONV_UP1X3__SCALAR_ACC2,input_offset)2012 TEST(F32_DWCONV_UP1X3__SCALAR_ACC2, input_offset) {
2013 for (uint32_t channels = 2; channels < 16; channels += 3) {
2014 DWConvMicrokernelTester()
2015 .cr(1)
2016 .kr(3)
2017 .channels(channels)
2018 .input_offset(48)
2019 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar_acc2);
2020 }
2021 }
2022
TEST(F32_DWCONV_UP1X3__SCALAR_ACC2,zero)2023 TEST(F32_DWCONV_UP1X3__SCALAR_ACC2, zero) {
2024 for (uint32_t mz = 0; mz < 3; mz++) {
2025 for (uint32_t channels = 2; channels < 16; channels += 3) {
2026 DWConvMicrokernelTester()
2027 .cr(1)
2028 .kr(3)
2029 .channels(channels)
2030 .input_offset(48)
2031 .zero_index(mz)
2032 .Test(xnn_f32_dwconv_ukernel_up1x3__scalar_acc2);
2033 }
2034 }
2035 }
2036
TEST(F32_DWCONV_UP1X4__SCALAR,c_eq_1)2037 TEST(F32_DWCONV_UP1X4__SCALAR, c_eq_1) {
2038 DWConvMicrokernelTester()
2039 .cr(1)
2040 .kr(4)
2041 .channels(1)
2042 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar);
2043 }
2044
TEST(F32_DWCONV_UP1X4__SCALAR,c_gt_1)2045 TEST(F32_DWCONV_UP1X4__SCALAR, c_gt_1) {
2046 for (uint32_t channels = 2; channels < 10; channels++) {
2047 DWConvMicrokernelTester()
2048 .cr(1)
2049 .kr(4)
2050 .channels(channels)
2051 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar);
2052 }
2053 }
2054
TEST(F32_DWCONV_UP1X4__SCALAR,multipixel)2055 TEST(F32_DWCONV_UP1X4__SCALAR, multipixel) {
2056 for (size_t channels = 1; channels <= 5; channels += 1) {
2057 DWConvMicrokernelTester()
2058 .cr(1)
2059 .kr(4)
2060 .channels(channels)
2061 .width(3)
2062 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar);
2063 }
2064 }
2065
TEST(F32_DWCONV_UP1X4__SCALAR,multipixel_with_step)2066 TEST(F32_DWCONV_UP1X4__SCALAR, multipixel_with_step) {
2067 for (size_t channels = 1; channels <= 5; channels += 1) {
2068 for (size_t step = 2; step <= 4; step++) {
2069 DWConvMicrokernelTester()
2070 .cr(1)
2071 .kr(4)
2072 .channels(channels)
2073 .width(3)
2074 .step(step)
2075 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar);
2076 }
2077 }
2078 }
2079
TEST(F32_DWCONV_UP1X4__SCALAR,multipixel_with_output_stride)2080 TEST(F32_DWCONV_UP1X4__SCALAR, multipixel_with_output_stride) {
2081 for (size_t channels = 1; channels <= 5; channels += 1) {
2082 DWConvMicrokernelTester()
2083 .cr(1)
2084 .kr(4)
2085 .channels(1)
2086 .width(5)
2087 .output_stride(7)
2088 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar);
2089 }
2090 }
2091
TEST(F32_DWCONV_UP1X4__SCALAR,input_offset)2092 TEST(F32_DWCONV_UP1X4__SCALAR, input_offset) {
2093 for (uint32_t channels = 2; channels < 16; channels += 3) {
2094 DWConvMicrokernelTester()
2095 .cr(1)
2096 .kr(4)
2097 .channels(channels)
2098 .input_offset(48)
2099 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar);
2100 }
2101 }
2102
TEST(F32_DWCONV_UP1X4__SCALAR,zero)2103 TEST(F32_DWCONV_UP1X4__SCALAR, zero) {
2104 for (uint32_t mz = 0; mz < 4; mz++) {
2105 for (uint32_t channels = 2; channels < 16; channels += 3) {
2106 DWConvMicrokernelTester()
2107 .cr(1)
2108 .kr(4)
2109 .channels(channels)
2110 .input_offset(48)
2111 .zero_index(mz)
2112 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar);
2113 }
2114 }
2115 }
2116
TEST(F32_DWCONV_UP1X4__SCALAR_ACC2,c_eq_1)2117 TEST(F32_DWCONV_UP1X4__SCALAR_ACC2, c_eq_1) {
2118 DWConvMicrokernelTester()
2119 .cr(1)
2120 .kr(4)
2121 .channels(1)
2122 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar_acc2);
2123 }
2124
TEST(F32_DWCONV_UP1X4__SCALAR_ACC2,c_gt_1)2125 TEST(F32_DWCONV_UP1X4__SCALAR_ACC2, c_gt_1) {
2126 for (uint32_t channels = 2; channels < 10; channels++) {
2127 DWConvMicrokernelTester()
2128 .cr(1)
2129 .kr(4)
2130 .channels(channels)
2131 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar_acc2);
2132 }
2133 }
2134
TEST(F32_DWCONV_UP1X4__SCALAR_ACC2,multipixel)2135 TEST(F32_DWCONV_UP1X4__SCALAR_ACC2, multipixel) {
2136 for (size_t channels = 1; channels <= 5; channels += 1) {
2137 DWConvMicrokernelTester()
2138 .cr(1)
2139 .kr(4)
2140 .channels(channels)
2141 .width(3)
2142 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar_acc2);
2143 }
2144 }
2145
TEST(F32_DWCONV_UP1X4__SCALAR_ACC2,multipixel_with_step)2146 TEST(F32_DWCONV_UP1X4__SCALAR_ACC2, multipixel_with_step) {
2147 for (size_t channels = 1; channels <= 5; channels += 1) {
2148 for (size_t step = 2; step <= 4; step++) {
2149 DWConvMicrokernelTester()
2150 .cr(1)
2151 .kr(4)
2152 .channels(channels)
2153 .width(3)
2154 .step(step)
2155 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar_acc2);
2156 }
2157 }
2158 }
2159
TEST(F32_DWCONV_UP1X4__SCALAR_ACC2,multipixel_with_output_stride)2160 TEST(F32_DWCONV_UP1X4__SCALAR_ACC2, multipixel_with_output_stride) {
2161 for (size_t channels = 1; channels <= 5; channels += 1) {
2162 DWConvMicrokernelTester()
2163 .cr(1)
2164 .kr(4)
2165 .channels(1)
2166 .width(5)
2167 .output_stride(7)
2168 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar_acc2);
2169 }
2170 }
2171
TEST(F32_DWCONV_UP1X4__SCALAR_ACC2,input_offset)2172 TEST(F32_DWCONV_UP1X4__SCALAR_ACC2, input_offset) {
2173 for (uint32_t channels = 2; channels < 16; channels += 3) {
2174 DWConvMicrokernelTester()
2175 .cr(1)
2176 .kr(4)
2177 .channels(channels)
2178 .input_offset(48)
2179 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar_acc2);
2180 }
2181 }
2182
TEST(F32_DWCONV_UP1X4__SCALAR_ACC2,zero)2183 TEST(F32_DWCONV_UP1X4__SCALAR_ACC2, zero) {
2184 for (uint32_t mz = 0; mz < 4; mz++) {
2185 for (uint32_t channels = 2; channels < 16; channels += 3) {
2186 DWConvMicrokernelTester()
2187 .cr(1)
2188 .kr(4)
2189 .channels(channels)
2190 .input_offset(48)
2191 .zero_index(mz)
2192 .Test(xnn_f32_dwconv_ukernel_up1x4__scalar_acc2);
2193 }
2194 }
2195 }
2196
TEST(F32_DWCONV_UP1X9__SCALAR,c_eq_1)2197 TEST(F32_DWCONV_UP1X9__SCALAR, c_eq_1) {
2198 DWConvMicrokernelTester()
2199 .cr(1)
2200 .kr(9)
2201 .channels(1)
2202 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar);
2203 }
2204
TEST(F32_DWCONV_UP1X9__SCALAR,c_gt_1)2205 TEST(F32_DWCONV_UP1X9__SCALAR, c_gt_1) {
2206 for (uint32_t channels = 2; channels < 10; channels++) {
2207 DWConvMicrokernelTester()
2208 .cr(1)
2209 .kr(9)
2210 .channels(channels)
2211 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar);
2212 }
2213 }
2214
TEST(F32_DWCONV_UP1X9__SCALAR,multipixel)2215 TEST(F32_DWCONV_UP1X9__SCALAR, multipixel) {
2216 for (size_t channels = 1; channels <= 5; channels += 1) {
2217 DWConvMicrokernelTester()
2218 .cr(1)
2219 .kr(9)
2220 .channels(channels)
2221 .width(3)
2222 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar);
2223 }
2224 }
2225
TEST(F32_DWCONV_UP1X9__SCALAR,multipixel_with_step)2226 TEST(F32_DWCONV_UP1X9__SCALAR, multipixel_with_step) {
2227 for (size_t channels = 1; channels <= 5; channels += 1) {
2228 for (size_t step = 2; step <= 9; step++) {
2229 DWConvMicrokernelTester()
2230 .cr(1)
2231 .kr(9)
2232 .channels(channels)
2233 .width(3)
2234 .step(step)
2235 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar);
2236 }
2237 }
2238 }
2239
TEST(F32_DWCONV_UP1X9__SCALAR,multipixel_with_output_stride)2240 TEST(F32_DWCONV_UP1X9__SCALAR, multipixel_with_output_stride) {
2241 for (size_t channels = 1; channels <= 5; channels += 1) {
2242 DWConvMicrokernelTester()
2243 .cr(1)
2244 .kr(9)
2245 .channels(1)
2246 .width(5)
2247 .output_stride(7)
2248 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar);
2249 }
2250 }
2251
TEST(F32_DWCONV_UP1X9__SCALAR,input_offset)2252 TEST(F32_DWCONV_UP1X9__SCALAR, input_offset) {
2253 for (uint32_t channels = 2; channels < 16; channels += 3) {
2254 DWConvMicrokernelTester()
2255 .cr(1)
2256 .kr(9)
2257 .channels(channels)
2258 .input_offset(48)
2259 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar);
2260 }
2261 }
2262
TEST(F32_DWCONV_UP1X9__SCALAR,zero)2263 TEST(F32_DWCONV_UP1X9__SCALAR, zero) {
2264 for (uint32_t mz = 0; mz < 9; mz++) {
2265 for (uint32_t channels = 2; channels < 16; channels += 3) {
2266 DWConvMicrokernelTester()
2267 .cr(1)
2268 .kr(9)
2269 .channels(channels)
2270 .input_offset(48)
2271 .zero_index(mz)
2272 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar);
2273 }
2274 }
2275 }
2276
TEST(F32_DWCONV_UP1X9__SCALAR_ACC2,c_eq_1)2277 TEST(F32_DWCONV_UP1X9__SCALAR_ACC2, c_eq_1) {
2278 DWConvMicrokernelTester()
2279 .cr(1)
2280 .kr(9)
2281 .channels(1)
2282 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar_acc2);
2283 }
2284
TEST(F32_DWCONV_UP1X9__SCALAR_ACC2,c_gt_1)2285 TEST(F32_DWCONV_UP1X9__SCALAR_ACC2, c_gt_1) {
2286 for (uint32_t channels = 2; channels < 10; channels++) {
2287 DWConvMicrokernelTester()
2288 .cr(1)
2289 .kr(9)
2290 .channels(channels)
2291 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar_acc2);
2292 }
2293 }
2294
TEST(F32_DWCONV_UP1X9__SCALAR_ACC2,multipixel)2295 TEST(F32_DWCONV_UP1X9__SCALAR_ACC2, multipixel) {
2296 for (size_t channels = 1; channels <= 5; channels += 1) {
2297 DWConvMicrokernelTester()
2298 .cr(1)
2299 .kr(9)
2300 .channels(channels)
2301 .width(3)
2302 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar_acc2);
2303 }
2304 }
2305
TEST(F32_DWCONV_UP1X9__SCALAR_ACC2,multipixel_with_step)2306 TEST(F32_DWCONV_UP1X9__SCALAR_ACC2, multipixel_with_step) {
2307 for (size_t channels = 1; channels <= 5; channels += 1) {
2308 for (size_t step = 2; step <= 9; step++) {
2309 DWConvMicrokernelTester()
2310 .cr(1)
2311 .kr(9)
2312 .channels(channels)
2313 .width(3)
2314 .step(step)
2315 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar_acc2);
2316 }
2317 }
2318 }
2319
TEST(F32_DWCONV_UP1X9__SCALAR_ACC2,multipixel_with_output_stride)2320 TEST(F32_DWCONV_UP1X9__SCALAR_ACC2, multipixel_with_output_stride) {
2321 for (size_t channels = 1; channels <= 5; channels += 1) {
2322 DWConvMicrokernelTester()
2323 .cr(1)
2324 .kr(9)
2325 .channels(1)
2326 .width(5)
2327 .output_stride(7)
2328 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar_acc2);
2329 }
2330 }
2331
TEST(F32_DWCONV_UP1X9__SCALAR_ACC2,input_offset)2332 TEST(F32_DWCONV_UP1X9__SCALAR_ACC2, input_offset) {
2333 for (uint32_t channels = 2; channels < 16; channels += 3) {
2334 DWConvMicrokernelTester()
2335 .cr(1)
2336 .kr(9)
2337 .channels(channels)
2338 .input_offset(48)
2339 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar_acc2);
2340 }
2341 }
2342
TEST(F32_DWCONV_UP1X9__SCALAR_ACC2,zero)2343 TEST(F32_DWCONV_UP1X9__SCALAR_ACC2, zero) {
2344 for (uint32_t mz = 0; mz < 9; mz++) {
2345 for (uint32_t channels = 2; channels < 16; channels += 3) {
2346 DWConvMicrokernelTester()
2347 .cr(1)
2348 .kr(9)
2349 .channels(channels)
2350 .input_offset(48)
2351 .zero_index(mz)
2352 .Test(xnn_f32_dwconv_ukernel_up1x9__scalar_acc2);
2353 }
2354 }
2355 }
2356
TEST(F32_DWCONV_UP1X25__SCALAR,c_eq_1)2357 TEST(F32_DWCONV_UP1X25__SCALAR, c_eq_1) {
2358 DWConvMicrokernelTester()
2359 .cr(1)
2360 .kr(25)
2361 .channels(1)
2362 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar);
2363 }
2364
TEST(F32_DWCONV_UP1X25__SCALAR,c_gt_1)2365 TEST(F32_DWCONV_UP1X25__SCALAR, c_gt_1) {
2366 for (uint32_t channels = 2; channels < 10; channels++) {
2367 DWConvMicrokernelTester()
2368 .cr(1)
2369 .kr(25)
2370 .channels(channels)
2371 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar);
2372 }
2373 }
2374
TEST(F32_DWCONV_UP1X25__SCALAR,multipixel)2375 TEST(F32_DWCONV_UP1X25__SCALAR, multipixel) {
2376 for (size_t channels = 1; channels <= 5; channels += 1) {
2377 DWConvMicrokernelTester()
2378 .cr(1)
2379 .kr(25)
2380 .channels(channels)
2381 .width(3)
2382 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar);
2383 }
2384 }
2385
TEST(F32_DWCONV_UP1X25__SCALAR,multipixel_with_step)2386 TEST(F32_DWCONV_UP1X25__SCALAR, multipixel_with_step) {
2387 for (size_t channels = 1; channels <= 5; channels += 1) {
2388 for (size_t step = 2; step <= 25; step++) {
2389 DWConvMicrokernelTester()
2390 .cr(1)
2391 .kr(25)
2392 .channels(channels)
2393 .width(3)
2394 .step(step)
2395 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar);
2396 }
2397 }
2398 }
2399
TEST(F32_DWCONV_UP1X25__SCALAR,multipixel_with_output_stride)2400 TEST(F32_DWCONV_UP1X25__SCALAR, multipixel_with_output_stride) {
2401 for (size_t channels = 1; channels <= 5; channels += 1) {
2402 DWConvMicrokernelTester()
2403 .cr(1)
2404 .kr(25)
2405 .channels(1)
2406 .width(5)
2407 .output_stride(7)
2408 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar);
2409 }
2410 }
2411
TEST(F32_DWCONV_UP1X25__SCALAR,input_offset)2412 TEST(F32_DWCONV_UP1X25__SCALAR, input_offset) {
2413 for (uint32_t channels = 2; channels < 16; channels += 3) {
2414 DWConvMicrokernelTester()
2415 .cr(1)
2416 .kr(25)
2417 .channels(channels)
2418 .input_offset(48)
2419 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar);
2420 }
2421 }
2422
TEST(F32_DWCONV_UP1X25__SCALAR,zero)2423 TEST(F32_DWCONV_UP1X25__SCALAR, zero) {
2424 for (uint32_t mz = 0; mz < 25; mz++) {
2425 for (uint32_t channels = 2; channels < 16; channels += 3) {
2426 DWConvMicrokernelTester()
2427 .cr(1)
2428 .kr(25)
2429 .channels(channels)
2430 .input_offset(48)
2431 .zero_index(mz)
2432 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar);
2433 }
2434 }
2435 }
2436
TEST(F32_DWCONV_UP1X25__SCALAR_ACC2,c_eq_1)2437 TEST(F32_DWCONV_UP1X25__SCALAR_ACC2, c_eq_1) {
2438 DWConvMicrokernelTester()
2439 .cr(1)
2440 .kr(25)
2441 .channels(1)
2442 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar_acc2);
2443 }
2444
TEST(F32_DWCONV_UP1X25__SCALAR_ACC2,c_gt_1)2445 TEST(F32_DWCONV_UP1X25__SCALAR_ACC2, c_gt_1) {
2446 for (uint32_t channels = 2; channels < 10; channels++) {
2447 DWConvMicrokernelTester()
2448 .cr(1)
2449 .kr(25)
2450 .channels(channels)
2451 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar_acc2);
2452 }
2453 }
2454
TEST(F32_DWCONV_UP1X25__SCALAR_ACC2,multipixel)2455 TEST(F32_DWCONV_UP1X25__SCALAR_ACC2, multipixel) {
2456 for (size_t channels = 1; channels <= 5; channels += 1) {
2457 DWConvMicrokernelTester()
2458 .cr(1)
2459 .kr(25)
2460 .channels(channels)
2461 .width(3)
2462 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar_acc2);
2463 }
2464 }
2465
TEST(F32_DWCONV_UP1X25__SCALAR_ACC2,multipixel_with_step)2466 TEST(F32_DWCONV_UP1X25__SCALAR_ACC2, multipixel_with_step) {
2467 for (size_t channels = 1; channels <= 5; channels += 1) {
2468 for (size_t step = 2; step <= 25; step++) {
2469 DWConvMicrokernelTester()
2470 .cr(1)
2471 .kr(25)
2472 .channels(channels)
2473 .width(3)
2474 .step(step)
2475 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar_acc2);
2476 }
2477 }
2478 }
2479
TEST(F32_DWCONV_UP1X25__SCALAR_ACC2,multipixel_with_output_stride)2480 TEST(F32_DWCONV_UP1X25__SCALAR_ACC2, multipixel_with_output_stride) {
2481 for (size_t channels = 1; channels <= 5; channels += 1) {
2482 DWConvMicrokernelTester()
2483 .cr(1)
2484 .kr(25)
2485 .channels(1)
2486 .width(5)
2487 .output_stride(7)
2488 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar_acc2);
2489 }
2490 }
2491
TEST(F32_DWCONV_UP1X25__SCALAR_ACC2,input_offset)2492 TEST(F32_DWCONV_UP1X25__SCALAR_ACC2, input_offset) {
2493 for (uint32_t channels = 2; channels < 16; channels += 3) {
2494 DWConvMicrokernelTester()
2495 .cr(1)
2496 .kr(25)
2497 .channels(channels)
2498 .input_offset(48)
2499 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar_acc2);
2500 }
2501 }
2502
TEST(F32_DWCONV_UP1X25__SCALAR_ACC2,zero)2503 TEST(F32_DWCONV_UP1X25__SCALAR_ACC2, zero) {
2504 for (uint32_t mz = 0; mz < 25; mz++) {
2505 for (uint32_t channels = 2; channels < 16; channels += 3) {
2506 DWConvMicrokernelTester()
2507 .cr(1)
2508 .kr(25)
2509 .channels(channels)
2510 .input_offset(48)
2511 .zero_index(mz)
2512 .Test(xnn_f32_dwconv_ukernel_up1x25__scalar_acc2);
2513 }
2514 }
2515 }
2516
TEST(F32_DWCONV_UP2X3__SCALAR,c_eq_2)2517 TEST(F32_DWCONV_UP2X3__SCALAR, c_eq_2) {
2518 DWConvMicrokernelTester()
2519 .cr(2)
2520 .kr(3)
2521 .channels(2)
2522 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2523 }
2524
TEST(F32_DWCONV_UP2X3__SCALAR,c_div_2)2525 TEST(F32_DWCONV_UP2X3__SCALAR, c_div_2) {
2526 for (uint32_t channels = 4; channels < 32; channels += 6) {
2527 DWConvMicrokernelTester()
2528 .cr(2)
2529 .kr(3)
2530 .channels(channels)
2531 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2532 }
2533 }
2534
TEST(F32_DWCONV_UP2X3__SCALAR,c_lt_2)2535 TEST(F32_DWCONV_UP2X3__SCALAR, c_lt_2) {
2536 for (uint32_t channels = 1; channels < 2; channels++) {
2537 DWConvMicrokernelTester()
2538 .cr(2)
2539 .kr(3)
2540 .channels(channels)
2541 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2542 }
2543 }
2544
TEST(F32_DWCONV_UP2X3__SCALAR,c_gt_2)2545 TEST(F32_DWCONV_UP2X3__SCALAR, c_gt_2) {
2546 for (uint32_t channels = 3; channels < 4; channels++) {
2547 DWConvMicrokernelTester()
2548 .cr(2)
2549 .kr(3)
2550 .channels(channels)
2551 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2552 }
2553 }
2554
TEST(F32_DWCONV_UP2X3__SCALAR,multipixel)2555 TEST(F32_DWCONV_UP2X3__SCALAR, multipixel) {
2556 for (size_t channels = 1; channels <= 10; channels += 1) {
2557 DWConvMicrokernelTester()
2558 .cr(2)
2559 .kr(3)
2560 .channels(channels)
2561 .width(3)
2562 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2563 }
2564 }
2565
TEST(F32_DWCONV_UP2X3__SCALAR,multipixel_with_step)2566 TEST(F32_DWCONV_UP2X3__SCALAR, multipixel_with_step) {
2567 for (size_t channels = 1; channels <= 10; channels += 1) {
2568 for (size_t step = 2; step <= 3; step++) {
2569 DWConvMicrokernelTester()
2570 .cr(2)
2571 .kr(3)
2572 .channels(channels)
2573 .width(3)
2574 .step(step)
2575 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2576 }
2577 }
2578 }
2579
TEST(F32_DWCONV_UP2X3__SCALAR,multipixel_with_output_stride)2580 TEST(F32_DWCONV_UP2X3__SCALAR, multipixel_with_output_stride) {
2581 for (size_t channels = 1; channels <= 10; channels += 1) {
2582 DWConvMicrokernelTester()
2583 .cr(2)
2584 .kr(3)
2585 .channels(2)
2586 .width(5)
2587 .output_stride(13)
2588 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2589 }
2590 }
2591
TEST(F32_DWCONV_UP2X3__SCALAR,input_offset)2592 TEST(F32_DWCONV_UP2X3__SCALAR, input_offset) {
2593 for (uint32_t channels = 4; channels < 32; channels += 6) {
2594 DWConvMicrokernelTester()
2595 .cr(2)
2596 .kr(3)
2597 .channels(channels)
2598 .input_offset(80)
2599 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2600 }
2601 }
2602
TEST(F32_DWCONV_UP2X3__SCALAR,zero)2603 TEST(F32_DWCONV_UP2X3__SCALAR, zero) {
2604 for (uint32_t mz = 0; mz < 3; mz++) {
2605 for (uint32_t channels = 4; channels < 32; channels += 6) {
2606 DWConvMicrokernelTester()
2607 .cr(2)
2608 .kr(3)
2609 .channels(channels)
2610 .input_offset(80)
2611 .zero_index(mz)
2612 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar);
2613 }
2614 }
2615 }
2616
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,c_eq_2)2617 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, c_eq_2) {
2618 DWConvMicrokernelTester()
2619 .cr(2)
2620 .kr(3)
2621 .channels(2)
2622 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2623 }
2624
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,c_div_2)2625 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, c_div_2) {
2626 for (uint32_t channels = 4; channels < 32; channels += 6) {
2627 DWConvMicrokernelTester()
2628 .cr(2)
2629 .kr(3)
2630 .channels(channels)
2631 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2632 }
2633 }
2634
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,c_lt_2)2635 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, c_lt_2) {
2636 for (uint32_t channels = 1; channels < 2; channels++) {
2637 DWConvMicrokernelTester()
2638 .cr(2)
2639 .kr(3)
2640 .channels(channels)
2641 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2642 }
2643 }
2644
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,c_gt_2)2645 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, c_gt_2) {
2646 for (uint32_t channels = 3; channels < 4; channels++) {
2647 DWConvMicrokernelTester()
2648 .cr(2)
2649 .kr(3)
2650 .channels(channels)
2651 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2652 }
2653 }
2654
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,multipixel)2655 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, multipixel) {
2656 for (size_t channels = 1; channels <= 10; channels += 1) {
2657 DWConvMicrokernelTester()
2658 .cr(2)
2659 .kr(3)
2660 .channels(channels)
2661 .width(3)
2662 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2663 }
2664 }
2665
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,multipixel_with_step)2666 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, multipixel_with_step) {
2667 for (size_t channels = 1; channels <= 10; channels += 1) {
2668 for (size_t step = 2; step <= 3; step++) {
2669 DWConvMicrokernelTester()
2670 .cr(2)
2671 .kr(3)
2672 .channels(channels)
2673 .width(3)
2674 .step(step)
2675 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2676 }
2677 }
2678 }
2679
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,multipixel_with_output_stride)2680 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, multipixel_with_output_stride) {
2681 for (size_t channels = 1; channels <= 10; channels += 1) {
2682 DWConvMicrokernelTester()
2683 .cr(2)
2684 .kr(3)
2685 .channels(2)
2686 .width(5)
2687 .output_stride(13)
2688 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2689 }
2690 }
2691
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,input_offset)2692 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, input_offset) {
2693 for (uint32_t channels = 4; channels < 32; channels += 6) {
2694 DWConvMicrokernelTester()
2695 .cr(2)
2696 .kr(3)
2697 .channels(channels)
2698 .input_offset(80)
2699 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2700 }
2701 }
2702
TEST(F32_DWCONV_UP2X3__SCALAR_ACC2,zero)2703 TEST(F32_DWCONV_UP2X3__SCALAR_ACC2, zero) {
2704 for (uint32_t mz = 0; mz < 3; mz++) {
2705 for (uint32_t channels = 4; channels < 32; channels += 6) {
2706 DWConvMicrokernelTester()
2707 .cr(2)
2708 .kr(3)
2709 .channels(channels)
2710 .input_offset(80)
2711 .zero_index(mz)
2712 .Test(xnn_f32_dwconv_ukernel_up2x3__scalar_acc2);
2713 }
2714 }
2715 }
2716
TEST(F32_DWCONV_UP2X4__SCALAR,c_eq_2)2717 TEST(F32_DWCONV_UP2X4__SCALAR, c_eq_2) {
2718 DWConvMicrokernelTester()
2719 .cr(2)
2720 .kr(4)
2721 .channels(2)
2722 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2723 }
2724
TEST(F32_DWCONV_UP2X4__SCALAR,c_div_2)2725 TEST(F32_DWCONV_UP2X4__SCALAR, c_div_2) {
2726 for (uint32_t channels = 4; channels < 32; channels += 6) {
2727 DWConvMicrokernelTester()
2728 .cr(2)
2729 .kr(4)
2730 .channels(channels)
2731 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2732 }
2733 }
2734
TEST(F32_DWCONV_UP2X4__SCALAR,c_lt_2)2735 TEST(F32_DWCONV_UP2X4__SCALAR, c_lt_2) {
2736 for (uint32_t channels = 1; channels < 2; channels++) {
2737 DWConvMicrokernelTester()
2738 .cr(2)
2739 .kr(4)
2740 .channels(channels)
2741 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2742 }
2743 }
2744
TEST(F32_DWCONV_UP2X4__SCALAR,c_gt_2)2745 TEST(F32_DWCONV_UP2X4__SCALAR, c_gt_2) {
2746 for (uint32_t channels = 3; channels < 4; channels++) {
2747 DWConvMicrokernelTester()
2748 .cr(2)
2749 .kr(4)
2750 .channels(channels)
2751 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2752 }
2753 }
2754
TEST(F32_DWCONV_UP2X4__SCALAR,multipixel)2755 TEST(F32_DWCONV_UP2X4__SCALAR, multipixel) {
2756 for (size_t channels = 1; channels <= 10; channels += 1) {
2757 DWConvMicrokernelTester()
2758 .cr(2)
2759 .kr(4)
2760 .channels(channels)
2761 .width(3)
2762 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2763 }
2764 }
2765
TEST(F32_DWCONV_UP2X4__SCALAR,multipixel_with_step)2766 TEST(F32_DWCONV_UP2X4__SCALAR, multipixel_with_step) {
2767 for (size_t channels = 1; channels <= 10; channels += 1) {
2768 for (size_t step = 2; step <= 4; step++) {
2769 DWConvMicrokernelTester()
2770 .cr(2)
2771 .kr(4)
2772 .channels(channels)
2773 .width(3)
2774 .step(step)
2775 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2776 }
2777 }
2778 }
2779
TEST(F32_DWCONV_UP2X4__SCALAR,multipixel_with_output_stride)2780 TEST(F32_DWCONV_UP2X4__SCALAR, multipixel_with_output_stride) {
2781 for (size_t channels = 1; channels <= 10; channels += 1) {
2782 DWConvMicrokernelTester()
2783 .cr(2)
2784 .kr(4)
2785 .channels(2)
2786 .width(5)
2787 .output_stride(13)
2788 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2789 }
2790 }
2791
TEST(F32_DWCONV_UP2X4__SCALAR,input_offset)2792 TEST(F32_DWCONV_UP2X4__SCALAR, input_offset) {
2793 for (uint32_t channels = 4; channels < 32; channels += 6) {
2794 DWConvMicrokernelTester()
2795 .cr(2)
2796 .kr(4)
2797 .channels(channels)
2798 .input_offset(80)
2799 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2800 }
2801 }
2802
TEST(F32_DWCONV_UP2X4__SCALAR,zero)2803 TEST(F32_DWCONV_UP2X4__SCALAR, zero) {
2804 for (uint32_t mz = 0; mz < 4; mz++) {
2805 for (uint32_t channels = 4; channels < 32; channels += 6) {
2806 DWConvMicrokernelTester()
2807 .cr(2)
2808 .kr(4)
2809 .channels(channels)
2810 .input_offset(80)
2811 .zero_index(mz)
2812 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar);
2813 }
2814 }
2815 }
2816
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,c_eq_2)2817 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, c_eq_2) {
2818 DWConvMicrokernelTester()
2819 .cr(2)
2820 .kr(4)
2821 .channels(2)
2822 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2823 }
2824
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,c_div_2)2825 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, c_div_2) {
2826 for (uint32_t channels = 4; channels < 32; channels += 6) {
2827 DWConvMicrokernelTester()
2828 .cr(2)
2829 .kr(4)
2830 .channels(channels)
2831 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2832 }
2833 }
2834
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,c_lt_2)2835 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, c_lt_2) {
2836 for (uint32_t channels = 1; channels < 2; channels++) {
2837 DWConvMicrokernelTester()
2838 .cr(2)
2839 .kr(4)
2840 .channels(channels)
2841 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2842 }
2843 }
2844
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,c_gt_2)2845 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, c_gt_2) {
2846 for (uint32_t channels = 3; channels < 4; channels++) {
2847 DWConvMicrokernelTester()
2848 .cr(2)
2849 .kr(4)
2850 .channels(channels)
2851 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2852 }
2853 }
2854
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,multipixel)2855 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, multipixel) {
2856 for (size_t channels = 1; channels <= 10; channels += 1) {
2857 DWConvMicrokernelTester()
2858 .cr(2)
2859 .kr(4)
2860 .channels(channels)
2861 .width(3)
2862 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2863 }
2864 }
2865
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,multipixel_with_step)2866 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, multipixel_with_step) {
2867 for (size_t channels = 1; channels <= 10; channels += 1) {
2868 for (size_t step = 2; step <= 4; step++) {
2869 DWConvMicrokernelTester()
2870 .cr(2)
2871 .kr(4)
2872 .channels(channels)
2873 .width(3)
2874 .step(step)
2875 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2876 }
2877 }
2878 }
2879
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,multipixel_with_output_stride)2880 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, multipixel_with_output_stride) {
2881 for (size_t channels = 1; channels <= 10; channels += 1) {
2882 DWConvMicrokernelTester()
2883 .cr(2)
2884 .kr(4)
2885 .channels(2)
2886 .width(5)
2887 .output_stride(13)
2888 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2889 }
2890 }
2891
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,input_offset)2892 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, input_offset) {
2893 for (uint32_t channels = 4; channels < 32; channels += 6) {
2894 DWConvMicrokernelTester()
2895 .cr(2)
2896 .kr(4)
2897 .channels(channels)
2898 .input_offset(80)
2899 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2900 }
2901 }
2902
TEST(F32_DWCONV_UP2X4__SCALAR_ACC2,zero)2903 TEST(F32_DWCONV_UP2X4__SCALAR_ACC2, zero) {
2904 for (uint32_t mz = 0; mz < 4; mz++) {
2905 for (uint32_t channels = 4; channels < 32; channels += 6) {
2906 DWConvMicrokernelTester()
2907 .cr(2)
2908 .kr(4)
2909 .channels(channels)
2910 .input_offset(80)
2911 .zero_index(mz)
2912 .Test(xnn_f32_dwconv_ukernel_up2x4__scalar_acc2);
2913 }
2914 }
2915 }
2916
TEST(F32_DWCONV_UP2X9__SCALAR,c_eq_2)2917 TEST(F32_DWCONV_UP2X9__SCALAR, c_eq_2) {
2918 DWConvMicrokernelTester()
2919 .cr(2)
2920 .kr(9)
2921 .channels(2)
2922 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
2923 }
2924
TEST(F32_DWCONV_UP2X9__SCALAR,c_div_2)2925 TEST(F32_DWCONV_UP2X9__SCALAR, c_div_2) {
2926 for (uint32_t channels = 4; channels < 32; channels += 6) {
2927 DWConvMicrokernelTester()
2928 .cr(2)
2929 .kr(9)
2930 .channels(channels)
2931 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
2932 }
2933 }
2934
TEST(F32_DWCONV_UP2X9__SCALAR,c_lt_2)2935 TEST(F32_DWCONV_UP2X9__SCALAR, c_lt_2) {
2936 for (uint32_t channels = 1; channels < 2; channels++) {
2937 DWConvMicrokernelTester()
2938 .cr(2)
2939 .kr(9)
2940 .channels(channels)
2941 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
2942 }
2943 }
2944
TEST(F32_DWCONV_UP2X9__SCALAR,c_gt_2)2945 TEST(F32_DWCONV_UP2X9__SCALAR, c_gt_2) {
2946 for (uint32_t channels = 3; channels < 4; channels++) {
2947 DWConvMicrokernelTester()
2948 .cr(2)
2949 .kr(9)
2950 .channels(channels)
2951 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
2952 }
2953 }
2954
TEST(F32_DWCONV_UP2X9__SCALAR,multipixel)2955 TEST(F32_DWCONV_UP2X9__SCALAR, multipixel) {
2956 for (size_t channels = 1; channels <= 10; channels += 1) {
2957 DWConvMicrokernelTester()
2958 .cr(2)
2959 .kr(9)
2960 .channels(channels)
2961 .width(3)
2962 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
2963 }
2964 }
2965
TEST(F32_DWCONV_UP2X9__SCALAR,multipixel_with_step)2966 TEST(F32_DWCONV_UP2X9__SCALAR, multipixel_with_step) {
2967 for (size_t channels = 1; channels <= 10; channels += 1) {
2968 for (size_t step = 2; step <= 9; step++) {
2969 DWConvMicrokernelTester()
2970 .cr(2)
2971 .kr(9)
2972 .channels(channels)
2973 .width(3)
2974 .step(step)
2975 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
2976 }
2977 }
2978 }
2979
TEST(F32_DWCONV_UP2X9__SCALAR,multipixel_with_output_stride)2980 TEST(F32_DWCONV_UP2X9__SCALAR, multipixel_with_output_stride) {
2981 for (size_t channels = 1; channels <= 10; channels += 1) {
2982 DWConvMicrokernelTester()
2983 .cr(2)
2984 .kr(9)
2985 .channels(2)
2986 .width(5)
2987 .output_stride(13)
2988 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
2989 }
2990 }
2991
TEST(F32_DWCONV_UP2X9__SCALAR,input_offset)2992 TEST(F32_DWCONV_UP2X9__SCALAR, input_offset) {
2993 for (uint32_t channels = 4; channels < 32; channels += 6) {
2994 DWConvMicrokernelTester()
2995 .cr(2)
2996 .kr(9)
2997 .channels(channels)
2998 .input_offset(80)
2999 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
3000 }
3001 }
3002
TEST(F32_DWCONV_UP2X9__SCALAR,zero)3003 TEST(F32_DWCONV_UP2X9__SCALAR, zero) {
3004 for (uint32_t mz = 0; mz < 9; mz++) {
3005 for (uint32_t channels = 4; channels < 32; channels += 6) {
3006 DWConvMicrokernelTester()
3007 .cr(2)
3008 .kr(9)
3009 .channels(channels)
3010 .input_offset(80)
3011 .zero_index(mz)
3012 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar);
3013 }
3014 }
3015 }
3016
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,c_eq_2)3017 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, c_eq_2) {
3018 DWConvMicrokernelTester()
3019 .cr(2)
3020 .kr(9)
3021 .channels(2)
3022 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3023 }
3024
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,c_div_2)3025 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, c_div_2) {
3026 for (uint32_t channels = 4; channels < 32; channels += 6) {
3027 DWConvMicrokernelTester()
3028 .cr(2)
3029 .kr(9)
3030 .channels(channels)
3031 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3032 }
3033 }
3034
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,c_lt_2)3035 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, c_lt_2) {
3036 for (uint32_t channels = 1; channels < 2; channels++) {
3037 DWConvMicrokernelTester()
3038 .cr(2)
3039 .kr(9)
3040 .channels(channels)
3041 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3042 }
3043 }
3044
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,c_gt_2)3045 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, c_gt_2) {
3046 for (uint32_t channels = 3; channels < 4; channels++) {
3047 DWConvMicrokernelTester()
3048 .cr(2)
3049 .kr(9)
3050 .channels(channels)
3051 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3052 }
3053 }
3054
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,multipixel)3055 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, multipixel) {
3056 for (size_t channels = 1; channels <= 10; channels += 1) {
3057 DWConvMicrokernelTester()
3058 .cr(2)
3059 .kr(9)
3060 .channels(channels)
3061 .width(3)
3062 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3063 }
3064 }
3065
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,multipixel_with_step)3066 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, multipixel_with_step) {
3067 for (size_t channels = 1; channels <= 10; channels += 1) {
3068 for (size_t step = 2; step <= 9; step++) {
3069 DWConvMicrokernelTester()
3070 .cr(2)
3071 .kr(9)
3072 .channels(channels)
3073 .width(3)
3074 .step(step)
3075 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3076 }
3077 }
3078 }
3079
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,multipixel_with_output_stride)3080 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, multipixel_with_output_stride) {
3081 for (size_t channels = 1; channels <= 10; channels += 1) {
3082 DWConvMicrokernelTester()
3083 .cr(2)
3084 .kr(9)
3085 .channels(2)
3086 .width(5)
3087 .output_stride(13)
3088 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3089 }
3090 }
3091
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,input_offset)3092 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, input_offset) {
3093 for (uint32_t channels = 4; channels < 32; channels += 6) {
3094 DWConvMicrokernelTester()
3095 .cr(2)
3096 .kr(9)
3097 .channels(channels)
3098 .input_offset(80)
3099 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3100 }
3101 }
3102
TEST(F32_DWCONV_UP2X9__SCALAR_ACC2,zero)3103 TEST(F32_DWCONV_UP2X9__SCALAR_ACC2, zero) {
3104 for (uint32_t mz = 0; mz < 9; mz++) {
3105 for (uint32_t channels = 4; channels < 32; channels += 6) {
3106 DWConvMicrokernelTester()
3107 .cr(2)
3108 .kr(9)
3109 .channels(channels)
3110 .input_offset(80)
3111 .zero_index(mz)
3112 .Test(xnn_f32_dwconv_ukernel_up2x9__scalar_acc2);
3113 }
3114 }
3115 }
3116
TEST(F32_DWCONV_UP2X25__SCALAR,c_eq_2)3117 TEST(F32_DWCONV_UP2X25__SCALAR, c_eq_2) {
3118 DWConvMicrokernelTester()
3119 .cr(2)
3120 .kr(25)
3121 .channels(2)
3122 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3123 }
3124
TEST(F32_DWCONV_UP2X25__SCALAR,c_div_2)3125 TEST(F32_DWCONV_UP2X25__SCALAR, c_div_2) {
3126 for (uint32_t channels = 4; channels < 32; channels += 6) {
3127 DWConvMicrokernelTester()
3128 .cr(2)
3129 .kr(25)
3130 .channels(channels)
3131 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3132 }
3133 }
3134
TEST(F32_DWCONV_UP2X25__SCALAR,c_lt_2)3135 TEST(F32_DWCONV_UP2X25__SCALAR, c_lt_2) {
3136 for (uint32_t channels = 1; channels < 2; channels++) {
3137 DWConvMicrokernelTester()
3138 .cr(2)
3139 .kr(25)
3140 .channels(channels)
3141 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3142 }
3143 }
3144
TEST(F32_DWCONV_UP2X25__SCALAR,c_gt_2)3145 TEST(F32_DWCONV_UP2X25__SCALAR, c_gt_2) {
3146 for (uint32_t channels = 3; channels < 4; channels++) {
3147 DWConvMicrokernelTester()
3148 .cr(2)
3149 .kr(25)
3150 .channels(channels)
3151 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3152 }
3153 }
3154
TEST(F32_DWCONV_UP2X25__SCALAR,multipixel)3155 TEST(F32_DWCONV_UP2X25__SCALAR, multipixel) {
3156 for (size_t channels = 1; channels <= 10; channels += 1) {
3157 DWConvMicrokernelTester()
3158 .cr(2)
3159 .kr(25)
3160 .channels(channels)
3161 .width(3)
3162 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3163 }
3164 }
3165
TEST(F32_DWCONV_UP2X25__SCALAR,multipixel_with_step)3166 TEST(F32_DWCONV_UP2X25__SCALAR, multipixel_with_step) {
3167 for (size_t channels = 1; channels <= 10; channels += 1) {
3168 for (size_t step = 2; step <= 25; step++) {
3169 DWConvMicrokernelTester()
3170 .cr(2)
3171 .kr(25)
3172 .channels(channels)
3173 .width(3)
3174 .step(step)
3175 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3176 }
3177 }
3178 }
3179
TEST(F32_DWCONV_UP2X25__SCALAR,multipixel_with_output_stride)3180 TEST(F32_DWCONV_UP2X25__SCALAR, multipixel_with_output_stride) {
3181 for (size_t channels = 1; channels <= 10; channels += 1) {
3182 DWConvMicrokernelTester()
3183 .cr(2)
3184 .kr(25)
3185 .channels(2)
3186 .width(5)
3187 .output_stride(13)
3188 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3189 }
3190 }
3191
TEST(F32_DWCONV_UP2X25__SCALAR,input_offset)3192 TEST(F32_DWCONV_UP2X25__SCALAR, input_offset) {
3193 for (uint32_t channels = 4; channels < 32; channels += 6) {
3194 DWConvMicrokernelTester()
3195 .cr(2)
3196 .kr(25)
3197 .channels(channels)
3198 .input_offset(80)
3199 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3200 }
3201 }
3202
TEST(F32_DWCONV_UP2X25__SCALAR,zero)3203 TEST(F32_DWCONV_UP2X25__SCALAR, zero) {
3204 for (uint32_t mz = 0; mz < 25; mz++) {
3205 for (uint32_t channels = 4; channels < 32; channels += 6) {
3206 DWConvMicrokernelTester()
3207 .cr(2)
3208 .kr(25)
3209 .channels(channels)
3210 .input_offset(80)
3211 .zero_index(mz)
3212 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar);
3213 }
3214 }
3215 }
3216
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,c_eq_2)3217 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, c_eq_2) {
3218 DWConvMicrokernelTester()
3219 .cr(2)
3220 .kr(25)
3221 .channels(2)
3222 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3223 }
3224
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,c_div_2)3225 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, c_div_2) {
3226 for (uint32_t channels = 4; channels < 32; channels += 6) {
3227 DWConvMicrokernelTester()
3228 .cr(2)
3229 .kr(25)
3230 .channels(channels)
3231 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3232 }
3233 }
3234
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,c_lt_2)3235 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, c_lt_2) {
3236 for (uint32_t channels = 1; channels < 2; channels++) {
3237 DWConvMicrokernelTester()
3238 .cr(2)
3239 .kr(25)
3240 .channels(channels)
3241 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3242 }
3243 }
3244
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,c_gt_2)3245 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, c_gt_2) {
3246 for (uint32_t channels = 3; channels < 4; channels++) {
3247 DWConvMicrokernelTester()
3248 .cr(2)
3249 .kr(25)
3250 .channels(channels)
3251 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3252 }
3253 }
3254
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,multipixel)3255 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, multipixel) {
3256 for (size_t channels = 1; channels <= 10; channels += 1) {
3257 DWConvMicrokernelTester()
3258 .cr(2)
3259 .kr(25)
3260 .channels(channels)
3261 .width(3)
3262 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3263 }
3264 }
3265
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,multipixel_with_step)3266 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, multipixel_with_step) {
3267 for (size_t channels = 1; channels <= 10; channels += 1) {
3268 for (size_t step = 2; step <= 25; step++) {
3269 DWConvMicrokernelTester()
3270 .cr(2)
3271 .kr(25)
3272 .channels(channels)
3273 .width(3)
3274 .step(step)
3275 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3276 }
3277 }
3278 }
3279
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,multipixel_with_output_stride)3280 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, multipixel_with_output_stride) {
3281 for (size_t channels = 1; channels <= 10; channels += 1) {
3282 DWConvMicrokernelTester()
3283 .cr(2)
3284 .kr(25)
3285 .channels(2)
3286 .width(5)
3287 .output_stride(13)
3288 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3289 }
3290 }
3291
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,input_offset)3292 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, input_offset) {
3293 for (uint32_t channels = 4; channels < 32; channels += 6) {
3294 DWConvMicrokernelTester()
3295 .cr(2)
3296 .kr(25)
3297 .channels(channels)
3298 .input_offset(80)
3299 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3300 }
3301 }
3302
TEST(F32_DWCONV_UP2X25__SCALAR_ACC2,zero)3303 TEST(F32_DWCONV_UP2X25__SCALAR_ACC2, zero) {
3304 for (uint32_t mz = 0; mz < 25; mz++) {
3305 for (uint32_t channels = 4; channels < 32; channels += 6) {
3306 DWConvMicrokernelTester()
3307 .cr(2)
3308 .kr(25)
3309 .channels(channels)
3310 .input_offset(80)
3311 .zero_index(mz)
3312 .Test(xnn_f32_dwconv_ukernel_up2x25__scalar_acc2);
3313 }
3314 }
3315 }