xref: /aosp_15_r20/external/XNNPACK/test/f16-ibilinear-chw.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2020 Google LLC
2*4bdc9457SAndroid Build Coastguard Worker //
3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the
4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree.
5*4bdc9457SAndroid Build Coastguard Worker //
6*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit!
7*4bdc9457SAndroid Build Coastguard Worker //   Specification: test/f16-ibilinear-chw.yaml
8*4bdc9457SAndroid Build Coastguard Worker //   Generator: tools/generate-ibilinear-chw-test.py
9*4bdc9457SAndroid Build Coastguard Worker 
10*4bdc9457SAndroid Build Coastguard Worker 
11*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h>
12*4bdc9457SAndroid Build Coastguard Worker 
13*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h>
14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h>
15*4bdc9457SAndroid Build Coastguard Worker 
16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/ibilinear.h>
17*4bdc9457SAndroid Build Coastguard Worker #include "ibilinear-microkernel-tester.h"
18*4bdc9457SAndroid Build Coastguard Worker 
19*4bdc9457SAndroid Build Coastguard Worker 
20*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4,pixels_eq_4)21*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4, pixels_eq_4) {
22*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
23*4bdc9457SAndroid Build Coastguard Worker     IBilinearMicrokernelTester()
24*4bdc9457SAndroid Build Coastguard Worker       .pixels(4)
25*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
26*4bdc9457SAndroid Build Coastguard Worker       .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4);
27*4bdc9457SAndroid Build Coastguard Worker   }
28*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4,pixels_div_4)29*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4, pixels_div_4) {
30*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
31*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 8; pixels < 40; pixels += 4) {
32*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
33*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
34*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
35*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4);
36*4bdc9457SAndroid Build Coastguard Worker     }
37*4bdc9457SAndroid Build Coastguard Worker   }
38*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4,pixels_lt_4)39*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4, pixels_lt_4) {
40*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
41*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 4; pixels++) {
42*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
43*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
44*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
45*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4);
46*4bdc9457SAndroid Build Coastguard Worker     }
47*4bdc9457SAndroid Build Coastguard Worker   }
48*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4,pixels_gt_4)49*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4, pixels_gt_4) {
50*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
51*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 5; pixels < 8; pixels++) {
52*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
53*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
54*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
55*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4);
56*4bdc9457SAndroid Build Coastguard Worker     }
57*4bdc9457SAndroid Build Coastguard Worker   }
58*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4,channels_eq_1)59*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4, channels_eq_1) {
60*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
61*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels <= 20; pixels += 3) {
62*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
63*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
64*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
65*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4);
66*4bdc9457SAndroid Build Coastguard Worker     }
67*4bdc9457SAndroid Build Coastguard Worker   }
68*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4,channels_gt_1)69*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4, channels_gt_1) {
70*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
71*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 3; channels++) {
72*4bdc9457SAndroid Build Coastguard Worker       for (size_t pixels = 1; pixels <= 20; pixels += 3) {
73*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
74*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
75*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
76*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4);
77*4bdc9457SAndroid Build Coastguard Worker       }
78*4bdc9457SAndroid Build Coastguard Worker     }
79*4bdc9457SAndroid Build Coastguard Worker   }
80*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4,input_offset)81*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4, input_offset) {
82*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
83*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 20; pixels += 3) {
84*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
85*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
86*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
87*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
88*4bdc9457SAndroid Build Coastguard Worker           .input_offset(7)
89*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4);
90*4bdc9457SAndroid Build Coastguard Worker       }
91*4bdc9457SAndroid Build Coastguard Worker     }
92*4bdc9457SAndroid Build Coastguard Worker   }
93*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4,input_stride)94*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P4, input_stride) {
95*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
96*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 20; pixels += 3) {
97*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
98*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
99*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
100*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
101*4bdc9457SAndroid Build Coastguard Worker           .input_stride(83)
102*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4);
103*4bdc9457SAndroid Build Coastguard Worker       }
104*4bdc9457SAndroid Build Coastguard Worker     }
105*4bdc9457SAndroid Build Coastguard Worker   }
106*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
107*4bdc9457SAndroid Build Coastguard Worker 
108*4bdc9457SAndroid Build Coastguard Worker 
109*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8,pixels_eq_8)110*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8, pixels_eq_8) {
111*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
112*4bdc9457SAndroid Build Coastguard Worker     IBilinearMicrokernelTester()
113*4bdc9457SAndroid Build Coastguard Worker       .pixels(8)
114*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
115*4bdc9457SAndroid Build Coastguard Worker       .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8);
116*4bdc9457SAndroid Build Coastguard Worker   }
117*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8,pixels_div_8)118*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8, pixels_div_8) {
119*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
120*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 16; pixels < 80; pixels += 8) {
121*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
122*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
123*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
124*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8);
125*4bdc9457SAndroid Build Coastguard Worker     }
126*4bdc9457SAndroid Build Coastguard Worker   }
127*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8,pixels_lt_8)128*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8, pixels_lt_8) {
129*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
130*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 8; pixels++) {
131*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
132*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
133*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
134*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8);
135*4bdc9457SAndroid Build Coastguard Worker     }
136*4bdc9457SAndroid Build Coastguard Worker   }
137*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8,pixels_gt_8)138*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8, pixels_gt_8) {
139*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
140*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 9; pixels < 16; pixels++) {
141*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
142*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
143*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
144*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8);
145*4bdc9457SAndroid Build Coastguard Worker     }
146*4bdc9457SAndroid Build Coastguard Worker   }
147*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8,channels_eq_1)148*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8, channels_eq_1) {
149*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
150*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels <= 40; pixels += 7) {
151*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
152*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
153*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
154*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8);
155*4bdc9457SAndroid Build Coastguard Worker     }
156*4bdc9457SAndroid Build Coastguard Worker   }
157*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8,channels_gt_1)158*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8, channels_gt_1) {
159*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
160*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 3; channels++) {
161*4bdc9457SAndroid Build Coastguard Worker       for (size_t pixels = 1; pixels <= 40; pixels += 7) {
162*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
163*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
164*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
165*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8);
166*4bdc9457SAndroid Build Coastguard Worker       }
167*4bdc9457SAndroid Build Coastguard Worker     }
168*4bdc9457SAndroid Build Coastguard Worker   }
169*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8,input_offset)170*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8, input_offset) {
171*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
172*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 40; pixels += 7) {
173*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
174*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
175*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
176*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
177*4bdc9457SAndroid Build Coastguard Worker           .input_offset(7)
178*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8);
179*4bdc9457SAndroid Build Coastguard Worker       }
180*4bdc9457SAndroid Build Coastguard Worker     }
181*4bdc9457SAndroid Build Coastguard Worker   }
182*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8,input_stride)183*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P8, input_stride) {
184*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
185*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 40; pixels += 7) {
186*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
187*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
188*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
189*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
190*4bdc9457SAndroid Build Coastguard Worker           .input_stride(163)
191*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8);
192*4bdc9457SAndroid Build Coastguard Worker       }
193*4bdc9457SAndroid Build Coastguard Worker     }
194*4bdc9457SAndroid Build Coastguard Worker   }
195*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
196*4bdc9457SAndroid Build Coastguard Worker 
197*4bdc9457SAndroid Build Coastguard Worker 
198*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16,pixels_eq_16)199*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16, pixels_eq_16) {
200*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
201*4bdc9457SAndroid Build Coastguard Worker     IBilinearMicrokernelTester()
202*4bdc9457SAndroid Build Coastguard Worker       .pixels(16)
203*4bdc9457SAndroid Build Coastguard Worker       .channels(1)
204*4bdc9457SAndroid Build Coastguard Worker       .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16);
205*4bdc9457SAndroid Build Coastguard Worker   }
206*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16,pixels_div_16)207*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16, pixels_div_16) {
208*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
209*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 32; pixels < 160; pixels += 16) {
210*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
211*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
212*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
213*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16);
214*4bdc9457SAndroid Build Coastguard Worker     }
215*4bdc9457SAndroid Build Coastguard Worker   }
216*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16,pixels_lt_16)217*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16, pixels_lt_16) {
218*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
219*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 16; pixels++) {
220*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
221*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
222*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
223*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16);
224*4bdc9457SAndroid Build Coastguard Worker     }
225*4bdc9457SAndroid Build Coastguard Worker   }
226*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16,pixels_gt_16)227*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16, pixels_gt_16) {
228*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
229*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 17; pixels < 32; pixels++) {
230*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
231*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
232*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
233*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16);
234*4bdc9457SAndroid Build Coastguard Worker     }
235*4bdc9457SAndroid Build Coastguard Worker   }
236*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16,channels_eq_1)237*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16, channels_eq_1) {
238*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
239*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels <= 80; pixels += 15) {
240*4bdc9457SAndroid Build Coastguard Worker       IBilinearMicrokernelTester()
241*4bdc9457SAndroid Build Coastguard Worker         .pixels(pixels)
242*4bdc9457SAndroid Build Coastguard Worker         .channels(1)
243*4bdc9457SAndroid Build Coastguard Worker         .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16);
244*4bdc9457SAndroid Build Coastguard Worker     }
245*4bdc9457SAndroid Build Coastguard Worker   }
246*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16,channels_gt_1)247*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16, channels_gt_1) {
248*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
249*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 2; channels < 3; channels++) {
250*4bdc9457SAndroid Build Coastguard Worker       for (size_t pixels = 1; pixels <= 80; pixels += 15) {
251*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
252*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
253*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
254*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16);
255*4bdc9457SAndroid Build Coastguard Worker       }
256*4bdc9457SAndroid Build Coastguard Worker     }
257*4bdc9457SAndroid Build Coastguard Worker   }
258*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16,input_offset)259*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16, input_offset) {
260*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
261*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 80; pixels += 15) {
262*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
263*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
264*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
265*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
266*4bdc9457SAndroid Build Coastguard Worker           .input_offset(7)
267*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16);
268*4bdc9457SAndroid Build Coastguard Worker       }
269*4bdc9457SAndroid Build Coastguard Worker     }
270*4bdc9457SAndroid Build Coastguard Worker   }
271*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16,input_stride)272*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_IBILINEAR_CHW__NEONFP16ARITH_P16, input_stride) {
273*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
274*4bdc9457SAndroid Build Coastguard Worker     for (size_t pixels = 1; pixels < 80; pixels += 15) {
275*4bdc9457SAndroid Build Coastguard Worker       for (size_t channels = 1; channels <= 5; channels += 1) {
276*4bdc9457SAndroid Build Coastguard Worker         IBilinearMicrokernelTester()
277*4bdc9457SAndroid Build Coastguard Worker           .pixels(pixels)
278*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
279*4bdc9457SAndroid Build Coastguard Worker           .input_stride(331)
280*4bdc9457SAndroid Build Coastguard Worker           .TestCHW(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16);
281*4bdc9457SAndroid Build Coastguard Worker       }
282*4bdc9457SAndroid Build Coastguard Worker     }
283*4bdc9457SAndroid Build Coastguard Worker   }
284*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
285