xref: /aosp_15_r20/external/XNNPACK/test/u8-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/u8-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_ARCH_ARM || XNN_ARCH_ARM64
TEST(U8_VCLAMP__NEON_X64,batch_eq_64)21   TEST(U8_VCLAMP__NEON_X64, batch_eq_64) {
22     TEST_REQUIRES_ARM_NEON;
23     VUnaryMicrokernelTester()
24       .batch_size(64)
25       .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
26   }
27 
TEST(U8_VCLAMP__NEON_X64,batch_div_64)28   TEST(U8_VCLAMP__NEON_X64, batch_div_64) {
29     TEST_REQUIRES_ARM_NEON;
30     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
31       VUnaryMicrokernelTester()
32         .batch_size(batch_size)
33         .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
34     }
35   }
36 
TEST(U8_VCLAMP__NEON_X64,batch_lt_64)37   TEST(U8_VCLAMP__NEON_X64, batch_lt_64) {
38     TEST_REQUIRES_ARM_NEON;
39     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
40       VUnaryMicrokernelTester()
41         .batch_size(batch_size)
42         .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
43     }
44   }
45 
TEST(U8_VCLAMP__NEON_X64,batch_gt_64)46   TEST(U8_VCLAMP__NEON_X64, batch_gt_64) {
47     TEST_REQUIRES_ARM_NEON;
48     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
49       VUnaryMicrokernelTester()
50         .batch_size(batch_size)
51         .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
52     }
53   }
54 
TEST(U8_VCLAMP__NEON_X64,inplace)55   TEST(U8_VCLAMP__NEON_X64, inplace) {
56     TEST_REQUIRES_ARM_NEON;
57     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
58       VUnaryMicrokernelTester()
59         .batch_size(batch_size)
60         .inplace(true)
61         .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
62     }
63   }
64 
TEST(U8_VCLAMP__NEON_X64,qmin)65   TEST(U8_VCLAMP__NEON_X64, qmin) {
66     TEST_REQUIRES_ARM_NEON;
67     for (uint8_t qmin = 1; qmin < 255; qmin++) {
68       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
69         VUnaryMicrokernelTester()
70           .batch_size(batch_size)
71           .qmin(qmin)
72           .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
73       }
74     }
75   }
76 
TEST(U8_VCLAMP__NEON_X64,qmax)77   TEST(U8_VCLAMP__NEON_X64, qmax) {
78     TEST_REQUIRES_ARM_NEON;
79     for (uint8_t qmax = 1; qmax < 255; qmax++) {
80       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
81         VUnaryMicrokernelTester()
82           .batch_size(batch_size)
83           .qmax(qmax)
84           .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
85       }
86     }
87   }
88 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
89 
90 
91 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(U8_VCLAMP__SSE2_X64,batch_eq_64)92   TEST(U8_VCLAMP__SSE2_X64, batch_eq_64) {
93     TEST_REQUIRES_X86_SSE2;
94     VUnaryMicrokernelTester()
95       .batch_size(64)
96       .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
97   }
98 
TEST(U8_VCLAMP__SSE2_X64,batch_div_64)99   TEST(U8_VCLAMP__SSE2_X64, batch_div_64) {
100     TEST_REQUIRES_X86_SSE2;
101     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
102       VUnaryMicrokernelTester()
103         .batch_size(batch_size)
104         .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
105     }
106   }
107 
TEST(U8_VCLAMP__SSE2_X64,batch_lt_64)108   TEST(U8_VCLAMP__SSE2_X64, batch_lt_64) {
109     TEST_REQUIRES_X86_SSE2;
110     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
111       VUnaryMicrokernelTester()
112         .batch_size(batch_size)
113         .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
114     }
115   }
116 
TEST(U8_VCLAMP__SSE2_X64,batch_gt_64)117   TEST(U8_VCLAMP__SSE2_X64, batch_gt_64) {
118     TEST_REQUIRES_X86_SSE2;
119     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
120       VUnaryMicrokernelTester()
121         .batch_size(batch_size)
122         .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
123     }
124   }
125 
TEST(U8_VCLAMP__SSE2_X64,inplace)126   TEST(U8_VCLAMP__SSE2_X64, inplace) {
127     TEST_REQUIRES_X86_SSE2;
128     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
129       VUnaryMicrokernelTester()
130         .batch_size(batch_size)
131         .inplace(true)
132         .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
133     }
134   }
135 
TEST(U8_VCLAMP__SSE2_X64,qmin)136   TEST(U8_VCLAMP__SSE2_X64, qmin) {
137     TEST_REQUIRES_X86_SSE2;
138     for (uint8_t qmin = 1; qmin < 255; qmin++) {
139       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
140         VUnaryMicrokernelTester()
141           .batch_size(batch_size)
142           .qmin(qmin)
143           .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
144       }
145     }
146   }
147 
TEST(U8_VCLAMP__SSE2_X64,qmax)148   TEST(U8_VCLAMP__SSE2_X64, qmax) {
149     TEST_REQUIRES_X86_SSE2;
150     for (uint8_t qmax = 1; qmax < 255; qmax++) {
151       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
152         VUnaryMicrokernelTester()
153           .batch_size(batch_size)
154           .qmax(qmax)
155           .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
156       }
157     }
158   }
159 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
160 
161 
162 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(U8_VCLAMP__WASMSIMD_X64,batch_eq_64)163   TEST(U8_VCLAMP__WASMSIMD_X64, batch_eq_64) {
164     VUnaryMicrokernelTester()
165       .batch_size(64)
166       .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
167   }
168 
TEST(U8_VCLAMP__WASMSIMD_X64,batch_div_64)169   TEST(U8_VCLAMP__WASMSIMD_X64, batch_div_64) {
170     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
171       VUnaryMicrokernelTester()
172         .batch_size(batch_size)
173         .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
174     }
175   }
176 
TEST(U8_VCLAMP__WASMSIMD_X64,batch_lt_64)177   TEST(U8_VCLAMP__WASMSIMD_X64, batch_lt_64) {
178     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
179       VUnaryMicrokernelTester()
180         .batch_size(batch_size)
181         .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
182     }
183   }
184 
TEST(U8_VCLAMP__WASMSIMD_X64,batch_gt_64)185   TEST(U8_VCLAMP__WASMSIMD_X64, batch_gt_64) {
186     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
187       VUnaryMicrokernelTester()
188         .batch_size(batch_size)
189         .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
190     }
191   }
192 
TEST(U8_VCLAMP__WASMSIMD_X64,inplace)193   TEST(U8_VCLAMP__WASMSIMD_X64, inplace) {
194     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
195       VUnaryMicrokernelTester()
196         .batch_size(batch_size)
197         .inplace(true)
198         .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
199     }
200   }
201 
TEST(U8_VCLAMP__WASMSIMD_X64,qmin)202   TEST(U8_VCLAMP__WASMSIMD_X64, qmin) {
203     for (uint8_t qmin = 1; qmin < 255; qmin++) {
204       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
205         VUnaryMicrokernelTester()
206           .batch_size(batch_size)
207           .qmin(qmin)
208           .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
209       }
210     }
211   }
212 
TEST(U8_VCLAMP__WASMSIMD_X64,qmax)213   TEST(U8_VCLAMP__WASMSIMD_X64, qmax) {
214     for (uint8_t qmax = 1; qmax < 255; qmax++) {
215       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
216         VUnaryMicrokernelTester()
217           .batch_size(batch_size)
218           .qmax(qmax)
219           .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
220       }
221     }
222   }
223 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
224 
225 
TEST(U8_VCLAMP__SCALAR_X4,batch_eq_4)226 TEST(U8_VCLAMP__SCALAR_X4, batch_eq_4) {
227   VUnaryMicrokernelTester()
228     .batch_size(4)
229     .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
230 }
231 
TEST(U8_VCLAMP__SCALAR_X4,batch_div_4)232 TEST(U8_VCLAMP__SCALAR_X4, batch_div_4) {
233   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
234     VUnaryMicrokernelTester()
235       .batch_size(batch_size)
236       .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
237   }
238 }
239 
TEST(U8_VCLAMP__SCALAR_X4,batch_lt_4)240 TEST(U8_VCLAMP__SCALAR_X4, batch_lt_4) {
241   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
242     VUnaryMicrokernelTester()
243       .batch_size(batch_size)
244       .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
245   }
246 }
247 
TEST(U8_VCLAMP__SCALAR_X4,batch_gt_4)248 TEST(U8_VCLAMP__SCALAR_X4, batch_gt_4) {
249   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
250     VUnaryMicrokernelTester()
251       .batch_size(batch_size)
252       .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
253   }
254 }
255 
TEST(U8_VCLAMP__SCALAR_X4,inplace)256 TEST(U8_VCLAMP__SCALAR_X4, inplace) {
257   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
258     VUnaryMicrokernelTester()
259       .batch_size(batch_size)
260       .inplace(true)
261       .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
262   }
263 }
264 
TEST(U8_VCLAMP__SCALAR_X4,qmin)265 TEST(U8_VCLAMP__SCALAR_X4, qmin) {
266   for (uint8_t qmin = 1; qmin < 255; qmin++) {
267     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
268       VUnaryMicrokernelTester()
269         .batch_size(batch_size)
270         .qmin(qmin)
271         .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
272     }
273   }
274 }
275 
TEST(U8_VCLAMP__SCALAR_X4,qmax)276 TEST(U8_VCLAMP__SCALAR_X4, qmax) {
277   for (uint8_t qmax = 1; qmax < 255; qmax++) {
278     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
279       VUnaryMicrokernelTester()
280         .batch_size(batch_size)
281         .qmax(qmax)
282         .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
283     }
284   }
285 }
286