xref: /aosp_15_r20/external/XNNPACK/test/f32-dwconv.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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 }