blob: 49c76569055cd9d05c707fdf700ce3be0b127133 [file] [log] [blame]
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001// 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/f32-velu.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
21 TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, batch_eq_4) {
22 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -070023 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080024 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080025 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080026 }
27
28 TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, batch_div_4) {
29 TEST_REQUIRES_ARM_NEON;
30 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070031 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080032 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080033 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080034 }
35 }
36
37 TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, batch_lt_4) {
38 TEST_REQUIRES_ARM_NEON;
39 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070040 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080041 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080042 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080043 }
44 }
45
46 TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, batch_gt_4) {
47 TEST_REQUIRES_ARM_NEON;
48 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070049 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080050 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080051 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080052 }
53 }
54
55 TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, inplace) {
56 TEST_REQUIRES_ARM_NEON;
57 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070058 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080059 .batch_size(batch_size)
60 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080061 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080062 }
63 }
64
65 TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, prescale) {
66 TEST_REQUIRES_ARM_NEON;
67 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
68 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070069 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080070 .batch_size(batch_size)
71 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080072 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080073 }
74 }
75 }
76
77 TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, alpha) {
78 TEST_REQUIRES_ARM_NEON;
79 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
80 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070081 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080082 .batch_size(batch_size)
83 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080084 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080085 }
86 }
87 }
88
89 TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, beta) {
90 TEST_REQUIRES_ARM_NEON;
91 for (float beta : std::vector<float>({0.3f, 3.0f})) {
92 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070093 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080094 .batch_size(batch_size)
95 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080096 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080097 }
98 }
99 }
100#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
101
102
103#if XNN_ARCH_ARM || XNN_ARCH_ARM64
104 TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, batch_eq_8) {
105 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700106 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800107 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800108 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800109 }
110
111 TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, batch_div_8) {
112 TEST_REQUIRES_ARM_NEON;
113 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700114 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800115 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800116 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800117 }
118 }
119
120 TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, batch_lt_8) {
121 TEST_REQUIRES_ARM_NEON;
122 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700123 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800124 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800125 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800126 }
127 }
128
129 TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, batch_gt_8) {
130 TEST_REQUIRES_ARM_NEON;
131 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700132 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800133 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800134 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800135 }
136 }
137
138 TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, inplace) {
139 TEST_REQUIRES_ARM_NEON;
140 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700141 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800142 .batch_size(batch_size)
143 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800144 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800145 }
146 }
147
148 TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, prescale) {
149 TEST_REQUIRES_ARM_NEON;
150 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
151 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700152 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800153 .batch_size(batch_size)
154 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800155 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800156 }
157 }
158 }
159
160 TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, alpha) {
161 TEST_REQUIRES_ARM_NEON;
162 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
163 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700164 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800165 .batch_size(batch_size)
166 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800167 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800168 }
169 }
170 }
171
172 TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, beta) {
173 TEST_REQUIRES_ARM_NEON;
174 for (float beta : std::vector<float>({0.3f, 3.0f})) {
175 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700176 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800177 .batch_size(batch_size)
178 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800179 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800180 }
181 }
182 }
183#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
184
185
186#if XNN_ARCH_ARM || XNN_ARCH_ARM64
187 TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, batch_eq_12) {
188 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700189 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800190 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800191 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800192 }
193
194 TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, batch_div_12) {
195 TEST_REQUIRES_ARM_NEON;
196 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700197 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800198 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800199 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800200 }
201 }
202
203 TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, batch_lt_12) {
204 TEST_REQUIRES_ARM_NEON;
205 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700206 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800207 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800208 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800209 }
210 }
211
212 TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, batch_gt_12) {
213 TEST_REQUIRES_ARM_NEON;
214 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700215 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800216 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800217 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800218 }
219 }
220
221 TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, inplace) {
222 TEST_REQUIRES_ARM_NEON;
223 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700224 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800225 .batch_size(batch_size)
226 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800227 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800228 }
229 }
230
231 TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, prescale) {
232 TEST_REQUIRES_ARM_NEON;
233 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
234 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700235 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800236 .batch_size(batch_size)
237 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800238 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800239 }
240 }
241 }
242
243 TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, alpha) {
244 TEST_REQUIRES_ARM_NEON;
245 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
246 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700247 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800248 .batch_size(batch_size)
249 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800250 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800251 }
252 }
253 }
254
255 TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, beta) {
256 TEST_REQUIRES_ARM_NEON;
257 for (float beta : std::vector<float>({0.3f, 3.0f})) {
258 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700259 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800260 .batch_size(batch_size)
261 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800262 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800263 }
264 }
265 }
266#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
267
268
269#if XNN_ARCH_ARM || XNN_ARCH_ARM64
270 TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, batch_eq_16) {
271 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700272 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800273 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800274 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800275 }
276
277 TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, batch_div_16) {
278 TEST_REQUIRES_ARM_NEON;
279 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700280 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800281 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800282 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800283 }
284 }
285
286 TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, batch_lt_16) {
287 TEST_REQUIRES_ARM_NEON;
288 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700289 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800290 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800291 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800292 }
293 }
294
295 TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, batch_gt_16) {
296 TEST_REQUIRES_ARM_NEON;
297 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700298 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800299 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800300 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800301 }
302 }
303
304 TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, inplace) {
305 TEST_REQUIRES_ARM_NEON;
306 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700307 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800308 .batch_size(batch_size)
309 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800310 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800311 }
312 }
313
314 TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, prescale) {
315 TEST_REQUIRES_ARM_NEON;
316 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
317 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700318 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800319 .batch_size(batch_size)
320 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800321 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800322 }
323 }
324 }
325
326 TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, alpha) {
327 TEST_REQUIRES_ARM_NEON;
328 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
329 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700330 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800331 .batch_size(batch_size)
332 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800333 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800334 }
335 }
336 }
337
338 TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, beta) {
339 TEST_REQUIRES_ARM_NEON;
340 for (float beta : std::vector<float>({0.3f, 3.0f})) {
341 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700342 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800343 .batch_size(batch_size)
344 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800345 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800346 }
347 }
348 }
349#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
350
351
352#if XNN_ARCH_ARM || XNN_ARCH_ARM64
353 TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, batch_eq_20) {
354 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700355 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800356 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800357 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800358 }
359
360 TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, batch_div_20) {
361 TEST_REQUIRES_ARM_NEON;
362 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700363 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800364 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800365 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800366 }
367 }
368
369 TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, batch_lt_20) {
370 TEST_REQUIRES_ARM_NEON;
371 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700372 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800373 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800374 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800375 }
376 }
377
378 TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, batch_gt_20) {
379 TEST_REQUIRES_ARM_NEON;
380 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700381 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800382 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800383 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800384 }
385 }
386
387 TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, inplace) {
388 TEST_REQUIRES_ARM_NEON;
389 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700390 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800391 .batch_size(batch_size)
392 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800393 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800394 }
395 }
396
397 TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, prescale) {
398 TEST_REQUIRES_ARM_NEON;
399 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
400 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700401 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800402 .batch_size(batch_size)
403 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800404 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800405 }
406 }
407 }
408
409 TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, alpha) {
410 TEST_REQUIRES_ARM_NEON;
411 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
412 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700413 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800414 .batch_size(batch_size)
415 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800416 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800417 }
418 }
419 }
420
421 TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, beta) {
422 TEST_REQUIRES_ARM_NEON;
423 for (float beta : std::vector<float>({0.3f, 3.0f})) {
424 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700425 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800426 .batch_size(batch_size)
427 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800428 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800429 }
430 }
431 }
432#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
433
434
435#if XNN_ARCH_ARM || XNN_ARCH_ARM64
436 TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, batch_eq_24) {
437 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700438 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800439 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800440 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800441 }
442
443 TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, batch_div_24) {
444 TEST_REQUIRES_ARM_NEON;
445 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700446 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800447 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800448 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800449 }
450 }
451
452 TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, batch_lt_24) {
453 TEST_REQUIRES_ARM_NEON;
454 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700455 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800456 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800457 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800458 }
459 }
460
461 TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, batch_gt_24) {
462 TEST_REQUIRES_ARM_NEON;
463 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700464 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800465 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800466 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800467 }
468 }
469
470 TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, inplace) {
471 TEST_REQUIRES_ARM_NEON;
472 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700473 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800474 .batch_size(batch_size)
475 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800476 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800477 }
478 }
479
480 TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, prescale) {
481 TEST_REQUIRES_ARM_NEON;
482 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
483 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700484 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800485 .batch_size(batch_size)
486 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800487 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800488 }
489 }
490 }
491
492 TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, alpha) {
493 TEST_REQUIRES_ARM_NEON;
494 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
495 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700496 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800497 .batch_size(batch_size)
498 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800499 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800500 }
501 }
502 }
503
504 TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, beta) {
505 TEST_REQUIRES_ARM_NEON;
506 for (float beta : std::vector<float>({0.3f, 3.0f})) {
507 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700508 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800509 .batch_size(batch_size)
510 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800511 .Test(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24, xnn_init_f32_elu_neon_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800512 }
513 }
514 }
515#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
516
517
518#if XNN_ARCH_ARM || XNN_ARCH_ARM64
519 TEST(F32_VELU__NEON_RR2_P6_X4, batch_eq_4) {
520 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700521 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800522 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800523 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x4, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800524 }
525
526 TEST(F32_VELU__NEON_RR2_P6_X4, batch_div_4) {
527 TEST_REQUIRES_ARM_NEON;
528 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700529 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800530 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800531 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x4, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800532 }
533 }
534
535 TEST(F32_VELU__NEON_RR2_P6_X4, batch_lt_4) {
536 TEST_REQUIRES_ARM_NEON;
537 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700538 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800539 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800540 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x4, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800541 }
542 }
543
544 TEST(F32_VELU__NEON_RR2_P6_X4, batch_gt_4) {
545 TEST_REQUIRES_ARM_NEON;
546 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700547 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800548 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800549 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x4, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800550 }
551 }
552
553 TEST(F32_VELU__NEON_RR2_P6_X4, inplace) {
554 TEST_REQUIRES_ARM_NEON;
555 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700556 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800557 .batch_size(batch_size)
558 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800559 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x4, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800560 }
561 }
562
563 TEST(F32_VELU__NEON_RR2_P6_X4, prescale) {
564 TEST_REQUIRES_ARM_NEON;
565 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
566 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700567 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800568 .batch_size(batch_size)
569 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800570 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x4, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800571 }
572 }
573 }
574
575 TEST(F32_VELU__NEON_RR2_P6_X4, alpha) {
576 TEST_REQUIRES_ARM_NEON;
577 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
578 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700579 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800580 .batch_size(batch_size)
581 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800582 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x4, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800583 }
584 }
585 }
586
587 TEST(F32_VELU__NEON_RR2_P6_X4, beta) {
588 TEST_REQUIRES_ARM_NEON;
589 for (float beta : std::vector<float>({0.3f, 3.0f})) {
590 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700591 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800592 .batch_size(batch_size)
593 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800594 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x4, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800595 }
596 }
597 }
598#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
599
600
601#if XNN_ARCH_ARM || XNN_ARCH_ARM64
602 TEST(F32_VELU__NEON_RR2_P6_X8, batch_eq_8) {
603 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700604 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800605 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800606 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x8, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800607 }
608
609 TEST(F32_VELU__NEON_RR2_P6_X8, batch_div_8) {
610 TEST_REQUIRES_ARM_NEON;
611 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700612 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800613 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800614 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x8, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800615 }
616 }
617
618 TEST(F32_VELU__NEON_RR2_P6_X8, batch_lt_8) {
619 TEST_REQUIRES_ARM_NEON;
620 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700621 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800622 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800623 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x8, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800624 }
625 }
626
627 TEST(F32_VELU__NEON_RR2_P6_X8, batch_gt_8) {
628 TEST_REQUIRES_ARM_NEON;
629 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700630 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800631 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800632 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x8, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800633 }
634 }
635
636 TEST(F32_VELU__NEON_RR2_P6_X8, inplace) {
637 TEST_REQUIRES_ARM_NEON;
638 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700639 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800640 .batch_size(batch_size)
641 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800642 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x8, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800643 }
644 }
645
646 TEST(F32_VELU__NEON_RR2_P6_X8, prescale) {
647 TEST_REQUIRES_ARM_NEON;
648 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
649 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700650 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800651 .batch_size(batch_size)
652 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800653 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x8, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800654 }
655 }
656 }
657
658 TEST(F32_VELU__NEON_RR2_P6_X8, alpha) {
659 TEST_REQUIRES_ARM_NEON;
660 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
661 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700662 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800663 .batch_size(batch_size)
664 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800665 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x8, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800666 }
667 }
668 }
669
670 TEST(F32_VELU__NEON_RR2_P6_X8, beta) {
671 TEST_REQUIRES_ARM_NEON;
672 for (float beta : std::vector<float>({0.3f, 3.0f})) {
673 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700674 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800675 .batch_size(batch_size)
676 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800677 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x8, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800678 }
679 }
680 }
681#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
682
683
684#if XNN_ARCH_ARM || XNN_ARCH_ARM64
685 TEST(F32_VELU__NEON_RR2_P6_X12, batch_eq_12) {
686 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700687 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800688 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800689 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x12, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800690 }
691
692 TEST(F32_VELU__NEON_RR2_P6_X12, batch_div_12) {
693 TEST_REQUIRES_ARM_NEON;
694 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700695 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800696 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800697 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x12, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800698 }
699 }
700
701 TEST(F32_VELU__NEON_RR2_P6_X12, batch_lt_12) {
702 TEST_REQUIRES_ARM_NEON;
703 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700704 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800705 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800706 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x12, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800707 }
708 }
709
710 TEST(F32_VELU__NEON_RR2_P6_X12, batch_gt_12) {
711 TEST_REQUIRES_ARM_NEON;
712 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700713 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800714 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800715 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x12, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800716 }
717 }
718
719 TEST(F32_VELU__NEON_RR2_P6_X12, inplace) {
720 TEST_REQUIRES_ARM_NEON;
721 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700722 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800723 .batch_size(batch_size)
724 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800725 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x12, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800726 }
727 }
728
729 TEST(F32_VELU__NEON_RR2_P6_X12, prescale) {
730 TEST_REQUIRES_ARM_NEON;
731 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
732 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700733 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800734 .batch_size(batch_size)
735 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800736 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x12, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800737 }
738 }
739 }
740
741 TEST(F32_VELU__NEON_RR2_P6_X12, alpha) {
742 TEST_REQUIRES_ARM_NEON;
743 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
744 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700745 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800746 .batch_size(batch_size)
747 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800748 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x12, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800749 }
750 }
751 }
752
753 TEST(F32_VELU__NEON_RR2_P6_X12, beta) {
754 TEST_REQUIRES_ARM_NEON;
755 for (float beta : std::vector<float>({0.3f, 3.0f})) {
756 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700757 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800758 .batch_size(batch_size)
759 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800760 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x12, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800761 }
762 }
763 }
764#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
765
766
767#if XNN_ARCH_ARM || XNN_ARCH_ARM64
768 TEST(F32_VELU__NEON_RR2_P6_X16, batch_eq_16) {
769 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700770 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800771 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800772 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x16, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800773 }
774
775 TEST(F32_VELU__NEON_RR2_P6_X16, batch_div_16) {
776 TEST_REQUIRES_ARM_NEON;
777 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700778 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800779 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800780 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x16, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800781 }
782 }
783
784 TEST(F32_VELU__NEON_RR2_P6_X16, batch_lt_16) {
785 TEST_REQUIRES_ARM_NEON;
786 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700787 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800788 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800789 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x16, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800790 }
791 }
792
793 TEST(F32_VELU__NEON_RR2_P6_X16, batch_gt_16) {
794 TEST_REQUIRES_ARM_NEON;
795 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700796 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800797 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800798 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x16, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800799 }
800 }
801
802 TEST(F32_VELU__NEON_RR2_P6_X16, inplace) {
803 TEST_REQUIRES_ARM_NEON;
804 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700805 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800806 .batch_size(batch_size)
807 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800808 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x16, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800809 }
810 }
811
812 TEST(F32_VELU__NEON_RR2_P6_X16, prescale) {
813 TEST_REQUIRES_ARM_NEON;
814 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
815 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700816 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800817 .batch_size(batch_size)
818 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800819 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x16, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800820 }
821 }
822 }
823
824 TEST(F32_VELU__NEON_RR2_P6_X16, alpha) {
825 TEST_REQUIRES_ARM_NEON;
826 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
827 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700828 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800829 .batch_size(batch_size)
830 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800831 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x16, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800832 }
833 }
834 }
835
836 TEST(F32_VELU__NEON_RR2_P6_X16, beta) {
837 TEST_REQUIRES_ARM_NEON;
838 for (float beta : std::vector<float>({0.3f, 3.0f})) {
839 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700840 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800841 .batch_size(batch_size)
842 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800843 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x16, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800844 }
845 }
846 }
847#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
848
849
850#if XNN_ARCH_ARM || XNN_ARCH_ARM64
851 TEST(F32_VELU__NEON_RR2_P6_X20, batch_eq_20) {
852 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700853 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800854 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800855 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x20, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800856 }
857
858 TEST(F32_VELU__NEON_RR2_P6_X20, batch_div_20) {
859 TEST_REQUIRES_ARM_NEON;
860 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700861 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800862 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800863 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x20, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800864 }
865 }
866
867 TEST(F32_VELU__NEON_RR2_P6_X20, batch_lt_20) {
868 TEST_REQUIRES_ARM_NEON;
869 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700870 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800871 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800872 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x20, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800873 }
874 }
875
876 TEST(F32_VELU__NEON_RR2_P6_X20, batch_gt_20) {
877 TEST_REQUIRES_ARM_NEON;
878 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700879 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800880 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800881 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x20, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800882 }
883 }
884
885 TEST(F32_VELU__NEON_RR2_P6_X20, inplace) {
886 TEST_REQUIRES_ARM_NEON;
887 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700888 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800889 .batch_size(batch_size)
890 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800891 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x20, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800892 }
893 }
894
895 TEST(F32_VELU__NEON_RR2_P6_X20, prescale) {
896 TEST_REQUIRES_ARM_NEON;
897 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
898 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700899 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800900 .batch_size(batch_size)
901 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800902 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x20, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800903 }
904 }
905 }
906
907 TEST(F32_VELU__NEON_RR2_P6_X20, alpha) {
908 TEST_REQUIRES_ARM_NEON;
909 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
910 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700911 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800912 .batch_size(batch_size)
913 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800914 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x20, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800915 }
916 }
917 }
918
919 TEST(F32_VELU__NEON_RR2_P6_X20, beta) {
920 TEST_REQUIRES_ARM_NEON;
921 for (float beta : std::vector<float>({0.3f, 3.0f})) {
922 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700923 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800924 .batch_size(batch_size)
925 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800926 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x20, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800927 }
928 }
929 }
930#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
931
932
933#if XNN_ARCH_ARM || XNN_ARCH_ARM64
934 TEST(F32_VELU__NEON_RR2_P6_X24, batch_eq_24) {
935 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700936 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800937 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800938 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x24, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800939 }
940
941 TEST(F32_VELU__NEON_RR2_P6_X24, batch_div_24) {
942 TEST_REQUIRES_ARM_NEON;
943 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700944 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800945 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800946 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x24, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800947 }
948 }
949
950 TEST(F32_VELU__NEON_RR2_P6_X24, batch_lt_24) {
951 TEST_REQUIRES_ARM_NEON;
952 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700953 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800954 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800955 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x24, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800956 }
957 }
958
959 TEST(F32_VELU__NEON_RR2_P6_X24, batch_gt_24) {
960 TEST_REQUIRES_ARM_NEON;
961 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700962 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800963 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800964 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x24, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800965 }
966 }
967
968 TEST(F32_VELU__NEON_RR2_P6_X24, inplace) {
969 TEST_REQUIRES_ARM_NEON;
970 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700971 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800972 .batch_size(batch_size)
973 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800974 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x24, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800975 }
976 }
977
978 TEST(F32_VELU__NEON_RR2_P6_X24, prescale) {
979 TEST_REQUIRES_ARM_NEON;
980 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
981 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700982 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800983 .batch_size(batch_size)
984 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800985 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x24, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800986 }
987 }
988 }
989
990 TEST(F32_VELU__NEON_RR2_P6_X24, alpha) {
991 TEST_REQUIRES_ARM_NEON;
992 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
993 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700994 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800995 .batch_size(batch_size)
996 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -0800997 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x24, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -0800998 }
999 }
1000 }
1001
1002 TEST(F32_VELU__NEON_RR2_P6_X24, beta) {
1003 TEST_REQUIRES_ARM_NEON;
1004 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1005 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001006 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001007 .batch_size(batch_size)
1008 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001009 .Test(xnn_f32_velu_ukernel__neon_rr2_p6_x24, xnn_init_f32_elu_neon_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001010 }
1011 }
1012 }
1013#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1014
1015
1016#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1017 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, batch_eq_4) {
1018 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001019 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001020 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001021 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001022 }
1023
1024 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, batch_div_4) {
1025 TEST_REQUIRES_ARM_NEON_FMA;
1026 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001027 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001028 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001029 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001030 }
1031 }
1032
1033 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, batch_lt_4) {
1034 TEST_REQUIRES_ARM_NEON_FMA;
1035 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001036 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001037 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001038 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001039 }
1040 }
1041
1042 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, batch_gt_4) {
1043 TEST_REQUIRES_ARM_NEON_FMA;
1044 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001045 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001046 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001047 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001048 }
1049 }
1050
1051 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, inplace) {
1052 TEST_REQUIRES_ARM_NEON_FMA;
1053 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001054 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001055 .batch_size(batch_size)
1056 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001057 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001058 }
1059 }
1060
1061 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, prescale) {
1062 TEST_REQUIRES_ARM_NEON_FMA;
1063 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1064 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001065 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001066 .batch_size(batch_size)
1067 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001068 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001069 }
1070 }
1071 }
1072
1073 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, alpha) {
1074 TEST_REQUIRES_ARM_NEON_FMA;
1075 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1076 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001077 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001078 .batch_size(batch_size)
1079 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001080 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001081 }
1082 }
1083 }
1084
1085 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, beta) {
1086 TEST_REQUIRES_ARM_NEON_FMA;
1087 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1088 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001089 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001090 .batch_size(batch_size)
1091 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001092 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001093 }
1094 }
1095 }
1096#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1097
1098
1099#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1100 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, batch_eq_8) {
1101 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001102 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001103 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001104 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001105 }
1106
1107 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, batch_div_8) {
1108 TEST_REQUIRES_ARM_NEON_FMA;
1109 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001110 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001111 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001112 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001113 }
1114 }
1115
1116 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, batch_lt_8) {
1117 TEST_REQUIRES_ARM_NEON_FMA;
1118 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001119 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001120 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001121 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001122 }
1123 }
1124
1125 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, batch_gt_8) {
1126 TEST_REQUIRES_ARM_NEON_FMA;
1127 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001128 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001129 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001130 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001131 }
1132 }
1133
1134 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, inplace) {
1135 TEST_REQUIRES_ARM_NEON_FMA;
1136 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001137 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001138 .batch_size(batch_size)
1139 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001140 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001141 }
1142 }
1143
1144 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, prescale) {
1145 TEST_REQUIRES_ARM_NEON_FMA;
1146 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1147 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001148 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001149 .batch_size(batch_size)
1150 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001151 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001152 }
1153 }
1154 }
1155
1156 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, alpha) {
1157 TEST_REQUIRES_ARM_NEON_FMA;
1158 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1159 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001160 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001161 .batch_size(batch_size)
1162 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001163 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001164 }
1165 }
1166 }
1167
1168 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, beta) {
1169 TEST_REQUIRES_ARM_NEON_FMA;
1170 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1171 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001172 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001173 .batch_size(batch_size)
1174 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001175 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001176 }
1177 }
1178 }
1179#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1180
1181
1182#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1183 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, batch_eq_12) {
1184 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001185 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001186 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001187 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001188 }
1189
1190 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, batch_div_12) {
1191 TEST_REQUIRES_ARM_NEON_FMA;
1192 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001193 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001194 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001195 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001196 }
1197 }
1198
1199 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, batch_lt_12) {
1200 TEST_REQUIRES_ARM_NEON_FMA;
1201 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001202 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001203 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001204 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001205 }
1206 }
1207
1208 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, batch_gt_12) {
1209 TEST_REQUIRES_ARM_NEON_FMA;
1210 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001211 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001212 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001213 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001214 }
1215 }
1216
1217 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, inplace) {
1218 TEST_REQUIRES_ARM_NEON_FMA;
1219 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001220 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001221 .batch_size(batch_size)
1222 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001223 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001224 }
1225 }
1226
1227 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, prescale) {
1228 TEST_REQUIRES_ARM_NEON_FMA;
1229 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1230 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001231 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001232 .batch_size(batch_size)
1233 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001234 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001235 }
1236 }
1237 }
1238
1239 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, alpha) {
1240 TEST_REQUIRES_ARM_NEON_FMA;
1241 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1242 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001243 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001244 .batch_size(batch_size)
1245 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001246 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001247 }
1248 }
1249 }
1250
1251 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, beta) {
1252 TEST_REQUIRES_ARM_NEON_FMA;
1253 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1254 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001255 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001256 .batch_size(batch_size)
1257 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001258 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001259 }
1260 }
1261 }
1262#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1263
1264
1265#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1266 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, batch_eq_16) {
1267 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001268 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001269 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001270 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001271 }
1272
1273 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, batch_div_16) {
1274 TEST_REQUIRES_ARM_NEON_FMA;
1275 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001276 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001277 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001278 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001279 }
1280 }
1281
1282 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, batch_lt_16) {
1283 TEST_REQUIRES_ARM_NEON_FMA;
1284 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001285 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001286 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001287 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001288 }
1289 }
1290
1291 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, batch_gt_16) {
1292 TEST_REQUIRES_ARM_NEON_FMA;
1293 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001294 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001295 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001296 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001297 }
1298 }
1299
1300 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, inplace) {
1301 TEST_REQUIRES_ARM_NEON_FMA;
1302 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001303 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001304 .batch_size(batch_size)
1305 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001306 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001307 }
1308 }
1309
1310 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, prescale) {
1311 TEST_REQUIRES_ARM_NEON_FMA;
1312 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1313 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001314 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001315 .batch_size(batch_size)
1316 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001317 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001318 }
1319 }
1320 }
1321
1322 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, alpha) {
1323 TEST_REQUIRES_ARM_NEON_FMA;
1324 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1325 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001326 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001327 .batch_size(batch_size)
1328 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001329 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001330 }
1331 }
1332 }
1333
1334 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, beta) {
1335 TEST_REQUIRES_ARM_NEON_FMA;
1336 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1337 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001338 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001339 .batch_size(batch_size)
1340 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001341 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001342 }
1343 }
1344 }
1345#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1346
1347
1348#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1349 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, batch_eq_20) {
1350 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001351 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001352 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001353 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001354 }
1355
1356 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, batch_div_20) {
1357 TEST_REQUIRES_ARM_NEON_FMA;
1358 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001359 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001360 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001361 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001362 }
1363 }
1364
1365 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, batch_lt_20) {
1366 TEST_REQUIRES_ARM_NEON_FMA;
1367 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001368 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001369 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001370 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001371 }
1372 }
1373
1374 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, batch_gt_20) {
1375 TEST_REQUIRES_ARM_NEON_FMA;
1376 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001377 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001378 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001379 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001380 }
1381 }
1382
1383 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, inplace) {
1384 TEST_REQUIRES_ARM_NEON_FMA;
1385 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001386 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001387 .batch_size(batch_size)
1388 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001389 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001390 }
1391 }
1392
1393 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, prescale) {
1394 TEST_REQUIRES_ARM_NEON_FMA;
1395 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1396 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001397 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001398 .batch_size(batch_size)
1399 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001400 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001401 }
1402 }
1403 }
1404
1405 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, alpha) {
1406 TEST_REQUIRES_ARM_NEON_FMA;
1407 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1408 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001409 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001410 .batch_size(batch_size)
1411 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001412 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001413 }
1414 }
1415 }
1416
1417 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, beta) {
1418 TEST_REQUIRES_ARM_NEON_FMA;
1419 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1420 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001421 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001422 .batch_size(batch_size)
1423 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001424 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001425 }
1426 }
1427 }
1428#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1429
1430
1431#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1432 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, batch_eq_24) {
1433 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001434 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001435 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001436 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001437 }
1438
1439 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, batch_div_24) {
1440 TEST_REQUIRES_ARM_NEON_FMA;
1441 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001442 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001443 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001444 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001445 }
1446 }
1447
1448 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, batch_lt_24) {
1449 TEST_REQUIRES_ARM_NEON_FMA;
1450 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001451 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001452 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001453 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001454 }
1455 }
1456
1457 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, batch_gt_24) {
1458 TEST_REQUIRES_ARM_NEON_FMA;
1459 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001460 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001461 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001462 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001463 }
1464 }
1465
1466 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, inplace) {
1467 TEST_REQUIRES_ARM_NEON_FMA;
1468 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001469 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001470 .batch_size(batch_size)
1471 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001472 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001473 }
1474 }
1475
1476 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, prescale) {
1477 TEST_REQUIRES_ARM_NEON_FMA;
1478 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1479 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001480 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001481 .batch_size(batch_size)
1482 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001483 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001484 }
1485 }
1486 }
1487
1488 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, alpha) {
1489 TEST_REQUIRES_ARM_NEON_FMA;
1490 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1491 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001492 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001493 .batch_size(batch_size)
1494 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001495 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001496 }
1497 }
1498 }
1499
1500 TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, beta) {
1501 TEST_REQUIRES_ARM_NEON_FMA;
1502 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1503 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001504 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001505 .batch_size(batch_size)
1506 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001507 .Test(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24, xnn_init_f32_elu_neonfma_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001508 }
1509 }
1510 }
1511#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1512
1513
1514#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1515 TEST(F32_VELU__NEONFMA_RR1_P6_X4, batch_eq_4) {
1516 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001517 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001518 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001519 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001520 }
1521
1522 TEST(F32_VELU__NEONFMA_RR1_P6_X4, batch_div_4) {
1523 TEST_REQUIRES_ARM_NEON_FMA;
1524 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001525 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001526 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001527 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001528 }
1529 }
1530
1531 TEST(F32_VELU__NEONFMA_RR1_P6_X4, batch_lt_4) {
1532 TEST_REQUIRES_ARM_NEON_FMA;
1533 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001534 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001535 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001536 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001537 }
1538 }
1539
1540 TEST(F32_VELU__NEONFMA_RR1_P6_X4, batch_gt_4) {
1541 TEST_REQUIRES_ARM_NEON_FMA;
1542 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001543 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001544 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001545 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001546 }
1547 }
1548
1549 TEST(F32_VELU__NEONFMA_RR1_P6_X4, inplace) {
1550 TEST_REQUIRES_ARM_NEON_FMA;
1551 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001552 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001553 .batch_size(batch_size)
1554 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001555 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001556 }
1557 }
1558
1559 TEST(F32_VELU__NEONFMA_RR1_P6_X4, prescale) {
1560 TEST_REQUIRES_ARM_NEON_FMA;
1561 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1562 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001563 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001564 .batch_size(batch_size)
1565 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001566 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001567 }
1568 }
1569 }
1570
1571 TEST(F32_VELU__NEONFMA_RR1_P6_X4, alpha) {
1572 TEST_REQUIRES_ARM_NEON_FMA;
1573 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1574 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001575 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001576 .batch_size(batch_size)
1577 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001578 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001579 }
1580 }
1581 }
1582
1583 TEST(F32_VELU__NEONFMA_RR1_P6_X4, beta) {
1584 TEST_REQUIRES_ARM_NEON_FMA;
1585 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1586 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001587 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001588 .batch_size(batch_size)
1589 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001590 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001591 }
1592 }
1593 }
1594#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1595
1596
1597#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1598 TEST(F32_VELU__NEONFMA_RR1_P6_X8, batch_eq_8) {
1599 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001600 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001601 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001602 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001603 }
1604
1605 TEST(F32_VELU__NEONFMA_RR1_P6_X8, batch_div_8) {
1606 TEST_REQUIRES_ARM_NEON_FMA;
1607 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001608 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001609 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001610 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001611 }
1612 }
1613
1614 TEST(F32_VELU__NEONFMA_RR1_P6_X8, batch_lt_8) {
1615 TEST_REQUIRES_ARM_NEON_FMA;
1616 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001617 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001618 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001619 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001620 }
1621 }
1622
1623 TEST(F32_VELU__NEONFMA_RR1_P6_X8, batch_gt_8) {
1624 TEST_REQUIRES_ARM_NEON_FMA;
1625 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001626 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001627 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001628 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001629 }
1630 }
1631
1632 TEST(F32_VELU__NEONFMA_RR1_P6_X8, inplace) {
1633 TEST_REQUIRES_ARM_NEON_FMA;
1634 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001635 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001636 .batch_size(batch_size)
1637 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001638 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001639 }
1640 }
1641
1642 TEST(F32_VELU__NEONFMA_RR1_P6_X8, prescale) {
1643 TEST_REQUIRES_ARM_NEON_FMA;
1644 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1645 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001646 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001647 .batch_size(batch_size)
1648 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001649 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001650 }
1651 }
1652 }
1653
1654 TEST(F32_VELU__NEONFMA_RR1_P6_X8, alpha) {
1655 TEST_REQUIRES_ARM_NEON_FMA;
1656 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1657 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001658 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001659 .batch_size(batch_size)
1660 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001661 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001662 }
1663 }
1664 }
1665
1666 TEST(F32_VELU__NEONFMA_RR1_P6_X8, beta) {
1667 TEST_REQUIRES_ARM_NEON_FMA;
1668 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1669 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001670 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001671 .batch_size(batch_size)
1672 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001673 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001674 }
1675 }
1676 }
1677#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1678
1679
1680#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1681 TEST(F32_VELU__NEONFMA_RR1_P6_X12, batch_eq_12) {
1682 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001683 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001684 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001685 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001686 }
1687
1688 TEST(F32_VELU__NEONFMA_RR1_P6_X12, batch_div_12) {
1689 TEST_REQUIRES_ARM_NEON_FMA;
1690 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001691 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001692 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001693 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001694 }
1695 }
1696
1697 TEST(F32_VELU__NEONFMA_RR1_P6_X12, batch_lt_12) {
1698 TEST_REQUIRES_ARM_NEON_FMA;
1699 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001700 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001701 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001702 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001703 }
1704 }
1705
1706 TEST(F32_VELU__NEONFMA_RR1_P6_X12, batch_gt_12) {
1707 TEST_REQUIRES_ARM_NEON_FMA;
1708 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001709 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001710 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001711 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001712 }
1713 }
1714
1715 TEST(F32_VELU__NEONFMA_RR1_P6_X12, inplace) {
1716 TEST_REQUIRES_ARM_NEON_FMA;
1717 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001718 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001719 .batch_size(batch_size)
1720 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001721 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001722 }
1723 }
1724
1725 TEST(F32_VELU__NEONFMA_RR1_P6_X12, prescale) {
1726 TEST_REQUIRES_ARM_NEON_FMA;
1727 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1728 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001729 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001730 .batch_size(batch_size)
1731 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001732 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001733 }
1734 }
1735 }
1736
1737 TEST(F32_VELU__NEONFMA_RR1_P6_X12, alpha) {
1738 TEST_REQUIRES_ARM_NEON_FMA;
1739 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1740 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001741 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001742 .batch_size(batch_size)
1743 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001744 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001745 }
1746 }
1747 }
1748
1749 TEST(F32_VELU__NEONFMA_RR1_P6_X12, beta) {
1750 TEST_REQUIRES_ARM_NEON_FMA;
1751 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1752 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001753 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001754 .batch_size(batch_size)
1755 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001756 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001757 }
1758 }
1759 }
1760#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1761
1762
1763#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1764 TEST(F32_VELU__NEONFMA_RR1_P6_X16, batch_eq_16) {
1765 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001766 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001767 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001768 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001769 }
1770
1771 TEST(F32_VELU__NEONFMA_RR1_P6_X16, batch_div_16) {
1772 TEST_REQUIRES_ARM_NEON_FMA;
1773 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001774 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001775 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001776 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001777 }
1778 }
1779
1780 TEST(F32_VELU__NEONFMA_RR1_P6_X16, batch_lt_16) {
1781 TEST_REQUIRES_ARM_NEON_FMA;
1782 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001783 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001784 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001785 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001786 }
1787 }
1788
1789 TEST(F32_VELU__NEONFMA_RR1_P6_X16, batch_gt_16) {
1790 TEST_REQUIRES_ARM_NEON_FMA;
1791 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001792 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001793 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001794 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001795 }
1796 }
1797
1798 TEST(F32_VELU__NEONFMA_RR1_P6_X16, inplace) {
1799 TEST_REQUIRES_ARM_NEON_FMA;
1800 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001801 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001802 .batch_size(batch_size)
1803 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001804 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001805 }
1806 }
1807
1808 TEST(F32_VELU__NEONFMA_RR1_P6_X16, prescale) {
1809 TEST_REQUIRES_ARM_NEON_FMA;
1810 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1811 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001812 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001813 .batch_size(batch_size)
1814 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001815 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001816 }
1817 }
1818 }
1819
1820 TEST(F32_VELU__NEONFMA_RR1_P6_X16, alpha) {
1821 TEST_REQUIRES_ARM_NEON_FMA;
1822 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1823 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001824 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001825 .batch_size(batch_size)
1826 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001827 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001828 }
1829 }
1830 }
1831
1832 TEST(F32_VELU__NEONFMA_RR1_P6_X16, beta) {
1833 TEST_REQUIRES_ARM_NEON_FMA;
1834 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1835 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001836 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001837 .batch_size(batch_size)
1838 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001839 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001840 }
1841 }
1842 }
1843#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1844
1845
1846#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1847 TEST(F32_VELU__NEONFMA_RR1_P6_X20, batch_eq_20) {
1848 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001849 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001850 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001851 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001852 }
1853
1854 TEST(F32_VELU__NEONFMA_RR1_P6_X20, batch_div_20) {
1855 TEST_REQUIRES_ARM_NEON_FMA;
1856 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001857 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001858 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001859 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001860 }
1861 }
1862
1863 TEST(F32_VELU__NEONFMA_RR1_P6_X20, batch_lt_20) {
1864 TEST_REQUIRES_ARM_NEON_FMA;
1865 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001866 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001867 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001868 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001869 }
1870 }
1871
1872 TEST(F32_VELU__NEONFMA_RR1_P6_X20, batch_gt_20) {
1873 TEST_REQUIRES_ARM_NEON_FMA;
1874 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001875 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001876 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001877 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001878 }
1879 }
1880
1881 TEST(F32_VELU__NEONFMA_RR1_P6_X20, inplace) {
1882 TEST_REQUIRES_ARM_NEON_FMA;
1883 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001884 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001885 .batch_size(batch_size)
1886 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001887 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001888 }
1889 }
1890
1891 TEST(F32_VELU__NEONFMA_RR1_P6_X20, prescale) {
1892 TEST_REQUIRES_ARM_NEON_FMA;
1893 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1894 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001895 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001896 .batch_size(batch_size)
1897 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001898 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001899 }
1900 }
1901 }
1902
1903 TEST(F32_VELU__NEONFMA_RR1_P6_X20, alpha) {
1904 TEST_REQUIRES_ARM_NEON_FMA;
1905 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1906 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001907 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001908 .batch_size(batch_size)
1909 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001910 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001911 }
1912 }
1913 }
1914
1915 TEST(F32_VELU__NEONFMA_RR1_P6_X20, beta) {
1916 TEST_REQUIRES_ARM_NEON_FMA;
1917 for (float beta : std::vector<float>({0.3f, 3.0f})) {
1918 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001919 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001920 .batch_size(batch_size)
1921 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001922 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001923 }
1924 }
1925 }
1926#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1927
1928
1929#if XNN_ARCH_ARM || XNN_ARCH_ARM64
1930 TEST(F32_VELU__NEONFMA_RR1_P6_X24, batch_eq_24) {
1931 TEST_REQUIRES_ARM_NEON_FMA;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001932 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001933 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001934 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001935 }
1936
1937 TEST(F32_VELU__NEONFMA_RR1_P6_X24, batch_div_24) {
1938 TEST_REQUIRES_ARM_NEON_FMA;
1939 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001940 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001941 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001942 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001943 }
1944 }
1945
1946 TEST(F32_VELU__NEONFMA_RR1_P6_X24, batch_lt_24) {
1947 TEST_REQUIRES_ARM_NEON_FMA;
1948 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001949 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001950 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001951 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001952 }
1953 }
1954
1955 TEST(F32_VELU__NEONFMA_RR1_P6_X24, batch_gt_24) {
1956 TEST_REQUIRES_ARM_NEON_FMA;
1957 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001958 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001959 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001960 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001961 }
1962 }
1963
1964 TEST(F32_VELU__NEONFMA_RR1_P6_X24, inplace) {
1965 TEST_REQUIRES_ARM_NEON_FMA;
1966 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001967 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001968 .batch_size(batch_size)
1969 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001970 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001971 }
1972 }
1973
1974 TEST(F32_VELU__NEONFMA_RR1_P6_X24, prescale) {
1975 TEST_REQUIRES_ARM_NEON_FMA;
1976 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
1977 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001978 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001979 .batch_size(batch_size)
1980 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001981 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001982 }
1983 }
1984 }
1985
1986 TEST(F32_VELU__NEONFMA_RR1_P6_X24, alpha) {
1987 TEST_REQUIRES_ARM_NEON_FMA;
1988 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
1989 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07001990 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001991 .batch_size(batch_size)
1992 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08001993 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08001994 }
1995 }
1996 }
1997
1998 TEST(F32_VELU__NEONFMA_RR1_P6_X24, beta) {
1999 TEST_REQUIRES_ARM_NEON_FMA;
2000 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2001 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002002 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002003 .batch_size(batch_size)
2004 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002005 .Test(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24, xnn_init_f32_elu_neonfma_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002006 }
2007 }
2008 }
2009#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2010
2011
2012#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2013 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, batch_eq_4) {
2014 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002015 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002016 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002017 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002018 }
2019
2020 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, batch_div_4) {
2021 TEST_REQUIRES_X86_SSE2;
2022 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002023 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002024 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002025 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002026 }
2027 }
2028
2029 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, batch_lt_4) {
2030 TEST_REQUIRES_X86_SSE2;
2031 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002032 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002033 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002034 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002035 }
2036 }
2037
2038 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, batch_gt_4) {
2039 TEST_REQUIRES_X86_SSE2;
2040 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002041 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002042 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002043 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002044 }
2045 }
2046
2047 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, inplace) {
2048 TEST_REQUIRES_X86_SSE2;
2049 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002050 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002051 .batch_size(batch_size)
2052 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002053 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002054 }
2055 }
2056
2057 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, prescale) {
2058 TEST_REQUIRES_X86_SSE2;
2059 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2060 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002061 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002062 .batch_size(batch_size)
2063 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002064 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002065 }
2066 }
2067 }
2068
2069 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, alpha) {
2070 TEST_REQUIRES_X86_SSE2;
2071 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2072 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002073 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002074 .batch_size(batch_size)
2075 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002076 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002077 }
2078 }
2079 }
2080
2081 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, beta) {
2082 TEST_REQUIRES_X86_SSE2;
2083 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2084 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002085 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002086 .batch_size(batch_size)
2087 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002088 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002089 }
2090 }
2091 }
2092#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2093
2094
2095#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2096 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, batch_eq_8) {
2097 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002098 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002099 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002100 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002101 }
2102
2103 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, batch_div_8) {
2104 TEST_REQUIRES_X86_SSE2;
2105 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002106 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002107 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002108 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002109 }
2110 }
2111
2112 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, batch_lt_8) {
2113 TEST_REQUIRES_X86_SSE2;
2114 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002115 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002116 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002117 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002118 }
2119 }
2120
2121 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, batch_gt_8) {
2122 TEST_REQUIRES_X86_SSE2;
2123 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002124 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002125 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002126 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002127 }
2128 }
2129
2130 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, inplace) {
2131 TEST_REQUIRES_X86_SSE2;
2132 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002133 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002134 .batch_size(batch_size)
2135 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002136 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002137 }
2138 }
2139
2140 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, prescale) {
2141 TEST_REQUIRES_X86_SSE2;
2142 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2143 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002144 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002145 .batch_size(batch_size)
2146 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002147 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002148 }
2149 }
2150 }
2151
2152 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, alpha) {
2153 TEST_REQUIRES_X86_SSE2;
2154 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2155 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002156 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002157 .batch_size(batch_size)
2158 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002159 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002160 }
2161 }
2162 }
2163
2164 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, beta) {
2165 TEST_REQUIRES_X86_SSE2;
2166 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2167 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002168 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002169 .batch_size(batch_size)
2170 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002171 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002172 }
2173 }
2174 }
2175#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2176
2177
2178#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2179 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, batch_eq_12) {
2180 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002181 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002182 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002183 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002184 }
2185
2186 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, batch_div_12) {
2187 TEST_REQUIRES_X86_SSE2;
2188 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002189 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002190 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002191 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002192 }
2193 }
2194
2195 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, batch_lt_12) {
2196 TEST_REQUIRES_X86_SSE2;
2197 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002198 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002199 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002200 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002201 }
2202 }
2203
2204 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, batch_gt_12) {
2205 TEST_REQUIRES_X86_SSE2;
2206 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002207 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002208 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002209 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002210 }
2211 }
2212
2213 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, inplace) {
2214 TEST_REQUIRES_X86_SSE2;
2215 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002216 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002217 .batch_size(batch_size)
2218 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002219 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002220 }
2221 }
2222
2223 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, prescale) {
2224 TEST_REQUIRES_X86_SSE2;
2225 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2226 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002227 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002228 .batch_size(batch_size)
2229 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002230 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002231 }
2232 }
2233 }
2234
2235 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, alpha) {
2236 TEST_REQUIRES_X86_SSE2;
2237 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2238 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002239 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002240 .batch_size(batch_size)
2241 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002242 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002243 }
2244 }
2245 }
2246
2247 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, beta) {
2248 TEST_REQUIRES_X86_SSE2;
2249 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2250 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002251 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002252 .batch_size(batch_size)
2253 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002254 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002255 }
2256 }
2257 }
2258#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2259
2260
2261#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2262 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, batch_eq_16) {
2263 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002264 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002265 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002266 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002267 }
2268
2269 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, batch_div_16) {
2270 TEST_REQUIRES_X86_SSE2;
2271 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002272 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002273 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002274 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002275 }
2276 }
2277
2278 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, batch_lt_16) {
2279 TEST_REQUIRES_X86_SSE2;
2280 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002281 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002282 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002283 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002284 }
2285 }
2286
2287 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, batch_gt_16) {
2288 TEST_REQUIRES_X86_SSE2;
2289 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002290 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002291 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002292 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002293 }
2294 }
2295
2296 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, inplace) {
2297 TEST_REQUIRES_X86_SSE2;
2298 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002299 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002300 .batch_size(batch_size)
2301 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002302 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002303 }
2304 }
2305
2306 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, prescale) {
2307 TEST_REQUIRES_X86_SSE2;
2308 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2309 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002310 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002311 .batch_size(batch_size)
2312 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002313 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002314 }
2315 }
2316 }
2317
2318 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, alpha) {
2319 TEST_REQUIRES_X86_SSE2;
2320 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2321 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002322 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002323 .batch_size(batch_size)
2324 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002325 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002326 }
2327 }
2328 }
2329
2330 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, beta) {
2331 TEST_REQUIRES_X86_SSE2;
2332 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2333 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002334 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002335 .batch_size(batch_size)
2336 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002337 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002338 }
2339 }
2340 }
2341#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2342
2343
2344#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2345 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, batch_eq_20) {
2346 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002347 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002348 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002349 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002350 }
2351
2352 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, batch_div_20) {
2353 TEST_REQUIRES_X86_SSE2;
2354 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002355 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002356 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002357 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002358 }
2359 }
2360
2361 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, batch_lt_20) {
2362 TEST_REQUIRES_X86_SSE2;
2363 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002364 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002365 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002366 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002367 }
2368 }
2369
2370 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, batch_gt_20) {
2371 TEST_REQUIRES_X86_SSE2;
2372 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002373 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002374 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002375 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002376 }
2377 }
2378
2379 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, inplace) {
2380 TEST_REQUIRES_X86_SSE2;
2381 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002382 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002383 .batch_size(batch_size)
2384 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002385 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002386 }
2387 }
2388
2389 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, prescale) {
2390 TEST_REQUIRES_X86_SSE2;
2391 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2392 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002393 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002394 .batch_size(batch_size)
2395 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002396 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002397 }
2398 }
2399 }
2400
2401 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, alpha) {
2402 TEST_REQUIRES_X86_SSE2;
2403 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2404 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002405 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002406 .batch_size(batch_size)
2407 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002408 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002409 }
2410 }
2411 }
2412
2413 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, beta) {
2414 TEST_REQUIRES_X86_SSE2;
2415 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2416 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002417 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002418 .batch_size(batch_size)
2419 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002420 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002421 }
2422 }
2423 }
2424#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2425
2426
2427#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2428 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, batch_eq_24) {
2429 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002430 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002431 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002432 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002433 }
2434
2435 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, batch_div_24) {
2436 TEST_REQUIRES_X86_SSE2;
2437 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002438 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002439 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002440 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002441 }
2442 }
2443
2444 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, batch_lt_24) {
2445 TEST_REQUIRES_X86_SSE2;
2446 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002447 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002448 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002449 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002450 }
2451 }
2452
2453 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, batch_gt_24) {
2454 TEST_REQUIRES_X86_SSE2;
2455 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002456 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002457 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002458 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002459 }
2460 }
2461
2462 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, inplace) {
2463 TEST_REQUIRES_X86_SSE2;
2464 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002465 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002466 .batch_size(batch_size)
2467 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002468 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002469 }
2470 }
2471
2472 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, prescale) {
2473 TEST_REQUIRES_X86_SSE2;
2474 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2475 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002476 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002477 .batch_size(batch_size)
2478 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002479 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002480 }
2481 }
2482 }
2483
2484 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, alpha) {
2485 TEST_REQUIRES_X86_SSE2;
2486 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2487 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002488 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002489 .batch_size(batch_size)
2490 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002491 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002492 }
2493 }
2494 }
2495
2496 TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, beta) {
2497 TEST_REQUIRES_X86_SSE2;
2498 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2499 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002500 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002501 .batch_size(batch_size)
2502 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002503 .Test(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002504 }
2505 }
2506 }
2507#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2508
2509
2510#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2511 TEST(F32_VELU__SSE2_RR2_P6_X4, batch_eq_4) {
2512 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002513 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002514 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002515 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002516 }
2517
2518 TEST(F32_VELU__SSE2_RR2_P6_X4, batch_div_4) {
2519 TEST_REQUIRES_X86_SSE2;
2520 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002521 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002522 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002523 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002524 }
2525 }
2526
2527 TEST(F32_VELU__SSE2_RR2_P6_X4, batch_lt_4) {
2528 TEST_REQUIRES_X86_SSE2;
2529 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002530 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002531 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002532 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002533 }
2534 }
2535
2536 TEST(F32_VELU__SSE2_RR2_P6_X4, batch_gt_4) {
2537 TEST_REQUIRES_X86_SSE2;
2538 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002539 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002540 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002541 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002542 }
2543 }
2544
2545 TEST(F32_VELU__SSE2_RR2_P6_X4, inplace) {
2546 TEST_REQUIRES_X86_SSE2;
2547 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002548 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002549 .batch_size(batch_size)
2550 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002551 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002552 }
2553 }
2554
2555 TEST(F32_VELU__SSE2_RR2_P6_X4, prescale) {
2556 TEST_REQUIRES_X86_SSE2;
2557 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2558 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002559 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002560 .batch_size(batch_size)
2561 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002562 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002563 }
2564 }
2565 }
2566
2567 TEST(F32_VELU__SSE2_RR2_P6_X4, alpha) {
2568 TEST_REQUIRES_X86_SSE2;
2569 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2570 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002571 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002572 .batch_size(batch_size)
2573 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002574 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002575 }
2576 }
2577 }
2578
2579 TEST(F32_VELU__SSE2_RR2_P6_X4, beta) {
2580 TEST_REQUIRES_X86_SSE2;
2581 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2582 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002583 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002584 .batch_size(batch_size)
2585 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002586 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002587 }
2588 }
2589 }
2590#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2591
2592
2593#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2594 TEST(F32_VELU__SSE2_RR2_P6_X8, batch_eq_8) {
2595 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002596 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002597 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002598 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002599 }
2600
2601 TEST(F32_VELU__SSE2_RR2_P6_X8, batch_div_8) {
2602 TEST_REQUIRES_X86_SSE2;
2603 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002604 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002605 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002606 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002607 }
2608 }
2609
2610 TEST(F32_VELU__SSE2_RR2_P6_X8, batch_lt_8) {
2611 TEST_REQUIRES_X86_SSE2;
2612 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002613 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002614 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002615 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002616 }
2617 }
2618
2619 TEST(F32_VELU__SSE2_RR2_P6_X8, batch_gt_8) {
2620 TEST_REQUIRES_X86_SSE2;
2621 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002622 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002623 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002624 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002625 }
2626 }
2627
2628 TEST(F32_VELU__SSE2_RR2_P6_X8, inplace) {
2629 TEST_REQUIRES_X86_SSE2;
2630 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002631 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002632 .batch_size(batch_size)
2633 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002634 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002635 }
2636 }
2637
2638 TEST(F32_VELU__SSE2_RR2_P6_X8, prescale) {
2639 TEST_REQUIRES_X86_SSE2;
2640 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2641 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002642 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002643 .batch_size(batch_size)
2644 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002645 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002646 }
2647 }
2648 }
2649
2650 TEST(F32_VELU__SSE2_RR2_P6_X8, alpha) {
2651 TEST_REQUIRES_X86_SSE2;
2652 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2653 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002654 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002655 .batch_size(batch_size)
2656 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002657 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002658 }
2659 }
2660 }
2661
2662 TEST(F32_VELU__SSE2_RR2_P6_X8, beta) {
2663 TEST_REQUIRES_X86_SSE2;
2664 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2665 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002666 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002667 .batch_size(batch_size)
2668 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002669 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002670 }
2671 }
2672 }
2673#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2674
2675
2676#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2677 TEST(F32_VELU__SSE2_RR2_P6_X12, batch_eq_12) {
2678 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002679 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002680 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002681 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002682 }
2683
2684 TEST(F32_VELU__SSE2_RR2_P6_X12, batch_div_12) {
2685 TEST_REQUIRES_X86_SSE2;
2686 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002687 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002688 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002689 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002690 }
2691 }
2692
2693 TEST(F32_VELU__SSE2_RR2_P6_X12, batch_lt_12) {
2694 TEST_REQUIRES_X86_SSE2;
2695 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002696 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002697 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002698 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002699 }
2700 }
2701
2702 TEST(F32_VELU__SSE2_RR2_P6_X12, batch_gt_12) {
2703 TEST_REQUIRES_X86_SSE2;
2704 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002705 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002706 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002707 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002708 }
2709 }
2710
2711 TEST(F32_VELU__SSE2_RR2_P6_X12, inplace) {
2712 TEST_REQUIRES_X86_SSE2;
2713 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002714 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002715 .batch_size(batch_size)
2716 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002717 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002718 }
2719 }
2720
2721 TEST(F32_VELU__SSE2_RR2_P6_X12, prescale) {
2722 TEST_REQUIRES_X86_SSE2;
2723 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2724 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002725 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002726 .batch_size(batch_size)
2727 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002728 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002729 }
2730 }
2731 }
2732
2733 TEST(F32_VELU__SSE2_RR2_P6_X12, alpha) {
2734 TEST_REQUIRES_X86_SSE2;
2735 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2736 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002737 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002738 .batch_size(batch_size)
2739 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002740 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002741 }
2742 }
2743 }
2744
2745 TEST(F32_VELU__SSE2_RR2_P6_X12, beta) {
2746 TEST_REQUIRES_X86_SSE2;
2747 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2748 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002749 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002750 .batch_size(batch_size)
2751 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002752 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002753 }
2754 }
2755 }
2756#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2757
2758
2759#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2760 TEST(F32_VELU__SSE2_RR2_P6_X16, batch_eq_16) {
2761 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002762 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002763 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002764 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002765 }
2766
2767 TEST(F32_VELU__SSE2_RR2_P6_X16, batch_div_16) {
2768 TEST_REQUIRES_X86_SSE2;
2769 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002770 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002771 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002772 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002773 }
2774 }
2775
2776 TEST(F32_VELU__SSE2_RR2_P6_X16, batch_lt_16) {
2777 TEST_REQUIRES_X86_SSE2;
2778 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002779 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002780 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002781 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002782 }
2783 }
2784
2785 TEST(F32_VELU__SSE2_RR2_P6_X16, batch_gt_16) {
2786 TEST_REQUIRES_X86_SSE2;
2787 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002788 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002789 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002790 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002791 }
2792 }
2793
2794 TEST(F32_VELU__SSE2_RR2_P6_X16, inplace) {
2795 TEST_REQUIRES_X86_SSE2;
2796 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002797 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002798 .batch_size(batch_size)
2799 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002800 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002801 }
2802 }
2803
2804 TEST(F32_VELU__SSE2_RR2_P6_X16, prescale) {
2805 TEST_REQUIRES_X86_SSE2;
2806 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2807 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002808 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002809 .batch_size(batch_size)
2810 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002811 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002812 }
2813 }
2814 }
2815
2816 TEST(F32_VELU__SSE2_RR2_P6_X16, alpha) {
2817 TEST_REQUIRES_X86_SSE2;
2818 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2819 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002820 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002821 .batch_size(batch_size)
2822 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002823 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002824 }
2825 }
2826 }
2827
2828 TEST(F32_VELU__SSE2_RR2_P6_X16, beta) {
2829 TEST_REQUIRES_X86_SSE2;
2830 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2831 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002832 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002833 .batch_size(batch_size)
2834 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002835 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002836 }
2837 }
2838 }
2839#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2840
2841
2842#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2843 TEST(F32_VELU__SSE2_RR2_P6_X20, batch_eq_20) {
2844 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002845 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002846 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002847 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002848 }
2849
2850 TEST(F32_VELU__SSE2_RR2_P6_X20, batch_div_20) {
2851 TEST_REQUIRES_X86_SSE2;
2852 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002853 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002854 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002855 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002856 }
2857 }
2858
2859 TEST(F32_VELU__SSE2_RR2_P6_X20, batch_lt_20) {
2860 TEST_REQUIRES_X86_SSE2;
2861 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002862 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002863 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002864 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002865 }
2866 }
2867
2868 TEST(F32_VELU__SSE2_RR2_P6_X20, batch_gt_20) {
2869 TEST_REQUIRES_X86_SSE2;
2870 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002871 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002872 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002873 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002874 }
2875 }
2876
2877 TEST(F32_VELU__SSE2_RR2_P6_X20, inplace) {
2878 TEST_REQUIRES_X86_SSE2;
2879 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002880 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002881 .batch_size(batch_size)
2882 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002883 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002884 }
2885 }
2886
2887 TEST(F32_VELU__SSE2_RR2_P6_X20, prescale) {
2888 TEST_REQUIRES_X86_SSE2;
2889 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2890 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002891 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002892 .batch_size(batch_size)
2893 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002894 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002895 }
2896 }
2897 }
2898
2899 TEST(F32_VELU__SSE2_RR2_P6_X20, alpha) {
2900 TEST_REQUIRES_X86_SSE2;
2901 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2902 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002903 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002904 .batch_size(batch_size)
2905 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002906 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002907 }
2908 }
2909 }
2910
2911 TEST(F32_VELU__SSE2_RR2_P6_X20, beta) {
2912 TEST_REQUIRES_X86_SSE2;
2913 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2914 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002915 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002916 .batch_size(batch_size)
2917 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002918 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002919 }
2920 }
2921 }
2922#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2923
2924
2925#if XNN_ARCH_X86 || XNN_ARCH_X86_64
2926 TEST(F32_VELU__SSE2_RR2_P6_X24, batch_eq_24) {
2927 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002928 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002929 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002930 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002931 }
2932
2933 TEST(F32_VELU__SSE2_RR2_P6_X24, batch_div_24) {
2934 TEST_REQUIRES_X86_SSE2;
2935 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002936 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002937 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002938 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002939 }
2940 }
2941
2942 TEST(F32_VELU__SSE2_RR2_P6_X24, batch_lt_24) {
2943 TEST_REQUIRES_X86_SSE2;
2944 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002945 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002946 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002947 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002948 }
2949 }
2950
2951 TEST(F32_VELU__SSE2_RR2_P6_X24, batch_gt_24) {
2952 TEST_REQUIRES_X86_SSE2;
2953 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002954 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002955 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002956 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002957 }
2958 }
2959
2960 TEST(F32_VELU__SSE2_RR2_P6_X24, inplace) {
2961 TEST_REQUIRES_X86_SSE2;
2962 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002963 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002964 .batch_size(batch_size)
2965 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002966 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002967 }
2968 }
2969
2970 TEST(F32_VELU__SSE2_RR2_P6_X24, prescale) {
2971 TEST_REQUIRES_X86_SSE2;
2972 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
2973 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002974 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002975 .batch_size(batch_size)
2976 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002977 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002978 }
2979 }
2980 }
2981
2982 TEST(F32_VELU__SSE2_RR2_P6_X24, alpha) {
2983 TEST_REQUIRES_X86_SSE2;
2984 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
2985 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002986 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002987 .batch_size(batch_size)
2988 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08002989 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002990 }
2991 }
2992 }
2993
2994 TEST(F32_VELU__SSE2_RR2_P6_X24, beta) {
2995 TEST_REQUIRES_X86_SSE2;
2996 for (float beta : std::vector<float>({0.3f, 3.0f})) {
2997 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07002998 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08002999 .batch_size(batch_size)
3000 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003001 .Test(xnn_f32_velu_ukernel__sse2_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003002 }
3003 }
3004 }
3005#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3006
3007
3008#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3009 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, batch_eq_4) {
3010 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003011 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003012 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003013 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003014 }
3015
3016 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, batch_div_4) {
3017 TEST_REQUIRES_X86_SSE41;
3018 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003019 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003020 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003021 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003022 }
3023 }
3024
3025 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, batch_lt_4) {
3026 TEST_REQUIRES_X86_SSE41;
3027 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003028 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003029 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003030 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003031 }
3032 }
3033
3034 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, batch_gt_4) {
3035 TEST_REQUIRES_X86_SSE41;
3036 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003037 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003038 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003039 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003040 }
3041 }
3042
3043 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, inplace) {
3044 TEST_REQUIRES_X86_SSE41;
3045 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003046 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003047 .batch_size(batch_size)
3048 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003049 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003050 }
3051 }
3052
3053 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, prescale) {
3054 TEST_REQUIRES_X86_SSE41;
3055 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3056 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003057 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003058 .batch_size(batch_size)
3059 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003060 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003061 }
3062 }
3063 }
3064
3065 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, alpha) {
3066 TEST_REQUIRES_X86_SSE41;
3067 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3068 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003069 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003070 .batch_size(batch_size)
3071 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003072 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003073 }
3074 }
3075 }
3076
3077 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, beta) {
3078 TEST_REQUIRES_X86_SSE41;
3079 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3080 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003081 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003082 .batch_size(batch_size)
3083 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003084 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003085 }
3086 }
3087 }
3088#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3089
3090
3091#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3092 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, batch_eq_8) {
3093 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003094 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003095 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003096 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003097 }
3098
3099 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, batch_div_8) {
3100 TEST_REQUIRES_X86_SSE41;
3101 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003102 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003103 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003104 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003105 }
3106 }
3107
3108 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, batch_lt_8) {
3109 TEST_REQUIRES_X86_SSE41;
3110 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003111 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003112 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003113 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003114 }
3115 }
3116
3117 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, batch_gt_8) {
3118 TEST_REQUIRES_X86_SSE41;
3119 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003120 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003121 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003122 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003123 }
3124 }
3125
3126 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, inplace) {
3127 TEST_REQUIRES_X86_SSE41;
3128 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003129 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003130 .batch_size(batch_size)
3131 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003132 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003133 }
3134 }
3135
3136 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, prescale) {
3137 TEST_REQUIRES_X86_SSE41;
3138 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3139 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003140 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003141 .batch_size(batch_size)
3142 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003143 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003144 }
3145 }
3146 }
3147
3148 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, alpha) {
3149 TEST_REQUIRES_X86_SSE41;
3150 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3151 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003152 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003153 .batch_size(batch_size)
3154 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003155 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003156 }
3157 }
3158 }
3159
3160 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, beta) {
3161 TEST_REQUIRES_X86_SSE41;
3162 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3163 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003164 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003165 .batch_size(batch_size)
3166 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003167 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003168 }
3169 }
3170 }
3171#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3172
3173
3174#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3175 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, batch_eq_12) {
3176 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003177 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003178 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003179 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003180 }
3181
3182 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, batch_div_12) {
3183 TEST_REQUIRES_X86_SSE41;
3184 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003185 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003186 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003187 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003188 }
3189 }
3190
3191 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, batch_lt_12) {
3192 TEST_REQUIRES_X86_SSE41;
3193 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003194 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003195 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003196 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003197 }
3198 }
3199
3200 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, batch_gt_12) {
3201 TEST_REQUIRES_X86_SSE41;
3202 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003203 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003204 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003205 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003206 }
3207 }
3208
3209 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, inplace) {
3210 TEST_REQUIRES_X86_SSE41;
3211 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003212 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003213 .batch_size(batch_size)
3214 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003215 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003216 }
3217 }
3218
3219 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, prescale) {
3220 TEST_REQUIRES_X86_SSE41;
3221 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3222 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003223 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003224 .batch_size(batch_size)
3225 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003226 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003227 }
3228 }
3229 }
3230
3231 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, alpha) {
3232 TEST_REQUIRES_X86_SSE41;
3233 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3234 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003235 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003236 .batch_size(batch_size)
3237 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003238 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003239 }
3240 }
3241 }
3242
3243 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, beta) {
3244 TEST_REQUIRES_X86_SSE41;
3245 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3246 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003247 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003248 .batch_size(batch_size)
3249 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003250 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003251 }
3252 }
3253 }
3254#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3255
3256
3257#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3258 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, batch_eq_16) {
3259 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003260 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003261 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003262 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003263 }
3264
3265 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, batch_div_16) {
3266 TEST_REQUIRES_X86_SSE41;
3267 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003268 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003269 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003270 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003271 }
3272 }
3273
3274 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, batch_lt_16) {
3275 TEST_REQUIRES_X86_SSE41;
3276 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003277 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003278 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003279 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003280 }
3281 }
3282
3283 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, batch_gt_16) {
3284 TEST_REQUIRES_X86_SSE41;
3285 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003286 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003287 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003288 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003289 }
3290 }
3291
3292 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, inplace) {
3293 TEST_REQUIRES_X86_SSE41;
3294 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003295 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003296 .batch_size(batch_size)
3297 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003298 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003299 }
3300 }
3301
3302 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, prescale) {
3303 TEST_REQUIRES_X86_SSE41;
3304 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3305 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003306 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003307 .batch_size(batch_size)
3308 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003309 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003310 }
3311 }
3312 }
3313
3314 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, alpha) {
3315 TEST_REQUIRES_X86_SSE41;
3316 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3317 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003318 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003319 .batch_size(batch_size)
3320 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003321 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003322 }
3323 }
3324 }
3325
3326 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, beta) {
3327 TEST_REQUIRES_X86_SSE41;
3328 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3329 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003330 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003331 .batch_size(batch_size)
3332 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003333 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003334 }
3335 }
3336 }
3337#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3338
3339
3340#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3341 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, batch_eq_20) {
3342 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003343 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003344 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003345 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003346 }
3347
3348 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, batch_div_20) {
3349 TEST_REQUIRES_X86_SSE41;
3350 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003351 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003352 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003353 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003354 }
3355 }
3356
3357 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, batch_lt_20) {
3358 TEST_REQUIRES_X86_SSE41;
3359 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003360 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003361 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003362 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003363 }
3364 }
3365
3366 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, batch_gt_20) {
3367 TEST_REQUIRES_X86_SSE41;
3368 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003369 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003370 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003371 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003372 }
3373 }
3374
3375 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, inplace) {
3376 TEST_REQUIRES_X86_SSE41;
3377 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003378 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003379 .batch_size(batch_size)
3380 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003381 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003382 }
3383 }
3384
3385 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, prescale) {
3386 TEST_REQUIRES_X86_SSE41;
3387 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3388 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003389 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003390 .batch_size(batch_size)
3391 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003392 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003393 }
3394 }
3395 }
3396
3397 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, alpha) {
3398 TEST_REQUIRES_X86_SSE41;
3399 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3400 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003401 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003402 .batch_size(batch_size)
3403 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003404 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003405 }
3406 }
3407 }
3408
3409 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, beta) {
3410 TEST_REQUIRES_X86_SSE41;
3411 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3412 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003413 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003414 .batch_size(batch_size)
3415 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003416 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003417 }
3418 }
3419 }
3420#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3421
3422
3423#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3424 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, batch_eq_24) {
3425 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003426 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003427 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003428 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003429 }
3430
3431 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, batch_div_24) {
3432 TEST_REQUIRES_X86_SSE41;
3433 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003434 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003435 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003436 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003437 }
3438 }
3439
3440 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, batch_lt_24) {
3441 TEST_REQUIRES_X86_SSE41;
3442 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003443 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003444 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003445 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003446 }
3447 }
3448
3449 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, batch_gt_24) {
3450 TEST_REQUIRES_X86_SSE41;
3451 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003452 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003453 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003454 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003455 }
3456 }
3457
3458 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, inplace) {
3459 TEST_REQUIRES_X86_SSE41;
3460 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003461 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003462 .batch_size(batch_size)
3463 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003464 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003465 }
3466 }
3467
3468 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, prescale) {
3469 TEST_REQUIRES_X86_SSE41;
3470 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3471 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003472 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003473 .batch_size(batch_size)
3474 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003475 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003476 }
3477 }
3478 }
3479
3480 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, alpha) {
3481 TEST_REQUIRES_X86_SSE41;
3482 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3483 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003484 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003485 .batch_size(batch_size)
3486 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003487 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003488 }
3489 }
3490 }
3491
3492 TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, beta) {
3493 TEST_REQUIRES_X86_SSE41;
3494 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3495 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003496 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003497 .batch_size(batch_size)
3498 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003499 .Test(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24, xnn_init_f32_elu_sse2_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003500 }
3501 }
3502 }
3503#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3504
3505
3506#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3507 TEST(F32_VELU__SSE41_RR2_P6_X4, batch_eq_4) {
3508 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003509 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003510 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003511 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003512 }
3513
3514 TEST(F32_VELU__SSE41_RR2_P6_X4, batch_div_4) {
3515 TEST_REQUIRES_X86_SSE41;
3516 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003517 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003518 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003519 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003520 }
3521 }
3522
3523 TEST(F32_VELU__SSE41_RR2_P6_X4, batch_lt_4) {
3524 TEST_REQUIRES_X86_SSE41;
3525 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003526 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003527 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003528 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003529 }
3530 }
3531
3532 TEST(F32_VELU__SSE41_RR2_P6_X4, batch_gt_4) {
3533 TEST_REQUIRES_X86_SSE41;
3534 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003535 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003536 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003537 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003538 }
3539 }
3540
3541 TEST(F32_VELU__SSE41_RR2_P6_X4, inplace) {
3542 TEST_REQUIRES_X86_SSE41;
3543 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003544 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003545 .batch_size(batch_size)
3546 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003547 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003548 }
3549 }
3550
3551 TEST(F32_VELU__SSE41_RR2_P6_X4, prescale) {
3552 TEST_REQUIRES_X86_SSE41;
3553 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3554 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003555 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003556 .batch_size(batch_size)
3557 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003558 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003559 }
3560 }
3561 }
3562
3563 TEST(F32_VELU__SSE41_RR2_P6_X4, alpha) {
3564 TEST_REQUIRES_X86_SSE41;
3565 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3566 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003567 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003568 .batch_size(batch_size)
3569 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003570 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003571 }
3572 }
3573 }
3574
3575 TEST(F32_VELU__SSE41_RR2_P6_X4, beta) {
3576 TEST_REQUIRES_X86_SSE41;
3577 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3578 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003579 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003580 .batch_size(batch_size)
3581 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003582 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x4, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003583 }
3584 }
3585 }
3586#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3587
3588
3589#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3590 TEST(F32_VELU__SSE41_RR2_P6_X8, batch_eq_8) {
3591 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003592 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003593 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003594 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003595 }
3596
3597 TEST(F32_VELU__SSE41_RR2_P6_X8, batch_div_8) {
3598 TEST_REQUIRES_X86_SSE41;
3599 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003600 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003601 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003602 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003603 }
3604 }
3605
3606 TEST(F32_VELU__SSE41_RR2_P6_X8, batch_lt_8) {
3607 TEST_REQUIRES_X86_SSE41;
3608 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003609 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003610 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003611 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003612 }
3613 }
3614
3615 TEST(F32_VELU__SSE41_RR2_P6_X8, batch_gt_8) {
3616 TEST_REQUIRES_X86_SSE41;
3617 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003618 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003619 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003620 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003621 }
3622 }
3623
3624 TEST(F32_VELU__SSE41_RR2_P6_X8, inplace) {
3625 TEST_REQUIRES_X86_SSE41;
3626 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003627 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003628 .batch_size(batch_size)
3629 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003630 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003631 }
3632 }
3633
3634 TEST(F32_VELU__SSE41_RR2_P6_X8, prescale) {
3635 TEST_REQUIRES_X86_SSE41;
3636 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3637 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003638 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003639 .batch_size(batch_size)
3640 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003641 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003642 }
3643 }
3644 }
3645
3646 TEST(F32_VELU__SSE41_RR2_P6_X8, alpha) {
3647 TEST_REQUIRES_X86_SSE41;
3648 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3649 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003650 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003651 .batch_size(batch_size)
3652 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003653 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003654 }
3655 }
3656 }
3657
3658 TEST(F32_VELU__SSE41_RR2_P6_X8, beta) {
3659 TEST_REQUIRES_X86_SSE41;
3660 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3661 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003662 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003663 .batch_size(batch_size)
3664 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003665 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x8, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003666 }
3667 }
3668 }
3669#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3670
3671
3672#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3673 TEST(F32_VELU__SSE41_RR2_P6_X12, batch_eq_12) {
3674 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003675 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003676 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003677 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003678 }
3679
3680 TEST(F32_VELU__SSE41_RR2_P6_X12, batch_div_12) {
3681 TEST_REQUIRES_X86_SSE41;
3682 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003683 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003684 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003685 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003686 }
3687 }
3688
3689 TEST(F32_VELU__SSE41_RR2_P6_X12, batch_lt_12) {
3690 TEST_REQUIRES_X86_SSE41;
3691 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003692 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003693 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003694 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003695 }
3696 }
3697
3698 TEST(F32_VELU__SSE41_RR2_P6_X12, batch_gt_12) {
3699 TEST_REQUIRES_X86_SSE41;
3700 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003701 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003702 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003703 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003704 }
3705 }
3706
3707 TEST(F32_VELU__SSE41_RR2_P6_X12, inplace) {
3708 TEST_REQUIRES_X86_SSE41;
3709 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003710 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003711 .batch_size(batch_size)
3712 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003713 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003714 }
3715 }
3716
3717 TEST(F32_VELU__SSE41_RR2_P6_X12, prescale) {
3718 TEST_REQUIRES_X86_SSE41;
3719 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3720 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003721 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003722 .batch_size(batch_size)
3723 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003724 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003725 }
3726 }
3727 }
3728
3729 TEST(F32_VELU__SSE41_RR2_P6_X12, alpha) {
3730 TEST_REQUIRES_X86_SSE41;
3731 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3732 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003733 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003734 .batch_size(batch_size)
3735 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003736 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003737 }
3738 }
3739 }
3740
3741 TEST(F32_VELU__SSE41_RR2_P6_X12, beta) {
3742 TEST_REQUIRES_X86_SSE41;
3743 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3744 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003745 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003746 .batch_size(batch_size)
3747 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003748 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x12, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003749 }
3750 }
3751 }
3752#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3753
3754
3755#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3756 TEST(F32_VELU__SSE41_RR2_P6_X16, batch_eq_16) {
3757 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003758 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003759 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003760 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003761 }
3762
3763 TEST(F32_VELU__SSE41_RR2_P6_X16, batch_div_16) {
3764 TEST_REQUIRES_X86_SSE41;
3765 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003766 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003767 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003768 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003769 }
3770 }
3771
3772 TEST(F32_VELU__SSE41_RR2_P6_X16, batch_lt_16) {
3773 TEST_REQUIRES_X86_SSE41;
3774 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003775 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003776 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003777 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003778 }
3779 }
3780
3781 TEST(F32_VELU__SSE41_RR2_P6_X16, batch_gt_16) {
3782 TEST_REQUIRES_X86_SSE41;
3783 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003784 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003785 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003786 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003787 }
3788 }
3789
3790 TEST(F32_VELU__SSE41_RR2_P6_X16, inplace) {
3791 TEST_REQUIRES_X86_SSE41;
3792 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003793 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003794 .batch_size(batch_size)
3795 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003796 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003797 }
3798 }
3799
3800 TEST(F32_VELU__SSE41_RR2_P6_X16, prescale) {
3801 TEST_REQUIRES_X86_SSE41;
3802 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3803 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003804 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003805 .batch_size(batch_size)
3806 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003807 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003808 }
3809 }
3810 }
3811
3812 TEST(F32_VELU__SSE41_RR2_P6_X16, alpha) {
3813 TEST_REQUIRES_X86_SSE41;
3814 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3815 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003816 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003817 .batch_size(batch_size)
3818 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003819 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003820 }
3821 }
3822 }
3823
3824 TEST(F32_VELU__SSE41_RR2_P6_X16, beta) {
3825 TEST_REQUIRES_X86_SSE41;
3826 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3827 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003828 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003829 .batch_size(batch_size)
3830 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003831 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x16, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003832 }
3833 }
3834 }
3835#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3836
3837
3838#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3839 TEST(F32_VELU__SSE41_RR2_P6_X20, batch_eq_20) {
3840 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003841 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003842 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003843 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003844 }
3845
3846 TEST(F32_VELU__SSE41_RR2_P6_X20, batch_div_20) {
3847 TEST_REQUIRES_X86_SSE41;
3848 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003849 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003850 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003851 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003852 }
3853 }
3854
3855 TEST(F32_VELU__SSE41_RR2_P6_X20, batch_lt_20) {
3856 TEST_REQUIRES_X86_SSE41;
3857 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003858 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003859 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003860 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003861 }
3862 }
3863
3864 TEST(F32_VELU__SSE41_RR2_P6_X20, batch_gt_20) {
3865 TEST_REQUIRES_X86_SSE41;
3866 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003867 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003868 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003869 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003870 }
3871 }
3872
3873 TEST(F32_VELU__SSE41_RR2_P6_X20, inplace) {
3874 TEST_REQUIRES_X86_SSE41;
3875 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003876 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003877 .batch_size(batch_size)
3878 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003879 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003880 }
3881 }
3882
3883 TEST(F32_VELU__SSE41_RR2_P6_X20, prescale) {
3884 TEST_REQUIRES_X86_SSE41;
3885 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3886 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003887 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003888 .batch_size(batch_size)
3889 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003890 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003891 }
3892 }
3893 }
3894
3895 TEST(F32_VELU__SSE41_RR2_P6_X20, alpha) {
3896 TEST_REQUIRES_X86_SSE41;
3897 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3898 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003899 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003900 .batch_size(batch_size)
3901 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003902 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003903 }
3904 }
3905 }
3906
3907 TEST(F32_VELU__SSE41_RR2_P6_X20, beta) {
3908 TEST_REQUIRES_X86_SSE41;
3909 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3910 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003911 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003912 .batch_size(batch_size)
3913 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003914 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x20, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003915 }
3916 }
3917 }
3918#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3919
3920
3921#if XNN_ARCH_X86 || XNN_ARCH_X86_64
3922 TEST(F32_VELU__SSE41_RR2_P6_X24, batch_eq_24) {
3923 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003924 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003925 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003926 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003927 }
3928
3929 TEST(F32_VELU__SSE41_RR2_P6_X24, batch_div_24) {
3930 TEST_REQUIRES_X86_SSE41;
3931 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003932 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003933 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003934 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003935 }
3936 }
3937
3938 TEST(F32_VELU__SSE41_RR2_P6_X24, batch_lt_24) {
3939 TEST_REQUIRES_X86_SSE41;
3940 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003941 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003942 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003943 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003944 }
3945 }
3946
3947 TEST(F32_VELU__SSE41_RR2_P6_X24, batch_gt_24) {
3948 TEST_REQUIRES_X86_SSE41;
3949 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003950 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003951 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003952 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003953 }
3954 }
3955
3956 TEST(F32_VELU__SSE41_RR2_P6_X24, inplace) {
3957 TEST_REQUIRES_X86_SSE41;
3958 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003959 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003960 .batch_size(batch_size)
3961 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003962 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003963 }
3964 }
3965
3966 TEST(F32_VELU__SSE41_RR2_P6_X24, prescale) {
3967 TEST_REQUIRES_X86_SSE41;
3968 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
3969 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003970 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003971 .batch_size(batch_size)
3972 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003973 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003974 }
3975 }
3976 }
3977
3978 TEST(F32_VELU__SSE41_RR2_P6_X24, alpha) {
3979 TEST_REQUIRES_X86_SSE41;
3980 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
3981 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003982 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003983 .batch_size(batch_size)
3984 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003985 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003986 }
3987 }
3988 }
3989
3990 TEST(F32_VELU__SSE41_RR2_P6_X24, beta) {
3991 TEST_REQUIRES_X86_SSE41;
3992 for (float beta : std::vector<float>({0.3f, 3.0f})) {
3993 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07003994 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003995 .batch_size(batch_size)
3996 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08003997 .Test(xnn_f32_velu_ukernel__sse41_rr2_p6_x24, xnn_init_f32_elu_sse2_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08003998 }
3999 }
4000 }
4001#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4002
4003
4004#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4005 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, batch_eq_8) {
4006 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004007 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004008 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004009 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004010 }
4011
4012 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, batch_div_8) {
4013 TEST_REQUIRES_X86_AVX;
4014 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004015 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004016 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004017 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004018 }
4019 }
4020
4021 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, batch_lt_8) {
4022 TEST_REQUIRES_X86_AVX;
4023 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004024 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004025 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004026 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004027 }
4028 }
4029
4030 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, batch_gt_8) {
4031 TEST_REQUIRES_X86_AVX;
4032 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004033 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004034 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004035 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004036 }
4037 }
4038
4039 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, inplace) {
4040 TEST_REQUIRES_X86_AVX;
4041 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004042 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004043 .batch_size(batch_size)
4044 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004045 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004046 }
4047 }
4048
4049 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, prescale) {
4050 TEST_REQUIRES_X86_AVX;
4051 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4052 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004053 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004054 .batch_size(batch_size)
4055 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004056 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004057 }
4058 }
4059 }
4060
4061 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, alpha) {
4062 TEST_REQUIRES_X86_AVX;
4063 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4064 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004065 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004066 .batch_size(batch_size)
4067 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004068 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004069 }
4070 }
4071 }
4072
4073 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, beta) {
4074 TEST_REQUIRES_X86_AVX;
4075 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4076 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004077 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004078 .batch_size(batch_size)
4079 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004080 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004081 }
4082 }
4083 }
4084#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4085
4086
4087#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4088 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, batch_eq_16) {
4089 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004090 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004091 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004092 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004093 }
4094
4095 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, batch_div_16) {
4096 TEST_REQUIRES_X86_AVX;
4097 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004098 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004099 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004100 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004101 }
4102 }
4103
4104 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, batch_lt_16) {
4105 TEST_REQUIRES_X86_AVX;
4106 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004107 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004108 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004109 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004110 }
4111 }
4112
4113 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, batch_gt_16) {
4114 TEST_REQUIRES_X86_AVX;
4115 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004116 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004117 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004118 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004119 }
4120 }
4121
4122 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, inplace) {
4123 TEST_REQUIRES_X86_AVX;
4124 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004125 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004126 .batch_size(batch_size)
4127 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004128 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004129 }
4130 }
4131
4132 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, prescale) {
4133 TEST_REQUIRES_X86_AVX;
4134 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4135 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004136 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004137 .batch_size(batch_size)
4138 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004139 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004140 }
4141 }
4142 }
4143
4144 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, alpha) {
4145 TEST_REQUIRES_X86_AVX;
4146 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4147 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004148 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004149 .batch_size(batch_size)
4150 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004151 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004152 }
4153 }
4154 }
4155
4156 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, beta) {
4157 TEST_REQUIRES_X86_AVX;
4158 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4159 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004160 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004161 .batch_size(batch_size)
4162 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004163 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004164 }
4165 }
4166 }
4167#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4168
4169
4170#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4171 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, batch_eq_24) {
4172 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004173 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004174 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004175 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004176 }
4177
4178 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, batch_div_24) {
4179 TEST_REQUIRES_X86_AVX;
4180 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004181 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004182 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004183 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004184 }
4185 }
4186
4187 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, batch_lt_24) {
4188 TEST_REQUIRES_X86_AVX;
4189 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004190 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004191 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004192 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004193 }
4194 }
4195
4196 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, batch_gt_24) {
4197 TEST_REQUIRES_X86_AVX;
4198 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004199 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004200 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004201 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004202 }
4203 }
4204
4205 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, inplace) {
4206 TEST_REQUIRES_X86_AVX;
4207 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004208 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004209 .batch_size(batch_size)
4210 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004211 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004212 }
4213 }
4214
4215 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, prescale) {
4216 TEST_REQUIRES_X86_AVX;
4217 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4218 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004219 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004220 .batch_size(batch_size)
4221 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004222 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004223 }
4224 }
4225 }
4226
4227 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, alpha) {
4228 TEST_REQUIRES_X86_AVX;
4229 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4230 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004231 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004232 .batch_size(batch_size)
4233 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004234 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004235 }
4236 }
4237 }
4238
4239 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, beta) {
4240 TEST_REQUIRES_X86_AVX;
4241 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4242 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004243 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004244 .batch_size(batch_size)
4245 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004246 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004247 }
4248 }
4249 }
4250#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4251
4252
4253#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4254 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, batch_eq_32) {
4255 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004256 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004257 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004258 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004259 }
4260
4261 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, batch_div_32) {
4262 TEST_REQUIRES_X86_AVX;
4263 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004264 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004265 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004266 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004267 }
4268 }
4269
4270 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, batch_lt_32) {
4271 TEST_REQUIRES_X86_AVX;
4272 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004273 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004274 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004275 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004276 }
4277 }
4278
4279 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, batch_gt_32) {
4280 TEST_REQUIRES_X86_AVX;
4281 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004282 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004283 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004284 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004285 }
4286 }
4287
4288 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, inplace) {
4289 TEST_REQUIRES_X86_AVX;
4290 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004291 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004292 .batch_size(batch_size)
4293 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004294 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004295 }
4296 }
4297
4298 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, prescale) {
4299 TEST_REQUIRES_X86_AVX;
4300 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4301 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004302 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004303 .batch_size(batch_size)
4304 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004305 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004306 }
4307 }
4308 }
4309
4310 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, alpha) {
4311 TEST_REQUIRES_X86_AVX;
4312 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4313 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004314 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004315 .batch_size(batch_size)
4316 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004317 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004318 }
4319 }
4320 }
4321
4322 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, beta) {
4323 TEST_REQUIRES_X86_AVX;
4324 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4325 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004326 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004327 .batch_size(batch_size)
4328 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004329 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004330 }
4331 }
4332 }
4333#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4334
4335
4336#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4337 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, batch_eq_40) {
4338 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004339 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004340 .batch_size(40)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004341 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004342 }
4343
4344 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, batch_div_40) {
4345 TEST_REQUIRES_X86_AVX;
4346 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004347 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004348 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004349 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004350 }
4351 }
4352
4353 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, batch_lt_40) {
4354 TEST_REQUIRES_X86_AVX;
4355 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004356 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004357 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004358 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004359 }
4360 }
4361
4362 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, batch_gt_40) {
4363 TEST_REQUIRES_X86_AVX;
4364 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004365 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004366 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004367 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004368 }
4369 }
4370
4371 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, inplace) {
4372 TEST_REQUIRES_X86_AVX;
4373 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004374 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004375 .batch_size(batch_size)
4376 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004377 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004378 }
4379 }
4380
4381 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, prescale) {
4382 TEST_REQUIRES_X86_AVX;
4383 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4384 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004385 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004386 .batch_size(batch_size)
4387 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004388 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004389 }
4390 }
4391 }
4392
4393 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, alpha) {
4394 TEST_REQUIRES_X86_AVX;
4395 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4396 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004397 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004398 .batch_size(batch_size)
4399 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004400 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004401 }
4402 }
4403 }
4404
4405 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, beta) {
4406 TEST_REQUIRES_X86_AVX;
4407 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4408 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004409 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004410 .batch_size(batch_size)
4411 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004412 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004413 }
4414 }
4415 }
4416#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4417
4418
4419#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4420 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, batch_eq_48) {
4421 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004422 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004423 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004424 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004425 }
4426
4427 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, batch_div_48) {
4428 TEST_REQUIRES_X86_AVX;
4429 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004430 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004431 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004432 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004433 }
4434 }
4435
4436 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, batch_lt_48) {
4437 TEST_REQUIRES_X86_AVX;
4438 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004439 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004440 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004441 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004442 }
4443 }
4444
4445 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, batch_gt_48) {
4446 TEST_REQUIRES_X86_AVX;
4447 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004448 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004449 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004450 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004451 }
4452 }
4453
4454 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, inplace) {
4455 TEST_REQUIRES_X86_AVX;
4456 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004457 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004458 .batch_size(batch_size)
4459 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004460 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004461 }
4462 }
4463
4464 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, prescale) {
4465 TEST_REQUIRES_X86_AVX;
4466 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4467 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004468 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004469 .batch_size(batch_size)
4470 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004471 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004472 }
4473 }
4474 }
4475
4476 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, alpha) {
4477 TEST_REQUIRES_X86_AVX;
4478 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4479 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004480 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004481 .batch_size(batch_size)
4482 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004483 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004484 }
4485 }
4486 }
4487
4488 TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, beta) {
4489 TEST_REQUIRES_X86_AVX;
4490 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4491 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004492 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004493 .batch_size(batch_size)
4494 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004495 .Test(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48, xnn_init_f32_elu_avx_rr2_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004496 }
4497 }
4498 }
4499#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4500
4501
4502#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4503 TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, batch_eq_8) {
4504 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004505 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004506 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004507 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004508 }
4509
4510 TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, batch_div_8) {
4511 TEST_REQUIRES_X86_AVX;
4512 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004513 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004514 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004515 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004516 }
4517 }
4518
4519 TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, batch_lt_8) {
4520 TEST_REQUIRES_X86_AVX;
4521 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004522 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004523 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004524 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004525 }
4526 }
4527
4528 TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, batch_gt_8) {
4529 TEST_REQUIRES_X86_AVX;
4530 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004531 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004532 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004533 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004534 }
4535 }
4536
4537 TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, inplace) {
4538 TEST_REQUIRES_X86_AVX;
4539 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004540 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004541 .batch_size(batch_size)
4542 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004543 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004544 }
4545 }
4546
4547 TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, prescale) {
4548 TEST_REQUIRES_X86_AVX;
4549 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4550 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004551 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004552 .batch_size(batch_size)
4553 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004554 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004555 }
4556 }
4557 }
4558
4559 TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, alpha) {
4560 TEST_REQUIRES_X86_AVX;
4561 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4562 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004563 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004564 .batch_size(batch_size)
4565 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004566 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004567 }
4568 }
4569 }
4570
4571 TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, beta) {
4572 TEST_REQUIRES_X86_AVX;
4573 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4574 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004575 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004576 .batch_size(batch_size)
4577 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004578 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004579 }
4580 }
4581 }
4582#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4583
4584
4585#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4586 TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, batch_eq_16) {
4587 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004588 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004589 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004590 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004591 }
4592
4593 TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, batch_div_16) {
4594 TEST_REQUIRES_X86_AVX;
4595 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004596 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004597 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004598 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004599 }
4600 }
4601
4602 TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, batch_lt_16) {
4603 TEST_REQUIRES_X86_AVX;
4604 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004605 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004606 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004607 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004608 }
4609 }
4610
4611 TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, batch_gt_16) {
4612 TEST_REQUIRES_X86_AVX;
4613 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004614 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004615 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004616 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004617 }
4618 }
4619
4620 TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, inplace) {
4621 TEST_REQUIRES_X86_AVX;
4622 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004623 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004624 .batch_size(batch_size)
4625 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004626 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004627 }
4628 }
4629
4630 TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, prescale) {
4631 TEST_REQUIRES_X86_AVX;
4632 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4633 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004634 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004635 .batch_size(batch_size)
4636 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004637 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004638 }
4639 }
4640 }
4641
4642 TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, alpha) {
4643 TEST_REQUIRES_X86_AVX;
4644 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4645 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004646 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004647 .batch_size(batch_size)
4648 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004649 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004650 }
4651 }
4652 }
4653
4654 TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, beta) {
4655 TEST_REQUIRES_X86_AVX;
4656 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4657 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004658 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004659 .batch_size(batch_size)
4660 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004661 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004662 }
4663 }
4664 }
4665#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4666
4667
4668#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4669 TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, batch_eq_24) {
4670 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004671 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004672 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004673 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004674 }
4675
4676 TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, batch_div_24) {
4677 TEST_REQUIRES_X86_AVX;
4678 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004679 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004680 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004681 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004682 }
4683 }
4684
4685 TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, batch_lt_24) {
4686 TEST_REQUIRES_X86_AVX;
4687 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004688 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004689 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004690 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004691 }
4692 }
4693
4694 TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, batch_gt_24) {
4695 TEST_REQUIRES_X86_AVX;
4696 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004697 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004698 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004699 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004700 }
4701 }
4702
4703 TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, inplace) {
4704 TEST_REQUIRES_X86_AVX;
4705 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004706 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004707 .batch_size(batch_size)
4708 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004709 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004710 }
4711 }
4712
4713 TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, prescale) {
4714 TEST_REQUIRES_X86_AVX;
4715 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4716 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004717 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004718 .batch_size(batch_size)
4719 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004720 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004721 }
4722 }
4723 }
4724
4725 TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, alpha) {
4726 TEST_REQUIRES_X86_AVX;
4727 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4728 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004729 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004730 .batch_size(batch_size)
4731 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004732 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004733 }
4734 }
4735 }
4736
4737 TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, beta) {
4738 TEST_REQUIRES_X86_AVX;
4739 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4740 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004741 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004742 .batch_size(batch_size)
4743 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004744 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004745 }
4746 }
4747 }
4748#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4749
4750
4751#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4752 TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, batch_eq_32) {
4753 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004754 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004755 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004756 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004757 }
4758
4759 TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, batch_div_32) {
4760 TEST_REQUIRES_X86_AVX;
4761 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004762 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004763 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004764 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004765 }
4766 }
4767
4768 TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, batch_lt_32) {
4769 TEST_REQUIRES_X86_AVX;
4770 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004771 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004772 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004773 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004774 }
4775 }
4776
4777 TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, batch_gt_32) {
4778 TEST_REQUIRES_X86_AVX;
4779 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004780 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004781 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004782 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004783 }
4784 }
4785
4786 TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, inplace) {
4787 TEST_REQUIRES_X86_AVX;
4788 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004789 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004790 .batch_size(batch_size)
4791 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004792 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004793 }
4794 }
4795
4796 TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, prescale) {
4797 TEST_REQUIRES_X86_AVX;
4798 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4799 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004800 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004801 .batch_size(batch_size)
4802 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004803 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004804 }
4805 }
4806 }
4807
4808 TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, alpha) {
4809 TEST_REQUIRES_X86_AVX;
4810 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4811 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004812 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004813 .batch_size(batch_size)
4814 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004815 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004816 }
4817 }
4818 }
4819
4820 TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, beta) {
4821 TEST_REQUIRES_X86_AVX;
4822 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4823 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004824 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004825 .batch_size(batch_size)
4826 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004827 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004828 }
4829 }
4830 }
4831#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4832
4833
4834#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4835 TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, batch_eq_40) {
4836 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004837 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004838 .batch_size(40)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004839 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004840 }
4841
4842 TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, batch_div_40) {
4843 TEST_REQUIRES_X86_AVX;
4844 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004845 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004846 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004847 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004848 }
4849 }
4850
4851 TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, batch_lt_40) {
4852 TEST_REQUIRES_X86_AVX;
4853 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004854 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004855 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004856 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004857 }
4858 }
4859
4860 TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, batch_gt_40) {
4861 TEST_REQUIRES_X86_AVX;
4862 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004863 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004864 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004865 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004866 }
4867 }
4868
4869 TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, inplace) {
4870 TEST_REQUIRES_X86_AVX;
4871 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004872 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004873 .batch_size(batch_size)
4874 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004875 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004876 }
4877 }
4878
4879 TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, prescale) {
4880 TEST_REQUIRES_X86_AVX;
4881 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4882 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004883 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004884 .batch_size(batch_size)
4885 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004886 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004887 }
4888 }
4889 }
4890
4891 TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, alpha) {
4892 TEST_REQUIRES_X86_AVX;
4893 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4894 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004895 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004896 .batch_size(batch_size)
4897 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004898 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004899 }
4900 }
4901 }
4902
4903 TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, beta) {
4904 TEST_REQUIRES_X86_AVX;
4905 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4906 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004907 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004908 .batch_size(batch_size)
4909 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004910 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004911 }
4912 }
4913 }
4914#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4915
4916
4917#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4918 TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, batch_eq_48) {
4919 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004920 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004921 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004922 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004923 }
4924
4925 TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, batch_div_48) {
4926 TEST_REQUIRES_X86_AVX;
4927 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004928 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004929 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004930 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004931 }
4932 }
4933
4934 TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, batch_lt_48) {
4935 TEST_REQUIRES_X86_AVX;
4936 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004937 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004938 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004939 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004940 }
4941 }
4942
4943 TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, batch_gt_48) {
4944 TEST_REQUIRES_X86_AVX;
4945 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004946 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004947 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004948 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004949 }
4950 }
4951
4952 TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, inplace) {
4953 TEST_REQUIRES_X86_AVX;
4954 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004955 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004956 .batch_size(batch_size)
4957 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004958 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004959 }
4960 }
4961
4962 TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, prescale) {
4963 TEST_REQUIRES_X86_AVX;
4964 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
4965 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004966 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004967 .batch_size(batch_size)
4968 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004969 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004970 }
4971 }
4972 }
4973
4974 TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, alpha) {
4975 TEST_REQUIRES_X86_AVX;
4976 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
4977 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004978 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004979 .batch_size(batch_size)
4980 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004981 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004982 }
4983 }
4984 }
4985
4986 TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, beta) {
4987 TEST_REQUIRES_X86_AVX;
4988 for (float beta : std::vector<float>({0.3f, 3.0f})) {
4989 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07004990 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004991 .batch_size(batch_size)
4992 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08004993 .Test(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48, xnn_init_f32_elu_avx_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08004994 }
4995 }
4996 }
4997#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4998
4999
5000#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5001 TEST(F32_VELU__AVX_RR2_P6_X8, batch_eq_8) {
5002 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005003 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005004 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005005 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x8, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005006 }
5007
5008 TEST(F32_VELU__AVX_RR2_P6_X8, batch_div_8) {
5009 TEST_REQUIRES_X86_AVX;
5010 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005011 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005012 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005013 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x8, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005014 }
5015 }
5016
5017 TEST(F32_VELU__AVX_RR2_P6_X8, batch_lt_8) {
5018 TEST_REQUIRES_X86_AVX;
5019 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005020 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005021 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005022 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x8, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005023 }
5024 }
5025
5026 TEST(F32_VELU__AVX_RR2_P6_X8, batch_gt_8) {
5027 TEST_REQUIRES_X86_AVX;
5028 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005029 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005030 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005031 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x8, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005032 }
5033 }
5034
5035 TEST(F32_VELU__AVX_RR2_P6_X8, inplace) {
5036 TEST_REQUIRES_X86_AVX;
5037 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005038 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005039 .batch_size(batch_size)
5040 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005041 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x8, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005042 }
5043 }
5044
5045 TEST(F32_VELU__AVX_RR2_P6_X8, prescale) {
5046 TEST_REQUIRES_X86_AVX;
5047 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5048 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005049 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005050 .batch_size(batch_size)
5051 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005052 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x8, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005053 }
5054 }
5055 }
5056
5057 TEST(F32_VELU__AVX_RR2_P6_X8, alpha) {
5058 TEST_REQUIRES_X86_AVX;
5059 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5060 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005061 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005062 .batch_size(batch_size)
5063 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005064 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x8, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005065 }
5066 }
5067 }
5068
5069 TEST(F32_VELU__AVX_RR2_P6_X8, beta) {
5070 TEST_REQUIRES_X86_AVX;
5071 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5072 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005073 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005074 .batch_size(batch_size)
5075 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005076 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x8, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005077 }
5078 }
5079 }
5080#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5081
5082
5083#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5084 TEST(F32_VELU__AVX_RR2_P6_X16, batch_eq_16) {
5085 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005086 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005087 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005088 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x16, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005089 }
5090
5091 TEST(F32_VELU__AVX_RR2_P6_X16, batch_div_16) {
5092 TEST_REQUIRES_X86_AVX;
5093 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005094 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005095 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005096 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x16, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005097 }
5098 }
5099
5100 TEST(F32_VELU__AVX_RR2_P6_X16, batch_lt_16) {
5101 TEST_REQUIRES_X86_AVX;
5102 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005103 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005104 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005105 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x16, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005106 }
5107 }
5108
5109 TEST(F32_VELU__AVX_RR2_P6_X16, batch_gt_16) {
5110 TEST_REQUIRES_X86_AVX;
5111 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005112 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005113 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005114 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x16, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005115 }
5116 }
5117
5118 TEST(F32_VELU__AVX_RR2_P6_X16, inplace) {
5119 TEST_REQUIRES_X86_AVX;
5120 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005121 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005122 .batch_size(batch_size)
5123 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005124 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x16, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005125 }
5126 }
5127
5128 TEST(F32_VELU__AVX_RR2_P6_X16, prescale) {
5129 TEST_REQUIRES_X86_AVX;
5130 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5131 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005132 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005133 .batch_size(batch_size)
5134 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005135 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x16, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005136 }
5137 }
5138 }
5139
5140 TEST(F32_VELU__AVX_RR2_P6_X16, alpha) {
5141 TEST_REQUIRES_X86_AVX;
5142 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5143 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005144 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005145 .batch_size(batch_size)
5146 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005147 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x16, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005148 }
5149 }
5150 }
5151
5152 TEST(F32_VELU__AVX_RR2_P6_X16, beta) {
5153 TEST_REQUIRES_X86_AVX;
5154 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5155 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005156 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005157 .batch_size(batch_size)
5158 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005159 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x16, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005160 }
5161 }
5162 }
5163#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5164
5165
5166#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5167 TEST(F32_VELU__AVX_RR2_P6_X24, batch_eq_24) {
5168 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005169 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005170 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005171 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x24, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005172 }
5173
5174 TEST(F32_VELU__AVX_RR2_P6_X24, batch_div_24) {
5175 TEST_REQUIRES_X86_AVX;
5176 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005177 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005178 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005179 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x24, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005180 }
5181 }
5182
5183 TEST(F32_VELU__AVX_RR2_P6_X24, batch_lt_24) {
5184 TEST_REQUIRES_X86_AVX;
5185 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005186 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005187 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005188 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x24, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005189 }
5190 }
5191
5192 TEST(F32_VELU__AVX_RR2_P6_X24, batch_gt_24) {
5193 TEST_REQUIRES_X86_AVX;
5194 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005195 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005196 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005197 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x24, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005198 }
5199 }
5200
5201 TEST(F32_VELU__AVX_RR2_P6_X24, inplace) {
5202 TEST_REQUIRES_X86_AVX;
5203 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005204 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005205 .batch_size(batch_size)
5206 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005207 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x24, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005208 }
5209 }
5210
5211 TEST(F32_VELU__AVX_RR2_P6_X24, prescale) {
5212 TEST_REQUIRES_X86_AVX;
5213 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5214 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005215 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005216 .batch_size(batch_size)
5217 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005218 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x24, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005219 }
5220 }
5221 }
5222
5223 TEST(F32_VELU__AVX_RR2_P6_X24, alpha) {
5224 TEST_REQUIRES_X86_AVX;
5225 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5226 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005227 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005228 .batch_size(batch_size)
5229 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005230 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x24, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005231 }
5232 }
5233 }
5234
5235 TEST(F32_VELU__AVX_RR2_P6_X24, beta) {
5236 TEST_REQUIRES_X86_AVX;
5237 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5238 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005239 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005240 .batch_size(batch_size)
5241 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005242 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x24, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005243 }
5244 }
5245 }
5246#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5247
5248
5249#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5250 TEST(F32_VELU__AVX_RR2_P6_X32, batch_eq_32) {
5251 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005252 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005253 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005254 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x32, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005255 }
5256
5257 TEST(F32_VELU__AVX_RR2_P6_X32, batch_div_32) {
5258 TEST_REQUIRES_X86_AVX;
5259 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005260 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005261 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005262 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x32, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005263 }
5264 }
5265
5266 TEST(F32_VELU__AVX_RR2_P6_X32, batch_lt_32) {
5267 TEST_REQUIRES_X86_AVX;
5268 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005269 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005270 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005271 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x32, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005272 }
5273 }
5274
5275 TEST(F32_VELU__AVX_RR2_P6_X32, batch_gt_32) {
5276 TEST_REQUIRES_X86_AVX;
5277 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005278 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005279 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005280 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x32, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005281 }
5282 }
5283
5284 TEST(F32_VELU__AVX_RR2_P6_X32, inplace) {
5285 TEST_REQUIRES_X86_AVX;
5286 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005287 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005288 .batch_size(batch_size)
5289 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005290 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x32, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005291 }
5292 }
5293
5294 TEST(F32_VELU__AVX_RR2_P6_X32, prescale) {
5295 TEST_REQUIRES_X86_AVX;
5296 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5297 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005298 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005299 .batch_size(batch_size)
5300 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005301 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x32, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005302 }
5303 }
5304 }
5305
5306 TEST(F32_VELU__AVX_RR2_P6_X32, alpha) {
5307 TEST_REQUIRES_X86_AVX;
5308 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5309 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005310 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005311 .batch_size(batch_size)
5312 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005313 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x32, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005314 }
5315 }
5316 }
5317
5318 TEST(F32_VELU__AVX_RR2_P6_X32, beta) {
5319 TEST_REQUIRES_X86_AVX;
5320 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5321 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005322 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005323 .batch_size(batch_size)
5324 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005325 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x32, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005326 }
5327 }
5328 }
5329#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5330
5331
5332#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5333 TEST(F32_VELU__AVX_RR2_P6_X40, batch_eq_40) {
5334 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005335 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005336 .batch_size(40)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005337 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x40, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005338 }
5339
5340 TEST(F32_VELU__AVX_RR2_P6_X40, batch_div_40) {
5341 TEST_REQUIRES_X86_AVX;
5342 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005343 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005344 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005345 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x40, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005346 }
5347 }
5348
5349 TEST(F32_VELU__AVX_RR2_P6_X40, batch_lt_40) {
5350 TEST_REQUIRES_X86_AVX;
5351 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005352 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005353 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005354 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x40, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005355 }
5356 }
5357
5358 TEST(F32_VELU__AVX_RR2_P6_X40, batch_gt_40) {
5359 TEST_REQUIRES_X86_AVX;
5360 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005361 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005362 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005363 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x40, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005364 }
5365 }
5366
5367 TEST(F32_VELU__AVX_RR2_P6_X40, inplace) {
5368 TEST_REQUIRES_X86_AVX;
5369 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005370 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005371 .batch_size(batch_size)
5372 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005373 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x40, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005374 }
5375 }
5376
5377 TEST(F32_VELU__AVX_RR2_P6_X40, prescale) {
5378 TEST_REQUIRES_X86_AVX;
5379 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5380 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005381 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005382 .batch_size(batch_size)
5383 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005384 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x40, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005385 }
5386 }
5387 }
5388
5389 TEST(F32_VELU__AVX_RR2_P6_X40, alpha) {
5390 TEST_REQUIRES_X86_AVX;
5391 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5392 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005393 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005394 .batch_size(batch_size)
5395 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005396 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x40, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005397 }
5398 }
5399 }
5400
5401 TEST(F32_VELU__AVX_RR2_P6_X40, beta) {
5402 TEST_REQUIRES_X86_AVX;
5403 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5404 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005405 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005406 .batch_size(batch_size)
5407 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005408 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x40, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005409 }
5410 }
5411 }
5412#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5413
5414
5415#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5416 TEST(F32_VELU__AVX_RR2_P6_X48, batch_eq_48) {
5417 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005418 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005419 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005420 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x48, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005421 }
5422
5423 TEST(F32_VELU__AVX_RR2_P6_X48, batch_div_48) {
5424 TEST_REQUIRES_X86_AVX;
5425 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005426 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005427 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005428 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x48, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005429 }
5430 }
5431
5432 TEST(F32_VELU__AVX_RR2_P6_X48, batch_lt_48) {
5433 TEST_REQUIRES_X86_AVX;
5434 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005435 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005436 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005437 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x48, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005438 }
5439 }
5440
5441 TEST(F32_VELU__AVX_RR2_P6_X48, batch_gt_48) {
5442 TEST_REQUIRES_X86_AVX;
5443 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005444 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005445 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005446 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x48, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005447 }
5448 }
5449
5450 TEST(F32_VELU__AVX_RR2_P6_X48, inplace) {
5451 TEST_REQUIRES_X86_AVX;
5452 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005453 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005454 .batch_size(batch_size)
5455 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005456 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x48, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005457 }
5458 }
5459
5460 TEST(F32_VELU__AVX_RR2_P6_X48, prescale) {
5461 TEST_REQUIRES_X86_AVX;
5462 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5463 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005464 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005465 .batch_size(batch_size)
5466 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005467 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x48, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005468 }
5469 }
5470 }
5471
5472 TEST(F32_VELU__AVX_RR2_P6_X48, alpha) {
5473 TEST_REQUIRES_X86_AVX;
5474 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5475 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005476 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005477 .batch_size(batch_size)
5478 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005479 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x48, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005480 }
5481 }
5482 }
5483
5484 TEST(F32_VELU__AVX_RR2_P6_X48, beta) {
5485 TEST_REQUIRES_X86_AVX;
5486 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5487 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005488 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005489 .batch_size(batch_size)
5490 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005491 .Test(xnn_f32_velu_ukernel__avx_rr2_p6_x48, xnn_init_f32_elu_avx_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005492 }
5493 }
5494 }
5495#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5496
5497
5498#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5499 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, batch_eq_8) {
5500 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005501 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005502 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005503 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005504 }
5505
5506 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, batch_div_8) {
5507 TEST_REQUIRES_X86_AVX2;
5508 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005509 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005510 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005511 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005512 }
5513 }
5514
5515 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, batch_lt_8) {
5516 TEST_REQUIRES_X86_AVX2;
5517 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005518 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005519 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005520 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005521 }
5522 }
5523
5524 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, batch_gt_8) {
5525 TEST_REQUIRES_X86_AVX2;
5526 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005527 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005528 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005529 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005530 }
5531 }
5532
5533 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, inplace) {
5534 TEST_REQUIRES_X86_AVX2;
5535 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005536 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005537 .batch_size(batch_size)
5538 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005539 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005540 }
5541 }
5542
5543 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, prescale) {
5544 TEST_REQUIRES_X86_AVX2;
5545 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5546 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005547 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005548 .batch_size(batch_size)
5549 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005550 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005551 }
5552 }
5553 }
5554
5555 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, alpha) {
5556 TEST_REQUIRES_X86_AVX2;
5557 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5558 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005559 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005560 .batch_size(batch_size)
5561 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005562 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005563 }
5564 }
5565 }
5566
5567 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, beta) {
5568 TEST_REQUIRES_X86_AVX2;
5569 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5570 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005571 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005572 .batch_size(batch_size)
5573 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005574 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005575 }
5576 }
5577 }
5578#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5579
5580
5581#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5582 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, batch_eq_16) {
5583 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005584 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005585 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005586 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005587 }
5588
5589 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, batch_div_16) {
5590 TEST_REQUIRES_X86_AVX2;
5591 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005592 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005593 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005594 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005595 }
5596 }
5597
5598 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, batch_lt_16) {
5599 TEST_REQUIRES_X86_AVX2;
5600 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005601 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005602 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005603 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005604 }
5605 }
5606
5607 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, batch_gt_16) {
5608 TEST_REQUIRES_X86_AVX2;
5609 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005610 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005611 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005612 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005613 }
5614 }
5615
5616 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, inplace) {
5617 TEST_REQUIRES_X86_AVX2;
5618 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005619 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005620 .batch_size(batch_size)
5621 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005622 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005623 }
5624 }
5625
5626 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, prescale) {
5627 TEST_REQUIRES_X86_AVX2;
5628 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5629 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005630 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005631 .batch_size(batch_size)
5632 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005633 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005634 }
5635 }
5636 }
5637
5638 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, alpha) {
5639 TEST_REQUIRES_X86_AVX2;
5640 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5641 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005642 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005643 .batch_size(batch_size)
5644 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005645 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005646 }
5647 }
5648 }
5649
5650 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, beta) {
5651 TEST_REQUIRES_X86_AVX2;
5652 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5653 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005654 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005655 .batch_size(batch_size)
5656 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005657 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005658 }
5659 }
5660 }
5661#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5662
5663
5664#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5665 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, batch_eq_24) {
5666 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005667 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005668 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005669 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005670 }
5671
5672 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, batch_div_24) {
5673 TEST_REQUIRES_X86_AVX2;
5674 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005675 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005676 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005677 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005678 }
5679 }
5680
5681 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, batch_lt_24) {
5682 TEST_REQUIRES_X86_AVX2;
5683 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005684 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005685 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005686 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005687 }
5688 }
5689
5690 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, batch_gt_24) {
5691 TEST_REQUIRES_X86_AVX2;
5692 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005693 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005694 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005695 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005696 }
5697 }
5698
5699 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, inplace) {
5700 TEST_REQUIRES_X86_AVX2;
5701 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005702 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005703 .batch_size(batch_size)
5704 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005705 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005706 }
5707 }
5708
5709 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, prescale) {
5710 TEST_REQUIRES_X86_AVX2;
5711 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5712 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005713 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005714 .batch_size(batch_size)
5715 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005716 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005717 }
5718 }
5719 }
5720
5721 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, alpha) {
5722 TEST_REQUIRES_X86_AVX2;
5723 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5724 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005725 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005726 .batch_size(batch_size)
5727 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005728 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005729 }
5730 }
5731 }
5732
5733 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, beta) {
5734 TEST_REQUIRES_X86_AVX2;
5735 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5736 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005737 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005738 .batch_size(batch_size)
5739 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005740 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005741 }
5742 }
5743 }
5744#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5745
5746
5747#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5748 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, batch_eq_32) {
5749 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005750 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005751 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005752 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005753 }
5754
5755 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, batch_div_32) {
5756 TEST_REQUIRES_X86_AVX2;
5757 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005758 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005759 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005760 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005761 }
5762 }
5763
5764 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, batch_lt_32) {
5765 TEST_REQUIRES_X86_AVX2;
5766 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005767 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005768 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005769 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005770 }
5771 }
5772
5773 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, batch_gt_32) {
5774 TEST_REQUIRES_X86_AVX2;
5775 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005776 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005777 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005778 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005779 }
5780 }
5781
5782 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, inplace) {
5783 TEST_REQUIRES_X86_AVX2;
5784 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005785 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005786 .batch_size(batch_size)
5787 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005788 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005789 }
5790 }
5791
5792 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, prescale) {
5793 TEST_REQUIRES_X86_AVX2;
5794 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5795 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005796 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005797 .batch_size(batch_size)
5798 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005799 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005800 }
5801 }
5802 }
5803
5804 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, alpha) {
5805 TEST_REQUIRES_X86_AVX2;
5806 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5807 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005808 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005809 .batch_size(batch_size)
5810 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005811 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005812 }
5813 }
5814 }
5815
5816 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, beta) {
5817 TEST_REQUIRES_X86_AVX2;
5818 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5819 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005820 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005821 .batch_size(batch_size)
5822 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005823 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005824 }
5825 }
5826 }
5827#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5828
5829
5830#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5831 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, batch_eq_40) {
5832 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005833 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005834 .batch_size(40)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005835 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005836 }
5837
5838 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, batch_div_40) {
5839 TEST_REQUIRES_X86_AVX2;
5840 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005841 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005842 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005843 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005844 }
5845 }
5846
5847 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, batch_lt_40) {
5848 TEST_REQUIRES_X86_AVX2;
5849 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005850 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005851 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005852 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005853 }
5854 }
5855
5856 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, batch_gt_40) {
5857 TEST_REQUIRES_X86_AVX2;
5858 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005859 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005860 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005861 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005862 }
5863 }
5864
5865 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, inplace) {
5866 TEST_REQUIRES_X86_AVX2;
5867 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005868 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005869 .batch_size(batch_size)
5870 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005871 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005872 }
5873 }
5874
5875 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, prescale) {
5876 TEST_REQUIRES_X86_AVX2;
5877 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5878 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005879 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005880 .batch_size(batch_size)
5881 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005882 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005883 }
5884 }
5885 }
5886
5887 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, alpha) {
5888 TEST_REQUIRES_X86_AVX2;
5889 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5890 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005891 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005892 .batch_size(batch_size)
5893 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005894 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005895 }
5896 }
5897 }
5898
5899 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, beta) {
5900 TEST_REQUIRES_X86_AVX2;
5901 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5902 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005903 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005904 .batch_size(batch_size)
5905 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005906 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005907 }
5908 }
5909 }
5910#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5911
5912
5913#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5914 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, batch_eq_48) {
5915 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005916 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005917 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005918 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005919 }
5920
5921 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, batch_div_48) {
5922 TEST_REQUIRES_X86_AVX2;
5923 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005924 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005925 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005926 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005927 }
5928 }
5929
5930 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, batch_lt_48) {
5931 TEST_REQUIRES_X86_AVX2;
5932 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005933 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005934 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005935 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005936 }
5937 }
5938
5939 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, batch_gt_48) {
5940 TEST_REQUIRES_X86_AVX2;
5941 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005942 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005943 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005944 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005945 }
5946 }
5947
5948 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, inplace) {
5949 TEST_REQUIRES_X86_AVX2;
5950 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005951 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005952 .batch_size(batch_size)
5953 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005954 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005955 }
5956 }
5957
5958 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, prescale) {
5959 TEST_REQUIRES_X86_AVX2;
5960 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
5961 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005962 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005963 .batch_size(batch_size)
5964 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005965 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005966 }
5967 }
5968 }
5969
5970 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, alpha) {
5971 TEST_REQUIRES_X86_AVX2;
5972 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
5973 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005974 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005975 .batch_size(batch_size)
5976 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005977 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005978 }
5979 }
5980 }
5981
5982 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, beta) {
5983 TEST_REQUIRES_X86_AVX2;
5984 for (float beta : std::vector<float>({0.3f, 3.0f})) {
5985 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005986 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005987 .batch_size(batch_size)
5988 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08005989 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08005990 }
5991 }
5992 }
5993#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5994
5995
5996#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5997 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, batch_eq_56) {
5998 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07005999 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006000 .batch_size(56)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006001 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006002 }
6003
6004 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, batch_div_56) {
6005 TEST_REQUIRES_X86_AVX2;
6006 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006007 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006008 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006009 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006010 }
6011 }
6012
6013 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, batch_lt_56) {
6014 TEST_REQUIRES_X86_AVX2;
6015 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006016 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006017 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006018 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006019 }
6020 }
6021
6022 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, batch_gt_56) {
6023 TEST_REQUIRES_X86_AVX2;
6024 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006025 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006026 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006027 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006028 }
6029 }
6030
6031 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, inplace) {
6032 TEST_REQUIRES_X86_AVX2;
6033 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006034 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006035 .batch_size(batch_size)
6036 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006037 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006038 }
6039 }
6040
6041 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, prescale) {
6042 TEST_REQUIRES_X86_AVX2;
6043 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6044 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006045 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006046 .batch_size(batch_size)
6047 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006048 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006049 }
6050 }
6051 }
6052
6053 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, alpha) {
6054 TEST_REQUIRES_X86_AVX2;
6055 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6056 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006057 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006058 .batch_size(batch_size)
6059 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006060 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006061 }
6062 }
6063 }
6064
6065 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, beta) {
6066 TEST_REQUIRES_X86_AVX2;
6067 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6068 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006069 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006070 .batch_size(batch_size)
6071 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006072 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006073 }
6074 }
6075 }
6076#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6077
6078
6079#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6080 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, batch_eq_64) {
6081 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006082 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006083 .batch_size(64)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006084 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006085 }
6086
6087 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, batch_div_64) {
6088 TEST_REQUIRES_X86_AVX2;
6089 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006090 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006091 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006092 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006093 }
6094 }
6095
6096 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, batch_lt_64) {
6097 TEST_REQUIRES_X86_AVX2;
6098 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006099 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006100 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006101 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006102 }
6103 }
6104
6105 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, batch_gt_64) {
6106 TEST_REQUIRES_X86_AVX2;
6107 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006108 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006109 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006110 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006111 }
6112 }
6113
6114 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, inplace) {
6115 TEST_REQUIRES_X86_AVX2;
6116 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006117 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006118 .batch_size(batch_size)
6119 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006120 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006121 }
6122 }
6123
6124 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, prescale) {
6125 TEST_REQUIRES_X86_AVX2;
6126 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6127 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006128 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006129 .batch_size(batch_size)
6130 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006131 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006132 }
6133 }
6134 }
6135
6136 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, alpha) {
6137 TEST_REQUIRES_X86_AVX2;
6138 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6139 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006140 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006141 .batch_size(batch_size)
6142 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006143 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006144 }
6145 }
6146 }
6147
6148 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, beta) {
6149 TEST_REQUIRES_X86_AVX2;
6150 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6151 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006152 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006153 .batch_size(batch_size)
6154 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006155 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006156 }
6157 }
6158 }
6159#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6160
6161
6162#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6163 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, batch_eq_72) {
6164 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006165 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006166 .batch_size(72)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006167 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006168 }
6169
6170 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, batch_div_72) {
6171 TEST_REQUIRES_X86_AVX2;
6172 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006173 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006174 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006175 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006176 }
6177 }
6178
6179 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, batch_lt_72) {
6180 TEST_REQUIRES_X86_AVX2;
6181 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006182 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006183 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006184 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006185 }
6186 }
6187
6188 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, batch_gt_72) {
6189 TEST_REQUIRES_X86_AVX2;
6190 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006191 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006192 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006193 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006194 }
6195 }
6196
6197 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, inplace) {
6198 TEST_REQUIRES_X86_AVX2;
6199 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006200 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006201 .batch_size(batch_size)
6202 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006203 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006204 }
6205 }
6206
6207 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, prescale) {
6208 TEST_REQUIRES_X86_AVX2;
6209 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6210 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006211 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006212 .batch_size(batch_size)
6213 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006214 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006215 }
6216 }
6217 }
6218
6219 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, alpha) {
6220 TEST_REQUIRES_X86_AVX2;
6221 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6222 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006223 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006224 .batch_size(batch_size)
6225 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006226 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006227 }
6228 }
6229 }
6230
6231 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, beta) {
6232 TEST_REQUIRES_X86_AVX2;
6233 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6234 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006235 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006236 .batch_size(batch_size)
6237 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006238 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006239 }
6240 }
6241 }
6242#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6243
6244
6245#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6246 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, batch_eq_80) {
6247 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006248 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006249 .batch_size(80)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006250 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006251 }
6252
6253 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, batch_div_80) {
6254 TEST_REQUIRES_X86_AVX2;
6255 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006256 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006257 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006258 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006259 }
6260 }
6261
6262 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, batch_lt_80) {
6263 TEST_REQUIRES_X86_AVX2;
6264 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006265 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006266 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006267 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006268 }
6269 }
6270
6271 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, batch_gt_80) {
6272 TEST_REQUIRES_X86_AVX2;
6273 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006274 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006275 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006276 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006277 }
6278 }
6279
6280 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, inplace) {
6281 TEST_REQUIRES_X86_AVX2;
6282 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006283 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006284 .batch_size(batch_size)
6285 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006286 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006287 }
6288 }
6289
6290 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, prescale) {
6291 TEST_REQUIRES_X86_AVX2;
6292 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6293 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006294 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006295 .batch_size(batch_size)
6296 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006297 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006298 }
6299 }
6300 }
6301
6302 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, alpha) {
6303 TEST_REQUIRES_X86_AVX2;
6304 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6305 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006306 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006307 .batch_size(batch_size)
6308 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006309 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006310 }
6311 }
6312 }
6313
6314 TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, beta) {
6315 TEST_REQUIRES_X86_AVX2;
6316 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6317 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006318 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006319 .batch_size(batch_size)
6320 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006321 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut4_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006322 }
6323 }
6324 }
6325#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6326
6327
6328#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6329 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, batch_eq_8) {
6330 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006331 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006332 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006333 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006334 }
6335
6336 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, batch_div_8) {
6337 TEST_REQUIRES_X86_AVX2;
6338 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006339 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006340 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006341 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006342 }
6343 }
6344
6345 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, batch_lt_8) {
6346 TEST_REQUIRES_X86_AVX2;
6347 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006348 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006349 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006350 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006351 }
6352 }
6353
6354 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, batch_gt_8) {
6355 TEST_REQUIRES_X86_AVX2;
6356 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006357 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006358 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006359 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006360 }
6361 }
6362
6363 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, inplace) {
6364 TEST_REQUIRES_X86_AVX2;
6365 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006366 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006367 .batch_size(batch_size)
6368 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006369 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006370 }
6371 }
6372
6373 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, prescale) {
6374 TEST_REQUIRES_X86_AVX2;
6375 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6376 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006377 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006378 .batch_size(batch_size)
6379 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006380 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006381 }
6382 }
6383 }
6384
6385 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, alpha) {
6386 TEST_REQUIRES_X86_AVX2;
6387 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6388 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006389 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006390 .batch_size(batch_size)
6391 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006392 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006393 }
6394 }
6395 }
6396
6397 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, beta) {
6398 TEST_REQUIRES_X86_AVX2;
6399 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6400 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006401 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006402 .batch_size(batch_size)
6403 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006404 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006405 }
6406 }
6407 }
6408#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6409
6410
6411#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6412 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, batch_eq_16) {
6413 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006414 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006415 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006416 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006417 }
6418
6419 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, batch_div_16) {
6420 TEST_REQUIRES_X86_AVX2;
6421 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006422 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006423 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006424 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006425 }
6426 }
6427
6428 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, batch_lt_16) {
6429 TEST_REQUIRES_X86_AVX2;
6430 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006431 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006432 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006433 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006434 }
6435 }
6436
6437 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, batch_gt_16) {
6438 TEST_REQUIRES_X86_AVX2;
6439 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006440 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006441 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006442 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006443 }
6444 }
6445
6446 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, inplace) {
6447 TEST_REQUIRES_X86_AVX2;
6448 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006449 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006450 .batch_size(batch_size)
6451 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006452 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006453 }
6454 }
6455
6456 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, prescale) {
6457 TEST_REQUIRES_X86_AVX2;
6458 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6459 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006460 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006461 .batch_size(batch_size)
6462 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006463 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006464 }
6465 }
6466 }
6467
6468 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, alpha) {
6469 TEST_REQUIRES_X86_AVX2;
6470 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6471 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006472 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006473 .batch_size(batch_size)
6474 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006475 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006476 }
6477 }
6478 }
6479
6480 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, beta) {
6481 TEST_REQUIRES_X86_AVX2;
6482 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6483 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006484 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006485 .batch_size(batch_size)
6486 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006487 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006488 }
6489 }
6490 }
6491#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6492
6493
6494#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6495 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, batch_eq_24) {
6496 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006497 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006498 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006499 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006500 }
6501
6502 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, batch_div_24) {
6503 TEST_REQUIRES_X86_AVX2;
6504 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006505 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006506 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006507 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006508 }
6509 }
6510
6511 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, batch_lt_24) {
6512 TEST_REQUIRES_X86_AVX2;
6513 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006514 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006515 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006516 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006517 }
6518 }
6519
6520 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, batch_gt_24) {
6521 TEST_REQUIRES_X86_AVX2;
6522 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006523 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006524 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006525 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006526 }
6527 }
6528
6529 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, inplace) {
6530 TEST_REQUIRES_X86_AVX2;
6531 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006532 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006533 .batch_size(batch_size)
6534 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006535 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006536 }
6537 }
6538
6539 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, prescale) {
6540 TEST_REQUIRES_X86_AVX2;
6541 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6542 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006543 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006544 .batch_size(batch_size)
6545 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006546 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006547 }
6548 }
6549 }
6550
6551 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, alpha) {
6552 TEST_REQUIRES_X86_AVX2;
6553 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6554 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006555 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006556 .batch_size(batch_size)
6557 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006558 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006559 }
6560 }
6561 }
6562
6563 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, beta) {
6564 TEST_REQUIRES_X86_AVX2;
6565 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6566 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006567 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006568 .batch_size(batch_size)
6569 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006570 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006571 }
6572 }
6573 }
6574#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6575
6576
6577#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6578 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, batch_eq_32) {
6579 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006580 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006581 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006582 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006583 }
6584
6585 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, batch_div_32) {
6586 TEST_REQUIRES_X86_AVX2;
6587 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006588 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006589 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006590 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006591 }
6592 }
6593
6594 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, batch_lt_32) {
6595 TEST_REQUIRES_X86_AVX2;
6596 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006597 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006598 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006599 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006600 }
6601 }
6602
6603 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, batch_gt_32) {
6604 TEST_REQUIRES_X86_AVX2;
6605 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006606 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006607 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006608 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006609 }
6610 }
6611
6612 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, inplace) {
6613 TEST_REQUIRES_X86_AVX2;
6614 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006615 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006616 .batch_size(batch_size)
6617 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006618 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006619 }
6620 }
6621
6622 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, prescale) {
6623 TEST_REQUIRES_X86_AVX2;
6624 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6625 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006626 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006627 .batch_size(batch_size)
6628 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006629 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006630 }
6631 }
6632 }
6633
6634 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, alpha) {
6635 TEST_REQUIRES_X86_AVX2;
6636 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6637 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006638 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006639 .batch_size(batch_size)
6640 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006641 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006642 }
6643 }
6644 }
6645
6646 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, beta) {
6647 TEST_REQUIRES_X86_AVX2;
6648 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6649 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006650 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006651 .batch_size(batch_size)
6652 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006653 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006654 }
6655 }
6656 }
6657#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6658
6659
6660#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6661 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, batch_eq_40) {
6662 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006663 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006664 .batch_size(40)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006665 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006666 }
6667
6668 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, batch_div_40) {
6669 TEST_REQUIRES_X86_AVX2;
6670 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006671 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006672 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006673 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006674 }
6675 }
6676
6677 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, batch_lt_40) {
6678 TEST_REQUIRES_X86_AVX2;
6679 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006680 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006681 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006682 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006683 }
6684 }
6685
6686 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, batch_gt_40) {
6687 TEST_REQUIRES_X86_AVX2;
6688 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006689 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006690 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006691 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006692 }
6693 }
6694
6695 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, inplace) {
6696 TEST_REQUIRES_X86_AVX2;
6697 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006698 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006699 .batch_size(batch_size)
6700 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006701 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006702 }
6703 }
6704
6705 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, prescale) {
6706 TEST_REQUIRES_X86_AVX2;
6707 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6708 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006709 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006710 .batch_size(batch_size)
6711 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006712 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006713 }
6714 }
6715 }
6716
6717 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, alpha) {
6718 TEST_REQUIRES_X86_AVX2;
6719 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6720 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006721 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006722 .batch_size(batch_size)
6723 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006724 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006725 }
6726 }
6727 }
6728
6729 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, beta) {
6730 TEST_REQUIRES_X86_AVX2;
6731 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6732 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006733 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006734 .batch_size(batch_size)
6735 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006736 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006737 }
6738 }
6739 }
6740#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6741
6742
6743#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6744 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, batch_eq_48) {
6745 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006746 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006747 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006748 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006749 }
6750
6751 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, batch_div_48) {
6752 TEST_REQUIRES_X86_AVX2;
6753 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006754 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006755 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006756 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006757 }
6758 }
6759
6760 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, batch_lt_48) {
6761 TEST_REQUIRES_X86_AVX2;
6762 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006763 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006764 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006765 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006766 }
6767 }
6768
6769 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, batch_gt_48) {
6770 TEST_REQUIRES_X86_AVX2;
6771 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006772 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006773 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006774 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006775 }
6776 }
6777
6778 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, inplace) {
6779 TEST_REQUIRES_X86_AVX2;
6780 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006781 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006782 .batch_size(batch_size)
6783 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006784 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006785 }
6786 }
6787
6788 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, prescale) {
6789 TEST_REQUIRES_X86_AVX2;
6790 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6791 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006792 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006793 .batch_size(batch_size)
6794 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006795 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006796 }
6797 }
6798 }
6799
6800 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, alpha) {
6801 TEST_REQUIRES_X86_AVX2;
6802 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6803 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006804 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006805 .batch_size(batch_size)
6806 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006807 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006808 }
6809 }
6810 }
6811
6812 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, beta) {
6813 TEST_REQUIRES_X86_AVX2;
6814 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6815 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006816 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006817 .batch_size(batch_size)
6818 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006819 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006820 }
6821 }
6822 }
6823#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6824
6825
6826#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6827 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, batch_eq_56) {
6828 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006829 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006830 .batch_size(56)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006831 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006832 }
6833
6834 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, batch_div_56) {
6835 TEST_REQUIRES_X86_AVX2;
6836 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006837 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006838 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006839 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006840 }
6841 }
6842
6843 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, batch_lt_56) {
6844 TEST_REQUIRES_X86_AVX2;
6845 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006846 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006847 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006848 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006849 }
6850 }
6851
6852 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, batch_gt_56) {
6853 TEST_REQUIRES_X86_AVX2;
6854 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006855 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006856 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006857 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006858 }
6859 }
6860
6861 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, inplace) {
6862 TEST_REQUIRES_X86_AVX2;
6863 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006864 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006865 .batch_size(batch_size)
6866 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006867 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006868 }
6869 }
6870
6871 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, prescale) {
6872 TEST_REQUIRES_X86_AVX2;
6873 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6874 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006875 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006876 .batch_size(batch_size)
6877 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006878 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006879 }
6880 }
6881 }
6882
6883 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, alpha) {
6884 TEST_REQUIRES_X86_AVX2;
6885 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6886 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006887 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006888 .batch_size(batch_size)
6889 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006890 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006891 }
6892 }
6893 }
6894
6895 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, beta) {
6896 TEST_REQUIRES_X86_AVX2;
6897 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6898 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006899 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006900 .batch_size(batch_size)
6901 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006902 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006903 }
6904 }
6905 }
6906#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6907
6908
6909#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6910 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, batch_eq_64) {
6911 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006912 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006913 .batch_size(64)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006914 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006915 }
6916
6917 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, batch_div_64) {
6918 TEST_REQUIRES_X86_AVX2;
6919 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006920 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006921 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006922 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006923 }
6924 }
6925
6926 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, batch_lt_64) {
6927 TEST_REQUIRES_X86_AVX2;
6928 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006929 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006930 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006931 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006932 }
6933 }
6934
6935 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, batch_gt_64) {
6936 TEST_REQUIRES_X86_AVX2;
6937 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006938 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006939 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006940 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006941 }
6942 }
6943
6944 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, inplace) {
6945 TEST_REQUIRES_X86_AVX2;
6946 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006947 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006948 .batch_size(batch_size)
6949 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006950 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006951 }
6952 }
6953
6954 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, prescale) {
6955 TEST_REQUIRES_X86_AVX2;
6956 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
6957 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006958 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006959 .batch_size(batch_size)
6960 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006961 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006962 }
6963 }
6964 }
6965
6966 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, alpha) {
6967 TEST_REQUIRES_X86_AVX2;
6968 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
6969 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006970 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006971 .batch_size(batch_size)
6972 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006973 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006974 }
6975 }
6976 }
6977
6978 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, beta) {
6979 TEST_REQUIRES_X86_AVX2;
6980 for (float beta : std::vector<float>({0.3f, 3.0f})) {
6981 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006982 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006983 .batch_size(batch_size)
6984 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006985 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006986 }
6987 }
6988 }
6989#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6990
6991
6992#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6993 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, batch_eq_72) {
6994 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07006995 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006996 .batch_size(72)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08006997 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08006998 }
6999
7000 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, batch_div_72) {
7001 TEST_REQUIRES_X86_AVX2;
7002 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007003 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007004 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007005 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007006 }
7007 }
7008
7009 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, batch_lt_72) {
7010 TEST_REQUIRES_X86_AVX2;
7011 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007012 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007013 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007014 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007015 }
7016 }
7017
7018 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, batch_gt_72) {
7019 TEST_REQUIRES_X86_AVX2;
7020 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007021 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007022 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007023 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007024 }
7025 }
7026
7027 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, inplace) {
7028 TEST_REQUIRES_X86_AVX2;
7029 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007030 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007031 .batch_size(batch_size)
7032 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007033 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007034 }
7035 }
7036
7037 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, prescale) {
7038 TEST_REQUIRES_X86_AVX2;
7039 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7040 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007041 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007042 .batch_size(batch_size)
7043 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007044 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007045 }
7046 }
7047 }
7048
7049 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, alpha) {
7050 TEST_REQUIRES_X86_AVX2;
7051 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7052 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007053 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007054 .batch_size(batch_size)
7055 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007056 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007057 }
7058 }
7059 }
7060
7061 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, beta) {
7062 TEST_REQUIRES_X86_AVX2;
7063 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7064 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007065 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007066 .batch_size(batch_size)
7067 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007068 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007069 }
7070 }
7071 }
7072#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7073
7074
7075#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7076 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, batch_eq_80) {
7077 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007078 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007079 .batch_size(80)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007080 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007081 }
7082
7083 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, batch_div_80) {
7084 TEST_REQUIRES_X86_AVX2;
7085 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007086 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007087 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007088 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007089 }
7090 }
7091
7092 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, batch_lt_80) {
7093 TEST_REQUIRES_X86_AVX2;
7094 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007095 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007096 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007097 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007098 }
7099 }
7100
7101 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, batch_gt_80) {
7102 TEST_REQUIRES_X86_AVX2;
7103 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007104 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007105 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007106 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007107 }
7108 }
7109
7110 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, inplace) {
7111 TEST_REQUIRES_X86_AVX2;
7112 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007113 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007114 .batch_size(batch_size)
7115 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007116 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007117 }
7118 }
7119
7120 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, prescale) {
7121 TEST_REQUIRES_X86_AVX2;
7122 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7123 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007124 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007125 .batch_size(batch_size)
7126 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007127 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007128 }
7129 }
7130 }
7131
7132 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, alpha) {
7133 TEST_REQUIRES_X86_AVX2;
7134 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7135 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007136 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007137 .batch_size(batch_size)
7138 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007139 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007140 }
7141 }
7142 }
7143
7144 TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, beta) {
7145 TEST_REQUIRES_X86_AVX2;
7146 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7147 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007148 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007149 .batch_size(batch_size)
7150 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007151 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80, xnn_init_f32_elu_avx2_rr1_lut8_p4_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007152 }
7153 }
7154 }
7155#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7156
7157
7158#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7159 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, batch_eq_8) {
7160 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007161 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007162 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007163 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007164 }
7165
7166 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, batch_div_8) {
7167 TEST_REQUIRES_X86_AVX2;
7168 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007169 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007170 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007171 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007172 }
7173 }
7174
7175 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, batch_lt_8) {
7176 TEST_REQUIRES_X86_AVX2;
7177 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007178 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007179 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007180 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007181 }
7182 }
7183
7184 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, batch_gt_8) {
7185 TEST_REQUIRES_X86_AVX2;
7186 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007187 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007188 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007189 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007190 }
7191 }
7192
7193 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, inplace) {
7194 TEST_REQUIRES_X86_AVX2;
7195 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007196 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007197 .batch_size(batch_size)
7198 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007199 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007200 }
7201 }
7202
7203 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, prescale) {
7204 TEST_REQUIRES_X86_AVX2;
7205 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7206 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007207 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007208 .batch_size(batch_size)
7209 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007210 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007211 }
7212 }
7213 }
7214
7215 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, alpha) {
7216 TEST_REQUIRES_X86_AVX2;
7217 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7218 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007219 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007220 .batch_size(batch_size)
7221 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007222 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007223 }
7224 }
7225 }
7226
7227 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, beta) {
7228 TEST_REQUIRES_X86_AVX2;
7229 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7230 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007231 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007232 .batch_size(batch_size)
7233 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007234 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007235 }
7236 }
7237 }
7238#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7239
7240
7241#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7242 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, batch_eq_16) {
7243 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007244 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007245 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007246 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007247 }
7248
7249 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, batch_div_16) {
7250 TEST_REQUIRES_X86_AVX2;
7251 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007252 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007253 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007254 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007255 }
7256 }
7257
7258 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, batch_lt_16) {
7259 TEST_REQUIRES_X86_AVX2;
7260 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007261 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007262 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007263 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007264 }
7265 }
7266
7267 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, batch_gt_16) {
7268 TEST_REQUIRES_X86_AVX2;
7269 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007270 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007271 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007272 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007273 }
7274 }
7275
7276 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, inplace) {
7277 TEST_REQUIRES_X86_AVX2;
7278 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007279 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007280 .batch_size(batch_size)
7281 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007282 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007283 }
7284 }
7285
7286 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, prescale) {
7287 TEST_REQUIRES_X86_AVX2;
7288 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7289 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007290 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007291 .batch_size(batch_size)
7292 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007293 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007294 }
7295 }
7296 }
7297
7298 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, alpha) {
7299 TEST_REQUIRES_X86_AVX2;
7300 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7301 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007302 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007303 .batch_size(batch_size)
7304 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007305 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007306 }
7307 }
7308 }
7309
7310 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, beta) {
7311 TEST_REQUIRES_X86_AVX2;
7312 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7313 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007314 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007315 .batch_size(batch_size)
7316 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007317 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007318 }
7319 }
7320 }
7321#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7322
7323
7324#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7325 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, batch_eq_24) {
7326 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007327 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007328 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007329 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007330 }
7331
7332 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, batch_div_24) {
7333 TEST_REQUIRES_X86_AVX2;
7334 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007335 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007336 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007337 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007338 }
7339 }
7340
7341 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, batch_lt_24) {
7342 TEST_REQUIRES_X86_AVX2;
7343 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007344 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007345 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007346 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007347 }
7348 }
7349
7350 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, batch_gt_24) {
7351 TEST_REQUIRES_X86_AVX2;
7352 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007353 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007354 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007355 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007356 }
7357 }
7358
7359 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, inplace) {
7360 TEST_REQUIRES_X86_AVX2;
7361 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007362 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007363 .batch_size(batch_size)
7364 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007365 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007366 }
7367 }
7368
7369 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, prescale) {
7370 TEST_REQUIRES_X86_AVX2;
7371 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7372 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007373 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007374 .batch_size(batch_size)
7375 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007376 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007377 }
7378 }
7379 }
7380
7381 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, alpha) {
7382 TEST_REQUIRES_X86_AVX2;
7383 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7384 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007385 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007386 .batch_size(batch_size)
7387 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007388 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007389 }
7390 }
7391 }
7392
7393 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, beta) {
7394 TEST_REQUIRES_X86_AVX2;
7395 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7396 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007397 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007398 .batch_size(batch_size)
7399 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007400 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007401 }
7402 }
7403 }
7404#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7405
7406
7407#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7408 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, batch_eq_32) {
7409 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007410 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007411 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007412 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007413 }
7414
7415 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, batch_div_32) {
7416 TEST_REQUIRES_X86_AVX2;
7417 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007418 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007419 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007420 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007421 }
7422 }
7423
7424 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, batch_lt_32) {
7425 TEST_REQUIRES_X86_AVX2;
7426 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007427 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007428 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007429 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007430 }
7431 }
7432
7433 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, batch_gt_32) {
7434 TEST_REQUIRES_X86_AVX2;
7435 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007436 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007437 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007438 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007439 }
7440 }
7441
7442 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, inplace) {
7443 TEST_REQUIRES_X86_AVX2;
7444 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007445 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007446 .batch_size(batch_size)
7447 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007448 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007449 }
7450 }
7451
7452 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, prescale) {
7453 TEST_REQUIRES_X86_AVX2;
7454 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7455 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007456 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007457 .batch_size(batch_size)
7458 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007459 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007460 }
7461 }
7462 }
7463
7464 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, alpha) {
7465 TEST_REQUIRES_X86_AVX2;
7466 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7467 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007468 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007469 .batch_size(batch_size)
7470 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007471 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007472 }
7473 }
7474 }
7475
7476 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, beta) {
7477 TEST_REQUIRES_X86_AVX2;
7478 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7479 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007480 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007481 .batch_size(batch_size)
7482 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007483 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007484 }
7485 }
7486 }
7487#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7488
7489
7490#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7491 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, batch_eq_40) {
7492 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007493 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007494 .batch_size(40)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007495 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007496 }
7497
7498 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, batch_div_40) {
7499 TEST_REQUIRES_X86_AVX2;
7500 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007501 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007502 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007503 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007504 }
7505 }
7506
7507 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, batch_lt_40) {
7508 TEST_REQUIRES_X86_AVX2;
7509 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007510 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007511 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007512 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007513 }
7514 }
7515
7516 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, batch_gt_40) {
7517 TEST_REQUIRES_X86_AVX2;
7518 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007519 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007520 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007521 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007522 }
7523 }
7524
7525 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, inplace) {
7526 TEST_REQUIRES_X86_AVX2;
7527 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007528 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007529 .batch_size(batch_size)
7530 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007531 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007532 }
7533 }
7534
7535 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, prescale) {
7536 TEST_REQUIRES_X86_AVX2;
7537 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7538 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007539 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007540 .batch_size(batch_size)
7541 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007542 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007543 }
7544 }
7545 }
7546
7547 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, alpha) {
7548 TEST_REQUIRES_X86_AVX2;
7549 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7550 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007551 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007552 .batch_size(batch_size)
7553 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007554 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007555 }
7556 }
7557 }
7558
7559 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, beta) {
7560 TEST_REQUIRES_X86_AVX2;
7561 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7562 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007563 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007564 .batch_size(batch_size)
7565 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007566 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007567 }
7568 }
7569 }
7570#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7571
7572
7573#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7574 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, batch_eq_48) {
7575 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007576 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007577 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007578 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007579 }
7580
7581 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, batch_div_48) {
7582 TEST_REQUIRES_X86_AVX2;
7583 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007584 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007585 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007586 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007587 }
7588 }
7589
7590 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, batch_lt_48) {
7591 TEST_REQUIRES_X86_AVX2;
7592 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007593 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007594 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007595 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007596 }
7597 }
7598
7599 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, batch_gt_48) {
7600 TEST_REQUIRES_X86_AVX2;
7601 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007602 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007603 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007604 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007605 }
7606 }
7607
7608 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, inplace) {
7609 TEST_REQUIRES_X86_AVX2;
7610 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007611 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007612 .batch_size(batch_size)
7613 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007614 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007615 }
7616 }
7617
7618 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, prescale) {
7619 TEST_REQUIRES_X86_AVX2;
7620 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7621 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007622 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007623 .batch_size(batch_size)
7624 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007625 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007626 }
7627 }
7628 }
7629
7630 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, alpha) {
7631 TEST_REQUIRES_X86_AVX2;
7632 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7633 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007634 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007635 .batch_size(batch_size)
7636 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007637 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007638 }
7639 }
7640 }
7641
7642 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, beta) {
7643 TEST_REQUIRES_X86_AVX2;
7644 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7645 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007646 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007647 .batch_size(batch_size)
7648 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007649 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007650 }
7651 }
7652 }
7653#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7654
7655
7656#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7657 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, batch_eq_56) {
7658 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007659 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007660 .batch_size(56)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007661 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007662 }
7663
7664 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, batch_div_56) {
7665 TEST_REQUIRES_X86_AVX2;
7666 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007667 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007668 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007669 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007670 }
7671 }
7672
7673 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, batch_lt_56) {
7674 TEST_REQUIRES_X86_AVX2;
7675 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007676 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007677 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007678 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007679 }
7680 }
7681
7682 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, batch_gt_56) {
7683 TEST_REQUIRES_X86_AVX2;
7684 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007685 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007686 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007687 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007688 }
7689 }
7690
7691 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, inplace) {
7692 TEST_REQUIRES_X86_AVX2;
7693 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007694 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007695 .batch_size(batch_size)
7696 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007697 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007698 }
7699 }
7700
7701 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, prescale) {
7702 TEST_REQUIRES_X86_AVX2;
7703 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7704 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007705 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007706 .batch_size(batch_size)
7707 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007708 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007709 }
7710 }
7711 }
7712
7713 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, alpha) {
7714 TEST_REQUIRES_X86_AVX2;
7715 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7716 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007717 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007718 .batch_size(batch_size)
7719 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007720 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007721 }
7722 }
7723 }
7724
7725 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, beta) {
7726 TEST_REQUIRES_X86_AVX2;
7727 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7728 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007729 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007730 .batch_size(batch_size)
7731 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007732 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007733 }
7734 }
7735 }
7736#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7737
7738
7739#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7740 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, batch_eq_64) {
7741 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007742 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007743 .batch_size(64)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007744 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007745 }
7746
7747 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, batch_div_64) {
7748 TEST_REQUIRES_X86_AVX2;
7749 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007750 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007751 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007752 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007753 }
7754 }
7755
7756 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, batch_lt_64) {
7757 TEST_REQUIRES_X86_AVX2;
7758 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007759 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007760 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007761 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007762 }
7763 }
7764
7765 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, batch_gt_64) {
7766 TEST_REQUIRES_X86_AVX2;
7767 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007768 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007769 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007770 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007771 }
7772 }
7773
7774 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, inplace) {
7775 TEST_REQUIRES_X86_AVX2;
7776 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007777 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007778 .batch_size(batch_size)
7779 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007780 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007781 }
7782 }
7783
7784 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, prescale) {
7785 TEST_REQUIRES_X86_AVX2;
7786 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7787 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007788 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007789 .batch_size(batch_size)
7790 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007791 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007792 }
7793 }
7794 }
7795
7796 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, alpha) {
7797 TEST_REQUIRES_X86_AVX2;
7798 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7799 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007800 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007801 .batch_size(batch_size)
7802 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007803 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007804 }
7805 }
7806 }
7807
7808 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, beta) {
7809 TEST_REQUIRES_X86_AVX2;
7810 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7811 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007812 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007813 .batch_size(batch_size)
7814 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007815 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007816 }
7817 }
7818 }
7819#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7820
7821
7822#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7823 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, batch_eq_72) {
7824 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007825 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007826 .batch_size(72)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007827 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007828 }
7829
7830 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, batch_div_72) {
7831 TEST_REQUIRES_X86_AVX2;
7832 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007833 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007834 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007835 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007836 }
7837 }
7838
7839 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, batch_lt_72) {
7840 TEST_REQUIRES_X86_AVX2;
7841 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007842 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007843 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007844 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007845 }
7846 }
7847
7848 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, batch_gt_72) {
7849 TEST_REQUIRES_X86_AVX2;
7850 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007851 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007852 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007853 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007854 }
7855 }
7856
7857 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, inplace) {
7858 TEST_REQUIRES_X86_AVX2;
7859 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007860 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007861 .batch_size(batch_size)
7862 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007863 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007864 }
7865 }
7866
7867 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, prescale) {
7868 TEST_REQUIRES_X86_AVX2;
7869 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7870 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007871 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007872 .batch_size(batch_size)
7873 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007874 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007875 }
7876 }
7877 }
7878
7879 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, alpha) {
7880 TEST_REQUIRES_X86_AVX2;
7881 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7882 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007883 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007884 .batch_size(batch_size)
7885 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007886 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007887 }
7888 }
7889 }
7890
7891 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, beta) {
7892 TEST_REQUIRES_X86_AVX2;
7893 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7894 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007895 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007896 .batch_size(batch_size)
7897 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007898 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007899 }
7900 }
7901 }
7902#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7903
7904
7905#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7906 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, batch_eq_80) {
7907 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007908 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007909 .batch_size(80)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007910 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007911 }
7912
7913 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, batch_div_80) {
7914 TEST_REQUIRES_X86_AVX2;
7915 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007916 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007917 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007918 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007919 }
7920 }
7921
7922 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, batch_lt_80) {
7923 TEST_REQUIRES_X86_AVX2;
7924 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007925 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007926 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007927 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007928 }
7929 }
7930
7931 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, batch_gt_80) {
7932 TEST_REQUIRES_X86_AVX2;
7933 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007934 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007935 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007936 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007937 }
7938 }
7939
7940 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, inplace) {
7941 TEST_REQUIRES_X86_AVX2;
7942 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007943 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007944 .batch_size(batch_size)
7945 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007946 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007947 }
7948 }
7949
7950 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, prescale) {
7951 TEST_REQUIRES_X86_AVX2;
7952 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
7953 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007954 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007955 .batch_size(batch_size)
7956 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007957 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007958 }
7959 }
7960 }
7961
7962 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, alpha) {
7963 TEST_REQUIRES_X86_AVX2;
7964 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
7965 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007966 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007967 .batch_size(batch_size)
7968 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007969 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007970 }
7971 }
7972 }
7973
7974 TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, beta) {
7975 TEST_REQUIRES_X86_AVX2;
7976 for (float beta : std::vector<float>({0.3f, 3.0f})) {
7977 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007978 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007979 .batch_size(batch_size)
7980 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007981 .Test(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80, xnn_init_f32_elu_avx2_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007982 }
7983 }
7984 }
7985#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7986
7987
7988#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7989 TEST(F32_VELU__AVX2_RR1_P6_X8, batch_eq_8) {
7990 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007991 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007992 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08007993 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x8, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08007994 }
7995
7996 TEST(F32_VELU__AVX2_RR1_P6_X8, batch_div_8) {
7997 TEST_REQUIRES_X86_AVX2;
7998 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07007999 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008000 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008001 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x8, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008002 }
8003 }
8004
8005 TEST(F32_VELU__AVX2_RR1_P6_X8, batch_lt_8) {
8006 TEST_REQUIRES_X86_AVX2;
8007 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008008 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008009 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008010 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x8, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008011 }
8012 }
8013
8014 TEST(F32_VELU__AVX2_RR1_P6_X8, batch_gt_8) {
8015 TEST_REQUIRES_X86_AVX2;
8016 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008017 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008018 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008019 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x8, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008020 }
8021 }
8022
8023 TEST(F32_VELU__AVX2_RR1_P6_X8, inplace) {
8024 TEST_REQUIRES_X86_AVX2;
8025 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008026 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008027 .batch_size(batch_size)
8028 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008029 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x8, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008030 }
8031 }
8032
8033 TEST(F32_VELU__AVX2_RR1_P6_X8, prescale) {
8034 TEST_REQUIRES_X86_AVX2;
8035 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8036 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008037 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008038 .batch_size(batch_size)
8039 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008040 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x8, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008041 }
8042 }
8043 }
8044
8045 TEST(F32_VELU__AVX2_RR1_P6_X8, alpha) {
8046 TEST_REQUIRES_X86_AVX2;
8047 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8048 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008049 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008050 .batch_size(batch_size)
8051 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008052 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x8, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008053 }
8054 }
8055 }
8056
8057 TEST(F32_VELU__AVX2_RR1_P6_X8, beta) {
8058 TEST_REQUIRES_X86_AVX2;
8059 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8060 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008061 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008062 .batch_size(batch_size)
8063 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008064 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x8, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008065 }
8066 }
8067 }
8068#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8069
8070
8071#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8072 TEST(F32_VELU__AVX2_RR1_P6_X16, batch_eq_16) {
8073 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008074 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008075 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008076 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x16, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008077 }
8078
8079 TEST(F32_VELU__AVX2_RR1_P6_X16, batch_div_16) {
8080 TEST_REQUIRES_X86_AVX2;
8081 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008082 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008083 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008084 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x16, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008085 }
8086 }
8087
8088 TEST(F32_VELU__AVX2_RR1_P6_X16, batch_lt_16) {
8089 TEST_REQUIRES_X86_AVX2;
8090 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008091 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008092 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008093 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x16, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008094 }
8095 }
8096
8097 TEST(F32_VELU__AVX2_RR1_P6_X16, batch_gt_16) {
8098 TEST_REQUIRES_X86_AVX2;
8099 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008100 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008101 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008102 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x16, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008103 }
8104 }
8105
8106 TEST(F32_VELU__AVX2_RR1_P6_X16, inplace) {
8107 TEST_REQUIRES_X86_AVX2;
8108 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008109 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008110 .batch_size(batch_size)
8111 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008112 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x16, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008113 }
8114 }
8115
8116 TEST(F32_VELU__AVX2_RR1_P6_X16, prescale) {
8117 TEST_REQUIRES_X86_AVX2;
8118 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8119 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008120 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008121 .batch_size(batch_size)
8122 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008123 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x16, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008124 }
8125 }
8126 }
8127
8128 TEST(F32_VELU__AVX2_RR1_P6_X16, alpha) {
8129 TEST_REQUIRES_X86_AVX2;
8130 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8131 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008132 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008133 .batch_size(batch_size)
8134 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008135 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x16, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008136 }
8137 }
8138 }
8139
8140 TEST(F32_VELU__AVX2_RR1_P6_X16, beta) {
8141 TEST_REQUIRES_X86_AVX2;
8142 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8143 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008144 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008145 .batch_size(batch_size)
8146 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008147 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x16, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008148 }
8149 }
8150 }
8151#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8152
8153
8154#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8155 TEST(F32_VELU__AVX2_RR1_P6_X24, batch_eq_24) {
8156 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008157 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008158 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008159 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x24, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008160 }
8161
8162 TEST(F32_VELU__AVX2_RR1_P6_X24, batch_div_24) {
8163 TEST_REQUIRES_X86_AVX2;
8164 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008165 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008166 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008167 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x24, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008168 }
8169 }
8170
8171 TEST(F32_VELU__AVX2_RR1_P6_X24, batch_lt_24) {
8172 TEST_REQUIRES_X86_AVX2;
8173 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008174 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008175 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008176 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x24, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008177 }
8178 }
8179
8180 TEST(F32_VELU__AVX2_RR1_P6_X24, batch_gt_24) {
8181 TEST_REQUIRES_X86_AVX2;
8182 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008183 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008184 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008185 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x24, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008186 }
8187 }
8188
8189 TEST(F32_VELU__AVX2_RR1_P6_X24, inplace) {
8190 TEST_REQUIRES_X86_AVX2;
8191 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008192 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008193 .batch_size(batch_size)
8194 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008195 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x24, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008196 }
8197 }
8198
8199 TEST(F32_VELU__AVX2_RR1_P6_X24, prescale) {
8200 TEST_REQUIRES_X86_AVX2;
8201 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8202 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008203 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008204 .batch_size(batch_size)
8205 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008206 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x24, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008207 }
8208 }
8209 }
8210
8211 TEST(F32_VELU__AVX2_RR1_P6_X24, alpha) {
8212 TEST_REQUIRES_X86_AVX2;
8213 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8214 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008215 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008216 .batch_size(batch_size)
8217 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008218 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x24, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008219 }
8220 }
8221 }
8222
8223 TEST(F32_VELU__AVX2_RR1_P6_X24, beta) {
8224 TEST_REQUIRES_X86_AVX2;
8225 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8226 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008227 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008228 .batch_size(batch_size)
8229 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008230 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x24, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008231 }
8232 }
8233 }
8234#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8235
8236
8237#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8238 TEST(F32_VELU__AVX2_RR1_P6_X32, batch_eq_32) {
8239 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008240 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008241 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008242 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x32, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008243 }
8244
8245 TEST(F32_VELU__AVX2_RR1_P6_X32, batch_div_32) {
8246 TEST_REQUIRES_X86_AVX2;
8247 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008248 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008249 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008250 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x32, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008251 }
8252 }
8253
8254 TEST(F32_VELU__AVX2_RR1_P6_X32, batch_lt_32) {
8255 TEST_REQUIRES_X86_AVX2;
8256 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008257 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008258 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008259 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x32, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008260 }
8261 }
8262
8263 TEST(F32_VELU__AVX2_RR1_P6_X32, batch_gt_32) {
8264 TEST_REQUIRES_X86_AVX2;
8265 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008266 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008267 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008268 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x32, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008269 }
8270 }
8271
8272 TEST(F32_VELU__AVX2_RR1_P6_X32, inplace) {
8273 TEST_REQUIRES_X86_AVX2;
8274 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008275 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008276 .batch_size(batch_size)
8277 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008278 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x32, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008279 }
8280 }
8281
8282 TEST(F32_VELU__AVX2_RR1_P6_X32, prescale) {
8283 TEST_REQUIRES_X86_AVX2;
8284 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8285 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008286 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008287 .batch_size(batch_size)
8288 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008289 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x32, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008290 }
8291 }
8292 }
8293
8294 TEST(F32_VELU__AVX2_RR1_P6_X32, alpha) {
8295 TEST_REQUIRES_X86_AVX2;
8296 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8297 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008298 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008299 .batch_size(batch_size)
8300 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008301 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x32, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008302 }
8303 }
8304 }
8305
8306 TEST(F32_VELU__AVX2_RR1_P6_X32, beta) {
8307 TEST_REQUIRES_X86_AVX2;
8308 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8309 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008310 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008311 .batch_size(batch_size)
8312 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008313 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x32, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008314 }
8315 }
8316 }
8317#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8318
8319
8320#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8321 TEST(F32_VELU__AVX2_RR1_P6_X40, batch_eq_40) {
8322 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008323 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008324 .batch_size(40)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008325 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x40, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008326 }
8327
8328 TEST(F32_VELU__AVX2_RR1_P6_X40, batch_div_40) {
8329 TEST_REQUIRES_X86_AVX2;
8330 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008331 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008332 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008333 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x40, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008334 }
8335 }
8336
8337 TEST(F32_VELU__AVX2_RR1_P6_X40, batch_lt_40) {
8338 TEST_REQUIRES_X86_AVX2;
8339 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008340 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008341 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008342 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x40, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008343 }
8344 }
8345
8346 TEST(F32_VELU__AVX2_RR1_P6_X40, batch_gt_40) {
8347 TEST_REQUIRES_X86_AVX2;
8348 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008349 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008350 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008351 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x40, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008352 }
8353 }
8354
8355 TEST(F32_VELU__AVX2_RR1_P6_X40, inplace) {
8356 TEST_REQUIRES_X86_AVX2;
8357 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008358 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008359 .batch_size(batch_size)
8360 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008361 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x40, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008362 }
8363 }
8364
8365 TEST(F32_VELU__AVX2_RR1_P6_X40, prescale) {
8366 TEST_REQUIRES_X86_AVX2;
8367 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8368 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008369 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008370 .batch_size(batch_size)
8371 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008372 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x40, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008373 }
8374 }
8375 }
8376
8377 TEST(F32_VELU__AVX2_RR1_P6_X40, alpha) {
8378 TEST_REQUIRES_X86_AVX2;
8379 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8380 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008381 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008382 .batch_size(batch_size)
8383 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008384 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x40, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008385 }
8386 }
8387 }
8388
8389 TEST(F32_VELU__AVX2_RR1_P6_X40, beta) {
8390 TEST_REQUIRES_X86_AVX2;
8391 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8392 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008393 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008394 .batch_size(batch_size)
8395 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008396 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x40, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008397 }
8398 }
8399 }
8400#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8401
8402
8403#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8404 TEST(F32_VELU__AVX2_RR1_P6_X48, batch_eq_48) {
8405 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008406 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008407 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008408 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x48, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008409 }
8410
8411 TEST(F32_VELU__AVX2_RR1_P6_X48, batch_div_48) {
8412 TEST_REQUIRES_X86_AVX2;
8413 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008414 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008415 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008416 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x48, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008417 }
8418 }
8419
8420 TEST(F32_VELU__AVX2_RR1_P6_X48, batch_lt_48) {
8421 TEST_REQUIRES_X86_AVX2;
8422 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008423 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008424 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008425 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x48, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008426 }
8427 }
8428
8429 TEST(F32_VELU__AVX2_RR1_P6_X48, batch_gt_48) {
8430 TEST_REQUIRES_X86_AVX2;
8431 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008432 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008433 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008434 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x48, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008435 }
8436 }
8437
8438 TEST(F32_VELU__AVX2_RR1_P6_X48, inplace) {
8439 TEST_REQUIRES_X86_AVX2;
8440 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008441 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008442 .batch_size(batch_size)
8443 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008444 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x48, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008445 }
8446 }
8447
8448 TEST(F32_VELU__AVX2_RR1_P6_X48, prescale) {
8449 TEST_REQUIRES_X86_AVX2;
8450 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8451 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008452 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008453 .batch_size(batch_size)
8454 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008455 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x48, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008456 }
8457 }
8458 }
8459
8460 TEST(F32_VELU__AVX2_RR1_P6_X48, alpha) {
8461 TEST_REQUIRES_X86_AVX2;
8462 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8463 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008464 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008465 .batch_size(batch_size)
8466 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008467 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x48, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008468 }
8469 }
8470 }
8471
8472 TEST(F32_VELU__AVX2_RR1_P6_X48, beta) {
8473 TEST_REQUIRES_X86_AVX2;
8474 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8475 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008476 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008477 .batch_size(batch_size)
8478 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008479 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x48, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008480 }
8481 }
8482 }
8483#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8484
8485
8486#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8487 TEST(F32_VELU__AVX2_RR1_P6_X56, batch_eq_56) {
8488 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008489 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008490 .batch_size(56)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008491 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x56, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008492 }
8493
8494 TEST(F32_VELU__AVX2_RR1_P6_X56, batch_div_56) {
8495 TEST_REQUIRES_X86_AVX2;
8496 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008497 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008498 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008499 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x56, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008500 }
8501 }
8502
8503 TEST(F32_VELU__AVX2_RR1_P6_X56, batch_lt_56) {
8504 TEST_REQUIRES_X86_AVX2;
8505 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008506 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008507 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008508 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x56, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008509 }
8510 }
8511
8512 TEST(F32_VELU__AVX2_RR1_P6_X56, batch_gt_56) {
8513 TEST_REQUIRES_X86_AVX2;
8514 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008515 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008516 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008517 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x56, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008518 }
8519 }
8520
8521 TEST(F32_VELU__AVX2_RR1_P6_X56, inplace) {
8522 TEST_REQUIRES_X86_AVX2;
8523 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008524 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008525 .batch_size(batch_size)
8526 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008527 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x56, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008528 }
8529 }
8530
8531 TEST(F32_VELU__AVX2_RR1_P6_X56, prescale) {
8532 TEST_REQUIRES_X86_AVX2;
8533 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8534 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008535 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008536 .batch_size(batch_size)
8537 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008538 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x56, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008539 }
8540 }
8541 }
8542
8543 TEST(F32_VELU__AVX2_RR1_P6_X56, alpha) {
8544 TEST_REQUIRES_X86_AVX2;
8545 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8546 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008547 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008548 .batch_size(batch_size)
8549 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008550 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x56, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008551 }
8552 }
8553 }
8554
8555 TEST(F32_VELU__AVX2_RR1_P6_X56, beta) {
8556 TEST_REQUIRES_X86_AVX2;
8557 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8558 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008559 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008560 .batch_size(batch_size)
8561 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008562 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x56, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008563 }
8564 }
8565 }
8566#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8567
8568
8569#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8570 TEST(F32_VELU__AVX2_RR1_P6_X64, batch_eq_64) {
8571 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008572 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008573 .batch_size(64)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008574 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x64, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008575 }
8576
8577 TEST(F32_VELU__AVX2_RR1_P6_X64, batch_div_64) {
8578 TEST_REQUIRES_X86_AVX2;
8579 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008580 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008581 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008582 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x64, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008583 }
8584 }
8585
8586 TEST(F32_VELU__AVX2_RR1_P6_X64, batch_lt_64) {
8587 TEST_REQUIRES_X86_AVX2;
8588 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008589 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008590 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008591 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x64, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008592 }
8593 }
8594
8595 TEST(F32_VELU__AVX2_RR1_P6_X64, batch_gt_64) {
8596 TEST_REQUIRES_X86_AVX2;
8597 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008598 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008599 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008600 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x64, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008601 }
8602 }
8603
8604 TEST(F32_VELU__AVX2_RR1_P6_X64, inplace) {
8605 TEST_REQUIRES_X86_AVX2;
8606 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008607 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008608 .batch_size(batch_size)
8609 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008610 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x64, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008611 }
8612 }
8613
8614 TEST(F32_VELU__AVX2_RR1_P6_X64, prescale) {
8615 TEST_REQUIRES_X86_AVX2;
8616 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8617 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008618 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008619 .batch_size(batch_size)
8620 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008621 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x64, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008622 }
8623 }
8624 }
8625
8626 TEST(F32_VELU__AVX2_RR1_P6_X64, alpha) {
8627 TEST_REQUIRES_X86_AVX2;
8628 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8629 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008630 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008631 .batch_size(batch_size)
8632 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008633 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x64, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008634 }
8635 }
8636 }
8637
8638 TEST(F32_VELU__AVX2_RR1_P6_X64, beta) {
8639 TEST_REQUIRES_X86_AVX2;
8640 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8641 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008642 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008643 .batch_size(batch_size)
8644 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008645 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x64, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008646 }
8647 }
8648 }
8649#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8650
8651
8652#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8653 TEST(F32_VELU__AVX2_RR1_P6_X72, batch_eq_72) {
8654 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008655 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008656 .batch_size(72)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008657 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x72, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008658 }
8659
8660 TEST(F32_VELU__AVX2_RR1_P6_X72, batch_div_72) {
8661 TEST_REQUIRES_X86_AVX2;
8662 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008663 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008664 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008665 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x72, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008666 }
8667 }
8668
8669 TEST(F32_VELU__AVX2_RR1_P6_X72, batch_lt_72) {
8670 TEST_REQUIRES_X86_AVX2;
8671 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008672 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008673 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008674 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x72, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008675 }
8676 }
8677
8678 TEST(F32_VELU__AVX2_RR1_P6_X72, batch_gt_72) {
8679 TEST_REQUIRES_X86_AVX2;
8680 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008681 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008682 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008683 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x72, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008684 }
8685 }
8686
8687 TEST(F32_VELU__AVX2_RR1_P6_X72, inplace) {
8688 TEST_REQUIRES_X86_AVX2;
8689 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008690 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008691 .batch_size(batch_size)
8692 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008693 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x72, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008694 }
8695 }
8696
8697 TEST(F32_VELU__AVX2_RR1_P6_X72, prescale) {
8698 TEST_REQUIRES_X86_AVX2;
8699 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8700 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008701 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008702 .batch_size(batch_size)
8703 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008704 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x72, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008705 }
8706 }
8707 }
8708
8709 TEST(F32_VELU__AVX2_RR1_P6_X72, alpha) {
8710 TEST_REQUIRES_X86_AVX2;
8711 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8712 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008713 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008714 .batch_size(batch_size)
8715 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008716 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x72, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008717 }
8718 }
8719 }
8720
8721 TEST(F32_VELU__AVX2_RR1_P6_X72, beta) {
8722 TEST_REQUIRES_X86_AVX2;
8723 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8724 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008725 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008726 .batch_size(batch_size)
8727 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008728 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x72, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008729 }
8730 }
8731 }
8732#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8733
8734
8735#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8736 TEST(F32_VELU__AVX2_RR1_P6_X80, batch_eq_80) {
8737 TEST_REQUIRES_X86_AVX2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008738 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008739 .batch_size(80)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008740 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x80, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008741 }
8742
8743 TEST(F32_VELU__AVX2_RR1_P6_X80, batch_div_80) {
8744 TEST_REQUIRES_X86_AVX2;
8745 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008746 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008747 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008748 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x80, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008749 }
8750 }
8751
8752 TEST(F32_VELU__AVX2_RR1_P6_X80, batch_lt_80) {
8753 TEST_REQUIRES_X86_AVX2;
8754 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008755 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008756 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008757 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x80, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008758 }
8759 }
8760
8761 TEST(F32_VELU__AVX2_RR1_P6_X80, batch_gt_80) {
8762 TEST_REQUIRES_X86_AVX2;
8763 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008764 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008765 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008766 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x80, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008767 }
8768 }
8769
8770 TEST(F32_VELU__AVX2_RR1_P6_X80, inplace) {
8771 TEST_REQUIRES_X86_AVX2;
8772 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008773 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008774 .batch_size(batch_size)
8775 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008776 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x80, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008777 }
8778 }
8779
8780 TEST(F32_VELU__AVX2_RR1_P6_X80, prescale) {
8781 TEST_REQUIRES_X86_AVX2;
8782 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8783 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008784 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008785 .batch_size(batch_size)
8786 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008787 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x80, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008788 }
8789 }
8790 }
8791
8792 TEST(F32_VELU__AVX2_RR1_P6_X80, alpha) {
8793 TEST_REQUIRES_X86_AVX2;
8794 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8795 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008796 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008797 .batch_size(batch_size)
8798 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008799 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x80, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008800 }
8801 }
8802 }
8803
8804 TEST(F32_VELU__AVX2_RR1_P6_X80, beta) {
8805 TEST_REQUIRES_X86_AVX2;
8806 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8807 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008808 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008809 .batch_size(batch_size)
8810 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008811 .Test(xnn_f32_velu_ukernel__avx2_rr1_p6_x80, xnn_init_f32_elu_avx2_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008812 }
8813 }
8814 }
8815#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8816
8817
8818#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8819 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, batch_eq_16) {
8820 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008821 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008822 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008823 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008824 }
8825
8826 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, batch_div_16) {
8827 TEST_REQUIRES_X86_AVX512F;
8828 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008829 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008830 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008831 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008832 }
8833 }
8834
8835 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, batch_lt_16) {
8836 TEST_REQUIRES_X86_AVX512F;
8837 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008838 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008839 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008840 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008841 }
8842 }
8843
8844 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, batch_gt_16) {
8845 TEST_REQUIRES_X86_AVX512F;
8846 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008847 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008848 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008849 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008850 }
8851 }
8852
8853 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, inplace) {
8854 TEST_REQUIRES_X86_AVX512F;
8855 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008856 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008857 .batch_size(batch_size)
8858 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008859 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008860 }
8861 }
8862
8863 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, prescale) {
8864 TEST_REQUIRES_X86_AVX512F;
8865 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8866 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008867 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008868 .batch_size(batch_size)
8869 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008870 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008871 }
8872 }
8873 }
8874
8875 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, alpha) {
8876 TEST_REQUIRES_X86_AVX512F;
8877 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8878 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008879 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008880 .batch_size(batch_size)
8881 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008882 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008883 }
8884 }
8885 }
8886
8887 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, beta) {
8888 TEST_REQUIRES_X86_AVX512F;
8889 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8890 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008891 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008892 .batch_size(batch_size)
8893 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008894 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008895 }
8896 }
8897 }
8898#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8899
8900
8901#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8902 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, batch_eq_32) {
8903 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008904 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008905 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008906 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008907 }
8908
8909 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, batch_div_32) {
8910 TEST_REQUIRES_X86_AVX512F;
8911 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008912 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008913 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008914 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008915 }
8916 }
8917
8918 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, batch_lt_32) {
8919 TEST_REQUIRES_X86_AVX512F;
8920 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008921 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008922 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008923 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008924 }
8925 }
8926
8927 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, batch_gt_32) {
8928 TEST_REQUIRES_X86_AVX512F;
8929 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008930 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008931 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008932 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008933 }
8934 }
8935
8936 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, inplace) {
8937 TEST_REQUIRES_X86_AVX512F;
8938 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008939 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008940 .batch_size(batch_size)
8941 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008942 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008943 }
8944 }
8945
8946 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, prescale) {
8947 TEST_REQUIRES_X86_AVX512F;
8948 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
8949 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008950 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008951 .batch_size(batch_size)
8952 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008953 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008954 }
8955 }
8956 }
8957
8958 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, alpha) {
8959 TEST_REQUIRES_X86_AVX512F;
8960 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
8961 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008962 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008963 .batch_size(batch_size)
8964 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008965 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008966 }
8967 }
8968 }
8969
8970 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, beta) {
8971 TEST_REQUIRES_X86_AVX512F;
8972 for (float beta : std::vector<float>({0.3f, 3.0f})) {
8973 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008974 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008975 .batch_size(batch_size)
8976 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008977 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008978 }
8979 }
8980 }
8981#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8982
8983
8984#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8985 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, batch_eq_48) {
8986 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008987 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008988 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008989 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008990 }
8991
8992 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, batch_div_48) {
8993 TEST_REQUIRES_X86_AVX512F;
8994 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07008995 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008996 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08008997 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08008998 }
8999 }
9000
9001 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, batch_lt_48) {
9002 TEST_REQUIRES_X86_AVX512F;
9003 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009004 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009005 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009006 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009007 }
9008 }
9009
9010 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, batch_gt_48) {
9011 TEST_REQUIRES_X86_AVX512F;
9012 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009013 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009014 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009015 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009016 }
9017 }
9018
9019 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, inplace) {
9020 TEST_REQUIRES_X86_AVX512F;
9021 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009022 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009023 .batch_size(batch_size)
9024 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009025 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009026 }
9027 }
9028
9029 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, prescale) {
9030 TEST_REQUIRES_X86_AVX512F;
9031 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9032 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009033 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009034 .batch_size(batch_size)
9035 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009036 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009037 }
9038 }
9039 }
9040
9041 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, alpha) {
9042 TEST_REQUIRES_X86_AVX512F;
9043 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9044 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009045 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009046 .batch_size(batch_size)
9047 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009048 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009049 }
9050 }
9051 }
9052
9053 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, beta) {
9054 TEST_REQUIRES_X86_AVX512F;
9055 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9056 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009057 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009058 .batch_size(batch_size)
9059 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009060 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009061 }
9062 }
9063 }
9064#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9065
9066
9067#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9068 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, batch_eq_64) {
9069 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009070 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009071 .batch_size(64)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009072 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009073 }
9074
9075 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, batch_div_64) {
9076 TEST_REQUIRES_X86_AVX512F;
9077 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009078 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009079 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009080 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009081 }
9082 }
9083
9084 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, batch_lt_64) {
9085 TEST_REQUIRES_X86_AVX512F;
9086 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009087 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009088 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009089 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009090 }
9091 }
9092
9093 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, batch_gt_64) {
9094 TEST_REQUIRES_X86_AVX512F;
9095 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009096 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009097 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009098 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009099 }
9100 }
9101
9102 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, inplace) {
9103 TEST_REQUIRES_X86_AVX512F;
9104 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009105 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009106 .batch_size(batch_size)
9107 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009108 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009109 }
9110 }
9111
9112 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, prescale) {
9113 TEST_REQUIRES_X86_AVX512F;
9114 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9115 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009116 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009117 .batch_size(batch_size)
9118 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009119 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009120 }
9121 }
9122 }
9123
9124 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, alpha) {
9125 TEST_REQUIRES_X86_AVX512F;
9126 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9127 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009128 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009129 .batch_size(batch_size)
9130 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009131 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009132 }
9133 }
9134 }
9135
9136 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, beta) {
9137 TEST_REQUIRES_X86_AVX512F;
9138 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9139 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009140 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009141 .batch_size(batch_size)
9142 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009143 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009144 }
9145 }
9146 }
9147#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9148
9149
9150#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9151 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, batch_eq_80) {
9152 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009153 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009154 .batch_size(80)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009155 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009156 }
9157
9158 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, batch_div_80) {
9159 TEST_REQUIRES_X86_AVX512F;
9160 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009161 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009162 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009163 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009164 }
9165 }
9166
9167 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, batch_lt_80) {
9168 TEST_REQUIRES_X86_AVX512F;
9169 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009170 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009171 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009172 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009173 }
9174 }
9175
9176 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, batch_gt_80) {
9177 TEST_REQUIRES_X86_AVX512F;
9178 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009179 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009180 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009181 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009182 }
9183 }
9184
9185 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, inplace) {
9186 TEST_REQUIRES_X86_AVX512F;
9187 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009188 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009189 .batch_size(batch_size)
9190 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009191 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009192 }
9193 }
9194
9195 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, prescale) {
9196 TEST_REQUIRES_X86_AVX512F;
9197 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9198 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009199 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009200 .batch_size(batch_size)
9201 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009202 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009203 }
9204 }
9205 }
9206
9207 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, alpha) {
9208 TEST_REQUIRES_X86_AVX512F;
9209 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9210 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009211 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009212 .batch_size(batch_size)
9213 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009214 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009215 }
9216 }
9217 }
9218
9219 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, beta) {
9220 TEST_REQUIRES_X86_AVX512F;
9221 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9222 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009223 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009224 .batch_size(batch_size)
9225 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009226 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009227 }
9228 }
9229 }
9230#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9231
9232
9233#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9234 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, batch_eq_96) {
9235 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009236 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009237 .batch_size(96)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009238 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009239 }
9240
9241 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, batch_div_96) {
9242 TEST_REQUIRES_X86_AVX512F;
9243 for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009244 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009245 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009246 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009247 }
9248 }
9249
9250 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, batch_lt_96) {
9251 TEST_REQUIRES_X86_AVX512F;
9252 for (size_t batch_size = 1; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009253 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009254 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009255 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009256 }
9257 }
9258
9259 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, batch_gt_96) {
9260 TEST_REQUIRES_X86_AVX512F;
9261 for (size_t batch_size = 97; batch_size < 192; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009262 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009263 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009264 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009265 }
9266 }
9267
9268 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, inplace) {
9269 TEST_REQUIRES_X86_AVX512F;
9270 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009271 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009272 .batch_size(batch_size)
9273 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009274 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009275 }
9276 }
9277
9278 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, prescale) {
9279 TEST_REQUIRES_X86_AVX512F;
9280 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9281 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009282 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009283 .batch_size(batch_size)
9284 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009285 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009286 }
9287 }
9288 }
9289
9290 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, alpha) {
9291 TEST_REQUIRES_X86_AVX512F;
9292 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9293 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009294 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009295 .batch_size(batch_size)
9296 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009297 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009298 }
9299 }
9300 }
9301
9302 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, beta) {
9303 TEST_REQUIRES_X86_AVX512F;
9304 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9305 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009306 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009307 .batch_size(batch_size)
9308 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009309 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009310 }
9311 }
9312 }
9313#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9314
9315
9316#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9317 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, batch_eq_112) {
9318 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009319 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009320 .batch_size(112)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009321 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009322 }
9323
9324 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, batch_div_112) {
9325 TEST_REQUIRES_X86_AVX512F;
9326 for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009327 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009328 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009329 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009330 }
9331 }
9332
9333 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, batch_lt_112) {
9334 TEST_REQUIRES_X86_AVX512F;
9335 for (size_t batch_size = 1; batch_size < 112; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009336 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009337 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009338 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009339 }
9340 }
9341
9342 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, batch_gt_112) {
9343 TEST_REQUIRES_X86_AVX512F;
9344 for (size_t batch_size = 113; batch_size < 224; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009345 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009346 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009347 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009348 }
9349 }
9350
9351 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, inplace) {
9352 TEST_REQUIRES_X86_AVX512F;
9353 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009354 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009355 .batch_size(batch_size)
9356 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009357 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009358 }
9359 }
9360
9361 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, prescale) {
9362 TEST_REQUIRES_X86_AVX512F;
9363 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9364 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009365 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009366 .batch_size(batch_size)
9367 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009368 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009369 }
9370 }
9371 }
9372
9373 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, alpha) {
9374 TEST_REQUIRES_X86_AVX512F;
9375 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9376 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009377 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009378 .batch_size(batch_size)
9379 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009380 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009381 }
9382 }
9383 }
9384
9385 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, beta) {
9386 TEST_REQUIRES_X86_AVX512F;
9387 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9388 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009389 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009390 .batch_size(batch_size)
9391 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009392 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009393 }
9394 }
9395 }
9396#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9397
9398
9399#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9400 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, batch_eq_128) {
9401 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009402 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009403 .batch_size(128)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009404 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009405 }
9406
9407 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, batch_div_128) {
9408 TEST_REQUIRES_X86_AVX512F;
9409 for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009410 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009411 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009412 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009413 }
9414 }
9415
9416 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, batch_lt_128) {
9417 TEST_REQUIRES_X86_AVX512F;
9418 for (size_t batch_size = 1; batch_size < 128; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009419 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009420 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009421 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009422 }
9423 }
9424
9425 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, batch_gt_128) {
9426 TEST_REQUIRES_X86_AVX512F;
9427 for (size_t batch_size = 129; batch_size < 256; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009428 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009429 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009430 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009431 }
9432 }
9433
9434 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, inplace) {
9435 TEST_REQUIRES_X86_AVX512F;
9436 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009437 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009438 .batch_size(batch_size)
9439 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009440 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009441 }
9442 }
9443
9444 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, prescale) {
9445 TEST_REQUIRES_X86_AVX512F;
9446 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9447 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009448 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009449 .batch_size(batch_size)
9450 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009451 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009452 }
9453 }
9454 }
9455
9456 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, alpha) {
9457 TEST_REQUIRES_X86_AVX512F;
9458 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9459 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009460 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009461 .batch_size(batch_size)
9462 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009463 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009464 }
9465 }
9466 }
9467
9468 TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, beta) {
9469 TEST_REQUIRES_X86_AVX512F;
9470 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9471 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009472 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009473 .batch_size(batch_size)
9474 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009475 .Test(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128, xnn_init_f32_elu_avx512_rr1_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009476 }
9477 }
9478 }
9479#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9480
9481
9482#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9483 TEST(F32_VELU__AVX512F_RR1_P6_X16, batch_eq_16) {
9484 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009485 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009486 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009487 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009488 }
9489
9490 TEST(F32_VELU__AVX512F_RR1_P6_X16, batch_div_16) {
9491 TEST_REQUIRES_X86_AVX512F;
9492 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009493 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009494 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009495 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009496 }
9497 }
9498
9499 TEST(F32_VELU__AVX512F_RR1_P6_X16, batch_lt_16) {
9500 TEST_REQUIRES_X86_AVX512F;
9501 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009502 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009503 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009504 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009505 }
9506 }
9507
9508 TEST(F32_VELU__AVX512F_RR1_P6_X16, batch_gt_16) {
9509 TEST_REQUIRES_X86_AVX512F;
9510 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009511 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009512 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009513 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009514 }
9515 }
9516
9517 TEST(F32_VELU__AVX512F_RR1_P6_X16, inplace) {
9518 TEST_REQUIRES_X86_AVX512F;
9519 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009520 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009521 .batch_size(batch_size)
9522 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009523 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009524 }
9525 }
9526
9527 TEST(F32_VELU__AVX512F_RR1_P6_X16, prescale) {
9528 TEST_REQUIRES_X86_AVX512F;
9529 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9530 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009531 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009532 .batch_size(batch_size)
9533 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009534 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009535 }
9536 }
9537 }
9538
9539 TEST(F32_VELU__AVX512F_RR1_P6_X16, alpha) {
9540 TEST_REQUIRES_X86_AVX512F;
9541 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9542 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009543 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009544 .batch_size(batch_size)
9545 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009546 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009547 }
9548 }
9549 }
9550
9551 TEST(F32_VELU__AVX512F_RR1_P6_X16, beta) {
9552 TEST_REQUIRES_X86_AVX512F;
9553 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9554 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009555 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009556 .batch_size(batch_size)
9557 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009558 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009559 }
9560 }
9561 }
9562#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9563
9564
9565#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9566 TEST(F32_VELU__AVX512F_RR1_P6_X32, batch_eq_32) {
9567 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009568 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009569 .batch_size(32)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009570 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009571 }
9572
9573 TEST(F32_VELU__AVX512F_RR1_P6_X32, batch_div_32) {
9574 TEST_REQUIRES_X86_AVX512F;
9575 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009576 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009577 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009578 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009579 }
9580 }
9581
9582 TEST(F32_VELU__AVX512F_RR1_P6_X32, batch_lt_32) {
9583 TEST_REQUIRES_X86_AVX512F;
9584 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009585 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009586 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009587 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009588 }
9589 }
9590
9591 TEST(F32_VELU__AVX512F_RR1_P6_X32, batch_gt_32) {
9592 TEST_REQUIRES_X86_AVX512F;
9593 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009594 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009595 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009596 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009597 }
9598 }
9599
9600 TEST(F32_VELU__AVX512F_RR1_P6_X32, inplace) {
9601 TEST_REQUIRES_X86_AVX512F;
9602 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009603 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009604 .batch_size(batch_size)
9605 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009606 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009607 }
9608 }
9609
9610 TEST(F32_VELU__AVX512F_RR1_P6_X32, prescale) {
9611 TEST_REQUIRES_X86_AVX512F;
9612 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9613 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009614 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009615 .batch_size(batch_size)
9616 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009617 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009618 }
9619 }
9620 }
9621
9622 TEST(F32_VELU__AVX512F_RR1_P6_X32, alpha) {
9623 TEST_REQUIRES_X86_AVX512F;
9624 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9625 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009626 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009627 .batch_size(batch_size)
9628 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009629 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009630 }
9631 }
9632 }
9633
9634 TEST(F32_VELU__AVX512F_RR1_P6_X32, beta) {
9635 TEST_REQUIRES_X86_AVX512F;
9636 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9637 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009638 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009639 .batch_size(batch_size)
9640 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009641 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009642 }
9643 }
9644 }
9645#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9646
9647
9648#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9649 TEST(F32_VELU__AVX512F_RR1_P6_X48, batch_eq_48) {
9650 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009651 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009652 .batch_size(48)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009653 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009654 }
9655
9656 TEST(F32_VELU__AVX512F_RR1_P6_X48, batch_div_48) {
9657 TEST_REQUIRES_X86_AVX512F;
9658 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009659 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009660 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009661 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009662 }
9663 }
9664
9665 TEST(F32_VELU__AVX512F_RR1_P6_X48, batch_lt_48) {
9666 TEST_REQUIRES_X86_AVX512F;
9667 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009668 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009669 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009670 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009671 }
9672 }
9673
9674 TEST(F32_VELU__AVX512F_RR1_P6_X48, batch_gt_48) {
9675 TEST_REQUIRES_X86_AVX512F;
9676 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009677 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009678 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009679 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009680 }
9681 }
9682
9683 TEST(F32_VELU__AVX512F_RR1_P6_X48, inplace) {
9684 TEST_REQUIRES_X86_AVX512F;
9685 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009686 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009687 .batch_size(batch_size)
9688 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009689 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009690 }
9691 }
9692
9693 TEST(F32_VELU__AVX512F_RR1_P6_X48, prescale) {
9694 TEST_REQUIRES_X86_AVX512F;
9695 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9696 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009697 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009698 .batch_size(batch_size)
9699 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009700 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009701 }
9702 }
9703 }
9704
9705 TEST(F32_VELU__AVX512F_RR1_P6_X48, alpha) {
9706 TEST_REQUIRES_X86_AVX512F;
9707 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9708 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009709 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009710 .batch_size(batch_size)
9711 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009712 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009713 }
9714 }
9715 }
9716
9717 TEST(F32_VELU__AVX512F_RR1_P6_X48, beta) {
9718 TEST_REQUIRES_X86_AVX512F;
9719 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9720 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009721 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009722 .batch_size(batch_size)
9723 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009724 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009725 }
9726 }
9727 }
9728#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9729
9730
9731#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9732 TEST(F32_VELU__AVX512F_RR1_P6_X64, batch_eq_64) {
9733 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009734 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009735 .batch_size(64)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009736 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009737 }
9738
9739 TEST(F32_VELU__AVX512F_RR1_P6_X64, batch_div_64) {
9740 TEST_REQUIRES_X86_AVX512F;
9741 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009742 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009743 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009744 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009745 }
9746 }
9747
9748 TEST(F32_VELU__AVX512F_RR1_P6_X64, batch_lt_64) {
9749 TEST_REQUIRES_X86_AVX512F;
9750 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009751 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009752 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009753 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009754 }
9755 }
9756
9757 TEST(F32_VELU__AVX512F_RR1_P6_X64, batch_gt_64) {
9758 TEST_REQUIRES_X86_AVX512F;
9759 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009760 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009761 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009762 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009763 }
9764 }
9765
9766 TEST(F32_VELU__AVX512F_RR1_P6_X64, inplace) {
9767 TEST_REQUIRES_X86_AVX512F;
9768 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009769 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009770 .batch_size(batch_size)
9771 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009772 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009773 }
9774 }
9775
9776 TEST(F32_VELU__AVX512F_RR1_P6_X64, prescale) {
9777 TEST_REQUIRES_X86_AVX512F;
9778 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9779 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009780 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009781 .batch_size(batch_size)
9782 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009783 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009784 }
9785 }
9786 }
9787
9788 TEST(F32_VELU__AVX512F_RR1_P6_X64, alpha) {
9789 TEST_REQUIRES_X86_AVX512F;
9790 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9791 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009792 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009793 .batch_size(batch_size)
9794 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009795 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009796 }
9797 }
9798 }
9799
9800 TEST(F32_VELU__AVX512F_RR1_P6_X64, beta) {
9801 TEST_REQUIRES_X86_AVX512F;
9802 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9803 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009804 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009805 .batch_size(batch_size)
9806 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009807 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009808 }
9809 }
9810 }
9811#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9812
9813
9814#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9815 TEST(F32_VELU__AVX512F_RR1_P6_X80, batch_eq_80) {
9816 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009817 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009818 .batch_size(80)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009819 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009820 }
9821
9822 TEST(F32_VELU__AVX512F_RR1_P6_X80, batch_div_80) {
9823 TEST_REQUIRES_X86_AVX512F;
9824 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009825 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009826 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009827 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009828 }
9829 }
9830
9831 TEST(F32_VELU__AVX512F_RR1_P6_X80, batch_lt_80) {
9832 TEST_REQUIRES_X86_AVX512F;
9833 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009834 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009835 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009836 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009837 }
9838 }
9839
9840 TEST(F32_VELU__AVX512F_RR1_P6_X80, batch_gt_80) {
9841 TEST_REQUIRES_X86_AVX512F;
9842 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009843 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009844 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009845 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009846 }
9847 }
9848
9849 TEST(F32_VELU__AVX512F_RR1_P6_X80, inplace) {
9850 TEST_REQUIRES_X86_AVX512F;
9851 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009852 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009853 .batch_size(batch_size)
9854 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009855 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009856 }
9857 }
9858
9859 TEST(F32_VELU__AVX512F_RR1_P6_X80, prescale) {
9860 TEST_REQUIRES_X86_AVX512F;
9861 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9862 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009863 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009864 .batch_size(batch_size)
9865 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009866 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009867 }
9868 }
9869 }
9870
9871 TEST(F32_VELU__AVX512F_RR1_P6_X80, alpha) {
9872 TEST_REQUIRES_X86_AVX512F;
9873 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9874 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009875 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009876 .batch_size(batch_size)
9877 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009878 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009879 }
9880 }
9881 }
9882
9883 TEST(F32_VELU__AVX512F_RR1_P6_X80, beta) {
9884 TEST_REQUIRES_X86_AVX512F;
9885 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9886 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009887 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009888 .batch_size(batch_size)
9889 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009890 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009891 }
9892 }
9893 }
9894#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9895
9896
9897#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9898 TEST(F32_VELU__AVX512F_RR1_P6_X96, batch_eq_96) {
9899 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009900 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009901 .batch_size(96)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009902 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009903 }
9904
9905 TEST(F32_VELU__AVX512F_RR1_P6_X96, batch_div_96) {
9906 TEST_REQUIRES_X86_AVX512F;
9907 for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009908 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009909 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009910 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009911 }
9912 }
9913
9914 TEST(F32_VELU__AVX512F_RR1_P6_X96, batch_lt_96) {
9915 TEST_REQUIRES_X86_AVX512F;
9916 for (size_t batch_size = 1; batch_size < 96; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009917 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009918 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009919 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009920 }
9921 }
9922
9923 TEST(F32_VELU__AVX512F_RR1_P6_X96, batch_gt_96) {
9924 TEST_REQUIRES_X86_AVX512F;
9925 for (size_t batch_size = 97; batch_size < 192; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009926 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009927 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009928 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009929 }
9930 }
9931
9932 TEST(F32_VELU__AVX512F_RR1_P6_X96, inplace) {
9933 TEST_REQUIRES_X86_AVX512F;
9934 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009935 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009936 .batch_size(batch_size)
9937 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009938 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009939 }
9940 }
9941
9942 TEST(F32_VELU__AVX512F_RR1_P6_X96, prescale) {
9943 TEST_REQUIRES_X86_AVX512F;
9944 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
9945 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009946 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009947 .batch_size(batch_size)
9948 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009949 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009950 }
9951 }
9952 }
9953
9954 TEST(F32_VELU__AVX512F_RR1_P6_X96, alpha) {
9955 TEST_REQUIRES_X86_AVX512F;
9956 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
9957 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009958 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009959 .batch_size(batch_size)
9960 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009961 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009962 }
9963 }
9964 }
9965
9966 TEST(F32_VELU__AVX512F_RR1_P6_X96, beta) {
9967 TEST_REQUIRES_X86_AVX512F;
9968 for (float beta : std::vector<float>({0.3f, 3.0f})) {
9969 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009970 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009971 .batch_size(batch_size)
9972 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009973 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009974 }
9975 }
9976 }
9977#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9978
9979
9980#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9981 TEST(F32_VELU__AVX512F_RR1_P6_X112, batch_eq_112) {
9982 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009983 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009984 .batch_size(112)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009985 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009986 }
9987
9988 TEST(F32_VELU__AVX512F_RR1_P6_X112, batch_div_112) {
9989 TEST_REQUIRES_X86_AVX512F;
9990 for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -07009991 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009992 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -08009993 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -08009994 }
9995 }
9996
9997 TEST(F32_VELU__AVX512F_RR1_P6_X112, batch_lt_112) {
9998 TEST_REQUIRES_X86_AVX512F;
9999 for (size_t batch_size = 1; batch_size < 112; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010000 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010001 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010002 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010003 }
10004 }
10005
10006 TEST(F32_VELU__AVX512F_RR1_P6_X112, batch_gt_112) {
10007 TEST_REQUIRES_X86_AVX512F;
10008 for (size_t batch_size = 113; batch_size < 224; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010009 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010010 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010011 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010012 }
10013 }
10014
10015 TEST(F32_VELU__AVX512F_RR1_P6_X112, inplace) {
10016 TEST_REQUIRES_X86_AVX512F;
10017 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010018 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010019 .batch_size(batch_size)
10020 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010021 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010022 }
10023 }
10024
10025 TEST(F32_VELU__AVX512F_RR1_P6_X112, prescale) {
10026 TEST_REQUIRES_X86_AVX512F;
10027 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10028 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010029 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010030 .batch_size(batch_size)
10031 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010032 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010033 }
10034 }
10035 }
10036
10037 TEST(F32_VELU__AVX512F_RR1_P6_X112, alpha) {
10038 TEST_REQUIRES_X86_AVX512F;
10039 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10040 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010041 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010042 .batch_size(batch_size)
10043 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010044 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010045 }
10046 }
10047 }
10048
10049 TEST(F32_VELU__AVX512F_RR1_P6_X112, beta) {
10050 TEST_REQUIRES_X86_AVX512F;
10051 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10052 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010053 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010054 .batch_size(batch_size)
10055 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010056 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010057 }
10058 }
10059 }
10060#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
10061
10062
10063#if XNN_ARCH_X86 || XNN_ARCH_X86_64
10064 TEST(F32_VELU__AVX512F_RR1_P6_X128, batch_eq_128) {
10065 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010066 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010067 .batch_size(128)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010068 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010069 }
10070
10071 TEST(F32_VELU__AVX512F_RR1_P6_X128, batch_div_128) {
10072 TEST_REQUIRES_X86_AVX512F;
10073 for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010074 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010075 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010076 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010077 }
10078 }
10079
10080 TEST(F32_VELU__AVX512F_RR1_P6_X128, batch_lt_128) {
10081 TEST_REQUIRES_X86_AVX512F;
10082 for (size_t batch_size = 1; batch_size < 128; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010083 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010084 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010085 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010086 }
10087 }
10088
10089 TEST(F32_VELU__AVX512F_RR1_P6_X128, batch_gt_128) {
10090 TEST_REQUIRES_X86_AVX512F;
10091 for (size_t batch_size = 129; batch_size < 256; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010092 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010093 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010094 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010095 }
10096 }
10097
10098 TEST(F32_VELU__AVX512F_RR1_P6_X128, inplace) {
10099 TEST_REQUIRES_X86_AVX512F;
10100 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010101 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010102 .batch_size(batch_size)
10103 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010104 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010105 }
10106 }
10107
10108 TEST(F32_VELU__AVX512F_RR1_P6_X128, prescale) {
10109 TEST_REQUIRES_X86_AVX512F;
10110 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10111 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010112 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010113 .batch_size(batch_size)
10114 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010115 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010116 }
10117 }
10118 }
10119
10120 TEST(F32_VELU__AVX512F_RR1_P6_X128, alpha) {
10121 TEST_REQUIRES_X86_AVX512F;
10122 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10123 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010124 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010125 .batch_size(batch_size)
10126 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010127 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010128 }
10129 }
10130 }
10131
10132 TEST(F32_VELU__AVX512F_RR1_P6_X128, beta) {
10133 TEST_REQUIRES_X86_AVX512F;
10134 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10135 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010136 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010137 .batch_size(batch_size)
10138 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010139 .Test(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128, xnn_init_f32_elu_avx512_rr1_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010140 }
10141 }
10142 }
10143#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
10144
10145
Marat Dukhan4c617792021-12-21 15:47:58 -080010146#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010147 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010148 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010149 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010150 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010151 }
10152
10153 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, batch_div_4) {
10154 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010155 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010156 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010157 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010158 }
10159 }
10160
10161 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, batch_lt_4) {
10162 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010163 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010164 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010165 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010166 }
10167 }
10168
10169 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, batch_gt_4) {
10170 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010171 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010172 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010173 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010174 }
10175 }
10176
10177 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, inplace) {
10178 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010179 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010180 .batch_size(batch_size)
10181 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010182 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010183 }
10184 }
10185
10186 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, prescale) {
10187 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10188 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010189 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010190 .batch_size(batch_size)
10191 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010192 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010193 }
10194 }
10195 }
10196
10197 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, alpha) {
10198 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10199 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010200 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010201 .batch_size(batch_size)
10202 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010203 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010204 }
10205 }
10206 }
10207
10208 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, beta) {
10209 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10210 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010211 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010212 .batch_size(batch_size)
10213 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010214 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010215 }
10216 }
10217 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010218#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010219
10220
Marat Dukhan4c617792021-12-21 15:47:58 -080010221#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010222 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, batch_eq_8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010223 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010224 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010225 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010226 }
10227
10228 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, batch_div_8) {
10229 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010230 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010231 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010232 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010233 }
10234 }
10235
10236 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, batch_lt_8) {
10237 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010238 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010239 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010240 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010241 }
10242 }
10243
10244 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, batch_gt_8) {
10245 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010246 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010247 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010248 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010249 }
10250 }
10251
10252 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, inplace) {
10253 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010254 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010255 .batch_size(batch_size)
10256 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010257 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010258 }
10259 }
10260
10261 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, prescale) {
10262 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10263 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010264 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010265 .batch_size(batch_size)
10266 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010267 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010268 }
10269 }
10270 }
10271
10272 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, alpha) {
10273 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10274 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010275 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010276 .batch_size(batch_size)
10277 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010278 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010279 }
10280 }
10281 }
10282
10283 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, beta) {
10284 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10285 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010286 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010287 .batch_size(batch_size)
10288 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010289 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010290 }
10291 }
10292 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010293#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010294
10295
Marat Dukhan4c617792021-12-21 15:47:58 -080010296#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010297 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, batch_eq_12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010298 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010299 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010300 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010301 }
10302
10303 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, batch_div_12) {
10304 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010305 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010306 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010307 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010308 }
10309 }
10310
10311 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, batch_lt_12) {
10312 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010313 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010314 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010315 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010316 }
10317 }
10318
10319 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, batch_gt_12) {
10320 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010321 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010322 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010323 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010324 }
10325 }
10326
10327 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, inplace) {
10328 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010329 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010330 .batch_size(batch_size)
10331 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010332 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010333 }
10334 }
10335
10336 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, prescale) {
10337 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10338 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010339 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010340 .batch_size(batch_size)
10341 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010342 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010343 }
10344 }
10345 }
10346
10347 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, alpha) {
10348 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10349 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010350 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010351 .batch_size(batch_size)
10352 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010353 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010354 }
10355 }
10356 }
10357
10358 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, beta) {
10359 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10360 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010361 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010362 .batch_size(batch_size)
10363 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010364 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010365 }
10366 }
10367 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010368#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010369
10370
Marat Dukhan4c617792021-12-21 15:47:58 -080010371#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010372 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, batch_eq_16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010373 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010374 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010375 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010376 }
10377
10378 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, batch_div_16) {
10379 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010380 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010381 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010382 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010383 }
10384 }
10385
10386 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, batch_lt_16) {
10387 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010388 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010389 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010390 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010391 }
10392 }
10393
10394 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, batch_gt_16) {
10395 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010396 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010397 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010398 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010399 }
10400 }
10401
10402 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, inplace) {
10403 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010404 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010405 .batch_size(batch_size)
10406 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010407 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010408 }
10409 }
10410
10411 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, prescale) {
10412 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10413 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010414 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010415 .batch_size(batch_size)
10416 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010417 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010418 }
10419 }
10420 }
10421
10422 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, alpha) {
10423 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10424 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010425 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010426 .batch_size(batch_size)
10427 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010428 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010429 }
10430 }
10431 }
10432
10433 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, beta) {
10434 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10435 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010436 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010437 .batch_size(batch_size)
10438 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010439 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010440 }
10441 }
10442 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010443#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010444
10445
Marat Dukhan4c617792021-12-21 15:47:58 -080010446#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010447 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, batch_eq_20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010448 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010449 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010450 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010451 }
10452
10453 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, batch_div_20) {
10454 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010455 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010456 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010457 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010458 }
10459 }
10460
10461 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, batch_lt_20) {
10462 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010463 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010464 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010465 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010466 }
10467 }
10468
10469 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, batch_gt_20) {
10470 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010471 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010472 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010473 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010474 }
10475 }
10476
10477 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, inplace) {
10478 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010479 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010480 .batch_size(batch_size)
10481 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010482 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010483 }
10484 }
10485
10486 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, prescale) {
10487 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10488 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010489 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010490 .batch_size(batch_size)
10491 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010492 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010493 }
10494 }
10495 }
10496
10497 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, alpha) {
10498 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10499 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010500 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010501 .batch_size(batch_size)
10502 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010503 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010504 }
10505 }
10506 }
10507
10508 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, beta) {
10509 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10510 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010511 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010512 .batch_size(batch_size)
10513 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010514 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010515 }
10516 }
10517 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010518#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010519
10520
Marat Dukhan4c617792021-12-21 15:47:58 -080010521#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010522 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, batch_eq_24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010523 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010524 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010525 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010526 }
10527
10528 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, batch_div_24) {
10529 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010530 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010531 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010532 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010533 }
10534 }
10535
10536 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, batch_lt_24) {
10537 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010538 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010539 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010540 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010541 }
10542 }
10543
10544 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, batch_gt_24) {
10545 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010546 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010547 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010548 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010549 }
10550 }
10551
10552 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, inplace) {
10553 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010554 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010555 .batch_size(batch_size)
10556 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010557 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010558 }
10559 }
10560
10561 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, prescale) {
10562 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10563 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010564 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010565 .batch_size(batch_size)
10566 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010567 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010568 }
10569 }
10570 }
10571
10572 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, alpha) {
10573 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10574 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010575 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010576 .batch_size(batch_size)
10577 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010578 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010579 }
10580 }
10581 }
10582
10583 TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, beta) {
10584 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10585 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010586 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010587 .batch_size(batch_size)
10588 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010589 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010590 }
10591 }
10592 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010593#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010594
10595
Marat Dukhan4c617792021-12-21 15:47:58 -080010596#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010597 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010598 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010599 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010600 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010601 }
10602
10603 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, batch_div_4) {
10604 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010605 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010606 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010607 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010608 }
10609 }
10610
10611 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, batch_lt_4) {
10612 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010613 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010614 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010615 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010616 }
10617 }
10618
10619 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, batch_gt_4) {
10620 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010621 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010622 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010623 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010624 }
10625 }
10626
10627 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, inplace) {
10628 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010629 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010630 .batch_size(batch_size)
10631 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010632 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010633 }
10634 }
10635
10636 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, prescale) {
10637 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10638 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010639 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010640 .batch_size(batch_size)
10641 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010642 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010643 }
10644 }
10645 }
10646
10647 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, alpha) {
10648 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10649 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010650 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010651 .batch_size(batch_size)
10652 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010653 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010654 }
10655 }
10656 }
10657
10658 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, beta) {
10659 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10660 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010661 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010662 .batch_size(batch_size)
10663 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010664 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010665 }
10666 }
10667 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010668#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010669
10670
Marat Dukhan4c617792021-12-21 15:47:58 -080010671#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010672 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, batch_eq_8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010673 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010674 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010675 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010676 }
10677
10678 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, batch_div_8) {
10679 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010680 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010681 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010682 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010683 }
10684 }
10685
10686 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, batch_lt_8) {
10687 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010688 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010689 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010690 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010691 }
10692 }
10693
10694 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, batch_gt_8) {
10695 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010696 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010697 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010698 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010699 }
10700 }
10701
10702 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, inplace) {
10703 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010704 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010705 .batch_size(batch_size)
10706 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010707 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010708 }
10709 }
10710
10711 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, prescale) {
10712 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10713 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010714 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010715 .batch_size(batch_size)
10716 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010717 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010718 }
10719 }
10720 }
10721
10722 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, alpha) {
10723 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10724 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010725 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010726 .batch_size(batch_size)
10727 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010728 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010729 }
10730 }
10731 }
10732
10733 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, beta) {
10734 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10735 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010736 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010737 .batch_size(batch_size)
10738 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010739 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010740 }
10741 }
10742 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010743#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010744
10745
Marat Dukhan4c617792021-12-21 15:47:58 -080010746#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010747 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, batch_eq_12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010748 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010749 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010750 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010751 }
10752
10753 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, batch_div_12) {
10754 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010755 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010756 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010757 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010758 }
10759 }
10760
10761 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, batch_lt_12) {
10762 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010763 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010764 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010765 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010766 }
10767 }
10768
10769 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, batch_gt_12) {
10770 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010771 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010772 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010773 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010774 }
10775 }
10776
10777 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, inplace) {
10778 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010779 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010780 .batch_size(batch_size)
10781 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010782 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010783 }
10784 }
10785
10786 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, prescale) {
10787 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10788 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010789 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010790 .batch_size(batch_size)
10791 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010792 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010793 }
10794 }
10795 }
10796
10797 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, alpha) {
10798 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10799 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010800 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010801 .batch_size(batch_size)
10802 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010803 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010804 }
10805 }
10806 }
10807
10808 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, beta) {
10809 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10810 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010811 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010812 .batch_size(batch_size)
10813 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010814 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010815 }
10816 }
10817 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010818#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010819
10820
Marat Dukhan4c617792021-12-21 15:47:58 -080010821#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010822 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, batch_eq_16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010823 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010824 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010825 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010826 }
10827
10828 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, batch_div_16) {
10829 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010830 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010831 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010832 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010833 }
10834 }
10835
10836 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, batch_lt_16) {
10837 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010838 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010839 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010840 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010841 }
10842 }
10843
10844 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, batch_gt_16) {
10845 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010846 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010847 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010848 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010849 }
10850 }
10851
10852 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, inplace) {
10853 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010854 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010855 .batch_size(batch_size)
10856 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010857 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010858 }
10859 }
10860
10861 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, prescale) {
10862 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10863 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010864 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010865 .batch_size(batch_size)
10866 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010867 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010868 }
10869 }
10870 }
10871
10872 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, alpha) {
10873 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10874 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010875 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010876 .batch_size(batch_size)
10877 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010878 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010879 }
10880 }
10881 }
10882
10883 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, beta) {
10884 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10885 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010886 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010887 .batch_size(batch_size)
10888 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010889 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010890 }
10891 }
10892 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010893#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010894
10895
Marat Dukhan4c617792021-12-21 15:47:58 -080010896#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010897 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, batch_eq_20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010898 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010899 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010900 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010901 }
10902
10903 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, batch_div_20) {
10904 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010905 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010906 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010907 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010908 }
10909 }
10910
10911 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, batch_lt_20) {
10912 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010913 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010914 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010915 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010916 }
10917 }
10918
10919 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, batch_gt_20) {
10920 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010921 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010922 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010923 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010924 }
10925 }
10926
10927 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, inplace) {
10928 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010929 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010930 .batch_size(batch_size)
10931 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010932 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010933 }
10934 }
10935
10936 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, prescale) {
10937 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
10938 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010939 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010940 .batch_size(batch_size)
10941 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010942 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010943 }
10944 }
10945 }
10946
10947 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, alpha) {
10948 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
10949 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010950 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010951 .batch_size(batch_size)
10952 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010953 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010954 }
10955 }
10956 }
10957
10958 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, beta) {
10959 for (float beta : std::vector<float>({0.3f, 3.0f})) {
10960 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010961 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010962 .batch_size(batch_size)
10963 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010964 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010965 }
10966 }
10967 }
Marat Dukhan4c617792021-12-21 15:47:58 -080010968#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010969
10970
Marat Dukhan4c617792021-12-21 15:47:58 -080010971#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010972 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, batch_eq_24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010973 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010974 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010975 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010976 }
10977
10978 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, batch_div_24) {
10979 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010980 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010981 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010982 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010983 }
10984 }
10985
10986 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, batch_lt_24) {
10987 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010988 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010989 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010990 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010991 }
10992 }
10993
10994 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, batch_gt_24) {
10995 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070010996 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010997 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080010998 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080010999 }
11000 }
11001
11002 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, inplace) {
11003 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011004 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011005 .batch_size(batch_size)
11006 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011007 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011008 }
11009 }
11010
11011 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, prescale) {
11012 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11013 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011014 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011015 .batch_size(batch_size)
11016 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011017 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011018 }
11019 }
11020 }
11021
11022 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, alpha) {
11023 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11024 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011025 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011026 .batch_size(batch_size)
11027 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011028 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011029 }
11030 }
11031 }
11032
11033 TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, beta) {
11034 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11035 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011036 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011037 .batch_size(batch_size)
11038 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011039 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24, xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011040 }
11041 }
11042 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011043#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011044
11045
Marat Dukhan4c617792021-12-21 15:47:58 -080011046#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011047 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011048 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011049 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011050 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011051 }
11052
11053 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, batch_div_4) {
11054 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011055 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011056 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011057 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011058 }
11059 }
11060
11061 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, batch_lt_4) {
11062 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011063 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011064 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011065 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011066 }
11067 }
11068
11069 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, batch_gt_4) {
11070 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011071 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011072 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011073 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011074 }
11075 }
11076
11077 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, inplace) {
11078 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011079 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011080 .batch_size(batch_size)
11081 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011082 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011083 }
11084 }
11085
11086 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, prescale) {
11087 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11088 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011089 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011090 .batch_size(batch_size)
11091 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011092 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011093 }
11094 }
11095 }
11096
11097 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, alpha) {
11098 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11099 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011100 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011101 .batch_size(batch_size)
11102 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011103 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011104 }
11105 }
11106 }
11107
11108 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, beta) {
11109 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11110 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011111 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011112 .batch_size(batch_size)
11113 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011114 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011115 }
11116 }
11117 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011118#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011119
11120
Marat Dukhan4c617792021-12-21 15:47:58 -080011121#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011122 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, batch_eq_8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011123 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011124 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011125 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011126 }
11127
11128 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, batch_div_8) {
11129 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011130 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011131 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011132 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011133 }
11134 }
11135
11136 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, batch_lt_8) {
11137 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011138 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011139 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011140 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011141 }
11142 }
11143
11144 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, batch_gt_8) {
11145 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011146 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011147 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011148 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011149 }
11150 }
11151
11152 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, inplace) {
11153 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011154 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011155 .batch_size(batch_size)
11156 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011157 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011158 }
11159 }
11160
11161 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, prescale) {
11162 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11163 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011164 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011165 .batch_size(batch_size)
11166 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011167 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011168 }
11169 }
11170 }
11171
11172 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, alpha) {
11173 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11174 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011175 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011176 .batch_size(batch_size)
11177 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011178 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011179 }
11180 }
11181 }
11182
11183 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, beta) {
11184 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11185 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011186 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011187 .batch_size(batch_size)
11188 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011189 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011190 }
11191 }
11192 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011193#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011194
11195
Marat Dukhan4c617792021-12-21 15:47:58 -080011196#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011197 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, batch_eq_12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011198 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011199 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011200 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011201 }
11202
11203 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, batch_div_12) {
11204 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011205 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011206 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011207 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011208 }
11209 }
11210
11211 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, batch_lt_12) {
11212 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011213 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011214 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011215 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011216 }
11217 }
11218
11219 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, batch_gt_12) {
11220 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011221 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011222 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011223 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011224 }
11225 }
11226
11227 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, inplace) {
11228 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011229 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011230 .batch_size(batch_size)
11231 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011232 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011233 }
11234 }
11235
11236 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, prescale) {
11237 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11238 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011239 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011240 .batch_size(batch_size)
11241 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011242 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011243 }
11244 }
11245 }
11246
11247 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, alpha) {
11248 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11249 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011250 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011251 .batch_size(batch_size)
11252 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011253 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011254 }
11255 }
11256 }
11257
11258 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, beta) {
11259 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11260 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011261 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011262 .batch_size(batch_size)
11263 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011264 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011265 }
11266 }
11267 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011268#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011269
11270
Marat Dukhan4c617792021-12-21 15:47:58 -080011271#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011272 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, batch_eq_16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011273 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011274 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011275 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011276 }
11277
11278 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, batch_div_16) {
11279 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011280 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011281 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011282 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011283 }
11284 }
11285
11286 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, batch_lt_16) {
11287 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011288 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011289 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011290 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011291 }
11292 }
11293
11294 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, batch_gt_16) {
11295 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011296 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011297 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011298 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011299 }
11300 }
11301
11302 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, inplace) {
11303 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011304 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011305 .batch_size(batch_size)
11306 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011307 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011308 }
11309 }
11310
11311 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, prescale) {
11312 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11313 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011314 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011315 .batch_size(batch_size)
11316 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011317 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011318 }
11319 }
11320 }
11321
11322 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, alpha) {
11323 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11324 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011325 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011326 .batch_size(batch_size)
11327 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011328 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011329 }
11330 }
11331 }
11332
11333 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, beta) {
11334 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11335 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011336 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011337 .batch_size(batch_size)
11338 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011339 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011340 }
11341 }
11342 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011343#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011344
11345
Marat Dukhan4c617792021-12-21 15:47:58 -080011346#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011347 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, batch_eq_20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011348 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011349 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011350 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011351 }
11352
11353 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, batch_div_20) {
11354 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011355 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011356 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011357 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011358 }
11359 }
11360
11361 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, batch_lt_20) {
11362 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011363 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011364 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011365 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011366 }
11367 }
11368
11369 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, batch_gt_20) {
11370 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011371 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011372 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011373 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011374 }
11375 }
11376
11377 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, inplace) {
11378 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011379 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011380 .batch_size(batch_size)
11381 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011382 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011383 }
11384 }
11385
11386 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, prescale) {
11387 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11388 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011389 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011390 .batch_size(batch_size)
11391 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011392 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011393 }
11394 }
11395 }
11396
11397 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, alpha) {
11398 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11399 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011400 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011401 .batch_size(batch_size)
11402 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011403 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011404 }
11405 }
11406 }
11407
11408 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, beta) {
11409 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11410 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011411 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011412 .batch_size(batch_size)
11413 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011414 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011415 }
11416 }
11417 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011418#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011419
11420
Marat Dukhan4c617792021-12-21 15:47:58 -080011421#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011422 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, batch_eq_24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011423 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011424 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011425 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011426 }
11427
11428 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, batch_div_24) {
11429 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011430 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011431 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011432 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011433 }
11434 }
11435
11436 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, batch_lt_24) {
11437 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011438 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011439 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011440 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011441 }
11442 }
11443
11444 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, batch_gt_24) {
11445 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011446 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011447 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011448 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011449 }
11450 }
11451
11452 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, inplace) {
11453 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011454 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011455 .batch_size(batch_size)
11456 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011457 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011458 }
11459 }
11460
11461 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, prescale) {
11462 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11463 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011464 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011465 .batch_size(batch_size)
11466 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011467 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011468 }
11469 }
11470 }
11471
11472 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, alpha) {
11473 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11474 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011475 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011476 .batch_size(batch_size)
11477 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011478 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011479 }
11480 }
11481 }
11482
11483 TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, beta) {
11484 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11485 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011486 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011487 .batch_size(batch_size)
11488 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011489 .Test(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011490 }
11491 }
11492 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011493#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011494
11495
Marat Dukhan4c617792021-12-21 15:47:58 -080011496#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011497 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011498 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011499 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011500 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011501 }
11502
11503 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, batch_div_4) {
11504 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011505 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011506 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011507 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011508 }
11509 }
11510
11511 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, batch_lt_4) {
11512 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011513 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011514 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011515 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011516 }
11517 }
11518
11519 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, batch_gt_4) {
11520 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011521 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011522 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011523 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011524 }
11525 }
11526
11527 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, inplace) {
11528 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011529 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011530 .batch_size(batch_size)
11531 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011532 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011533 }
11534 }
11535
11536 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, prescale) {
11537 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11538 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011539 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011540 .batch_size(batch_size)
11541 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011542 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011543 }
11544 }
11545 }
11546
11547 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, alpha) {
11548 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11549 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011550 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011551 .batch_size(batch_size)
11552 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011553 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011554 }
11555 }
11556 }
11557
11558 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, beta) {
11559 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11560 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011561 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011562 .batch_size(batch_size)
11563 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011564 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011565 }
11566 }
11567 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011568#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011569
11570
Marat Dukhan4c617792021-12-21 15:47:58 -080011571#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011572 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, batch_eq_8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011573 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011574 .batch_size(8)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011575 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011576 }
11577
11578 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, batch_div_8) {
11579 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011580 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011581 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011582 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011583 }
11584 }
11585
11586 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, batch_lt_8) {
11587 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011588 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011589 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011590 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011591 }
11592 }
11593
11594 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, batch_gt_8) {
11595 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011596 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011597 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011598 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011599 }
11600 }
11601
11602 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, inplace) {
11603 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011604 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011605 .batch_size(batch_size)
11606 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011607 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011608 }
11609 }
11610
11611 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, prescale) {
11612 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11613 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011614 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011615 .batch_size(batch_size)
11616 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011617 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011618 }
11619 }
11620 }
11621
11622 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, alpha) {
11623 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11624 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011625 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011626 .batch_size(batch_size)
11627 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011628 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011629 }
11630 }
11631 }
11632
11633 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, beta) {
11634 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11635 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011636 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011637 .batch_size(batch_size)
11638 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011639 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011640 }
11641 }
11642 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011643#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011644
11645
Marat Dukhan4c617792021-12-21 15:47:58 -080011646#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011647 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, batch_eq_12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011648 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011649 .batch_size(12)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011650 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011651 }
11652
11653 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, batch_div_12) {
11654 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011655 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011656 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011657 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011658 }
11659 }
11660
11661 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, batch_lt_12) {
11662 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011663 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011664 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011665 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011666 }
11667 }
11668
11669 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, batch_gt_12) {
11670 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011671 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011672 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011673 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011674 }
11675 }
11676
11677 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, inplace) {
11678 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011679 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011680 .batch_size(batch_size)
11681 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011682 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011683 }
11684 }
11685
11686 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, prescale) {
11687 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11688 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011689 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011690 .batch_size(batch_size)
11691 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011692 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011693 }
11694 }
11695 }
11696
11697 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, alpha) {
11698 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11699 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011700 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011701 .batch_size(batch_size)
11702 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011703 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011704 }
11705 }
11706 }
11707
11708 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, beta) {
11709 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11710 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011711 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011712 .batch_size(batch_size)
11713 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011714 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011715 }
11716 }
11717 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011718#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011719
11720
Marat Dukhan4c617792021-12-21 15:47:58 -080011721#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011722 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, batch_eq_16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011723 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011724 .batch_size(16)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011725 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011726 }
11727
11728 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, batch_div_16) {
11729 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011730 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011731 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011732 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011733 }
11734 }
11735
11736 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, batch_lt_16) {
11737 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011738 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011739 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011740 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011741 }
11742 }
11743
11744 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, batch_gt_16) {
11745 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011746 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011747 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011748 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011749 }
11750 }
11751
11752 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, inplace) {
11753 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011754 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011755 .batch_size(batch_size)
11756 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011757 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011758 }
11759 }
11760
11761 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, prescale) {
11762 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11763 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011764 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011765 .batch_size(batch_size)
11766 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011767 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011768 }
11769 }
11770 }
11771
11772 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, alpha) {
11773 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11774 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011775 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011776 .batch_size(batch_size)
11777 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011778 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011779 }
11780 }
11781 }
11782
11783 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, beta) {
11784 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11785 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011786 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011787 .batch_size(batch_size)
11788 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011789 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011790 }
11791 }
11792 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011793#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011794
11795
Marat Dukhan4c617792021-12-21 15:47:58 -080011796#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011797 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, batch_eq_20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011798 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011799 .batch_size(20)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011800 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011801 }
11802
11803 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, batch_div_20) {
11804 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011805 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011806 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011807 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011808 }
11809 }
11810
11811 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, batch_lt_20) {
11812 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011813 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011814 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011815 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011816 }
11817 }
11818
11819 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, batch_gt_20) {
11820 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011821 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011822 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011823 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011824 }
11825 }
11826
11827 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, inplace) {
11828 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011829 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011830 .batch_size(batch_size)
11831 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011832 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011833 }
11834 }
11835
11836 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, prescale) {
11837 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11838 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011839 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011840 .batch_size(batch_size)
11841 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011842 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011843 }
11844 }
11845 }
11846
11847 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, alpha) {
11848 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11849 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011850 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011851 .batch_size(batch_size)
11852 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011853 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011854 }
11855 }
11856 }
11857
11858 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, beta) {
11859 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11860 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011861 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011862 .batch_size(batch_size)
11863 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011864 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011865 }
11866 }
11867 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011868#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011869
11870
Marat Dukhan4c617792021-12-21 15:47:58 -080011871#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011872 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, batch_eq_24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011873 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011874 .batch_size(24)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011875 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011876 }
11877
11878 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, batch_div_24) {
11879 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011880 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011881 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011882 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011883 }
11884 }
11885
11886 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, batch_lt_24) {
11887 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011888 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011889 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011890 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011891 }
11892 }
11893
11894 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, batch_gt_24) {
11895 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011896 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011897 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011898 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011899 }
11900 }
11901
11902 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, inplace) {
11903 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011904 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011905 .batch_size(batch_size)
11906 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011907 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011908 }
11909 }
11910
11911 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, prescale) {
11912 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11913 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011914 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011915 .batch_size(batch_size)
11916 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011917 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011918 }
11919 }
11920 }
11921
11922 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, alpha) {
11923 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11924 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011925 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011926 .batch_size(batch_size)
11927 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011928 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011929 }
11930 }
11931 }
11932
11933 TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, beta) {
11934 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11935 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011936 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011937 .batch_size(batch_size)
11938 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011939 .Test(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24, xnn_init_f32_elu_wasmsimd_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011940 }
11941 }
11942 }
Marat Dukhan4c617792021-12-21 15:47:58 -080011943#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011944
11945
Marat Dukhan4c617792021-12-21 15:47:58 -080011946#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011947 TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, batch_eq_1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011948 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011949 .batch_size(1)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011950 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011951 }
11952
11953 TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, batch_gt_1) {
11954 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011955 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011956 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011957 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011958 }
11959 }
11960
11961 TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, inplace) {
11962 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011963 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011964 .batch_size(batch_size)
11965 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011966 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011967 }
11968 }
11969
11970 TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, prescale) {
11971 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
11972 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011973 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011974 .batch_size(batch_size)
11975 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011976 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011977 }
11978 }
11979 }
11980
11981 TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, alpha) {
11982 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
11983 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011984 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011985 .batch_size(batch_size)
11986 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011987 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011988 }
11989 }
11990 }
11991
11992 TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, beta) {
11993 for (float beta : std::vector<float>({0.3f, 3.0f})) {
11994 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070011995 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011996 .batch_size(batch_size)
11997 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080011998 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080011999 }
12000 }
12001 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012002#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012003
12004
Marat Dukhan4c617792021-12-21 15:47:58 -080012005#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012006 TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, batch_eq_2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012007 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012008 .batch_size(2)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012009 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012010 }
12011
12012 TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, batch_div_2) {
12013 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012014 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012015 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012016 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012017 }
12018 }
12019
12020 TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, batch_lt_2) {
12021 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012022 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012023 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012024 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012025 }
12026 }
12027
12028 TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, batch_gt_2) {
12029 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012030 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012031 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012032 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012033 }
12034 }
12035
12036 TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, inplace) {
12037 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012038 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012039 .batch_size(batch_size)
12040 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012041 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012042 }
12043 }
12044
12045 TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, prescale) {
12046 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12047 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012048 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012049 .batch_size(batch_size)
12050 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012051 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012052 }
12053 }
12054 }
12055
12056 TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, alpha) {
12057 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12058 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012059 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012060 .batch_size(batch_size)
12061 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012062 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012063 }
12064 }
12065 }
12066
12067 TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, beta) {
12068 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12069 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012070 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012071 .batch_size(batch_size)
12072 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012073 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012074 }
12075 }
12076 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012077#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012078
12079
Marat Dukhan4c617792021-12-21 15:47:58 -080012080#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012081 TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, batch_eq_3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012082 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012083 .batch_size(3)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012084 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012085 }
12086
12087 TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, batch_div_3) {
12088 for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012089 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012090 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012091 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012092 }
12093 }
12094
12095 TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, batch_lt_3) {
12096 for (size_t batch_size = 1; batch_size < 3; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012097 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012098 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012099 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012100 }
12101 }
12102
12103 TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, batch_gt_3) {
12104 for (size_t batch_size = 4; batch_size < 6; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012105 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012106 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012107 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012108 }
12109 }
12110
12111 TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, inplace) {
12112 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012113 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012114 .batch_size(batch_size)
12115 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012116 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012117 }
12118 }
12119
12120 TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, prescale) {
12121 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12122 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012123 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012124 .batch_size(batch_size)
12125 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012126 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012127 }
12128 }
12129 }
12130
12131 TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, alpha) {
12132 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12133 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012134 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012135 .batch_size(batch_size)
12136 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012137 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012138 }
12139 }
12140 }
12141
12142 TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, beta) {
12143 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12144 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012145 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012146 .batch_size(batch_size)
12147 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012148 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012149 }
12150 }
12151 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012152#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012153
12154
Marat Dukhan4c617792021-12-21 15:47:58 -080012155#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012156 TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012157 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012158 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012159 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012160 }
12161
12162 TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, batch_div_4) {
12163 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012164 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012165 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012166 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012167 }
12168 }
12169
12170 TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, batch_lt_4) {
12171 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012172 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012173 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012174 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012175 }
12176 }
12177
12178 TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, batch_gt_4) {
12179 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012180 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012181 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012182 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012183 }
12184 }
12185
12186 TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, inplace) {
12187 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012188 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012189 .batch_size(batch_size)
12190 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012191 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012192 }
12193 }
12194
12195 TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, prescale) {
12196 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12197 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012198 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012199 .batch_size(batch_size)
12200 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012201 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012202 }
12203 }
12204 }
12205
12206 TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, alpha) {
12207 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12208 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012209 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012210 .batch_size(batch_size)
12211 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012212 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012213 }
12214 }
12215 }
12216
12217 TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, beta) {
12218 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12219 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012220 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012221 .batch_size(batch_size)
12222 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012223 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012224 }
12225 }
12226 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012227#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012228
12229
Marat Dukhan4c617792021-12-21 15:47:58 -080012230#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012231 TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, batch_eq_5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012232 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012233 .batch_size(5)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012234 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012235 }
12236
12237 TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, batch_div_5) {
12238 for (size_t batch_size = 10; batch_size < 50; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012239 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012240 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012241 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012242 }
12243 }
12244
12245 TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, batch_lt_5) {
12246 for (size_t batch_size = 1; batch_size < 5; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012247 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012248 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012249 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012250 }
12251 }
12252
12253 TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, batch_gt_5) {
12254 for (size_t batch_size = 6; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012255 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012256 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012257 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012258 }
12259 }
12260
12261 TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, inplace) {
12262 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012263 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012264 .batch_size(batch_size)
12265 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012266 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012267 }
12268 }
12269
12270 TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, prescale) {
12271 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12272 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012273 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012274 .batch_size(batch_size)
12275 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012276 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012277 }
12278 }
12279 }
12280
12281 TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, alpha) {
12282 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12283 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012284 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012285 .batch_size(batch_size)
12286 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012287 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012288 }
12289 }
12290 }
12291
12292 TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, beta) {
12293 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12294 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012295 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012296 .batch_size(batch_size)
12297 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012298 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012299 }
12300 }
12301 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012302#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012303
12304
Marat Dukhan4c617792021-12-21 15:47:58 -080012305#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012306 TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, batch_eq_6) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012307 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012308 .batch_size(6)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012309 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012310 }
12311
12312 TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, batch_div_6) {
12313 for (size_t batch_size = 12; batch_size < 60; batch_size += 6) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012314 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012315 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012316 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012317 }
12318 }
12319
12320 TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, batch_lt_6) {
12321 for (size_t batch_size = 1; batch_size < 6; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012322 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012323 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012324 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012325 }
12326 }
12327
12328 TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, batch_gt_6) {
12329 for (size_t batch_size = 7; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012330 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012331 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012332 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012333 }
12334 }
12335
12336 TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, inplace) {
12337 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012338 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012339 .batch_size(batch_size)
12340 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012341 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012342 }
12343 }
12344
12345 TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, prescale) {
12346 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12347 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012348 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012349 .batch_size(batch_size)
12350 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012351 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012352 }
12353 }
12354 }
12355
12356 TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, alpha) {
12357 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12358 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012359 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012360 .batch_size(batch_size)
12361 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012362 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012363 }
12364 }
12365 }
12366
12367 TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, beta) {
12368 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12369 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012370 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012371 .batch_size(batch_size)
12372 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012373 .Test(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012374 }
12375 }
12376 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012377#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012378
12379
Marat Dukhan4c617792021-12-21 15:47:58 -080012380#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012381 TEST(F32_VELU__WASM_RR2_P6_X1, batch_eq_1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012382 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012383 .batch_size(1)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012384 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012385 }
12386
12387 TEST(F32_VELU__WASM_RR2_P6_X1, batch_gt_1) {
12388 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012389 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012390 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012391 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012392 }
12393 }
12394
12395 TEST(F32_VELU__WASM_RR2_P6_X1, inplace) {
12396 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012397 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012398 .batch_size(batch_size)
12399 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012400 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012401 }
12402 }
12403
12404 TEST(F32_VELU__WASM_RR2_P6_X1, prescale) {
12405 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12406 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012407 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012408 .batch_size(batch_size)
12409 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012410 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012411 }
12412 }
12413 }
12414
12415 TEST(F32_VELU__WASM_RR2_P6_X1, alpha) {
12416 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12417 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012418 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012419 .batch_size(batch_size)
12420 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012421 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012422 }
12423 }
12424 }
12425
12426 TEST(F32_VELU__WASM_RR2_P6_X1, beta) {
12427 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12428 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012429 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012430 .batch_size(batch_size)
12431 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012432 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012433 }
12434 }
12435 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012436#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012437
12438
Marat Dukhan4c617792021-12-21 15:47:58 -080012439#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012440 TEST(F32_VELU__WASM_RR2_P6_X2, batch_eq_2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012441 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012442 .batch_size(2)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012443 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012444 }
12445
12446 TEST(F32_VELU__WASM_RR2_P6_X2, batch_div_2) {
12447 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012448 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012449 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012450 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012451 }
12452 }
12453
12454 TEST(F32_VELU__WASM_RR2_P6_X2, batch_lt_2) {
12455 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012456 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012457 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012458 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012459 }
12460 }
12461
12462 TEST(F32_VELU__WASM_RR2_P6_X2, batch_gt_2) {
12463 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012464 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012465 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012466 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012467 }
12468 }
12469
12470 TEST(F32_VELU__WASM_RR2_P6_X2, inplace) {
12471 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012472 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012473 .batch_size(batch_size)
12474 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012475 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012476 }
12477 }
12478
12479 TEST(F32_VELU__WASM_RR2_P6_X2, prescale) {
12480 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12481 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012482 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012483 .batch_size(batch_size)
12484 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012485 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012486 }
12487 }
12488 }
12489
12490 TEST(F32_VELU__WASM_RR2_P6_X2, alpha) {
12491 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12492 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012493 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012494 .batch_size(batch_size)
12495 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012496 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012497 }
12498 }
12499 }
12500
12501 TEST(F32_VELU__WASM_RR2_P6_X2, beta) {
12502 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12503 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012504 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012505 .batch_size(batch_size)
12506 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012507 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012508 }
12509 }
12510 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012511#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012512
12513
Marat Dukhan4c617792021-12-21 15:47:58 -080012514#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012515 TEST(F32_VELU__WASM_RR2_P6_X3, batch_eq_3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012516 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012517 .batch_size(3)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012518 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012519 }
12520
12521 TEST(F32_VELU__WASM_RR2_P6_X3, batch_div_3) {
12522 for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012523 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012524 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012525 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012526 }
12527 }
12528
12529 TEST(F32_VELU__WASM_RR2_P6_X3, batch_lt_3) {
12530 for (size_t batch_size = 1; batch_size < 3; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012531 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012532 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012533 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012534 }
12535 }
12536
12537 TEST(F32_VELU__WASM_RR2_P6_X3, batch_gt_3) {
12538 for (size_t batch_size = 4; batch_size < 6; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012539 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012540 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012541 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012542 }
12543 }
12544
12545 TEST(F32_VELU__WASM_RR2_P6_X3, inplace) {
12546 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012547 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012548 .batch_size(batch_size)
12549 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012550 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012551 }
12552 }
12553
12554 TEST(F32_VELU__WASM_RR2_P6_X3, prescale) {
12555 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12556 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012557 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012558 .batch_size(batch_size)
12559 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012560 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012561 }
12562 }
12563 }
12564
12565 TEST(F32_VELU__WASM_RR2_P6_X3, alpha) {
12566 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12567 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012568 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012569 .batch_size(batch_size)
12570 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012571 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012572 }
12573 }
12574 }
12575
12576 TEST(F32_VELU__WASM_RR2_P6_X3, beta) {
12577 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12578 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012579 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012580 .batch_size(batch_size)
12581 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012582 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012583 }
12584 }
12585 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012586#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012587
12588
Marat Dukhan4c617792021-12-21 15:47:58 -080012589#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012590 TEST(F32_VELU__WASM_RR2_P6_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012591 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012592 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012593 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012594 }
12595
12596 TEST(F32_VELU__WASM_RR2_P6_X4, batch_div_4) {
12597 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012598 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012599 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012600 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012601 }
12602 }
12603
12604 TEST(F32_VELU__WASM_RR2_P6_X4, batch_lt_4) {
12605 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012606 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012607 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012608 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012609 }
12610 }
12611
12612 TEST(F32_VELU__WASM_RR2_P6_X4, batch_gt_4) {
12613 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012614 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012615 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012616 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012617 }
12618 }
12619
12620 TEST(F32_VELU__WASM_RR2_P6_X4, inplace) {
12621 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012622 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012623 .batch_size(batch_size)
12624 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012625 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012626 }
12627 }
12628
12629 TEST(F32_VELU__WASM_RR2_P6_X4, prescale) {
12630 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12631 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012632 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012633 .batch_size(batch_size)
12634 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012635 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012636 }
12637 }
12638 }
12639
12640 TEST(F32_VELU__WASM_RR2_P6_X4, alpha) {
12641 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12642 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012643 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012644 .batch_size(batch_size)
12645 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012646 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012647 }
12648 }
12649 }
12650
12651 TEST(F32_VELU__WASM_RR2_P6_X4, beta) {
12652 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12653 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012654 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012655 .batch_size(batch_size)
12656 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012657 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012658 }
12659 }
12660 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012661#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012662
12663
Marat Dukhan4c617792021-12-21 15:47:58 -080012664#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012665 TEST(F32_VELU__WASM_RR2_P6_X5, batch_eq_5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012666 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012667 .batch_size(5)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012668 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012669 }
12670
12671 TEST(F32_VELU__WASM_RR2_P6_X5, batch_div_5) {
12672 for (size_t batch_size = 10; batch_size < 50; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012673 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012674 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012675 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012676 }
12677 }
12678
12679 TEST(F32_VELU__WASM_RR2_P6_X5, batch_lt_5) {
12680 for (size_t batch_size = 1; batch_size < 5; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012681 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012682 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012683 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012684 }
12685 }
12686
12687 TEST(F32_VELU__WASM_RR2_P6_X5, batch_gt_5) {
12688 for (size_t batch_size = 6; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012689 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012690 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012691 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012692 }
12693 }
12694
12695 TEST(F32_VELU__WASM_RR2_P6_X5, inplace) {
12696 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012697 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012698 .batch_size(batch_size)
12699 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012700 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012701 }
12702 }
12703
12704 TEST(F32_VELU__WASM_RR2_P6_X5, prescale) {
12705 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12706 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012707 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012708 .batch_size(batch_size)
12709 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012710 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012711 }
12712 }
12713 }
12714
12715 TEST(F32_VELU__WASM_RR2_P6_X5, alpha) {
12716 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12717 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012718 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012719 .batch_size(batch_size)
12720 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012721 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012722 }
12723 }
12724 }
12725
12726 TEST(F32_VELU__WASM_RR2_P6_X5, beta) {
12727 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12728 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012729 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012730 .batch_size(batch_size)
12731 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012732 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012733 }
12734 }
12735 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012736#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012737
12738
Marat Dukhan4c617792021-12-21 15:47:58 -080012739#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012740 TEST(F32_VELU__WASM_RR2_P6_X6, batch_eq_6) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012741 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012742 .batch_size(6)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012743 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012744 }
12745
12746 TEST(F32_VELU__WASM_RR2_P6_X6, batch_div_6) {
12747 for (size_t batch_size = 12; batch_size < 60; batch_size += 6) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012748 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012749 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012750 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012751 }
12752 }
12753
12754 TEST(F32_VELU__WASM_RR2_P6_X6, batch_lt_6) {
12755 for (size_t batch_size = 1; batch_size < 6; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012756 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012757 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012758 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012759 }
12760 }
12761
12762 TEST(F32_VELU__WASM_RR2_P6_X6, batch_gt_6) {
12763 for (size_t batch_size = 7; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012764 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012765 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012766 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012767 }
12768 }
12769
12770 TEST(F32_VELU__WASM_RR2_P6_X6, inplace) {
12771 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012772 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012773 .batch_size(batch_size)
12774 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012775 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012776 }
12777 }
12778
12779 TEST(F32_VELU__WASM_RR2_P6_X6, prescale) {
12780 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12781 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012782 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012783 .batch_size(batch_size)
12784 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012785 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012786 }
12787 }
12788 }
12789
12790 TEST(F32_VELU__WASM_RR2_P6_X6, alpha) {
12791 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12792 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012793 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012794 .batch_size(batch_size)
12795 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012796 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012797 }
12798 }
12799 }
12800
12801 TEST(F32_VELU__WASM_RR2_P6_X6, beta) {
12802 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12803 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012804 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012805 .batch_size(batch_size)
12806 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012807 .Test(xnn_f32_velu_ukernel__wasm_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012808 }
12809 }
12810 }
Marat Dukhan4c617792021-12-21 15:47:58 -080012811#endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012812
12813
12814TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, batch_eq_1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012815 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012816 .batch_size(1)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012817 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012818}
12819
12820TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, batch_gt_1) {
12821 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012822 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012823 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012824 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012825 }
12826}
12827
12828TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, inplace) {
12829 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012830 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012831 .batch_size(batch_size)
12832 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012833 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012834 }
12835}
12836
12837TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, prescale) {
12838 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12839 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012840 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012841 .batch_size(batch_size)
12842 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012843 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012844 }
12845 }
12846}
12847
12848TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, alpha) {
12849 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12850 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012851 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012852 .batch_size(batch_size)
12853 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012854 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012855 }
12856 }
12857}
12858
12859TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, beta) {
12860 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12861 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012862 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012863 .batch_size(batch_size)
12864 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012865 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012866 }
12867 }
12868}
12869
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012870
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012871TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, batch_eq_2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012872 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012873 .batch_size(2)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012874 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012875}
12876
12877TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, batch_div_2) {
12878 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012879 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012880 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012881 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012882 }
12883}
12884
12885TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, batch_lt_2) {
12886 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012887 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012888 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012889 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012890 }
12891}
12892
12893TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, batch_gt_2) {
12894 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012895 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012896 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012897 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012898 }
12899}
12900
12901TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, inplace) {
12902 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012903 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012904 .batch_size(batch_size)
12905 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012906 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012907 }
12908}
12909
12910TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, prescale) {
12911 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12912 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012913 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012914 .batch_size(batch_size)
12915 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012916 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012917 }
12918 }
12919}
12920
12921TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, alpha) {
12922 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12923 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012924 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012925 .batch_size(batch_size)
12926 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012927 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012928 }
12929 }
12930}
12931
12932TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, beta) {
12933 for (float beta : std::vector<float>({0.3f, 3.0f})) {
12934 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012935 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012936 .batch_size(batch_size)
12937 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012938 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012939 }
12940 }
12941}
12942
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012943
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012944TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, batch_eq_3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012945 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012946 .batch_size(3)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012947 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012948}
12949
12950TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, batch_div_3) {
12951 for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012952 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012953 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012954 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012955 }
12956}
12957
12958TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, batch_lt_3) {
12959 for (size_t batch_size = 1; batch_size < 3; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012960 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012961 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012962 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012963 }
12964}
12965
12966TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, batch_gt_3) {
12967 for (size_t batch_size = 4; batch_size < 6; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012968 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012969 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012970 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012971 }
12972}
12973
12974TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, inplace) {
12975 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012976 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012977 .batch_size(batch_size)
12978 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012979 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012980 }
12981}
12982
12983TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, prescale) {
12984 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
12985 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012986 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012987 .batch_size(batch_size)
12988 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080012989 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012990 }
12991 }
12992}
12993
12994TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, alpha) {
12995 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
12996 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070012997 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080012998 .batch_size(batch_size)
12999 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013000 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013001 }
13002 }
13003}
13004
13005TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, beta) {
13006 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13007 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013008 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013009 .batch_size(batch_size)
13010 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013011 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013012 }
13013 }
13014}
13015
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013016
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013017TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013018 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013019 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013020 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013021}
13022
13023TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, batch_div_4) {
13024 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013025 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013026 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013027 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013028 }
13029}
13030
13031TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, batch_lt_4) {
13032 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013033 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013034 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013035 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013036 }
13037}
13038
13039TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, batch_gt_4) {
13040 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013041 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013042 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013043 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013044 }
13045}
13046
13047TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, inplace) {
13048 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013049 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013050 .batch_size(batch_size)
13051 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013052 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013053 }
13054}
13055
13056TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, prescale) {
13057 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13058 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013059 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013060 .batch_size(batch_size)
13061 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013062 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013063 }
13064 }
13065}
13066
13067TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, alpha) {
13068 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13069 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013070 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013071 .batch_size(batch_size)
13072 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013073 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013074 }
13075 }
13076}
13077
13078TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, beta) {
13079 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13080 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013081 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013082 .batch_size(batch_size)
13083 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013084 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013085 }
13086 }
13087}
13088
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013089
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013090TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, batch_eq_5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013091 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013092 .batch_size(5)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013093 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013094}
13095
13096TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, batch_div_5) {
13097 for (size_t batch_size = 10; batch_size < 50; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013098 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013099 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013100 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013101 }
13102}
13103
13104TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, batch_lt_5) {
13105 for (size_t batch_size = 1; batch_size < 5; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013106 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013107 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013108 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013109 }
13110}
13111
13112TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, batch_gt_5) {
13113 for (size_t batch_size = 6; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013114 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013115 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013116 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013117 }
13118}
13119
13120TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, inplace) {
13121 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013122 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013123 .batch_size(batch_size)
13124 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013125 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013126 }
13127}
13128
13129TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, prescale) {
13130 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13131 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013132 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013133 .batch_size(batch_size)
13134 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013135 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013136 }
13137 }
13138}
13139
13140TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, alpha) {
13141 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13142 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013143 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013144 .batch_size(batch_size)
13145 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013146 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013147 }
13148 }
13149}
13150
13151TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, beta) {
13152 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13153 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013154 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013155 .batch_size(batch_size)
13156 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013157 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013158 }
13159 }
13160}
13161
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013162
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013163TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, batch_eq_6) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013164 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013165 .batch_size(6)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013166 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013167}
13168
13169TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, batch_div_6) {
13170 for (size_t batch_size = 12; batch_size < 60; batch_size += 6) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013171 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013172 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013173 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013174 }
13175}
13176
13177TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, batch_lt_6) {
13178 for (size_t batch_size = 1; batch_size < 6; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013179 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013180 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013181 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013182 }
13183}
13184
13185TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, batch_gt_6) {
13186 for (size_t batch_size = 7; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013187 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013188 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013189 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013190 }
13191}
13192
13193TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, inplace) {
13194 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013195 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013196 .batch_size(batch_size)
13197 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013198 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013199 }
13200}
13201
13202TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, prescale) {
13203 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13204 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013205 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013206 .batch_size(batch_size)
13207 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013208 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013209 }
13210 }
13211}
13212
13213TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, alpha) {
13214 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13215 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013216 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013217 .batch_size(batch_size)
13218 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013219 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013220 }
13221 }
13222}
13223
13224TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, beta) {
13225 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13226 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013227 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013228 .batch_size(batch_size)
13229 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013230 .Test(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6, xnn_init_f32_elu_scalar_rr2_lut16_p3_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013231 }
13232 }
13233}
13234
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013235
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013236TEST(F32_VELU__SCALAR_RR2_P6_X1, batch_eq_1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013237 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013238 .batch_size(1)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013239 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013240}
13241
13242TEST(F32_VELU__SCALAR_RR2_P6_X1, batch_gt_1) {
13243 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013244 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013245 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013246 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013247 }
13248}
13249
13250TEST(F32_VELU__SCALAR_RR2_P6_X1, inplace) {
13251 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013252 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013253 .batch_size(batch_size)
13254 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013255 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013256 }
13257}
13258
13259TEST(F32_VELU__SCALAR_RR2_P6_X1, prescale) {
13260 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13261 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013262 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013263 .batch_size(batch_size)
13264 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013265 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013266 }
13267 }
13268}
13269
13270TEST(F32_VELU__SCALAR_RR2_P6_X1, alpha) {
13271 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13272 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013273 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013274 .batch_size(batch_size)
13275 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013276 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013277 }
13278 }
13279}
13280
13281TEST(F32_VELU__SCALAR_RR2_P6_X1, beta) {
13282 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13283 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013284 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013285 .batch_size(batch_size)
13286 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013287 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x1, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013288 }
13289 }
13290}
13291
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013292
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013293TEST(F32_VELU__SCALAR_RR2_P6_X2, batch_eq_2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013294 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013295 .batch_size(2)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013296 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013297}
13298
13299TEST(F32_VELU__SCALAR_RR2_P6_X2, batch_div_2) {
13300 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013301 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013302 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013303 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013304 }
13305}
13306
13307TEST(F32_VELU__SCALAR_RR2_P6_X2, batch_lt_2) {
13308 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013309 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013310 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013311 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013312 }
13313}
13314
13315TEST(F32_VELU__SCALAR_RR2_P6_X2, batch_gt_2) {
13316 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013317 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013318 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013319 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013320 }
13321}
13322
13323TEST(F32_VELU__SCALAR_RR2_P6_X2, inplace) {
13324 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013325 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013326 .batch_size(batch_size)
13327 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013328 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013329 }
13330}
13331
13332TEST(F32_VELU__SCALAR_RR2_P6_X2, prescale) {
13333 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13334 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013335 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013336 .batch_size(batch_size)
13337 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013338 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013339 }
13340 }
13341}
13342
13343TEST(F32_VELU__SCALAR_RR2_P6_X2, alpha) {
13344 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13345 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013346 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013347 .batch_size(batch_size)
13348 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013349 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013350 }
13351 }
13352}
13353
13354TEST(F32_VELU__SCALAR_RR2_P6_X2, beta) {
13355 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13356 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013357 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013358 .batch_size(batch_size)
13359 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013360 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x2, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013361 }
13362 }
13363}
13364
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013365
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013366TEST(F32_VELU__SCALAR_RR2_P6_X3, batch_eq_3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013367 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013368 .batch_size(3)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013369 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013370}
13371
13372TEST(F32_VELU__SCALAR_RR2_P6_X3, batch_div_3) {
13373 for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013374 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013375 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013376 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013377 }
13378}
13379
13380TEST(F32_VELU__SCALAR_RR2_P6_X3, batch_lt_3) {
13381 for (size_t batch_size = 1; batch_size < 3; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013382 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013383 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013384 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013385 }
13386}
13387
13388TEST(F32_VELU__SCALAR_RR2_P6_X3, batch_gt_3) {
13389 for (size_t batch_size = 4; batch_size < 6; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013390 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013391 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013392 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013393 }
13394}
13395
13396TEST(F32_VELU__SCALAR_RR2_P6_X3, inplace) {
13397 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013398 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013399 .batch_size(batch_size)
13400 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013401 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013402 }
13403}
13404
13405TEST(F32_VELU__SCALAR_RR2_P6_X3, prescale) {
13406 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13407 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013408 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013409 .batch_size(batch_size)
13410 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013411 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013412 }
13413 }
13414}
13415
13416TEST(F32_VELU__SCALAR_RR2_P6_X3, alpha) {
13417 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13418 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013419 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013420 .batch_size(batch_size)
13421 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013422 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013423 }
13424 }
13425}
13426
13427TEST(F32_VELU__SCALAR_RR2_P6_X3, beta) {
13428 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13429 for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013430 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013431 .batch_size(batch_size)
13432 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013433 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x3, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013434 }
13435 }
13436}
13437
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013438
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013439TEST(F32_VELU__SCALAR_RR2_P6_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013440 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013441 .batch_size(4)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013442 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013443}
13444
13445TEST(F32_VELU__SCALAR_RR2_P6_X4, batch_div_4) {
13446 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013447 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013448 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013449 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013450 }
13451}
13452
13453TEST(F32_VELU__SCALAR_RR2_P6_X4, batch_lt_4) {
13454 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013455 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013456 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013457 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013458 }
13459}
13460
13461TEST(F32_VELU__SCALAR_RR2_P6_X4, batch_gt_4) {
13462 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013463 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013464 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013465 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013466 }
13467}
13468
13469TEST(F32_VELU__SCALAR_RR2_P6_X4, inplace) {
13470 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013471 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013472 .batch_size(batch_size)
13473 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013474 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013475 }
13476}
13477
13478TEST(F32_VELU__SCALAR_RR2_P6_X4, prescale) {
13479 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13480 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013481 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013482 .batch_size(batch_size)
13483 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013484 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013485 }
13486 }
13487}
13488
13489TEST(F32_VELU__SCALAR_RR2_P6_X4, alpha) {
13490 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13491 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013492 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013493 .batch_size(batch_size)
13494 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013495 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013496 }
13497 }
13498}
13499
13500TEST(F32_VELU__SCALAR_RR2_P6_X4, beta) {
13501 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13502 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013503 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013504 .batch_size(batch_size)
13505 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013506 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x4, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013507 }
13508 }
13509}
13510
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013511
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013512TEST(F32_VELU__SCALAR_RR2_P6_X5, batch_eq_5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013513 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013514 .batch_size(5)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013515 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013516}
13517
13518TEST(F32_VELU__SCALAR_RR2_P6_X5, batch_div_5) {
13519 for (size_t batch_size = 10; batch_size < 50; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013520 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013521 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013522 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013523 }
13524}
13525
13526TEST(F32_VELU__SCALAR_RR2_P6_X5, batch_lt_5) {
13527 for (size_t batch_size = 1; batch_size < 5; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013528 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013529 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013530 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013531 }
13532}
13533
13534TEST(F32_VELU__SCALAR_RR2_P6_X5, batch_gt_5) {
13535 for (size_t batch_size = 6; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013536 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013537 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013538 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013539 }
13540}
13541
13542TEST(F32_VELU__SCALAR_RR2_P6_X5, inplace) {
13543 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013544 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013545 .batch_size(batch_size)
13546 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013547 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013548 }
13549}
13550
13551TEST(F32_VELU__SCALAR_RR2_P6_X5, prescale) {
13552 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13553 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013554 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013555 .batch_size(batch_size)
13556 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013557 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013558 }
13559 }
13560}
13561
13562TEST(F32_VELU__SCALAR_RR2_P6_X5, alpha) {
13563 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13564 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013565 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013566 .batch_size(batch_size)
13567 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013568 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013569 }
13570 }
13571}
13572
13573TEST(F32_VELU__SCALAR_RR2_P6_X5, beta) {
13574 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13575 for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013576 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013577 .batch_size(batch_size)
13578 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013579 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x5, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013580 }
13581 }
13582}
13583
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013584
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013585TEST(F32_VELU__SCALAR_RR2_P6_X6, batch_eq_6) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013586 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013587 .batch_size(6)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013588 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013589}
13590
13591TEST(F32_VELU__SCALAR_RR2_P6_X6, batch_div_6) {
13592 for (size_t batch_size = 12; batch_size < 60; batch_size += 6) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013593 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013594 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013595 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013596 }
13597}
13598
13599TEST(F32_VELU__SCALAR_RR2_P6_X6, batch_lt_6) {
13600 for (size_t batch_size = 1; batch_size < 6; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013601 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013602 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013603 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013604 }
13605}
13606
13607TEST(F32_VELU__SCALAR_RR2_P6_X6, batch_gt_6) {
13608 for (size_t batch_size = 7; batch_size < 12; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013609 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013610 .batch_size(batch_size)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013611 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013612 }
13613}
13614
13615TEST(F32_VELU__SCALAR_RR2_P6_X6, inplace) {
13616 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013617 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013618 .batch_size(batch_size)
13619 .inplace(true)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013620 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013621 }
13622}
13623
13624TEST(F32_VELU__SCALAR_RR2_P6_X6, prescale) {
13625 for (float prescale : std::vector<float>({0.1f, 10.0f})) {
13626 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013627 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013628 .batch_size(batch_size)
13629 .prescale(prescale)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013630 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013631 }
13632 }
13633}
13634
13635TEST(F32_VELU__SCALAR_RR2_P6_X6, alpha) {
13636 for (float alpha : std::vector<float>({0.3f, 3.0f})) {
13637 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013638 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013639 .batch_size(batch_size)
13640 .alpha(alpha)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013641 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013642 }
13643 }
13644}
13645
13646TEST(F32_VELU__SCALAR_RR2_P6_X6, beta) {
13647 for (float beta : std::vector<float>({0.3f, 3.0f})) {
13648 for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013649 VUnaryMicrokernelTester()
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013650 .batch_size(batch_size)
13651 .beta(beta)
Marat Dukhan4a79ff22022-01-01 12:16:48 -080013652 .Test(xnn_f32_velu_ukernel__scalar_rr2_p6_x6, xnn_init_f32_elu_scalar_rr2_p6_params);
Marat Dukhaned6baaf2020-12-01 15:07:08 -080013653 }
13654 }
Marat Dukhan87ed45c2021-05-13 12:25:22 -070013655}