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