xref: /aosp_15_r20/external/XNNPACK/test/f16-velu.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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/f16-velu.yaml
8 //   Generator: tools/generate-vunary-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/vunary.h>
17 #include "vunary-microkernel-tester.h"
18 
19 
20 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_eq_8)21   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_eq_8) {
22     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
23     VUnaryMicrokernelTester()
24       .batch_size(8)
25       .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
26   }
27 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_div_8)28   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_div_8) {
29     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
30     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
31       VUnaryMicrokernelTester()
32         .batch_size(batch_size)
33         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
34     }
35   }
36 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_lt_8)37   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_lt_8) {
38     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
39     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
40       VUnaryMicrokernelTester()
41         .batch_size(batch_size)
42         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
43     }
44   }
45 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_gt_8)46   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_gt_8) {
47     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
48     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
49       VUnaryMicrokernelTester()
50         .batch_size(batch_size)
51         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
52     }
53   }
54 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,inplace)55   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, inplace) {
56     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
57     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
58       VUnaryMicrokernelTester()
59         .batch_size(batch_size)
60         .inplace(true)
61         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
62     }
63   }
64 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,prescale)65   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, prescale) {
66     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
67     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
68       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
69         VUnaryMicrokernelTester()
70           .batch_size(batch_size)
71           .prescale(prescale)
72           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
73       }
74     }
75   }
76 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,alpha)77   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, alpha) {
78     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
79     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
80       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
81         VUnaryMicrokernelTester()
82           .batch_size(batch_size)
83           .alpha(alpha)
84           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
85       }
86     }
87   }
88 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,beta)89   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, beta) {
90     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
91     for (float beta : std::vector<float>({0.3f, 3.0f})) {
92       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
93         VUnaryMicrokernelTester()
94           .batch_size(batch_size)
95           .beta(beta)
96           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
97       }
98     }
99   }
100 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
101 
102 
103 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_eq_16)104   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_eq_16) {
105     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
106     VUnaryMicrokernelTester()
107       .batch_size(16)
108       .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
109   }
110 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_div_16)111   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_div_16) {
112     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
113     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
114       VUnaryMicrokernelTester()
115         .batch_size(batch_size)
116         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
117     }
118   }
119 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_lt_16)120   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_lt_16) {
121     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
122     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
123       VUnaryMicrokernelTester()
124         .batch_size(batch_size)
125         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
126     }
127   }
128 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_gt_16)129   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_gt_16) {
130     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
131     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
132       VUnaryMicrokernelTester()
133         .batch_size(batch_size)
134         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
135     }
136   }
137 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,inplace)138   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, inplace) {
139     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
140     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
141       VUnaryMicrokernelTester()
142         .batch_size(batch_size)
143         .inplace(true)
144         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
145     }
146   }
147 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,prescale)148   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, prescale) {
149     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
150     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
151       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
152         VUnaryMicrokernelTester()
153           .batch_size(batch_size)
154           .prescale(prescale)
155           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
156       }
157     }
158   }
159 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,alpha)160   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, alpha) {
161     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
162     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
163       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
164         VUnaryMicrokernelTester()
165           .batch_size(batch_size)
166           .alpha(alpha)
167           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
168       }
169     }
170   }
171 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,beta)172   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, beta) {
173     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
174     for (float beta : std::vector<float>({0.3f, 3.0f})) {
175       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
176         VUnaryMicrokernelTester()
177           .batch_size(batch_size)
178           .beta(beta)
179           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
180       }
181     }
182   }
183 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
184 
185 
186 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VELU__AVX2_RR1_P3_X8,batch_eq_8)187   TEST(F16_VELU__AVX2_RR1_P3_X8, batch_eq_8) {
188     TEST_REQUIRES_X86_AVX2;
189     VUnaryMicrokernelTester()
190       .batch_size(8)
191       .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
192   }
193 
TEST(F16_VELU__AVX2_RR1_P3_X8,batch_div_8)194   TEST(F16_VELU__AVX2_RR1_P3_X8, batch_div_8) {
195     TEST_REQUIRES_X86_AVX2;
196     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
197       VUnaryMicrokernelTester()
198         .batch_size(batch_size)
199         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
200     }
201   }
202 
TEST(F16_VELU__AVX2_RR1_P3_X8,batch_lt_8)203   TEST(F16_VELU__AVX2_RR1_P3_X8, batch_lt_8) {
204     TEST_REQUIRES_X86_AVX2;
205     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
206       VUnaryMicrokernelTester()
207         .batch_size(batch_size)
208         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
209     }
210   }
211 
TEST(F16_VELU__AVX2_RR1_P3_X8,batch_gt_8)212   TEST(F16_VELU__AVX2_RR1_P3_X8, batch_gt_8) {
213     TEST_REQUIRES_X86_AVX2;
214     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
215       VUnaryMicrokernelTester()
216         .batch_size(batch_size)
217         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
218     }
219   }
220 
TEST(F16_VELU__AVX2_RR1_P3_X8,inplace)221   TEST(F16_VELU__AVX2_RR1_P3_X8, inplace) {
222     TEST_REQUIRES_X86_AVX2;
223     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
224       VUnaryMicrokernelTester()
225         .batch_size(batch_size)
226         .inplace(true)
227         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
228     }
229   }
230 
TEST(F16_VELU__AVX2_RR1_P3_X8,prescale)231   TEST(F16_VELU__AVX2_RR1_P3_X8, prescale) {
232     TEST_REQUIRES_X86_AVX2;
233     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
234       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
235         VUnaryMicrokernelTester()
236           .batch_size(batch_size)
237           .prescale(prescale)
238           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
239       }
240     }
241   }
242 
TEST(F16_VELU__AVX2_RR1_P3_X8,alpha)243   TEST(F16_VELU__AVX2_RR1_P3_X8, alpha) {
244     TEST_REQUIRES_X86_AVX2;
245     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
246       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
247         VUnaryMicrokernelTester()
248           .batch_size(batch_size)
249           .alpha(alpha)
250           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
251       }
252     }
253   }
254 
TEST(F16_VELU__AVX2_RR1_P3_X8,beta)255   TEST(F16_VELU__AVX2_RR1_P3_X8, beta) {
256     TEST_REQUIRES_X86_AVX2;
257     for (float beta : std::vector<float>({0.3f, 3.0f})) {
258       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
259         VUnaryMicrokernelTester()
260           .batch_size(batch_size)
261           .beta(beta)
262           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
263       }
264     }
265   }
266 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
267 
268 
269 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VELU__AVX2_RR1_P3_X16,batch_eq_16)270   TEST(F16_VELU__AVX2_RR1_P3_X16, batch_eq_16) {
271     TEST_REQUIRES_X86_AVX2;
272     VUnaryMicrokernelTester()
273       .batch_size(16)
274       .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
275   }
276 
TEST(F16_VELU__AVX2_RR1_P3_X16,batch_div_16)277   TEST(F16_VELU__AVX2_RR1_P3_X16, batch_div_16) {
278     TEST_REQUIRES_X86_AVX2;
279     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
280       VUnaryMicrokernelTester()
281         .batch_size(batch_size)
282         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
283     }
284   }
285 
TEST(F16_VELU__AVX2_RR1_P3_X16,batch_lt_16)286   TEST(F16_VELU__AVX2_RR1_P3_X16, batch_lt_16) {
287     TEST_REQUIRES_X86_AVX2;
288     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
289       VUnaryMicrokernelTester()
290         .batch_size(batch_size)
291         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
292     }
293   }
294 
TEST(F16_VELU__AVX2_RR1_P3_X16,batch_gt_16)295   TEST(F16_VELU__AVX2_RR1_P3_X16, batch_gt_16) {
296     TEST_REQUIRES_X86_AVX2;
297     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
298       VUnaryMicrokernelTester()
299         .batch_size(batch_size)
300         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
301     }
302   }
303 
TEST(F16_VELU__AVX2_RR1_P3_X16,inplace)304   TEST(F16_VELU__AVX2_RR1_P3_X16, inplace) {
305     TEST_REQUIRES_X86_AVX2;
306     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
307       VUnaryMicrokernelTester()
308         .batch_size(batch_size)
309         .inplace(true)
310         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
311     }
312   }
313 
TEST(F16_VELU__AVX2_RR1_P3_X16,prescale)314   TEST(F16_VELU__AVX2_RR1_P3_X16, prescale) {
315     TEST_REQUIRES_X86_AVX2;
316     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
317       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
318         VUnaryMicrokernelTester()
319           .batch_size(batch_size)
320           .prescale(prescale)
321           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
322       }
323     }
324   }
325 
TEST(F16_VELU__AVX2_RR1_P3_X16,alpha)326   TEST(F16_VELU__AVX2_RR1_P3_X16, alpha) {
327     TEST_REQUIRES_X86_AVX2;
328     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
329       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
330         VUnaryMicrokernelTester()
331           .batch_size(batch_size)
332           .alpha(alpha)
333           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
334       }
335     }
336   }
337 
TEST(F16_VELU__AVX2_RR1_P3_X16,beta)338   TEST(F16_VELU__AVX2_RR1_P3_X16, beta) {
339     TEST_REQUIRES_X86_AVX2;
340     for (float beta : std::vector<float>({0.3f, 3.0f})) {
341       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
342         VUnaryMicrokernelTester()
343           .batch_size(batch_size)
344           .beta(beta)
345           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
346       }
347     }
348   }
349 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
350