xref: /aosp_15_r20/external/XNNPACK/test/f16-vlrelu.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-vlrelu.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_VLRELU__NEONFP16ARITH_X8,batch_eq_8)21   TEST(F16_VLRELU__NEONFP16ARITH_X8, batch_eq_8) {
22     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
23     VUnaryMicrokernelTester()
24       .batch_size(8)
25       .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params);
26   }
27 
TEST(F16_VLRELU__NEONFP16ARITH_X8,batch_div_8)28   TEST(F16_VLRELU__NEONFP16ARITH_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_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params);
34     }
35   }
36 
TEST(F16_VLRELU__NEONFP16ARITH_X8,batch_lt_8)37   TEST(F16_VLRELU__NEONFP16ARITH_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_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params);
43     }
44   }
45 
TEST(F16_VLRELU__NEONFP16ARITH_X8,batch_gt_8)46   TEST(F16_VLRELU__NEONFP16ARITH_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_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params);
52     }
53   }
54 
TEST(F16_VLRELU__NEONFP16ARITH_X8,inplace)55   TEST(F16_VLRELU__NEONFP16ARITH_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_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params);
62     }
63   }
64 
TEST(F16_VLRELU__NEONFP16ARITH_X8,slope)65   TEST(F16_VLRELU__NEONFP16ARITH_X8, slope) {
66     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
67     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
68       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
69         VUnaryMicrokernelTester()
70           .batch_size(batch_size)
71           .slope(slope)
72           .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params);
73       }
74     }
75   }
76 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
77 
78 
79 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_VLRELU__NEONFP16ARITH_X16,batch_eq_16)80   TEST(F16_VLRELU__NEONFP16ARITH_X16, batch_eq_16) {
81     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
82     VUnaryMicrokernelTester()
83       .batch_size(16)
84       .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params);
85   }
86 
TEST(F16_VLRELU__NEONFP16ARITH_X16,batch_div_16)87   TEST(F16_VLRELU__NEONFP16ARITH_X16, batch_div_16) {
88     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
89     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
90       VUnaryMicrokernelTester()
91         .batch_size(batch_size)
92         .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params);
93     }
94   }
95 
TEST(F16_VLRELU__NEONFP16ARITH_X16,batch_lt_16)96   TEST(F16_VLRELU__NEONFP16ARITH_X16, batch_lt_16) {
97     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
98     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
99       VUnaryMicrokernelTester()
100         .batch_size(batch_size)
101         .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params);
102     }
103   }
104 
TEST(F16_VLRELU__NEONFP16ARITH_X16,batch_gt_16)105   TEST(F16_VLRELU__NEONFP16ARITH_X16, batch_gt_16) {
106     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
107     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
108       VUnaryMicrokernelTester()
109         .batch_size(batch_size)
110         .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params);
111     }
112   }
113 
TEST(F16_VLRELU__NEONFP16ARITH_X16,inplace)114   TEST(F16_VLRELU__NEONFP16ARITH_X16, inplace) {
115     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
116     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
117       VUnaryMicrokernelTester()
118         .batch_size(batch_size)
119         .inplace(true)
120         .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params);
121     }
122   }
123 
TEST(F16_VLRELU__NEONFP16ARITH_X16,slope)124   TEST(F16_VLRELU__NEONFP16ARITH_X16, slope) {
125     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
126     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
127       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
128         VUnaryMicrokernelTester()
129           .batch_size(batch_size)
130           .slope(slope)
131           .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params);
132       }
133     }
134   }
135 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
136 
137 
138 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VLRELU__F16C_X8,batch_eq_8)139   TEST(F16_VLRELU__F16C_X8, batch_eq_8) {
140     TEST_REQUIRES_X86_F16C;
141     VUnaryMicrokernelTester()
142       .batch_size(8)
143       .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params);
144   }
145 
TEST(F16_VLRELU__F16C_X8,batch_div_8)146   TEST(F16_VLRELU__F16C_X8, batch_div_8) {
147     TEST_REQUIRES_X86_F16C;
148     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
149       VUnaryMicrokernelTester()
150         .batch_size(batch_size)
151         .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params);
152     }
153   }
154 
TEST(F16_VLRELU__F16C_X8,batch_lt_8)155   TEST(F16_VLRELU__F16C_X8, batch_lt_8) {
156     TEST_REQUIRES_X86_F16C;
157     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
158       VUnaryMicrokernelTester()
159         .batch_size(batch_size)
160         .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params);
161     }
162   }
163 
TEST(F16_VLRELU__F16C_X8,batch_gt_8)164   TEST(F16_VLRELU__F16C_X8, batch_gt_8) {
165     TEST_REQUIRES_X86_F16C;
166     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
167       VUnaryMicrokernelTester()
168         .batch_size(batch_size)
169         .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params);
170     }
171   }
172 
TEST(F16_VLRELU__F16C_X8,inplace)173   TEST(F16_VLRELU__F16C_X8, inplace) {
174     TEST_REQUIRES_X86_F16C;
175     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
176       VUnaryMicrokernelTester()
177         .batch_size(batch_size)
178         .inplace(true)
179         .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params);
180     }
181   }
182 
TEST(F16_VLRELU__F16C_X8,slope)183   TEST(F16_VLRELU__F16C_X8, slope) {
184     TEST_REQUIRES_X86_F16C;
185     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
186       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
187         VUnaryMicrokernelTester()
188           .batch_size(batch_size)
189           .slope(slope)
190           .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params);
191       }
192     }
193   }
194 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
195 
196 
197 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VLRELU__F16C_X16,batch_eq_16)198   TEST(F16_VLRELU__F16C_X16, batch_eq_16) {
199     TEST_REQUIRES_X86_F16C;
200     VUnaryMicrokernelTester()
201       .batch_size(16)
202       .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params);
203   }
204 
TEST(F16_VLRELU__F16C_X16,batch_div_16)205   TEST(F16_VLRELU__F16C_X16, batch_div_16) {
206     TEST_REQUIRES_X86_F16C;
207     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
208       VUnaryMicrokernelTester()
209         .batch_size(batch_size)
210         .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params);
211     }
212   }
213 
TEST(F16_VLRELU__F16C_X16,batch_lt_16)214   TEST(F16_VLRELU__F16C_X16, batch_lt_16) {
215     TEST_REQUIRES_X86_F16C;
216     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
217       VUnaryMicrokernelTester()
218         .batch_size(batch_size)
219         .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params);
220     }
221   }
222 
TEST(F16_VLRELU__F16C_X16,batch_gt_16)223   TEST(F16_VLRELU__F16C_X16, batch_gt_16) {
224     TEST_REQUIRES_X86_F16C;
225     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
226       VUnaryMicrokernelTester()
227         .batch_size(batch_size)
228         .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params);
229     }
230   }
231 
TEST(F16_VLRELU__F16C_X16,inplace)232   TEST(F16_VLRELU__F16C_X16, inplace) {
233     TEST_REQUIRES_X86_F16C;
234     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
235       VUnaryMicrokernelTester()
236         .batch_size(batch_size)
237         .inplace(true)
238         .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params);
239     }
240   }
241 
TEST(F16_VLRELU__F16C_X16,slope)242   TEST(F16_VLRELU__F16C_X16, slope) {
243     TEST_REQUIRES_X86_F16C;
244     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
245       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
246         VUnaryMicrokernelTester()
247           .batch_size(batch_size)
248           .slope(slope)
249           .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params);
250       }
251     }
252   }
253 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
254