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