xref: /aosp_15_r20/external/XNNPACK/test/f16-vclamp.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-vclamp.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_VCLAMP__NEONFP16ARITH_X8,batch_eq_8)21   TEST(F16_VCLAMP__NEONFP16ARITH_X8, batch_eq_8) {
22     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
23     VUnaryMicrokernelTester()
24       .batch_size(8)
25       .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
26   }
27 
TEST(F16_VCLAMP__NEONFP16ARITH_X8,batch_div_8)28   TEST(F16_VCLAMP__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_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
34     }
35   }
36 
TEST(F16_VCLAMP__NEONFP16ARITH_X8,batch_lt_8)37   TEST(F16_VCLAMP__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_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
43     }
44   }
45 
TEST(F16_VCLAMP__NEONFP16ARITH_X8,batch_gt_8)46   TEST(F16_VCLAMP__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_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
52     }
53   }
54 
TEST(F16_VCLAMP__NEONFP16ARITH_X8,inplace)55   TEST(F16_VCLAMP__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_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
62     }
63   }
64 
TEST(F16_VCLAMP__NEONFP16ARITH_X8,qmin)65   TEST(F16_VCLAMP__NEONFP16ARITH_X8, qmin) {
66     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
67     for (uint8_t qmin = 1; qmin < 255; qmin++) {
68       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
69         VUnaryMicrokernelTester()
70           .batch_size(batch_size)
71           .qmin(qmin)
72           .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
73       }
74     }
75   }
76 
TEST(F16_VCLAMP__NEONFP16ARITH_X8,qmax)77   TEST(F16_VCLAMP__NEONFP16ARITH_X8, qmax) {
78     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
79     for (uint8_t qmax = 1; qmax < 255; qmax++) {
80       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
81         VUnaryMicrokernelTester()
82           .batch_size(batch_size)
83           .qmax(qmax)
84           .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
85       }
86     }
87   }
88 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
89 
90 
91 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_VCLAMP__NEONFP16ARITH_X16,batch_eq_16)92   TEST(F16_VCLAMP__NEONFP16ARITH_X16, batch_eq_16) {
93     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
94     VUnaryMicrokernelTester()
95       .batch_size(16)
96       .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
97   }
98 
TEST(F16_VCLAMP__NEONFP16ARITH_X16,batch_div_16)99   TEST(F16_VCLAMP__NEONFP16ARITH_X16, batch_div_16) {
100     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
101     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
102       VUnaryMicrokernelTester()
103         .batch_size(batch_size)
104         .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
105     }
106   }
107 
TEST(F16_VCLAMP__NEONFP16ARITH_X16,batch_lt_16)108   TEST(F16_VCLAMP__NEONFP16ARITH_X16, batch_lt_16) {
109     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
110     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
111       VUnaryMicrokernelTester()
112         .batch_size(batch_size)
113         .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
114     }
115   }
116 
TEST(F16_VCLAMP__NEONFP16ARITH_X16,batch_gt_16)117   TEST(F16_VCLAMP__NEONFP16ARITH_X16, batch_gt_16) {
118     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
119     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
120       VUnaryMicrokernelTester()
121         .batch_size(batch_size)
122         .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
123     }
124   }
125 
TEST(F16_VCLAMP__NEONFP16ARITH_X16,inplace)126   TEST(F16_VCLAMP__NEONFP16ARITH_X16, inplace) {
127     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
128     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
129       VUnaryMicrokernelTester()
130         .batch_size(batch_size)
131         .inplace(true)
132         .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
133     }
134   }
135 
TEST(F16_VCLAMP__NEONFP16ARITH_X16,qmin)136   TEST(F16_VCLAMP__NEONFP16ARITH_X16, qmin) {
137     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
138     for (uint8_t qmin = 1; qmin < 255; qmin++) {
139       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
140         VUnaryMicrokernelTester()
141           .batch_size(batch_size)
142           .qmin(qmin)
143           .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
144       }
145     }
146   }
147 
TEST(F16_VCLAMP__NEONFP16ARITH_X16,qmax)148   TEST(F16_VCLAMP__NEONFP16ARITH_X16, qmax) {
149     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
150     for (uint8_t qmax = 1; qmax < 255; qmax++) {
151       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
152         VUnaryMicrokernelTester()
153           .batch_size(batch_size)
154           .qmax(qmax)
155           .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
156       }
157     }
158   }
159 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
160 
161 
162 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VCLAMP__F16C_X8,batch_eq_8)163   TEST(F16_VCLAMP__F16C_X8, batch_eq_8) {
164     TEST_REQUIRES_X86_F16C;
165     VUnaryMicrokernelTester()
166       .batch_size(8)
167       .Test(xnn_f16_vclamp_ukernel__f16c_x8, xnn_init_f16_minmax_avx_params);
168   }
169 
TEST(F16_VCLAMP__F16C_X8,batch_div_8)170   TEST(F16_VCLAMP__F16C_X8, batch_div_8) {
171     TEST_REQUIRES_X86_F16C;
172     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
173       VUnaryMicrokernelTester()
174         .batch_size(batch_size)
175         .Test(xnn_f16_vclamp_ukernel__f16c_x8, xnn_init_f16_minmax_avx_params);
176     }
177   }
178 
TEST(F16_VCLAMP__F16C_X8,batch_lt_8)179   TEST(F16_VCLAMP__F16C_X8, batch_lt_8) {
180     TEST_REQUIRES_X86_F16C;
181     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
182       VUnaryMicrokernelTester()
183         .batch_size(batch_size)
184         .Test(xnn_f16_vclamp_ukernel__f16c_x8, xnn_init_f16_minmax_avx_params);
185     }
186   }
187 
TEST(F16_VCLAMP__F16C_X8,batch_gt_8)188   TEST(F16_VCLAMP__F16C_X8, batch_gt_8) {
189     TEST_REQUIRES_X86_F16C;
190     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
191       VUnaryMicrokernelTester()
192         .batch_size(batch_size)
193         .Test(xnn_f16_vclamp_ukernel__f16c_x8, xnn_init_f16_minmax_avx_params);
194     }
195   }
196 
TEST(F16_VCLAMP__F16C_X8,inplace)197   TEST(F16_VCLAMP__F16C_X8, inplace) {
198     TEST_REQUIRES_X86_F16C;
199     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
200       VUnaryMicrokernelTester()
201         .batch_size(batch_size)
202         .inplace(true)
203         .Test(xnn_f16_vclamp_ukernel__f16c_x8, xnn_init_f16_minmax_avx_params);
204     }
205   }
206 
TEST(F16_VCLAMP__F16C_X8,qmin)207   TEST(F16_VCLAMP__F16C_X8, qmin) {
208     TEST_REQUIRES_X86_F16C;
209     for (uint8_t qmin = 1; qmin < 255; qmin++) {
210       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
211         VUnaryMicrokernelTester()
212           .batch_size(batch_size)
213           .qmin(qmin)
214           .Test(xnn_f16_vclamp_ukernel__f16c_x8, xnn_init_f16_minmax_avx_params);
215       }
216     }
217   }
218 
TEST(F16_VCLAMP__F16C_X8,qmax)219   TEST(F16_VCLAMP__F16C_X8, qmax) {
220     TEST_REQUIRES_X86_F16C;
221     for (uint8_t qmax = 1; qmax < 255; qmax++) {
222       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
223         VUnaryMicrokernelTester()
224           .batch_size(batch_size)
225           .qmax(qmax)
226           .Test(xnn_f16_vclamp_ukernel__f16c_x8, xnn_init_f16_minmax_avx_params);
227       }
228     }
229   }
230 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
231 
232 
233 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VCLAMP__F16C_X16,batch_eq_16)234   TEST(F16_VCLAMP__F16C_X16, batch_eq_16) {
235     TEST_REQUIRES_X86_F16C;
236     VUnaryMicrokernelTester()
237       .batch_size(16)
238       .Test(xnn_f16_vclamp_ukernel__f16c_x16, xnn_init_f16_minmax_avx_params);
239   }
240 
TEST(F16_VCLAMP__F16C_X16,batch_div_16)241   TEST(F16_VCLAMP__F16C_X16, batch_div_16) {
242     TEST_REQUIRES_X86_F16C;
243     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
244       VUnaryMicrokernelTester()
245         .batch_size(batch_size)
246         .Test(xnn_f16_vclamp_ukernel__f16c_x16, xnn_init_f16_minmax_avx_params);
247     }
248   }
249 
TEST(F16_VCLAMP__F16C_X16,batch_lt_16)250   TEST(F16_VCLAMP__F16C_X16, batch_lt_16) {
251     TEST_REQUIRES_X86_F16C;
252     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
253       VUnaryMicrokernelTester()
254         .batch_size(batch_size)
255         .Test(xnn_f16_vclamp_ukernel__f16c_x16, xnn_init_f16_minmax_avx_params);
256     }
257   }
258 
TEST(F16_VCLAMP__F16C_X16,batch_gt_16)259   TEST(F16_VCLAMP__F16C_X16, batch_gt_16) {
260     TEST_REQUIRES_X86_F16C;
261     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
262       VUnaryMicrokernelTester()
263         .batch_size(batch_size)
264         .Test(xnn_f16_vclamp_ukernel__f16c_x16, xnn_init_f16_minmax_avx_params);
265     }
266   }
267 
TEST(F16_VCLAMP__F16C_X16,inplace)268   TEST(F16_VCLAMP__F16C_X16, inplace) {
269     TEST_REQUIRES_X86_F16C;
270     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
271       VUnaryMicrokernelTester()
272         .batch_size(batch_size)
273         .inplace(true)
274         .Test(xnn_f16_vclamp_ukernel__f16c_x16, xnn_init_f16_minmax_avx_params);
275     }
276   }
277 
TEST(F16_VCLAMP__F16C_X16,qmin)278   TEST(F16_VCLAMP__F16C_X16, qmin) {
279     TEST_REQUIRES_X86_F16C;
280     for (uint8_t qmin = 1; qmin < 255; qmin++) {
281       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
282         VUnaryMicrokernelTester()
283           .batch_size(batch_size)
284           .qmin(qmin)
285           .Test(xnn_f16_vclamp_ukernel__f16c_x16, xnn_init_f16_minmax_avx_params);
286       }
287     }
288   }
289 
TEST(F16_VCLAMP__F16C_X16,qmax)290   TEST(F16_VCLAMP__F16C_X16, qmax) {
291     TEST_REQUIRES_X86_F16C;
292     for (uint8_t qmax = 1; qmax < 255; qmax++) {
293       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
294         VUnaryMicrokernelTester()
295           .batch_size(batch_size)
296           .qmax(qmax)
297           .Test(xnn_f16_vclamp_ukernel__f16c_x16, xnn_init_f16_minmax_avx_params);
298       }
299     }
300   }
301 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
302