blob: 0e1cf082f6285a7e27164f633cbb635b73719376 [file] [log] [blame]
Marat Dukhana6c05162021-05-13 16:52:02 -07001// Copyright 2019 Google LLC
Frank Barchardb1966592020-05-12 13:47:06 -07002//
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!
Marat Dukhan6674d692021-05-05 22:27:00 -07007// Specification: test/f16-vclamp.yaml
Marat Dukhana6c05162021-05-13 16:52:02 -07008// Generator: tools/generate-vunary-test.py
Frank Barchardb1966592020-05-12 13:47:06 -07009
10
11#include <gtest/gtest.h>
12
13#include <xnnpack/common.h>
14#include <xnnpack/isa-checks.h>
15
Marat Dukhan60d3f242021-05-13 11:59:02 -070016#include <xnnpack/vunary.h>
Marat Dukhana6c05162021-05-13 16:52:02 -070017#include "vunary-microkernel-tester.h"
Frank Barchardb1966592020-05-12 13:47:06 -070018
19
20#if XNN_ARCH_ARM64
Marat Dukhan6674d692021-05-05 22:27:00 -070021 TEST(F16_VCLAMP__NEONFP16ARITH_X8, batch_eq_8) {
Frank Barchardb1966592020-05-12 13:47:06 -070022 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhana6c05162021-05-13 16:52:02 -070023 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -070024 .batch_size(8)
Marat Dukhan645af972022-01-09 22:50:27 -080025 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -070026 }
27
Marat Dukhan6674d692021-05-05 22:27:00 -070028 TEST(F16_VCLAMP__NEONFP16ARITH_X8, batch_div_8) {
Frank Barchardb1966592020-05-12 13:47:06 -070029 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
30 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhana6c05162021-05-13 16:52:02 -070031 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -070032 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -080033 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -070034 }
35 }
36
Marat Dukhan6674d692021-05-05 22:27:00 -070037 TEST(F16_VCLAMP__NEONFP16ARITH_X8, batch_lt_8) {
Frank Barchardb1966592020-05-12 13:47:06 -070038 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
39 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhana6c05162021-05-13 16:52:02 -070040 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -070041 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -080042 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -070043 }
44 }
45
Marat Dukhan6674d692021-05-05 22:27:00 -070046 TEST(F16_VCLAMP__NEONFP16ARITH_X8, batch_gt_8) {
Frank Barchardb1966592020-05-12 13:47:06 -070047 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
48 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhana6c05162021-05-13 16:52:02 -070049 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -070050 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -080051 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -070052 }
53 }
54
Marat Dukhan6674d692021-05-05 22:27:00 -070055 TEST(F16_VCLAMP__NEONFP16ARITH_X8, inplace) {
Frank Barchardb1966592020-05-12 13:47:06 -070056 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
57 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhana6c05162021-05-13 16:52:02 -070058 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -070059 .batch_size(batch_size)
60 .inplace(true)
Marat Dukhan645af972022-01-09 22:50:27 -080061 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -070062 }
63 }
64
Marat Dukhan6674d692021-05-05 22:27:00 -070065 TEST(F16_VCLAMP__NEONFP16ARITH_X8, qmin) {
Frank Barchardb1966592020-05-12 13:47:06 -070066 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhana6c05162021-05-13 16:52:02 -070067 for (uint8_t qmin = 1; qmin < 255; qmin++) {
68 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
69 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -070070 .batch_size(batch_size)
71 .qmin(qmin)
Marat Dukhan645af972022-01-09 22:50:27 -080072 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -070073 }
74 }
75 }
76
Marat Dukhan6674d692021-05-05 22:27:00 -070077 TEST(F16_VCLAMP__NEONFP16ARITH_X8, qmax) {
Frank Barchardb1966592020-05-12 13:47:06 -070078 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhana6c05162021-05-13 16:52:02 -070079 for (uint8_t qmax = 1; qmax < 255; qmax++) {
80 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
81 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -070082 .batch_size(batch_size)
Frank Barchardb1966592020-05-12 13:47:06 -070083 .qmax(qmax)
Marat Dukhan645af972022-01-09 22:50:27 -080084 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x8, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -070085 }
86 }
87 }
88#endif // XNN_ARCH_ARM64
89
90
91#if XNN_ARCH_ARM64
Marat Dukhan6674d692021-05-05 22:27:00 -070092 TEST(F16_VCLAMP__NEONFP16ARITH_X16, batch_eq_16) {
Frank Barchardb1966592020-05-12 13:47:06 -070093 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhana6c05162021-05-13 16:52:02 -070094 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -070095 .batch_size(16)
Marat Dukhan645af972022-01-09 22:50:27 -080096 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -070097 }
98
Marat Dukhan6674d692021-05-05 22:27:00 -070099 TEST(F16_VCLAMP__NEONFP16ARITH_X16, batch_div_16) {
Frank Barchardb1966592020-05-12 13:47:06 -0700100 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
101 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhana6c05162021-05-13 16:52:02 -0700102 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -0700103 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -0800104 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -0700105 }
106 }
107
Marat Dukhan6674d692021-05-05 22:27:00 -0700108 TEST(F16_VCLAMP__NEONFP16ARITH_X16, batch_lt_16) {
Frank Barchardb1966592020-05-12 13:47:06 -0700109 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
110 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhana6c05162021-05-13 16:52:02 -0700111 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -0700112 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -0800113 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -0700114 }
115 }
116
Marat Dukhan6674d692021-05-05 22:27:00 -0700117 TEST(F16_VCLAMP__NEONFP16ARITH_X16, batch_gt_16) {
Frank Barchardb1966592020-05-12 13:47:06 -0700118 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
119 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhana6c05162021-05-13 16:52:02 -0700120 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -0700121 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -0800122 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -0700123 }
124 }
125
Marat Dukhan6674d692021-05-05 22:27:00 -0700126 TEST(F16_VCLAMP__NEONFP16ARITH_X16, inplace) {
Frank Barchardb1966592020-05-12 13:47:06 -0700127 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
128 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhana6c05162021-05-13 16:52:02 -0700129 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -0700130 .batch_size(batch_size)
131 .inplace(true)
Marat Dukhan645af972022-01-09 22:50:27 -0800132 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -0700133 }
134 }
135
Marat Dukhan6674d692021-05-05 22:27:00 -0700136 TEST(F16_VCLAMP__NEONFP16ARITH_X16, qmin) {
Frank Barchardb1966592020-05-12 13:47:06 -0700137 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhana6c05162021-05-13 16:52:02 -0700138 for (uint8_t qmin = 1; qmin < 255; qmin++) {
139 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
140 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -0700141 .batch_size(batch_size)
142 .qmin(qmin)
Marat Dukhan645af972022-01-09 22:50:27 -0800143 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -0700144 }
145 }
146 }
147
Marat Dukhan6674d692021-05-05 22:27:00 -0700148 TEST(F16_VCLAMP__NEONFP16ARITH_X16, qmax) {
Frank Barchardb1966592020-05-12 13:47:06 -0700149 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhana6c05162021-05-13 16:52:02 -0700150 for (uint8_t qmax = 1; qmax < 255; qmax++) {
151 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
152 VUnaryMicrokernelTester()
Frank Barchardb1966592020-05-12 13:47:06 -0700153 .batch_size(batch_size)
Frank Barchardb1966592020-05-12 13:47:06 -0700154 .qmax(qmax)
Marat Dukhan645af972022-01-09 22:50:27 -0800155 .Test(xnn_f16_vclamp_ukernel__neonfp16arith_x16, xnn_init_f16_minmax_neon_params);
Frank Barchardb1966592020-05-12 13:47:06 -0700156 }
157 }
158 }
159#endif // XNN_ARCH_ARM64
Marat Dukhan645af972022-01-09 22:50:27 -0800160
161
162#if XNN_ARCH_X86 || XNN_ARCH_X86_64
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
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
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
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
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
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
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
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
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
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
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
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
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
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