blob: ff596c3ce6058a798a3dec46b0eb497592e18ec3 [file] [log] [blame]
Marat Dukhan60d3f242021-05-13 11:59:02 -07001// Copyright 2019 Google LLC
XNNPACK Teamb455b122019-09-27 18:10:33 -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.
Marat Dukhan5c5fa962020-03-10 18:38:33 -07005//
6// Auto-generated file. Do not edit!
Marat Dukhan6674d692021-05-05 22:27:00 -07007// Specification: test/f32-vclamp.yaml
Marat Dukhan60d3f242021-05-13 11:59:02 -07008// Generator: tools/generate-vunary-test.py
Marat Dukhan5c5fa962020-03-10 18:38:33 -07009
XNNPACK Teamb455b122019-09-27 18:10:33 -070010
XNNPACK Teamb455b122019-09-27 18:10:33 -070011#include <gtest/gtest.h>
12
Marat Dukhan1dadbf72019-10-01 10:46:20 -070013#include <xnnpack/common.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070014#include <xnnpack/isa-checks.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070015
Marat Dukhan60d3f242021-05-13 11:59:02 -070016#include <xnnpack/vunary.h>
17#include "vunary-microkernel-tester.h"
XNNPACK Teamb455b122019-09-27 18:10:33 -070018
19
Marat Dukhan1dadbf72019-10-01 10:46:20 -070020#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan6674d692021-05-05 22:27:00 -070021 TEST(F32_VCLAMP__NEON_X4, batch_eq_4) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070022 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -070023 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070024 .batch_size(4)
Marat Dukhan0d10cc72021-12-23 19:49:19 -080025 .Test(xnn_f32_vclamp_ukernel__neon_x4, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070026 }
27
Marat Dukhan6674d692021-05-05 22:27:00 -070028 TEST(F32_VCLAMP__NEON_X4, batch_div_4) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070029 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070030 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070031 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070032 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -080033 .Test(xnn_f32_vclamp_ukernel__neon_x4, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070034 }
35 }
36
Marat Dukhan6674d692021-05-05 22:27:00 -070037 TEST(F32_VCLAMP__NEON_X4, batch_lt_4) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070038 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070039 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070040 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070041 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -080042 .Test(xnn_f32_vclamp_ukernel__neon_x4, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070043 }
44 }
45
Marat Dukhan6674d692021-05-05 22:27:00 -070046 TEST(F32_VCLAMP__NEON_X4, batch_gt_4) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070047 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070048 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070049 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070050 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -080051 .Test(xnn_f32_vclamp_ukernel__neon_x4, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070052 }
53 }
54
Marat Dukhan6674d692021-05-05 22:27:00 -070055 TEST(F32_VCLAMP__NEON_X4, inplace) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070056 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070057 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070058 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070059 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -070060 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -080061 .Test(xnn_f32_vclamp_ukernel__neon_x4, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070062 }
63 }
64
Marat Dukhan6674d692021-05-05 22:27:00 -070065 TEST(F32_VCLAMP__NEON_X4, qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070066 TEST_REQUIRES_ARM_NEON;
Marat Dukhan60d3f242021-05-13 11:59:02 -070067 for (uint8_t qmin = 1; qmin < 255; qmin++) {
68 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070069 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070070 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -070071 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -080072 .Test(xnn_f32_vclamp_ukernel__neon_x4, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070073 }
74 }
75 }
76
Marat Dukhan6674d692021-05-05 22:27:00 -070077 TEST(F32_VCLAMP__NEON_X4, qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070078 TEST_REQUIRES_ARM_NEON;
Marat Dukhan60d3f242021-05-13 11:59:02 -070079 for (uint8_t qmax = 1; qmax < 255; qmax++) {
80 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070081 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070082 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -070083 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -080084 .Test(xnn_f32_vclamp_ukernel__neon_x4, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070085 }
86 }
87 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -070088#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
XNNPACK Teamb455b122019-09-27 18:10:33 -070089
Marat Dukhan5c5fa962020-03-10 18:38:33 -070090
91#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan6674d692021-05-05 22:27:00 -070092 TEST(F32_VCLAMP__NEON_X8, batch_eq_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -070093 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -070094 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070095 .batch_size(8)
Marat Dukhan0d10cc72021-12-23 19:49:19 -080096 .Test(xnn_f32_vclamp_ukernel__neon_x8, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070097 }
98
Marat Dukhan6674d692021-05-05 22:27:00 -070099 TEST(F32_VCLAMP__NEON_X8, batch_div_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700100 TEST_REQUIRES_ARM_NEON;
101 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700102 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700103 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800104 .Test(xnn_f32_vclamp_ukernel__neon_x8, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700105 }
106 }
107
Marat Dukhan6674d692021-05-05 22:27:00 -0700108 TEST(F32_VCLAMP__NEON_X8, batch_lt_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700109 TEST_REQUIRES_ARM_NEON;
110 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700111 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700112 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800113 .Test(xnn_f32_vclamp_ukernel__neon_x8, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700114 }
115 }
116
Marat Dukhan6674d692021-05-05 22:27:00 -0700117 TEST(F32_VCLAMP__NEON_X8, batch_gt_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700118 TEST_REQUIRES_ARM_NEON;
119 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700120 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700121 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800122 .Test(xnn_f32_vclamp_ukernel__neon_x8, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700123 }
124 }
125
Marat Dukhan6674d692021-05-05 22:27:00 -0700126 TEST(F32_VCLAMP__NEON_X8, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700127 TEST_REQUIRES_ARM_NEON;
128 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700129 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700130 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700131 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800132 .Test(xnn_f32_vclamp_ukernel__neon_x8, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700133 }
134 }
135
Marat Dukhan6674d692021-05-05 22:27:00 -0700136 TEST(F32_VCLAMP__NEON_X8, qmin) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700137 TEST_REQUIRES_ARM_NEON;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700138 for (uint8_t qmin = 1; qmin < 255; qmin++) {
139 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700140 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700141 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700142 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800143 .Test(xnn_f32_vclamp_ukernel__neon_x8, xnn_init_f32_minmax_scalar_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700144 }
145 }
146 }
147
Marat Dukhan6674d692021-05-05 22:27:00 -0700148 TEST(F32_VCLAMP__NEON_X8, qmax) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700149 TEST_REQUIRES_ARM_NEON;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700150 for (uint8_t qmax = 1; qmax < 255; qmax++) {
151 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700152 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700153 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700154 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800155 .Test(xnn_f32_vclamp_ukernel__neon_x8, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700156 }
157 }
158 }
159#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
160
161
162#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan6674d692021-05-05 22:27:00 -0700163 TEST(F32_VCLAMP__SSE_X4, batch_eq_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700164 TEST_REQUIRES_X86_SSE;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700165 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700166 .batch_size(4)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800167 .Test(xnn_f32_vclamp_ukernel__sse_x4, xnn_init_f32_minmax_sse_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700168 }
169
Marat Dukhan6674d692021-05-05 22:27:00 -0700170 TEST(F32_VCLAMP__SSE_X4, batch_div_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700171 TEST_REQUIRES_X86_SSE;
172 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700173 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700174 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800175 .Test(xnn_f32_vclamp_ukernel__sse_x4, xnn_init_f32_minmax_sse_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700176 }
177 }
178
Marat Dukhan6674d692021-05-05 22:27:00 -0700179 TEST(F32_VCLAMP__SSE_X4, batch_lt_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700180 TEST_REQUIRES_X86_SSE;
181 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700182 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700183 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800184 .Test(xnn_f32_vclamp_ukernel__sse_x4, xnn_init_f32_minmax_sse_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700185 }
186 }
187
Marat Dukhan6674d692021-05-05 22:27:00 -0700188 TEST(F32_VCLAMP__SSE_X4, batch_gt_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700189 TEST_REQUIRES_X86_SSE;
190 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700191 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700192 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800193 .Test(xnn_f32_vclamp_ukernel__sse_x4, xnn_init_f32_minmax_sse_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700194 }
195 }
196
Marat Dukhan6674d692021-05-05 22:27:00 -0700197 TEST(F32_VCLAMP__SSE_X4, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700198 TEST_REQUIRES_X86_SSE;
199 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700200 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700201 .batch_size(batch_size)
202 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800203 .Test(xnn_f32_vclamp_ukernel__sse_x4, xnn_init_f32_minmax_sse_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700204 }
205 }
206
Marat Dukhan6674d692021-05-05 22:27:00 -0700207 TEST(F32_VCLAMP__SSE_X4, qmin) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700208 TEST_REQUIRES_X86_SSE;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700209 for (uint8_t qmin = 1; qmin < 255; qmin++) {
210 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700211 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700212 .batch_size(batch_size)
213 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800214 .Test(xnn_f32_vclamp_ukernel__sse_x4, xnn_init_f32_minmax_sse_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700215 }
216 }
217 }
218
Marat Dukhan6674d692021-05-05 22:27:00 -0700219 TEST(F32_VCLAMP__SSE_X4, qmax) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700220 TEST_REQUIRES_X86_SSE;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700221 for (uint8_t qmax = 1; qmax < 255; qmax++) {
222 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700223 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700224 .batch_size(batch_size)
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700225 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800226 .Test(xnn_f32_vclamp_ukernel__sse_x4, xnn_init_f32_minmax_sse_params);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700227 }
228 }
229 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -0700230#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhane2c3f292019-11-27 15:40:54 -0800231
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700232
Marat Dukhane2c3f292019-11-27 15:40:54 -0800233#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan6674d692021-05-05 22:27:00 -0700234 TEST(F32_VCLAMP__SSE_X8, batch_eq_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700235 TEST_REQUIRES_X86_SSE;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700236 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700237 .batch_size(8)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800238 .Test(xnn_f32_vclamp_ukernel__sse_x8, xnn_init_f32_minmax_sse_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800239 }
240
Marat Dukhan6674d692021-05-05 22:27:00 -0700241 TEST(F32_VCLAMP__SSE_X8, batch_div_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700242 TEST_REQUIRES_X86_SSE;
243 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700244 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700245 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800246 .Test(xnn_f32_vclamp_ukernel__sse_x8, xnn_init_f32_minmax_sse_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800247 }
248 }
249
Marat Dukhan6674d692021-05-05 22:27:00 -0700250 TEST(F32_VCLAMP__SSE_X8, batch_lt_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700251 TEST_REQUIRES_X86_SSE;
252 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700253 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700254 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800255 .Test(xnn_f32_vclamp_ukernel__sse_x8, xnn_init_f32_minmax_sse_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800256 }
257 }
258
Marat Dukhan6674d692021-05-05 22:27:00 -0700259 TEST(F32_VCLAMP__SSE_X8, batch_gt_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700260 TEST_REQUIRES_X86_SSE;
261 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700262 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700263 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800264 .Test(xnn_f32_vclamp_ukernel__sse_x8, xnn_init_f32_minmax_sse_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800265 }
266 }
267
Marat Dukhan6674d692021-05-05 22:27:00 -0700268 TEST(F32_VCLAMP__SSE_X8, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700269 TEST_REQUIRES_X86_SSE;
270 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700271 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700272 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800273 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800274 .Test(xnn_f32_vclamp_ukernel__sse_x8, xnn_init_f32_minmax_sse_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800275 }
276 }
277
Marat Dukhan6674d692021-05-05 22:27:00 -0700278 TEST(F32_VCLAMP__SSE_X8, qmin) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700279 TEST_REQUIRES_X86_SSE;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700280 for (uint8_t qmin = 1; qmin < 255; qmin++) {
281 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700282 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700283 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800284 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800285 .Test(xnn_f32_vclamp_ukernel__sse_x8, xnn_init_f32_minmax_sse_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800286 }
287 }
288 }
289
Marat Dukhan6674d692021-05-05 22:27:00 -0700290 TEST(F32_VCLAMP__SSE_X8, qmax) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700291 TEST_REQUIRES_X86_SSE;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700292 for (uint8_t qmax = 1; qmax < 255; qmax++) {
293 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700294 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700295 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800296 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800297 .Test(xnn_f32_vclamp_ukernel__sse_x8, xnn_init_f32_minmax_sse_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800298 }
299 }
300 }
301#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
302
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700303
Marat Dukhane2c3f292019-11-27 15:40:54 -0800304#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan6674d692021-05-05 22:27:00 -0700305 TEST(F32_VCLAMP__AVX_X8, batch_eq_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700306 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700307 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700308 .batch_size(8)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800309 .Test(xnn_f32_vclamp_ukernel__avx_x8, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800310 }
311
Marat Dukhan6674d692021-05-05 22:27:00 -0700312 TEST(F32_VCLAMP__AVX_X8, batch_div_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700313 TEST_REQUIRES_X86_AVX;
314 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700315 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700316 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800317 .Test(xnn_f32_vclamp_ukernel__avx_x8, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800318 }
319 }
320
Marat Dukhan6674d692021-05-05 22:27:00 -0700321 TEST(F32_VCLAMP__AVX_X8, batch_lt_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700322 TEST_REQUIRES_X86_AVX;
323 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700324 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700325 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800326 .Test(xnn_f32_vclamp_ukernel__avx_x8, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800327 }
328 }
329
Marat Dukhan6674d692021-05-05 22:27:00 -0700330 TEST(F32_VCLAMP__AVX_X8, batch_gt_8) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700331 TEST_REQUIRES_X86_AVX;
332 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700333 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700334 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800335 .Test(xnn_f32_vclamp_ukernel__avx_x8, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800336 }
337 }
338
Marat Dukhan6674d692021-05-05 22:27:00 -0700339 TEST(F32_VCLAMP__AVX_X8, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700340 TEST_REQUIRES_X86_AVX;
341 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700342 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700343 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800344 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800345 .Test(xnn_f32_vclamp_ukernel__avx_x8, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800346 }
347 }
348
Marat Dukhan6674d692021-05-05 22:27:00 -0700349 TEST(F32_VCLAMP__AVX_X8, qmin) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700350 TEST_REQUIRES_X86_AVX;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700351 for (uint8_t qmin = 1; qmin < 255; qmin++) {
352 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700353 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700354 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800355 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800356 .Test(xnn_f32_vclamp_ukernel__avx_x8, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800357 }
358 }
359 }
360
Marat Dukhan6674d692021-05-05 22:27:00 -0700361 TEST(F32_VCLAMP__AVX_X8, qmax) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700362 TEST_REQUIRES_X86_AVX;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700363 for (uint8_t qmax = 1; qmax < 255; qmax++) {
364 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700365 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700366 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800367 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800368 .Test(xnn_f32_vclamp_ukernel__avx_x8, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800369 }
370 }
371 }
372#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
373
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700374
375#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan6674d692021-05-05 22:27:00 -0700376 TEST(F32_VCLAMP__AVX_X16, batch_eq_16) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700377 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700378 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700379 .batch_size(16)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800380 .Test(xnn_f32_vclamp_ukernel__avx_x16, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800381 }
382
Marat Dukhan6674d692021-05-05 22:27:00 -0700383 TEST(F32_VCLAMP__AVX_X16, batch_div_16) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700384 TEST_REQUIRES_X86_AVX;
385 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700386 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700387 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800388 .Test(xnn_f32_vclamp_ukernel__avx_x16, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800389 }
390 }
391
Marat Dukhan6674d692021-05-05 22:27:00 -0700392 TEST(F32_VCLAMP__AVX_X16, batch_lt_16) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700393 TEST_REQUIRES_X86_AVX;
394 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700395 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700396 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800397 .Test(xnn_f32_vclamp_ukernel__avx_x16, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800398 }
399 }
400
Marat Dukhan6674d692021-05-05 22:27:00 -0700401 TEST(F32_VCLAMP__AVX_X16, batch_gt_16) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700402 TEST_REQUIRES_X86_AVX;
403 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700404 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700405 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800406 .Test(xnn_f32_vclamp_ukernel__avx_x16, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800407 }
408 }
409
Marat Dukhan6674d692021-05-05 22:27:00 -0700410 TEST(F32_VCLAMP__AVX_X16, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700411 TEST_REQUIRES_X86_AVX;
412 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700413 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700414 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800415 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800416 .Test(xnn_f32_vclamp_ukernel__avx_x16, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800417 }
418 }
419
Marat Dukhan6674d692021-05-05 22:27:00 -0700420 TEST(F32_VCLAMP__AVX_X16, qmin) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700421 TEST_REQUIRES_X86_AVX;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700422 for (uint8_t qmin = 1; qmin < 255; qmin++) {
423 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700424 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700425 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800426 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800427 .Test(xnn_f32_vclamp_ukernel__avx_x16, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800428 }
429 }
430 }
431
Marat Dukhan6674d692021-05-05 22:27:00 -0700432 TEST(F32_VCLAMP__AVX_X16, qmax) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700433 TEST_REQUIRES_X86_AVX;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700434 for (uint8_t qmax = 1; qmax < 255; qmax++) {
435 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700436 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700437 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -0800438 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800439 .Test(xnn_f32_vclamp_ukernel__avx_x16, xnn_init_f32_minmax_avx_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -0800440 }
441 }
442 }
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700443#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
444
445
446#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan6674d692021-05-05 22:27:00 -0700447 TEST(F32_VCLAMP__AVX512F_X16, batch_eq_16) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700448 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700449 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700450 .batch_size(16)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800451 .Test(xnn_f32_vclamp_ukernel__avx512f_x16, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700452 }
453
Marat Dukhan6674d692021-05-05 22:27:00 -0700454 TEST(F32_VCLAMP__AVX512F_X16, batch_div_16) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700455 TEST_REQUIRES_X86_AVX512F;
456 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700457 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700458 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800459 .Test(xnn_f32_vclamp_ukernel__avx512f_x16, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700460 }
461 }
462
Marat Dukhan6674d692021-05-05 22:27:00 -0700463 TEST(F32_VCLAMP__AVX512F_X16, batch_lt_16) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700464 TEST_REQUIRES_X86_AVX512F;
465 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700466 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700467 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800468 .Test(xnn_f32_vclamp_ukernel__avx512f_x16, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700469 }
470 }
471
Marat Dukhan6674d692021-05-05 22:27:00 -0700472 TEST(F32_VCLAMP__AVX512F_X16, batch_gt_16) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700473 TEST_REQUIRES_X86_AVX512F;
474 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700475 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700476 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800477 .Test(xnn_f32_vclamp_ukernel__avx512f_x16, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700478 }
479 }
480
Marat Dukhan6674d692021-05-05 22:27:00 -0700481 TEST(F32_VCLAMP__AVX512F_X16, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700482 TEST_REQUIRES_X86_AVX512F;
483 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700484 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700485 .batch_size(batch_size)
486 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800487 .Test(xnn_f32_vclamp_ukernel__avx512f_x16, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700488 }
489 }
490
Marat Dukhan6674d692021-05-05 22:27:00 -0700491 TEST(F32_VCLAMP__AVX512F_X16, qmin) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700492 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700493 for (uint8_t qmin = 1; qmin < 255; qmin++) {
494 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700495 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700496 .batch_size(batch_size)
497 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800498 .Test(xnn_f32_vclamp_ukernel__avx512f_x16, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700499 }
500 }
501 }
502
Marat Dukhan6674d692021-05-05 22:27:00 -0700503 TEST(F32_VCLAMP__AVX512F_X16, qmax) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700504 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700505 for (uint8_t qmax = 1; qmax < 255; qmax++) {
506 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700507 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700508 .batch_size(batch_size)
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700509 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800510 .Test(xnn_f32_vclamp_ukernel__avx512f_x16, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700511 }
512 }
513 }
514#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
515
516
517#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan6674d692021-05-05 22:27:00 -0700518 TEST(F32_VCLAMP__AVX512F_X32, batch_eq_32) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700519 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700520 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700521 .batch_size(32)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800522 .Test(xnn_f32_vclamp_ukernel__avx512f_x32, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700523 }
524
Marat Dukhan6674d692021-05-05 22:27:00 -0700525 TEST(F32_VCLAMP__AVX512F_X32, batch_div_32) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700526 TEST_REQUIRES_X86_AVX512F;
527 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700528 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700529 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800530 .Test(xnn_f32_vclamp_ukernel__avx512f_x32, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700531 }
532 }
533
Marat Dukhan6674d692021-05-05 22:27:00 -0700534 TEST(F32_VCLAMP__AVX512F_X32, batch_lt_32) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700535 TEST_REQUIRES_X86_AVX512F;
536 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700537 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700538 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800539 .Test(xnn_f32_vclamp_ukernel__avx512f_x32, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700540 }
541 }
542
Marat Dukhan6674d692021-05-05 22:27:00 -0700543 TEST(F32_VCLAMP__AVX512F_X32, batch_gt_32) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700544 TEST_REQUIRES_X86_AVX512F;
545 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700546 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700547 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800548 .Test(xnn_f32_vclamp_ukernel__avx512f_x32, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700549 }
550 }
551
Marat Dukhan6674d692021-05-05 22:27:00 -0700552 TEST(F32_VCLAMP__AVX512F_X32, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700553 TEST_REQUIRES_X86_AVX512F;
554 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700555 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700556 .batch_size(batch_size)
557 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800558 .Test(xnn_f32_vclamp_ukernel__avx512f_x32, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700559 }
560 }
561
Marat Dukhan6674d692021-05-05 22:27:00 -0700562 TEST(F32_VCLAMP__AVX512F_X32, qmin) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700563 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700564 for (uint8_t qmin = 1; qmin < 255; qmin++) {
565 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700566 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700567 .batch_size(batch_size)
568 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800569 .Test(xnn_f32_vclamp_ukernel__avx512f_x32, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700570 }
571 }
572 }
573
Marat Dukhan6674d692021-05-05 22:27:00 -0700574 TEST(F32_VCLAMP__AVX512F_X32, qmax) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700575 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan60d3f242021-05-13 11:59:02 -0700576 for (uint8_t qmax = 1; qmax < 255; qmax++) {
577 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700578 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700579 .batch_size(batch_size)
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700580 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800581 .Test(xnn_f32_vclamp_ukernel__avx512f_x32, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700582 }
583 }
584 }
585#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
586
587
Marat Dukhan4c617792021-12-21 15:47:58 -0800588#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan6674d692021-05-05 22:27:00 -0700589 TEST(F32_VCLAMP__WASMSIMD_ARM_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700590 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700591 .batch_size(4)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800592 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700593 }
594
Marat Dukhan6674d692021-05-05 22:27:00 -0700595 TEST(F32_VCLAMP__WASMSIMD_ARM_X4, batch_div_4) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700596 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700597 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700598 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800599 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700600 }
601 }
602
Marat Dukhan6674d692021-05-05 22:27:00 -0700603 TEST(F32_VCLAMP__WASMSIMD_ARM_X4, batch_lt_4) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700604 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700605 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700606 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800607 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700608 }
609 }
610
Marat Dukhan6674d692021-05-05 22:27:00 -0700611 TEST(F32_VCLAMP__WASMSIMD_ARM_X4, batch_gt_4) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700612 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700613 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700614 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800615 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700616 }
617 }
618
Marat Dukhan6674d692021-05-05 22:27:00 -0700619 TEST(F32_VCLAMP__WASMSIMD_ARM_X4, inplace) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700620 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700621 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700622 .batch_size(batch_size)
623 .inplace(true)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800624 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700625 }
626 }
627
Marat Dukhan6674d692021-05-05 22:27:00 -0700628 TEST(F32_VCLAMP__WASMSIMD_ARM_X4, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700629 for (uint8_t qmin = 1; qmin < 255; qmin++) {
630 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700631 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700632 .batch_size(batch_size)
633 .qmin(qmin)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800634 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700635 }
636 }
637 }
638
Marat Dukhan6674d692021-05-05 22:27:00 -0700639 TEST(F32_VCLAMP__WASMSIMD_ARM_X4, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700640 for (uint8_t qmax = 1; qmax < 255; qmax++) {
641 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700642 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700643 .batch_size(batch_size)
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700644 .qmax(qmax)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800645 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700646 }
647 }
648 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800649#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700650
651
Marat Dukhan4c617792021-12-21 15:47:58 -0800652#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan6674d692021-05-05 22:27:00 -0700653 TEST(F32_VCLAMP__WASMSIMD_ARM_X8, batch_eq_8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700654 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700655 .batch_size(8)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800656 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700657 }
658
Marat Dukhan6674d692021-05-05 22:27:00 -0700659 TEST(F32_VCLAMP__WASMSIMD_ARM_X8, batch_div_8) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700660 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700661 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700662 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800663 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700664 }
665 }
666
Marat Dukhan6674d692021-05-05 22:27:00 -0700667 TEST(F32_VCLAMP__WASMSIMD_ARM_X8, batch_lt_8) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700668 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700669 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700670 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800671 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700672 }
673 }
674
Marat Dukhan6674d692021-05-05 22:27:00 -0700675 TEST(F32_VCLAMP__WASMSIMD_ARM_X8, batch_gt_8) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700676 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700677 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700678 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800679 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700680 }
681 }
682
Marat Dukhan6674d692021-05-05 22:27:00 -0700683 TEST(F32_VCLAMP__WASMSIMD_ARM_X8, inplace) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700684 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700685 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700686 .batch_size(batch_size)
687 .inplace(true)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800688 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700689 }
690 }
691
Marat Dukhan6674d692021-05-05 22:27:00 -0700692 TEST(F32_VCLAMP__WASMSIMD_ARM_X8, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700693 for (uint8_t qmin = 1; qmin < 255; qmin++) {
694 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700695 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700696 .batch_size(batch_size)
697 .qmin(qmin)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800698 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700699 }
700 }
701 }
702
Marat Dukhan6674d692021-05-05 22:27:00 -0700703 TEST(F32_VCLAMP__WASMSIMD_ARM_X8, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700704 for (uint8_t qmax = 1; qmax < 255; qmax++) {
705 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700706 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700707 .batch_size(batch_size)
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700708 .qmax(qmax)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800709 .Test(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700710 }
711 }
712 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800713#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700714
715
Marat Dukhan4c617792021-12-21 15:47:58 -0800716#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan6674d692021-05-05 22:27:00 -0700717 TEST(F32_VCLAMP__WASMSIMD_X86_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700718 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700719 .batch_size(4)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800720 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700721 }
722
Marat Dukhan6674d692021-05-05 22:27:00 -0700723 TEST(F32_VCLAMP__WASMSIMD_X86_X4, batch_div_4) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700724 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700725 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700726 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800727 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700728 }
729 }
730
Marat Dukhan6674d692021-05-05 22:27:00 -0700731 TEST(F32_VCLAMP__WASMSIMD_X86_X4, batch_lt_4) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700732 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700733 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700734 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800735 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700736 }
737 }
738
Marat Dukhan6674d692021-05-05 22:27:00 -0700739 TEST(F32_VCLAMP__WASMSIMD_X86_X4, batch_gt_4) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700740 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700741 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700742 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800743 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700744 }
745 }
746
Marat Dukhan6674d692021-05-05 22:27:00 -0700747 TEST(F32_VCLAMP__WASMSIMD_X86_X4, inplace) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700748 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700749 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700750 .batch_size(batch_size)
751 .inplace(true)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800752 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700753 }
754 }
755
Marat Dukhan6674d692021-05-05 22:27:00 -0700756 TEST(F32_VCLAMP__WASMSIMD_X86_X4, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700757 for (uint8_t qmin = 1; qmin < 255; qmin++) {
758 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700759 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700760 .batch_size(batch_size)
761 .qmin(qmin)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800762 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700763 }
764 }
765 }
766
Marat Dukhan6674d692021-05-05 22:27:00 -0700767 TEST(F32_VCLAMP__WASMSIMD_X86_X4, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700768 for (uint8_t qmax = 1; qmax < 255; qmax++) {
769 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700770 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700771 .batch_size(batch_size)
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700772 .qmax(qmax)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800773 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700774 }
775 }
776 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800777#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700778
779
Marat Dukhan4c617792021-12-21 15:47:58 -0800780#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan6674d692021-05-05 22:27:00 -0700781 TEST(F32_VCLAMP__WASMSIMD_X86_X8, batch_eq_8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700782 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700783 .batch_size(8)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800784 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700785 }
786
Marat Dukhan6674d692021-05-05 22:27:00 -0700787 TEST(F32_VCLAMP__WASMSIMD_X86_X8, batch_div_8) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700788 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700789 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700790 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800791 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700792 }
793 }
794
Marat Dukhan6674d692021-05-05 22:27:00 -0700795 TEST(F32_VCLAMP__WASMSIMD_X86_X8, batch_lt_8) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700796 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700797 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700798 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800799 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700800 }
801 }
802
Marat Dukhan6674d692021-05-05 22:27:00 -0700803 TEST(F32_VCLAMP__WASMSIMD_X86_X8, batch_gt_8) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700804 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700805 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700806 .batch_size(batch_size)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800807 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700808 }
809 }
810
Marat Dukhan6674d692021-05-05 22:27:00 -0700811 TEST(F32_VCLAMP__WASMSIMD_X86_X8, inplace) {
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700812 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700813 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700814 .batch_size(batch_size)
815 .inplace(true)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800816 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700817 }
818 }
819
Marat Dukhan6674d692021-05-05 22:27:00 -0700820 TEST(F32_VCLAMP__WASMSIMD_X86_X8, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700821 for (uint8_t qmin = 1; qmin < 255; qmin++) {
822 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700823 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700824 .batch_size(batch_size)
825 .qmin(qmin)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800826 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700827 }
828 }
829 }
830
Marat Dukhan6674d692021-05-05 22:27:00 -0700831 TEST(F32_VCLAMP__WASMSIMD_X86_X8, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700832 for (uint8_t qmax = 1; qmax < 255; qmax++) {
833 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700834 VUnaryMicrokernelTester()
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700835 .batch_size(batch_size)
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700836 .qmax(qmax)
Marat Dukhanc83ef3b2021-12-30 09:47:07 -0800837 .Test(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8, xnn_init_f32_minmax_wasmsimd_params);
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700838 }
839 }
840 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800841#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan3fa52c82020-07-08 12:54:33 -0700842
843
Marat Dukhan4c617792021-12-21 15:47:58 -0800844#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan6674d692021-05-05 22:27:00 -0700845 TEST(F32_VCLAMP__WASM_X1, batch_eq_1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700846 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700847 .batch_size(1)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800848 .Test(xnn_f32_vclamp_ukernel__wasm_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhan436ebe62019-12-04 15:10:12 -0800849 }
850
Marat Dukhan6674d692021-05-05 22:27:00 -0700851 TEST(F32_VCLAMP__WASM_X1, batch_gt_1) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700852 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700853 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700854 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800855 .Test(xnn_f32_vclamp_ukernel__wasm_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhan436ebe62019-12-04 15:10:12 -0800856 }
857 }
858
Marat Dukhan6674d692021-05-05 22:27:00 -0700859 TEST(F32_VCLAMP__WASM_X1, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700860 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700861 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700862 .batch_size(batch_size)
Marat Dukhan436ebe62019-12-04 15:10:12 -0800863 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800864 .Test(xnn_f32_vclamp_ukernel__wasm_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhan436ebe62019-12-04 15:10:12 -0800865 }
866 }
867
Marat Dukhan6674d692021-05-05 22:27:00 -0700868 TEST(F32_VCLAMP__WASM_X1, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700869 for (uint8_t qmin = 1; qmin < 255; qmin++) {
870 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700871 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700872 .batch_size(batch_size)
Marat Dukhan436ebe62019-12-04 15:10:12 -0800873 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800874 .Test(xnn_f32_vclamp_ukernel__wasm_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhan436ebe62019-12-04 15:10:12 -0800875 }
876 }
877 }
878
Marat Dukhan6674d692021-05-05 22:27:00 -0700879 TEST(F32_VCLAMP__WASM_X1, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700880 for (uint8_t qmax = 1; qmax < 255; qmax++) {
881 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700882 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700883 .batch_size(batch_size)
Marat Dukhan436ebe62019-12-04 15:10:12 -0800884 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800885 .Test(xnn_f32_vclamp_ukernel__wasm_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhan436ebe62019-12-04 15:10:12 -0800886 }
887 }
888 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800889#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan436ebe62019-12-04 15:10:12 -0800890
891
Marat Dukhan4c617792021-12-21 15:47:58 -0800892#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan6674d692021-05-05 22:27:00 -0700893 TEST(F32_VCLAMP__WASM_X2, batch_eq_2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700894 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700895 .batch_size(2)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800896 .Test(xnn_f32_vclamp_ukernel__wasm_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700897 }
898
Marat Dukhan6674d692021-05-05 22:27:00 -0700899 TEST(F32_VCLAMP__WASM_X2, batch_div_2) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700900 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700901 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700902 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800903 .Test(xnn_f32_vclamp_ukernel__wasm_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700904 }
905 }
906
Marat Dukhan6674d692021-05-05 22:27:00 -0700907 TEST(F32_VCLAMP__WASM_X2, batch_lt_2) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700908 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700909 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700910 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800911 .Test(xnn_f32_vclamp_ukernel__wasm_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700912 }
913 }
914
Marat Dukhan6674d692021-05-05 22:27:00 -0700915 TEST(F32_VCLAMP__WASM_X2, batch_gt_2) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700916 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700917 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700918 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800919 .Test(xnn_f32_vclamp_ukernel__wasm_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700920 }
921 }
922
Marat Dukhan6674d692021-05-05 22:27:00 -0700923 TEST(F32_VCLAMP__WASM_X2, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700924 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700925 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700926 .batch_size(batch_size)
927 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800928 .Test(xnn_f32_vclamp_ukernel__wasm_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700929 }
930 }
931
Marat Dukhan6674d692021-05-05 22:27:00 -0700932 TEST(F32_VCLAMP__WASM_X2, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700933 for (uint8_t qmin = 1; qmin < 255; qmin++) {
934 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700935 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700936 .batch_size(batch_size)
937 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800938 .Test(xnn_f32_vclamp_ukernel__wasm_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700939 }
940 }
941 }
942
Marat Dukhan6674d692021-05-05 22:27:00 -0700943 TEST(F32_VCLAMP__WASM_X2, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700944 for (uint8_t qmax = 1; qmax < 255; qmax++) {
945 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700946 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700947 .batch_size(batch_size)
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700948 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800949 .Test(xnn_f32_vclamp_ukernel__wasm_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700950 }
951 }
952 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800953#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700954
955
Marat Dukhan4c617792021-12-21 15:47:58 -0800956#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan6674d692021-05-05 22:27:00 -0700957 TEST(F32_VCLAMP__WASM_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700958 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700959 .batch_size(4)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800960 .Test(xnn_f32_vclamp_ukernel__wasm_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700961 }
962
Marat Dukhan6674d692021-05-05 22:27:00 -0700963 TEST(F32_VCLAMP__WASM_X4, batch_div_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700964 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700965 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700966 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800967 .Test(xnn_f32_vclamp_ukernel__wasm_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700968 }
969 }
970
Marat Dukhan6674d692021-05-05 22:27:00 -0700971 TEST(F32_VCLAMP__WASM_X4, batch_lt_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700972 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700973 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700974 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800975 .Test(xnn_f32_vclamp_ukernel__wasm_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700976 }
977 }
978
Marat Dukhan6674d692021-05-05 22:27:00 -0700979 TEST(F32_VCLAMP__WASM_X4, batch_gt_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700980 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700981 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700982 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800983 .Test(xnn_f32_vclamp_ukernel__wasm_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700984 }
985 }
986
Marat Dukhan6674d692021-05-05 22:27:00 -0700987 TEST(F32_VCLAMP__WASM_X4, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700988 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700989 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700990 .batch_size(batch_size)
991 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -0800992 .Test(xnn_f32_vclamp_ukernel__wasm_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700993 }
994 }
995
Marat Dukhan6674d692021-05-05 22:27:00 -0700996 TEST(F32_VCLAMP__WASM_X4, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -0700997 for (uint8_t qmin = 1; qmin < 255; qmin++) {
998 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700999 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001000 .batch_size(batch_size)
1001 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001002 .Test(xnn_f32_vclamp_ukernel__wasm_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001003 }
1004 }
1005 }
1006
Marat Dukhan6674d692021-05-05 22:27:00 -07001007 TEST(F32_VCLAMP__WASM_X4, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -07001008 for (uint8_t qmax = 1; qmax < 255; qmax++) {
1009 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001010 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001011 .batch_size(batch_size)
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001012 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001013 .Test(xnn_f32_vclamp_ukernel__wasm_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001014 }
1015 }
1016 }
Marat Dukhan4c617792021-12-21 15:47:58 -08001017#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001018
1019
Marat Dukhan6674d692021-05-05 22:27:00 -07001020TEST(F32_VCLAMP__SCALAR_X1, batch_eq_1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001021 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001022 .batch_size(1)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001023 .Test(xnn_f32_vclamp_ukernel__scalar_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -08001024}
1025
Marat Dukhan6674d692021-05-05 22:27:00 -07001026TEST(F32_VCLAMP__SCALAR_X1, batch_gt_1) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001027 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001028 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001029 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001030 .Test(xnn_f32_vclamp_ukernel__scalar_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -08001031 }
1032}
1033
Marat Dukhan6674d692021-05-05 22:27:00 -07001034TEST(F32_VCLAMP__SCALAR_X1, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001035 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001036 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001037 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -08001038 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001039 .Test(xnn_f32_vclamp_ukernel__scalar_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -08001040 }
1041}
1042
Marat Dukhan6674d692021-05-05 22:27:00 -07001043TEST(F32_VCLAMP__SCALAR_X1, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -07001044 for (uint8_t qmin = 1; qmin < 255; qmin++) {
1045 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001046 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001047 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -08001048 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001049 .Test(xnn_f32_vclamp_ukernel__scalar_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -08001050 }
1051 }
1052}
1053
Marat Dukhan6674d692021-05-05 22:27:00 -07001054TEST(F32_VCLAMP__SCALAR_X1, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -07001055 for (uint8_t qmax = 1; qmax < 255; qmax++) {
1056 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001057 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001058 .batch_size(batch_size)
Marat Dukhane2c3f292019-11-27 15:40:54 -08001059 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001060 .Test(xnn_f32_vclamp_ukernel__scalar_x1, xnn_init_f32_minmax_scalar_params);
Marat Dukhane2c3f292019-11-27 15:40:54 -08001061 }
1062 }
1063}
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001064
Marat Dukhan60d3f242021-05-13 11:59:02 -07001065
Marat Dukhan6674d692021-05-05 22:27:00 -07001066TEST(F32_VCLAMP__SCALAR_X2, batch_eq_2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001067 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001068 .batch_size(2)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001069 .Test(xnn_f32_vclamp_ukernel__scalar_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001070}
1071
Marat Dukhan6674d692021-05-05 22:27:00 -07001072TEST(F32_VCLAMP__SCALAR_X2, batch_div_2) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001073 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001074 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001075 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001076 .Test(xnn_f32_vclamp_ukernel__scalar_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001077 }
1078}
1079
Marat Dukhan6674d692021-05-05 22:27:00 -07001080TEST(F32_VCLAMP__SCALAR_X2, batch_lt_2) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001081 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001082 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001083 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001084 .Test(xnn_f32_vclamp_ukernel__scalar_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001085 }
1086}
1087
Marat Dukhan6674d692021-05-05 22:27:00 -07001088TEST(F32_VCLAMP__SCALAR_X2, batch_gt_2) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001089 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001090 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001091 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001092 .Test(xnn_f32_vclamp_ukernel__scalar_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001093 }
1094}
1095
Marat Dukhan6674d692021-05-05 22:27:00 -07001096TEST(F32_VCLAMP__SCALAR_X2, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001097 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001098 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001099 .batch_size(batch_size)
1100 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001101 .Test(xnn_f32_vclamp_ukernel__scalar_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001102 }
1103}
1104
Marat Dukhan6674d692021-05-05 22:27:00 -07001105TEST(F32_VCLAMP__SCALAR_X2, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -07001106 for (uint8_t qmin = 1; qmin < 255; qmin++) {
1107 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001108 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001109 .batch_size(batch_size)
1110 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001111 .Test(xnn_f32_vclamp_ukernel__scalar_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001112 }
1113 }
1114}
1115
Marat Dukhan6674d692021-05-05 22:27:00 -07001116TEST(F32_VCLAMP__SCALAR_X2, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -07001117 for (uint8_t qmax = 1; qmax < 255; qmax++) {
1118 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001119 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001120 .batch_size(batch_size)
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001121 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001122 .Test(xnn_f32_vclamp_ukernel__scalar_x2, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001123 }
1124 }
1125}
1126
Marat Dukhan60d3f242021-05-13 11:59:02 -07001127
Marat Dukhan6674d692021-05-05 22:27:00 -07001128TEST(F32_VCLAMP__SCALAR_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001129 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001130 .batch_size(4)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001131 .Test(xnn_f32_vclamp_ukernel__scalar_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001132}
1133
Marat Dukhan6674d692021-05-05 22:27:00 -07001134TEST(F32_VCLAMP__SCALAR_X4, batch_div_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001135 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001136 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001137 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001138 .Test(xnn_f32_vclamp_ukernel__scalar_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001139 }
1140}
1141
Marat Dukhan6674d692021-05-05 22:27:00 -07001142TEST(F32_VCLAMP__SCALAR_X4, batch_lt_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001143 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001144 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001145 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001146 .Test(xnn_f32_vclamp_ukernel__scalar_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001147 }
1148}
1149
Marat Dukhan6674d692021-05-05 22:27:00 -07001150TEST(F32_VCLAMP__SCALAR_X4, batch_gt_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001151 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001152 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001153 .batch_size(batch_size)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001154 .Test(xnn_f32_vclamp_ukernel__scalar_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001155 }
1156}
1157
Marat Dukhan6674d692021-05-05 22:27:00 -07001158TEST(F32_VCLAMP__SCALAR_X4, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001159 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001160 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001161 .batch_size(batch_size)
1162 .inplace(true)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001163 .Test(xnn_f32_vclamp_ukernel__scalar_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001164 }
1165}
1166
Marat Dukhan6674d692021-05-05 22:27:00 -07001167TEST(F32_VCLAMP__SCALAR_X4, qmin) {
Marat Dukhan60d3f242021-05-13 11:59:02 -07001168 for (uint8_t qmin = 1; qmin < 255; qmin++) {
1169 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001170 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001171 .batch_size(batch_size)
1172 .qmin(qmin)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001173 .Test(xnn_f32_vclamp_ukernel__scalar_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001174 }
1175 }
1176}
1177
Marat Dukhan6674d692021-05-05 22:27:00 -07001178TEST(F32_VCLAMP__SCALAR_X4, qmax) {
Marat Dukhan60d3f242021-05-13 11:59:02 -07001179 for (uint8_t qmax = 1; qmax < 255; qmax++) {
1180 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001181 VUnaryMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001182 .batch_size(batch_size)
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001183 .qmax(qmax)
Marat Dukhan0d10cc72021-12-23 19:49:19 -08001184 .Test(xnn_f32_vclamp_ukernel__scalar_x4, xnn_init_f32_minmax_scalar_params);
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001185 }
1186 }
Marat Dukhan60d3f242021-05-13 11:59:02 -07001187}