• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2019 Google LLC
2 //
3 // This source code is licensed under the BSD-style license found in the
4 // LICENSE file in the root directory of this source tree.
5 //
6 // Auto-generated file. Do not edit!
7 //   Specification: test/f32-ibilinear.yaml
8 //   Generator: tools/generate-ibilinear-test.py
9 
10 
11 #include <gtest/gtest.h>
12 
13 #include <xnnpack/common.h>
14 #include <xnnpack/isa-checks.h>
15 
16 #include <xnnpack/ibilinear.h>
17 #include "ibilinear-microkernel-tester.h"
18 
19 
TEST(F32_IBILINEAR__SCALAR_C1,channels_eq_1)20 TEST(F32_IBILINEAR__SCALAR_C1, channels_eq_1) {
21   IBilinearMicrokernelTester()
22     .pixels(1)
23     .channels(1)
24     .Test(xnn_f32_ibilinear_ukernel__scalar_c1);
25 }
26 
TEST(F32_IBILINEAR__SCALAR_C1,channels_gt_1)27 TEST(F32_IBILINEAR__SCALAR_C1, channels_gt_1) {
28   for (size_t channels = 2; channels < 10; channels++) {
29     IBilinearMicrokernelTester()
30       .pixels(1)
31       .channels(channels)
32       .Test(xnn_f32_ibilinear_ukernel__scalar_c1);
33   }
34 }
35 
TEST(F32_IBILINEAR__SCALAR_C1,pixels_gt_1)36 TEST(F32_IBILINEAR__SCALAR_C1, pixels_gt_1) {
37   for (size_t pixels = 2; pixels < 3; pixels++) {
38     for (size_t channels = 1; channels <= 5; channels += 1) {
39       IBilinearMicrokernelTester()
40         .pixels(pixels)
41         .channels(channels)
42         .Test(xnn_f32_ibilinear_ukernel__scalar_c1);
43     }
44   }
45 }
46 
TEST(F32_IBILINEAR__SCALAR_C1,input_offset)47 TEST(F32_IBILINEAR__SCALAR_C1, input_offset) {
48   for (size_t pixels = 1; pixels < 5; pixels += 1) {
49     for (size_t channels = 1; channels <= 5; channels += 1) {
50       IBilinearMicrokernelTester()
51         .pixels(pixels)
52         .channels(channels)
53         .input_offset(7)
54         .Test(xnn_f32_ibilinear_ukernel__scalar_c1);
55     }
56   }
57 }
58 
TEST(F32_IBILINEAR__SCALAR_C1,output_stride)59 TEST(F32_IBILINEAR__SCALAR_C1, output_stride) {
60   for (size_t pixels = 1; pixels < 5; pixels += 1) {
61     for (size_t channels = 1; channels <= 5; channels += 1) {
62       IBilinearMicrokernelTester()
63         .pixels(pixels)
64         .channels(channels)
65         .output_stride(7)
66         .Test(xnn_f32_ibilinear_ukernel__scalar_c1);
67     }
68   }
69 }
70 
TEST(F32_IBILINEAR__SCALAR_C2,channels_eq_2)71 TEST(F32_IBILINEAR__SCALAR_C2, channels_eq_2) {
72   IBilinearMicrokernelTester()
73     .pixels(1)
74     .channels(2)
75     .Test(xnn_f32_ibilinear_ukernel__scalar_c2);
76 }
77 
TEST(F32_IBILINEAR__SCALAR_C2,channels_div_2)78 TEST(F32_IBILINEAR__SCALAR_C2, channels_div_2) {
79   for (size_t channels = 4; channels < 20; channels += 2) {
80     IBilinearMicrokernelTester()
81       .pixels(1)
82       .channels(channels)
83       .Test(xnn_f32_ibilinear_ukernel__scalar_c2);
84   }
85 }
86 
TEST(F32_IBILINEAR__SCALAR_C2,channels_lt_2)87 TEST(F32_IBILINEAR__SCALAR_C2, channels_lt_2) {
88   for (size_t channels = 1; channels < 2; channels++) {
89     IBilinearMicrokernelTester()
90       .pixels(1)
91       .channels(channels)
92       .Test(xnn_f32_ibilinear_ukernel__scalar_c2);
93   }
94 }
95 
TEST(F32_IBILINEAR__SCALAR_C2,channels_gt_2)96 TEST(F32_IBILINEAR__SCALAR_C2, channels_gt_2) {
97   for (size_t channels = 3; channels < 4; channels++) {
98     IBilinearMicrokernelTester()
99       .pixels(1)
100       .channels(channels)
101       .Test(xnn_f32_ibilinear_ukernel__scalar_c2);
102   }
103 }
104 
TEST(F32_IBILINEAR__SCALAR_C2,pixels_gt_1)105 TEST(F32_IBILINEAR__SCALAR_C2, pixels_gt_1) {
106   for (size_t pixels = 2; pixels < 3; pixels++) {
107     for (size_t channels = 1; channels <= 10; channels += 1) {
108       IBilinearMicrokernelTester()
109         .pixels(pixels)
110         .channels(channels)
111         .Test(xnn_f32_ibilinear_ukernel__scalar_c2);
112     }
113   }
114 }
115 
TEST(F32_IBILINEAR__SCALAR_C2,input_offset)116 TEST(F32_IBILINEAR__SCALAR_C2, input_offset) {
117   for (size_t pixels = 1; pixels < 5; pixels += 1) {
118     for (size_t channels = 1; channels <= 10; channels += 1) {
119       IBilinearMicrokernelTester()
120         .pixels(pixels)
121         .channels(channels)
122         .input_offset(13)
123         .Test(xnn_f32_ibilinear_ukernel__scalar_c2);
124     }
125   }
126 }
127 
TEST(F32_IBILINEAR__SCALAR_C2,output_stride)128 TEST(F32_IBILINEAR__SCALAR_C2, output_stride) {
129   for (size_t pixels = 1; pixels < 5; pixels += 1) {
130     for (size_t channels = 1; channels <= 10; channels += 1) {
131       IBilinearMicrokernelTester()
132         .pixels(pixels)
133         .channels(channels)
134         .output_stride(13)
135         .Test(xnn_f32_ibilinear_ukernel__scalar_c2);
136     }
137   }
138 }
139 
TEST(F32_IBILINEAR__SCALAR_C4,channels_eq_4)140 TEST(F32_IBILINEAR__SCALAR_C4, channels_eq_4) {
141   IBilinearMicrokernelTester()
142     .pixels(1)
143     .channels(4)
144     .Test(xnn_f32_ibilinear_ukernel__scalar_c4);
145 }
146 
TEST(F32_IBILINEAR__SCALAR_C4,channels_div_4)147 TEST(F32_IBILINEAR__SCALAR_C4, channels_div_4) {
148   for (size_t channels = 8; channels < 40; channels += 4) {
149     IBilinearMicrokernelTester()
150       .pixels(1)
151       .channels(channels)
152       .Test(xnn_f32_ibilinear_ukernel__scalar_c4);
153   }
154 }
155 
TEST(F32_IBILINEAR__SCALAR_C4,channels_lt_4)156 TEST(F32_IBILINEAR__SCALAR_C4, channels_lt_4) {
157   for (size_t channels = 1; channels < 4; channels++) {
158     IBilinearMicrokernelTester()
159       .pixels(1)
160       .channels(channels)
161       .Test(xnn_f32_ibilinear_ukernel__scalar_c4);
162   }
163 }
164 
TEST(F32_IBILINEAR__SCALAR_C4,channels_gt_4)165 TEST(F32_IBILINEAR__SCALAR_C4, channels_gt_4) {
166   for (size_t channels = 5; channels < 8; channels++) {
167     IBilinearMicrokernelTester()
168       .pixels(1)
169       .channels(channels)
170       .Test(xnn_f32_ibilinear_ukernel__scalar_c4);
171   }
172 }
173 
TEST(F32_IBILINEAR__SCALAR_C4,pixels_gt_1)174 TEST(F32_IBILINEAR__SCALAR_C4, pixels_gt_1) {
175   for (size_t pixels = 2; pixels < 3; pixels++) {
176     for (size_t channels = 1; channels <= 20; channels += 3) {
177       IBilinearMicrokernelTester()
178         .pixels(pixels)
179         .channels(channels)
180         .Test(xnn_f32_ibilinear_ukernel__scalar_c4);
181     }
182   }
183 }
184 
TEST(F32_IBILINEAR__SCALAR_C4,input_offset)185 TEST(F32_IBILINEAR__SCALAR_C4, input_offset) {
186   for (size_t pixels = 1; pixels < 5; pixels += 1) {
187     for (size_t channels = 1; channels <= 20; channels += 3) {
188       IBilinearMicrokernelTester()
189         .pixels(pixels)
190         .channels(channels)
191         .input_offset(23)
192         .Test(xnn_f32_ibilinear_ukernel__scalar_c4);
193     }
194   }
195 }
196 
TEST(F32_IBILINEAR__SCALAR_C4,output_stride)197 TEST(F32_IBILINEAR__SCALAR_C4, output_stride) {
198   for (size_t pixels = 1; pixels < 5; pixels += 1) {
199     for (size_t channels = 1; channels <= 20; channels += 3) {
200       IBilinearMicrokernelTester()
201         .pixels(pixels)
202         .channels(channels)
203         .output_stride(23)
204         .Test(xnn_f32_ibilinear_ukernel__scalar_c4);
205     }
206   }
207 }
208 
209 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_IBILINEAR__NEON_C4,channels_eq_4)210   TEST(F32_IBILINEAR__NEON_C4, channels_eq_4) {
211     TEST_REQUIRES_ARM_NEON;
212     IBilinearMicrokernelTester()
213       .pixels(1)
214       .channels(4)
215       .Test(xnn_f32_ibilinear_ukernel__neon_c4);
216   }
217 
TEST(F32_IBILINEAR__NEON_C4,channels_div_4)218   TEST(F32_IBILINEAR__NEON_C4, channels_div_4) {
219     TEST_REQUIRES_ARM_NEON;
220     for (size_t channels = 8; channels < 40; channels += 4) {
221       IBilinearMicrokernelTester()
222         .pixels(1)
223         .channels(channels)
224         .Test(xnn_f32_ibilinear_ukernel__neon_c4);
225     }
226   }
227 
TEST(F32_IBILINEAR__NEON_C4,channels_lt_4)228   TEST(F32_IBILINEAR__NEON_C4, channels_lt_4) {
229     TEST_REQUIRES_ARM_NEON;
230     for (size_t channels = 1; channels < 4; channels++) {
231       IBilinearMicrokernelTester()
232         .pixels(1)
233         .channels(channels)
234         .Test(xnn_f32_ibilinear_ukernel__neon_c4);
235     }
236   }
237 
TEST(F32_IBILINEAR__NEON_C4,channels_gt_4)238   TEST(F32_IBILINEAR__NEON_C4, channels_gt_4) {
239     TEST_REQUIRES_ARM_NEON;
240     for (size_t channels = 5; channels < 8; channels++) {
241       IBilinearMicrokernelTester()
242         .pixels(1)
243         .channels(channels)
244         .Test(xnn_f32_ibilinear_ukernel__neon_c4);
245     }
246   }
247 
TEST(F32_IBILINEAR__NEON_C4,pixels_gt_1)248   TEST(F32_IBILINEAR__NEON_C4, pixels_gt_1) {
249     TEST_REQUIRES_ARM_NEON;
250     for (size_t pixels = 2; pixels < 3; pixels++) {
251       for (size_t channels = 1; channels <= 20; channels += 3) {
252         IBilinearMicrokernelTester()
253           .pixels(pixels)
254           .channels(channels)
255           .Test(xnn_f32_ibilinear_ukernel__neon_c4);
256       }
257     }
258   }
259 
TEST(F32_IBILINEAR__NEON_C4,input_offset)260   TEST(F32_IBILINEAR__NEON_C4, input_offset) {
261     TEST_REQUIRES_ARM_NEON;
262     for (size_t pixels = 1; pixels < 5; pixels += 1) {
263       for (size_t channels = 1; channels <= 20; channels += 3) {
264         IBilinearMicrokernelTester()
265           .pixels(pixels)
266           .channels(channels)
267           .input_offset(23)
268           .Test(xnn_f32_ibilinear_ukernel__neon_c4);
269       }
270     }
271   }
272 
TEST(F32_IBILINEAR__NEON_C4,output_stride)273   TEST(F32_IBILINEAR__NEON_C4, output_stride) {
274     TEST_REQUIRES_ARM_NEON;
275     for (size_t pixels = 1; pixels < 5; pixels += 1) {
276       for (size_t channels = 1; channels <= 20; channels += 3) {
277         IBilinearMicrokernelTester()
278           .pixels(pixels)
279           .channels(channels)
280           .output_stride(23)
281           .Test(xnn_f32_ibilinear_ukernel__neon_c4);
282       }
283     }
284   }
285 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
286 
287 
288 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_IBILINEAR__NEON_C8,channels_eq_8)289   TEST(F32_IBILINEAR__NEON_C8, channels_eq_8) {
290     TEST_REQUIRES_ARM_NEON;
291     IBilinearMicrokernelTester()
292       .pixels(1)
293       .channels(8)
294       .Test(xnn_f32_ibilinear_ukernel__neon_c8);
295   }
296 
TEST(F32_IBILINEAR__NEON_C8,channels_div_8)297   TEST(F32_IBILINEAR__NEON_C8, channels_div_8) {
298     TEST_REQUIRES_ARM_NEON;
299     for (size_t channels = 16; channels < 80; channels += 8) {
300       IBilinearMicrokernelTester()
301         .pixels(1)
302         .channels(channels)
303         .Test(xnn_f32_ibilinear_ukernel__neon_c8);
304     }
305   }
306 
TEST(F32_IBILINEAR__NEON_C8,channels_lt_8)307   TEST(F32_IBILINEAR__NEON_C8, channels_lt_8) {
308     TEST_REQUIRES_ARM_NEON;
309     for (size_t channels = 1; channels < 8; channels++) {
310       IBilinearMicrokernelTester()
311         .pixels(1)
312         .channels(channels)
313         .Test(xnn_f32_ibilinear_ukernel__neon_c8);
314     }
315   }
316 
TEST(F32_IBILINEAR__NEON_C8,channels_gt_8)317   TEST(F32_IBILINEAR__NEON_C8, channels_gt_8) {
318     TEST_REQUIRES_ARM_NEON;
319     for (size_t channels = 9; channels < 16; channels++) {
320       IBilinearMicrokernelTester()
321         .pixels(1)
322         .channels(channels)
323         .Test(xnn_f32_ibilinear_ukernel__neon_c8);
324     }
325   }
326 
TEST(F32_IBILINEAR__NEON_C8,pixels_gt_1)327   TEST(F32_IBILINEAR__NEON_C8, pixels_gt_1) {
328     TEST_REQUIRES_ARM_NEON;
329     for (size_t pixels = 2; pixels < 3; pixels++) {
330       for (size_t channels = 1; channels <= 40; channels += 7) {
331         IBilinearMicrokernelTester()
332           .pixels(pixels)
333           .channels(channels)
334           .Test(xnn_f32_ibilinear_ukernel__neon_c8);
335       }
336     }
337   }
338 
TEST(F32_IBILINEAR__NEON_C8,input_offset)339   TEST(F32_IBILINEAR__NEON_C8, input_offset) {
340     TEST_REQUIRES_ARM_NEON;
341     for (size_t pixels = 1; pixels < 5; pixels += 1) {
342       for (size_t channels = 1; channels <= 40; channels += 7) {
343         IBilinearMicrokernelTester()
344           .pixels(pixels)
345           .channels(channels)
346           .input_offset(43)
347           .Test(xnn_f32_ibilinear_ukernel__neon_c8);
348       }
349     }
350   }
351 
TEST(F32_IBILINEAR__NEON_C8,output_stride)352   TEST(F32_IBILINEAR__NEON_C8, output_stride) {
353     TEST_REQUIRES_ARM_NEON;
354     for (size_t pixels = 1; pixels < 5; pixels += 1) {
355       for (size_t channels = 1; channels <= 40; channels += 7) {
356         IBilinearMicrokernelTester()
357           .pixels(pixels)
358           .channels(channels)
359           .output_stride(43)
360           .Test(xnn_f32_ibilinear_ukernel__neon_c8);
361       }
362     }
363   }
364 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
365 
366 
367 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_IBILINEAR__NEONFMA_C4,channels_eq_4)368   TEST(F32_IBILINEAR__NEONFMA_C4, channels_eq_4) {
369     TEST_REQUIRES_ARM_NEON_FMA;
370     IBilinearMicrokernelTester()
371       .pixels(1)
372       .channels(4)
373       .Test(xnn_f32_ibilinear_ukernel__neonfma_c4);
374   }
375 
TEST(F32_IBILINEAR__NEONFMA_C4,channels_div_4)376   TEST(F32_IBILINEAR__NEONFMA_C4, channels_div_4) {
377     TEST_REQUIRES_ARM_NEON_FMA;
378     for (size_t channels = 8; channels < 40; channels += 4) {
379       IBilinearMicrokernelTester()
380         .pixels(1)
381         .channels(channels)
382         .Test(xnn_f32_ibilinear_ukernel__neonfma_c4);
383     }
384   }
385 
TEST(F32_IBILINEAR__NEONFMA_C4,channels_lt_4)386   TEST(F32_IBILINEAR__NEONFMA_C4, channels_lt_4) {
387     TEST_REQUIRES_ARM_NEON_FMA;
388     for (size_t channels = 1; channels < 4; channels++) {
389       IBilinearMicrokernelTester()
390         .pixels(1)
391         .channels(channels)
392         .Test(xnn_f32_ibilinear_ukernel__neonfma_c4);
393     }
394   }
395 
TEST(F32_IBILINEAR__NEONFMA_C4,channels_gt_4)396   TEST(F32_IBILINEAR__NEONFMA_C4, channels_gt_4) {
397     TEST_REQUIRES_ARM_NEON_FMA;
398     for (size_t channels = 5; channels < 8; channels++) {
399       IBilinearMicrokernelTester()
400         .pixels(1)
401         .channels(channels)
402         .Test(xnn_f32_ibilinear_ukernel__neonfma_c4);
403     }
404   }
405 
TEST(F32_IBILINEAR__NEONFMA_C4,pixels_gt_1)406   TEST(F32_IBILINEAR__NEONFMA_C4, pixels_gt_1) {
407     TEST_REQUIRES_ARM_NEON_FMA;
408     for (size_t pixels = 2; pixels < 3; pixels++) {
409       for (size_t channels = 1; channels <= 20; channels += 3) {
410         IBilinearMicrokernelTester()
411           .pixels(pixels)
412           .channels(channels)
413           .Test(xnn_f32_ibilinear_ukernel__neonfma_c4);
414       }
415     }
416   }
417 
TEST(F32_IBILINEAR__NEONFMA_C4,input_offset)418   TEST(F32_IBILINEAR__NEONFMA_C4, input_offset) {
419     TEST_REQUIRES_ARM_NEON_FMA;
420     for (size_t pixels = 1; pixels < 5; pixels += 1) {
421       for (size_t channels = 1; channels <= 20; channels += 3) {
422         IBilinearMicrokernelTester()
423           .pixels(pixels)
424           .channels(channels)
425           .input_offset(23)
426           .Test(xnn_f32_ibilinear_ukernel__neonfma_c4);
427       }
428     }
429   }
430 
TEST(F32_IBILINEAR__NEONFMA_C4,output_stride)431   TEST(F32_IBILINEAR__NEONFMA_C4, output_stride) {
432     TEST_REQUIRES_ARM_NEON_FMA;
433     for (size_t pixels = 1; pixels < 5; pixels += 1) {
434       for (size_t channels = 1; channels <= 20; channels += 3) {
435         IBilinearMicrokernelTester()
436           .pixels(pixels)
437           .channels(channels)
438           .output_stride(23)
439           .Test(xnn_f32_ibilinear_ukernel__neonfma_c4);
440       }
441     }
442   }
443 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
444 
445 
446 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_IBILINEAR__NEONFMA_C8,channels_eq_8)447   TEST(F32_IBILINEAR__NEONFMA_C8, channels_eq_8) {
448     TEST_REQUIRES_ARM_NEON_FMA;
449     IBilinearMicrokernelTester()
450       .pixels(1)
451       .channels(8)
452       .Test(xnn_f32_ibilinear_ukernel__neonfma_c8);
453   }
454 
TEST(F32_IBILINEAR__NEONFMA_C8,channels_div_8)455   TEST(F32_IBILINEAR__NEONFMA_C8, channels_div_8) {
456     TEST_REQUIRES_ARM_NEON_FMA;
457     for (size_t channels = 16; channels < 80; channels += 8) {
458       IBilinearMicrokernelTester()
459         .pixels(1)
460         .channels(channels)
461         .Test(xnn_f32_ibilinear_ukernel__neonfma_c8);
462     }
463   }
464 
TEST(F32_IBILINEAR__NEONFMA_C8,channels_lt_8)465   TEST(F32_IBILINEAR__NEONFMA_C8, channels_lt_8) {
466     TEST_REQUIRES_ARM_NEON_FMA;
467     for (size_t channels = 1; channels < 8; channels++) {
468       IBilinearMicrokernelTester()
469         .pixels(1)
470         .channels(channels)
471         .Test(xnn_f32_ibilinear_ukernel__neonfma_c8);
472     }
473   }
474 
TEST(F32_IBILINEAR__NEONFMA_C8,channels_gt_8)475   TEST(F32_IBILINEAR__NEONFMA_C8, channels_gt_8) {
476     TEST_REQUIRES_ARM_NEON_FMA;
477     for (size_t channels = 9; channels < 16; channels++) {
478       IBilinearMicrokernelTester()
479         .pixels(1)
480         .channels(channels)
481         .Test(xnn_f32_ibilinear_ukernel__neonfma_c8);
482     }
483   }
484 
TEST(F32_IBILINEAR__NEONFMA_C8,pixels_gt_1)485   TEST(F32_IBILINEAR__NEONFMA_C8, pixels_gt_1) {
486     TEST_REQUIRES_ARM_NEON_FMA;
487     for (size_t pixels = 2; pixels < 3; pixels++) {
488       for (size_t channels = 1; channels <= 40; channels += 7) {
489         IBilinearMicrokernelTester()
490           .pixels(pixels)
491           .channels(channels)
492           .Test(xnn_f32_ibilinear_ukernel__neonfma_c8);
493       }
494     }
495   }
496 
TEST(F32_IBILINEAR__NEONFMA_C8,input_offset)497   TEST(F32_IBILINEAR__NEONFMA_C8, input_offset) {
498     TEST_REQUIRES_ARM_NEON_FMA;
499     for (size_t pixels = 1; pixels < 5; pixels += 1) {
500       for (size_t channels = 1; channels <= 40; channels += 7) {
501         IBilinearMicrokernelTester()
502           .pixels(pixels)
503           .channels(channels)
504           .input_offset(43)
505           .Test(xnn_f32_ibilinear_ukernel__neonfma_c8);
506       }
507     }
508   }
509 
TEST(F32_IBILINEAR__NEONFMA_C8,output_stride)510   TEST(F32_IBILINEAR__NEONFMA_C8, output_stride) {
511     TEST_REQUIRES_ARM_NEON_FMA;
512     for (size_t pixels = 1; pixels < 5; pixels += 1) {
513       for (size_t channels = 1; channels <= 40; channels += 7) {
514         IBilinearMicrokernelTester()
515           .pixels(pixels)
516           .channels(channels)
517           .output_stride(43)
518           .Test(xnn_f32_ibilinear_ukernel__neonfma_c8);
519       }
520     }
521   }
522 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
523 
524 
525 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_IBILINEAR__SSE_C4,channels_eq_4)526   TEST(F32_IBILINEAR__SSE_C4, channels_eq_4) {
527     TEST_REQUIRES_X86_SSE;
528     IBilinearMicrokernelTester()
529       .pixels(1)
530       .channels(4)
531       .Test(xnn_f32_ibilinear_ukernel__sse_c4);
532   }
533 
TEST(F32_IBILINEAR__SSE_C4,channels_div_4)534   TEST(F32_IBILINEAR__SSE_C4, channels_div_4) {
535     TEST_REQUIRES_X86_SSE;
536     for (size_t channels = 8; channels < 40; channels += 4) {
537       IBilinearMicrokernelTester()
538         .pixels(1)
539         .channels(channels)
540         .Test(xnn_f32_ibilinear_ukernel__sse_c4);
541     }
542   }
543 
TEST(F32_IBILINEAR__SSE_C4,channels_lt_4)544   TEST(F32_IBILINEAR__SSE_C4, channels_lt_4) {
545     TEST_REQUIRES_X86_SSE;
546     for (size_t channels = 1; channels < 4; channels++) {
547       IBilinearMicrokernelTester()
548         .pixels(1)
549         .channels(channels)
550         .Test(xnn_f32_ibilinear_ukernel__sse_c4);
551     }
552   }
553 
TEST(F32_IBILINEAR__SSE_C4,channels_gt_4)554   TEST(F32_IBILINEAR__SSE_C4, channels_gt_4) {
555     TEST_REQUIRES_X86_SSE;
556     for (size_t channels = 5; channels < 8; channels++) {
557       IBilinearMicrokernelTester()
558         .pixels(1)
559         .channels(channels)
560         .Test(xnn_f32_ibilinear_ukernel__sse_c4);
561     }
562   }
563 
TEST(F32_IBILINEAR__SSE_C4,pixels_gt_1)564   TEST(F32_IBILINEAR__SSE_C4, pixels_gt_1) {
565     TEST_REQUIRES_X86_SSE;
566     for (size_t pixels = 2; pixels < 3; pixels++) {
567       for (size_t channels = 1; channels <= 20; channels += 3) {
568         IBilinearMicrokernelTester()
569           .pixels(pixels)
570           .channels(channels)
571           .Test(xnn_f32_ibilinear_ukernel__sse_c4);
572       }
573     }
574   }
575 
TEST(F32_IBILINEAR__SSE_C4,input_offset)576   TEST(F32_IBILINEAR__SSE_C4, input_offset) {
577     TEST_REQUIRES_X86_SSE;
578     for (size_t pixels = 1; pixels < 5; pixels += 1) {
579       for (size_t channels = 1; channels <= 20; channels += 3) {
580         IBilinearMicrokernelTester()
581           .pixels(pixels)
582           .channels(channels)
583           .input_offset(23)
584           .Test(xnn_f32_ibilinear_ukernel__sse_c4);
585       }
586     }
587   }
588 
TEST(F32_IBILINEAR__SSE_C4,output_stride)589   TEST(F32_IBILINEAR__SSE_C4, output_stride) {
590     TEST_REQUIRES_X86_SSE;
591     for (size_t pixels = 1; pixels < 5; pixels += 1) {
592       for (size_t channels = 1; channels <= 20; channels += 3) {
593         IBilinearMicrokernelTester()
594           .pixels(pixels)
595           .channels(channels)
596           .output_stride(23)
597           .Test(xnn_f32_ibilinear_ukernel__sse_c4);
598       }
599     }
600   }
601 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
602 
603 
604 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_IBILINEAR__SSE_C8,channels_eq_8)605   TEST(F32_IBILINEAR__SSE_C8, channels_eq_8) {
606     TEST_REQUIRES_X86_SSE;
607     IBilinearMicrokernelTester()
608       .pixels(1)
609       .channels(8)
610       .Test(xnn_f32_ibilinear_ukernel__sse_c8);
611   }
612 
TEST(F32_IBILINEAR__SSE_C8,channels_div_8)613   TEST(F32_IBILINEAR__SSE_C8, channels_div_8) {
614     TEST_REQUIRES_X86_SSE;
615     for (size_t channels = 16; channels < 80; channels += 8) {
616       IBilinearMicrokernelTester()
617         .pixels(1)
618         .channels(channels)
619         .Test(xnn_f32_ibilinear_ukernel__sse_c8);
620     }
621   }
622 
TEST(F32_IBILINEAR__SSE_C8,channels_lt_8)623   TEST(F32_IBILINEAR__SSE_C8, channels_lt_8) {
624     TEST_REQUIRES_X86_SSE;
625     for (size_t channels = 1; channels < 8; channels++) {
626       IBilinearMicrokernelTester()
627         .pixels(1)
628         .channels(channels)
629         .Test(xnn_f32_ibilinear_ukernel__sse_c8);
630     }
631   }
632 
TEST(F32_IBILINEAR__SSE_C8,channels_gt_8)633   TEST(F32_IBILINEAR__SSE_C8, channels_gt_8) {
634     TEST_REQUIRES_X86_SSE;
635     for (size_t channels = 9; channels < 16; channels++) {
636       IBilinearMicrokernelTester()
637         .pixels(1)
638         .channels(channels)
639         .Test(xnn_f32_ibilinear_ukernel__sse_c8);
640     }
641   }
642 
TEST(F32_IBILINEAR__SSE_C8,pixels_gt_1)643   TEST(F32_IBILINEAR__SSE_C8, pixels_gt_1) {
644     TEST_REQUIRES_X86_SSE;
645     for (size_t pixels = 2; pixels < 3; pixels++) {
646       for (size_t channels = 1; channels <= 40; channels += 7) {
647         IBilinearMicrokernelTester()
648           .pixels(pixels)
649           .channels(channels)
650           .Test(xnn_f32_ibilinear_ukernel__sse_c8);
651       }
652     }
653   }
654 
TEST(F32_IBILINEAR__SSE_C8,input_offset)655   TEST(F32_IBILINEAR__SSE_C8, input_offset) {
656     TEST_REQUIRES_X86_SSE;
657     for (size_t pixels = 1; pixels < 5; pixels += 1) {
658       for (size_t channels = 1; channels <= 40; channels += 7) {
659         IBilinearMicrokernelTester()
660           .pixels(pixels)
661           .channels(channels)
662           .input_offset(43)
663           .Test(xnn_f32_ibilinear_ukernel__sse_c8);
664       }
665     }
666   }
667 
TEST(F32_IBILINEAR__SSE_C8,output_stride)668   TEST(F32_IBILINEAR__SSE_C8, output_stride) {
669     TEST_REQUIRES_X86_SSE;
670     for (size_t pixels = 1; pixels < 5; pixels += 1) {
671       for (size_t channels = 1; channels <= 40; channels += 7) {
672         IBilinearMicrokernelTester()
673           .pixels(pixels)
674           .channels(channels)
675           .output_stride(43)
676           .Test(xnn_f32_ibilinear_ukernel__sse_c8);
677       }
678     }
679   }
680 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
681 
682 
683 #if XNN_ARCH_WASMSIMD
TEST(F32_IBILINEAR__WASMSIMD_C4,channels_eq_4)684   TEST(F32_IBILINEAR__WASMSIMD_C4, channels_eq_4) {
685     IBilinearMicrokernelTester()
686       .pixels(1)
687       .channels(4)
688       .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c4);
689   }
690 
TEST(F32_IBILINEAR__WASMSIMD_C4,channels_div_4)691   TEST(F32_IBILINEAR__WASMSIMD_C4, channels_div_4) {
692     for (size_t channels = 8; channels < 40; channels += 4) {
693       IBilinearMicrokernelTester()
694         .pixels(1)
695         .channels(channels)
696         .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c4);
697     }
698   }
699 
TEST(F32_IBILINEAR__WASMSIMD_C4,channels_lt_4)700   TEST(F32_IBILINEAR__WASMSIMD_C4, channels_lt_4) {
701     for (size_t channels = 1; channels < 4; channels++) {
702       IBilinearMicrokernelTester()
703         .pixels(1)
704         .channels(channels)
705         .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c4);
706     }
707   }
708 
TEST(F32_IBILINEAR__WASMSIMD_C4,channels_gt_4)709   TEST(F32_IBILINEAR__WASMSIMD_C4, channels_gt_4) {
710     for (size_t channels = 5; channels < 8; channels++) {
711       IBilinearMicrokernelTester()
712         .pixels(1)
713         .channels(channels)
714         .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c4);
715     }
716   }
717 
TEST(F32_IBILINEAR__WASMSIMD_C4,pixels_gt_1)718   TEST(F32_IBILINEAR__WASMSIMD_C4, pixels_gt_1) {
719     for (size_t pixels = 2; pixels < 3; pixels++) {
720       for (size_t channels = 1; channels <= 20; channels += 3) {
721         IBilinearMicrokernelTester()
722           .pixels(pixels)
723           .channels(channels)
724           .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c4);
725       }
726     }
727   }
728 
TEST(F32_IBILINEAR__WASMSIMD_C4,input_offset)729   TEST(F32_IBILINEAR__WASMSIMD_C4, input_offset) {
730     for (size_t pixels = 1; pixels < 5; pixels += 1) {
731       for (size_t channels = 1; channels <= 20; channels += 3) {
732         IBilinearMicrokernelTester()
733           .pixels(pixels)
734           .channels(channels)
735           .input_offset(23)
736           .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c4);
737       }
738     }
739   }
740 
TEST(F32_IBILINEAR__WASMSIMD_C4,output_stride)741   TEST(F32_IBILINEAR__WASMSIMD_C4, output_stride) {
742     for (size_t pixels = 1; pixels < 5; pixels += 1) {
743       for (size_t channels = 1; channels <= 20; channels += 3) {
744         IBilinearMicrokernelTester()
745           .pixels(pixels)
746           .channels(channels)
747           .output_stride(23)
748           .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c4);
749       }
750     }
751   }
752 #endif  // XNN_ARCH_WASMSIMD
753 
754 
755 #if XNN_ARCH_WASMSIMD
TEST(F32_IBILINEAR__WASMSIMD_C8,channels_eq_8)756   TEST(F32_IBILINEAR__WASMSIMD_C8, channels_eq_8) {
757     IBilinearMicrokernelTester()
758       .pixels(1)
759       .channels(8)
760       .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c8);
761   }
762 
TEST(F32_IBILINEAR__WASMSIMD_C8,channels_div_8)763   TEST(F32_IBILINEAR__WASMSIMD_C8, channels_div_8) {
764     for (size_t channels = 16; channels < 80; channels += 8) {
765       IBilinearMicrokernelTester()
766         .pixels(1)
767         .channels(channels)
768         .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c8);
769     }
770   }
771 
TEST(F32_IBILINEAR__WASMSIMD_C8,channels_lt_8)772   TEST(F32_IBILINEAR__WASMSIMD_C8, channels_lt_8) {
773     for (size_t channels = 1; channels < 8; channels++) {
774       IBilinearMicrokernelTester()
775         .pixels(1)
776         .channels(channels)
777         .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c8);
778     }
779   }
780 
TEST(F32_IBILINEAR__WASMSIMD_C8,channels_gt_8)781   TEST(F32_IBILINEAR__WASMSIMD_C8, channels_gt_8) {
782     for (size_t channels = 9; channels < 16; channels++) {
783       IBilinearMicrokernelTester()
784         .pixels(1)
785         .channels(channels)
786         .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c8);
787     }
788   }
789 
TEST(F32_IBILINEAR__WASMSIMD_C8,pixels_gt_1)790   TEST(F32_IBILINEAR__WASMSIMD_C8, pixels_gt_1) {
791     for (size_t pixels = 2; pixels < 3; pixels++) {
792       for (size_t channels = 1; channels <= 40; channels += 7) {
793         IBilinearMicrokernelTester()
794           .pixels(pixels)
795           .channels(channels)
796           .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c8);
797       }
798     }
799   }
800 
TEST(F32_IBILINEAR__WASMSIMD_C8,input_offset)801   TEST(F32_IBILINEAR__WASMSIMD_C8, input_offset) {
802     for (size_t pixels = 1; pixels < 5; pixels += 1) {
803       for (size_t channels = 1; channels <= 40; channels += 7) {
804         IBilinearMicrokernelTester()
805           .pixels(pixels)
806           .channels(channels)
807           .input_offset(43)
808           .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c8);
809       }
810     }
811   }
812 
TEST(F32_IBILINEAR__WASMSIMD_C8,output_stride)813   TEST(F32_IBILINEAR__WASMSIMD_C8, output_stride) {
814     for (size_t pixels = 1; pixels < 5; pixels += 1) {
815       for (size_t channels = 1; channels <= 40; channels += 7) {
816         IBilinearMicrokernelTester()
817           .pixels(pixels)
818           .channels(channels)
819           .output_stride(43)
820           .Test(xnn_f32_ibilinear_ukernel__wasmsimd_c8);
821       }
822     }
823   }
824 #endif  // XNN_ARCH_WASMSIMD
825