blob: 750ad37cc1667e823f3a7448ac18edf84e2576ad [file] [log] [blame]
Marat Dukhaneecf8fd2020-06-09 08:59:37 -07001// 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-vrndne.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_VRNDNE__NEON_X4, batch_eq_4) {
22 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -070023 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070024 .batch_size(4)
Marat Dukhan6eaab712021-05-13 15:20:58 -070025 .Test(xnn_f32_vrndne_ukernel__neon_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070026 }
27
28 TEST(F32_VRNDNE__NEON_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 Dukhaneecf8fd2020-06-09 08:59:37 -070032 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -070033 .Test(xnn_f32_vrndne_ukernel__neon_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070034 }
35 }
36
37 TEST(F32_VRNDNE__NEON_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 Dukhaneecf8fd2020-06-09 08:59:37 -070041 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -070042 .Test(xnn_f32_vrndne_ukernel__neon_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070043 }
44 }
45
46 TEST(F32_VRNDNE__NEON_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 Dukhaneecf8fd2020-06-09 08:59:37 -070050 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -070051 .Test(xnn_f32_vrndne_ukernel__neon_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070052 }
53 }
54
55 TEST(F32_VRNDNE__NEON_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 Dukhaneecf8fd2020-06-09 08:59:37 -070059 .batch_size(batch_size)
60 .inplace(true)
Marat Dukhan6eaab712021-05-13 15:20:58 -070061 .Test(xnn_f32_vrndne_ukernel__neon_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070062 }
63 }
64#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
65
66
67#if XNN_ARCH_ARM || XNN_ARCH_ARM64
68 TEST(F32_VRNDNE__NEON_X8, batch_eq_8) {
69 TEST_REQUIRES_ARM_NEON;
Marat Dukhan87ed45c2021-05-13 12:25:22 -070070 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070071 .batch_size(8)
Marat Dukhan6eaab712021-05-13 15:20:58 -070072 .Test(xnn_f32_vrndne_ukernel__neon_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070073 }
74
75 TEST(F32_VRNDNE__NEON_X8, batch_div_8) {
76 TEST_REQUIRES_ARM_NEON;
77 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070078 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070079 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -070080 .Test(xnn_f32_vrndne_ukernel__neon_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070081 }
82 }
83
84 TEST(F32_VRNDNE__NEON_X8, batch_lt_8) {
85 TEST_REQUIRES_ARM_NEON;
86 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070087 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070088 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -070089 .Test(xnn_f32_vrndne_ukernel__neon_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070090 }
91 }
92
93 TEST(F32_VRNDNE__NEON_X8, batch_gt_8) {
94 TEST_REQUIRES_ARM_NEON;
95 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -070096 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070097 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -070098 .Test(xnn_f32_vrndne_ukernel__neon_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -070099 }
100 }
101
102 TEST(F32_VRNDNE__NEON_X8, inplace) {
103 TEST_REQUIRES_ARM_NEON;
104 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700105 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700106 .batch_size(batch_size)
107 .inplace(true)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700108 .Test(xnn_f32_vrndne_ukernel__neon_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700109 }
110 }
111#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
112
113
114#if XNN_ARCH_ARM || XNN_ARCH_ARM64
115 TEST(F32_VRNDNE__NEONV8_X4, batch_eq_4) {
116 TEST_REQUIRES_ARM_NEON_V8;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700117 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700118 .batch_size(4)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700119 .Test(xnn_f32_vrndne_ukernel__neonv8_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700120 }
121
122 TEST(F32_VRNDNE__NEONV8_X4, batch_div_4) {
123 TEST_REQUIRES_ARM_NEON_V8;
124 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700125 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700126 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700127 .Test(xnn_f32_vrndne_ukernel__neonv8_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700128 }
129 }
130
131 TEST(F32_VRNDNE__NEONV8_X4, batch_lt_4) {
132 TEST_REQUIRES_ARM_NEON_V8;
133 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700134 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700135 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700136 .Test(xnn_f32_vrndne_ukernel__neonv8_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700137 }
138 }
139
140 TEST(F32_VRNDNE__NEONV8_X4, batch_gt_4) {
141 TEST_REQUIRES_ARM_NEON_V8;
142 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700143 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700144 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700145 .Test(xnn_f32_vrndne_ukernel__neonv8_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700146 }
147 }
148
149 TEST(F32_VRNDNE__NEONV8_X4, inplace) {
150 TEST_REQUIRES_ARM_NEON_V8;
151 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700152 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700153 .batch_size(batch_size)
154 .inplace(true)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700155 .Test(xnn_f32_vrndne_ukernel__neonv8_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700156 }
157 }
158#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
159
160
161#if XNN_ARCH_ARM || XNN_ARCH_ARM64
162 TEST(F32_VRNDNE__NEONV8_X8, batch_eq_8) {
163 TEST_REQUIRES_ARM_NEON_V8;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700164 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700165 .batch_size(8)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700166 .Test(xnn_f32_vrndne_ukernel__neonv8_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700167 }
168
169 TEST(F32_VRNDNE__NEONV8_X8, batch_div_8) {
170 TEST_REQUIRES_ARM_NEON_V8;
171 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700172 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700173 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700174 .Test(xnn_f32_vrndne_ukernel__neonv8_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700175 }
176 }
177
178 TEST(F32_VRNDNE__NEONV8_X8, batch_lt_8) {
179 TEST_REQUIRES_ARM_NEON_V8;
180 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700181 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700182 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700183 .Test(xnn_f32_vrndne_ukernel__neonv8_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700184 }
185 }
186
187 TEST(F32_VRNDNE__NEONV8_X8, batch_gt_8) {
188 TEST_REQUIRES_ARM_NEON_V8;
189 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700190 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700191 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700192 .Test(xnn_f32_vrndne_ukernel__neonv8_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700193 }
194 }
195
196 TEST(F32_VRNDNE__NEONV8_X8, inplace) {
197 TEST_REQUIRES_ARM_NEON_V8;
198 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700199 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700200 .batch_size(batch_size)
201 .inplace(true)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700202 .Test(xnn_f32_vrndne_ukernel__neonv8_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700203 }
204 }
205#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
206
207
208#if XNN_ARCH_X86 || XNN_ARCH_X86_64
209 TEST(F32_VRNDNE__SSE2_X4, batch_eq_4) {
210 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700211 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700212 .batch_size(4)
Marat Dukhan0e801372022-01-04 00:10:41 -0800213 .Test(xnn_f32_vrndne_ukernel__sse2_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700214 }
215
216 TEST(F32_VRNDNE__SSE2_X4, batch_div_4) {
217 TEST_REQUIRES_X86_SSE2;
218 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700219 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700220 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800221 .Test(xnn_f32_vrndne_ukernel__sse2_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700222 }
223 }
224
225 TEST(F32_VRNDNE__SSE2_X4, batch_lt_4) {
226 TEST_REQUIRES_X86_SSE2;
227 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700228 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700229 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800230 .Test(xnn_f32_vrndne_ukernel__sse2_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700231 }
232 }
233
234 TEST(F32_VRNDNE__SSE2_X4, batch_gt_4) {
235 TEST_REQUIRES_X86_SSE2;
236 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700237 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700238 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800239 .Test(xnn_f32_vrndne_ukernel__sse2_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700240 }
241 }
242
243 TEST(F32_VRNDNE__SSE2_X4, inplace) {
244 TEST_REQUIRES_X86_SSE2;
245 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700246 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700247 .batch_size(batch_size)
248 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800249 .Test(xnn_f32_vrndne_ukernel__sse2_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700250 }
251 }
252#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
253
254
255#if XNN_ARCH_X86 || XNN_ARCH_X86_64
256 TEST(F32_VRNDNE__SSE2_X8, batch_eq_8) {
257 TEST_REQUIRES_X86_SSE2;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700258 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700259 .batch_size(8)
Marat Dukhan0e801372022-01-04 00:10:41 -0800260 .Test(xnn_f32_vrndne_ukernel__sse2_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700261 }
262
263 TEST(F32_VRNDNE__SSE2_X8, batch_div_8) {
264 TEST_REQUIRES_X86_SSE2;
265 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700266 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700267 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800268 .Test(xnn_f32_vrndne_ukernel__sse2_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700269 }
270 }
271
272 TEST(F32_VRNDNE__SSE2_X8, batch_lt_8) {
273 TEST_REQUIRES_X86_SSE2;
274 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700275 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700276 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800277 .Test(xnn_f32_vrndne_ukernel__sse2_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700278 }
279 }
280
281 TEST(F32_VRNDNE__SSE2_X8, batch_gt_8) {
282 TEST_REQUIRES_X86_SSE2;
283 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700284 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700285 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800286 .Test(xnn_f32_vrndne_ukernel__sse2_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700287 }
288 }
289
290 TEST(F32_VRNDNE__SSE2_X8, inplace) {
291 TEST_REQUIRES_X86_SSE2;
292 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700293 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700294 .batch_size(batch_size)
295 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800296 .Test(xnn_f32_vrndne_ukernel__sse2_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_sse2_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700297 }
298 }
299#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
300
301
302#if XNN_ARCH_X86 || XNN_ARCH_X86_64
303 TEST(F32_VRNDNE__SSE41_X4, batch_eq_4) {
304 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700305 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700306 .batch_size(4)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700307 .Test(xnn_f32_vrndne_ukernel__sse41_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700308 }
309
310 TEST(F32_VRNDNE__SSE41_X4, batch_div_4) {
311 TEST_REQUIRES_X86_SSE41;
312 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700313 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700314 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700315 .Test(xnn_f32_vrndne_ukernel__sse41_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700316 }
317 }
318
319 TEST(F32_VRNDNE__SSE41_X4, batch_lt_4) {
320 TEST_REQUIRES_X86_SSE41;
321 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700322 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700323 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700324 .Test(xnn_f32_vrndne_ukernel__sse41_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700325 }
326 }
327
328 TEST(F32_VRNDNE__SSE41_X4, batch_gt_4) {
329 TEST_REQUIRES_X86_SSE41;
330 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700331 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700332 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700333 .Test(xnn_f32_vrndne_ukernel__sse41_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700334 }
335 }
336
337 TEST(F32_VRNDNE__SSE41_X4, inplace) {
338 TEST_REQUIRES_X86_SSE41;
339 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700340 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700341 .batch_size(batch_size)
342 .inplace(true)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700343 .Test(xnn_f32_vrndne_ukernel__sse41_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700344 }
345 }
346#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
347
348
349#if XNN_ARCH_X86 || XNN_ARCH_X86_64
350 TEST(F32_VRNDNE__SSE41_X8, batch_eq_8) {
351 TEST_REQUIRES_X86_SSE41;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700352 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700353 .batch_size(8)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700354 .Test(xnn_f32_vrndne_ukernel__sse41_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700355 }
356
357 TEST(F32_VRNDNE__SSE41_X8, batch_div_8) {
358 TEST_REQUIRES_X86_SSE41;
359 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700360 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700361 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700362 .Test(xnn_f32_vrndne_ukernel__sse41_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700363 }
364 }
365
366 TEST(F32_VRNDNE__SSE41_X8, batch_lt_8) {
367 TEST_REQUIRES_X86_SSE41;
368 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700369 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700370 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700371 .Test(xnn_f32_vrndne_ukernel__sse41_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700372 }
373 }
374
375 TEST(F32_VRNDNE__SSE41_X8, batch_gt_8) {
376 TEST_REQUIRES_X86_SSE41;
377 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700378 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700379 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700380 .Test(xnn_f32_vrndne_ukernel__sse41_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700381 }
382 }
383
384 TEST(F32_VRNDNE__SSE41_X8, inplace) {
385 TEST_REQUIRES_X86_SSE41;
386 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700387 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700388 .batch_size(batch_size)
389 .inplace(true)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700390 .Test(xnn_f32_vrndne_ukernel__sse41_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700391 }
392 }
393#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
394
395
396#if XNN_ARCH_X86 || XNN_ARCH_X86_64
397 TEST(F32_VRNDNE__AVX_X8, batch_eq_8) {
398 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700399 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700400 .batch_size(8)
Marat Dukhan0e801372022-01-04 00:10:41 -0800401 .Test(xnn_f32_vrndne_ukernel__avx_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700402 }
403
404 TEST(F32_VRNDNE__AVX_X8, batch_div_8) {
405 TEST_REQUIRES_X86_AVX;
406 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700407 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700408 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800409 .Test(xnn_f32_vrndne_ukernel__avx_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700410 }
411 }
412
413 TEST(F32_VRNDNE__AVX_X8, batch_lt_8) {
414 TEST_REQUIRES_X86_AVX;
415 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700416 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700417 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800418 .Test(xnn_f32_vrndne_ukernel__avx_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700419 }
420 }
421
422 TEST(F32_VRNDNE__AVX_X8, batch_gt_8) {
423 TEST_REQUIRES_X86_AVX;
424 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700425 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700426 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800427 .Test(xnn_f32_vrndne_ukernel__avx_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700428 }
429 }
430
431 TEST(F32_VRNDNE__AVX_X8, inplace) {
432 TEST_REQUIRES_X86_AVX;
433 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700434 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700435 .batch_size(batch_size)
436 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800437 .Test(xnn_f32_vrndne_ukernel__avx_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700438 }
439 }
440#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
441
442
443#if XNN_ARCH_X86 || XNN_ARCH_X86_64
444 TEST(F32_VRNDNE__AVX_X16, batch_eq_16) {
445 TEST_REQUIRES_X86_AVX;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700446 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700447 .batch_size(16)
Marat Dukhan0e801372022-01-04 00:10:41 -0800448 .Test(xnn_f32_vrndne_ukernel__avx_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700449 }
450
451 TEST(F32_VRNDNE__AVX_X16, batch_div_16) {
452 TEST_REQUIRES_X86_AVX;
453 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700454 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700455 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800456 .Test(xnn_f32_vrndne_ukernel__avx_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700457 }
458 }
459
460 TEST(F32_VRNDNE__AVX_X16, batch_lt_16) {
461 TEST_REQUIRES_X86_AVX;
462 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700463 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700464 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800465 .Test(xnn_f32_vrndne_ukernel__avx_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700466 }
467 }
468
469 TEST(F32_VRNDNE__AVX_X16, batch_gt_16) {
470 TEST_REQUIRES_X86_AVX;
471 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700472 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700473 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800474 .Test(xnn_f32_vrndne_ukernel__avx_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700475 }
476 }
477
478 TEST(F32_VRNDNE__AVX_X16, inplace) {
479 TEST_REQUIRES_X86_AVX;
480 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700481 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700482 .batch_size(batch_size)
483 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800484 .Test(xnn_f32_vrndne_ukernel__avx_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_avx_params);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700485 }
486 }
487#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
488
489
490#if XNN_ARCH_X86 || XNN_ARCH_X86_64
491 TEST(F32_VRNDNE__AVX512F_X16, batch_eq_16) {
492 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700493 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700494 .batch_size(16)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700495 .Test(xnn_f32_vrndne_ukernel__avx512f_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700496 }
497
498 TEST(F32_VRNDNE__AVX512F_X16, batch_div_16) {
499 TEST_REQUIRES_X86_AVX512F;
500 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700501 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700502 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700503 .Test(xnn_f32_vrndne_ukernel__avx512f_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700504 }
505 }
506
507 TEST(F32_VRNDNE__AVX512F_X16, batch_lt_16) {
508 TEST_REQUIRES_X86_AVX512F;
509 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700510 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700511 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700512 .Test(xnn_f32_vrndne_ukernel__avx512f_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700513 }
514 }
515
516 TEST(F32_VRNDNE__AVX512F_X16, batch_gt_16) {
517 TEST_REQUIRES_X86_AVX512F;
518 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700519 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700520 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700521 .Test(xnn_f32_vrndne_ukernel__avx512f_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700522 }
523 }
524
525 TEST(F32_VRNDNE__AVX512F_X16, inplace) {
526 TEST_REQUIRES_X86_AVX512F;
527 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700528 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700529 .batch_size(batch_size)
530 .inplace(true)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700531 .Test(xnn_f32_vrndne_ukernel__avx512f_x16, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700532 }
533 }
534#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
535
536
537#if XNN_ARCH_X86 || XNN_ARCH_X86_64
538 TEST(F32_VRNDNE__AVX512F_X32, batch_eq_32) {
539 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700540 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700541 .batch_size(32)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700542 .Test(xnn_f32_vrndne_ukernel__avx512f_x32, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700543 }
544
545 TEST(F32_VRNDNE__AVX512F_X32, batch_div_32) {
546 TEST_REQUIRES_X86_AVX512F;
547 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700548 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700549 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700550 .Test(xnn_f32_vrndne_ukernel__avx512f_x32, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700551 }
552 }
553
554 TEST(F32_VRNDNE__AVX512F_X32, batch_lt_32) {
555 TEST_REQUIRES_X86_AVX512F;
556 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700557 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700558 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700559 .Test(xnn_f32_vrndne_ukernel__avx512f_x32, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700560 }
561 }
562
563 TEST(F32_VRNDNE__AVX512F_X32, batch_gt_32) {
564 TEST_REQUIRES_X86_AVX512F;
565 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700566 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700567 .batch_size(batch_size)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700568 .Test(xnn_f32_vrndne_ukernel__avx512f_x32, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700569 }
570 }
571
572 TEST(F32_VRNDNE__AVX512F_X32, inplace) {
573 TEST_REQUIRES_X86_AVX512F;
574 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700575 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700576 .batch_size(batch_size)
577 .inplace(true)
Marat Dukhan6eaab712021-05-13 15:20:58 -0700578 .Test(xnn_f32_vrndne_ukernel__avx512f_x32, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700579 }
580 }
581#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
582
583
Marat Dukhan4c617792021-12-21 15:47:58 -0800584#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700585 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700586 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700587 .batch_size(4)
Marat Dukhan0e801372022-01-04 00:10:41 -0800588 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700589 }
590
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700591 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, batch_div_4) {
Marat Dukhan72b399a2020-06-28 22:41:38 -0700592 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700593 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700594 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800595 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700596 }
597 }
598
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700599 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, batch_lt_4) {
Marat Dukhan72b399a2020-06-28 22:41:38 -0700600 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700601 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700602 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800603 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700604 }
605 }
606
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700607 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, batch_gt_4) {
Marat Dukhan72b399a2020-06-28 22:41:38 -0700608 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700609 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700610 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800611 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700612 }
613 }
614
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700615 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, inplace) {
Marat Dukhan72b399a2020-06-28 22:41:38 -0700616 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700617 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700618 .batch_size(batch_size)
619 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800620 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700621 }
622 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800623#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan72b399a2020-06-28 22:41:38 -0700624
625
Marat Dukhan4c617792021-12-21 15:47:58 -0800626#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700627 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, batch_eq_8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700628 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700629 .batch_size(8)
Marat Dukhan0e801372022-01-04 00:10:41 -0800630 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700631 }
632
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700633 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, batch_div_8) {
Marat Dukhan72b399a2020-06-28 22:41:38 -0700634 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700635 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700636 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800637 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700638 }
639 }
640
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700641 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, batch_lt_8) {
Marat Dukhan72b399a2020-06-28 22:41:38 -0700642 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700643 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700644 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800645 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700646 }
647 }
648
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700649 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, batch_gt_8) {
Marat Dukhan72b399a2020-06-28 22:41:38 -0700650 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700651 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700652 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800653 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700654 }
655 }
656
Marat Dukhanfeee77f2021-08-31 13:39:50 -0700657 TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, inplace) {
Marat Dukhan72b399a2020-06-28 22:41:38 -0700658 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700659 VUnaryMicrokernelTester()
Marat Dukhan72b399a2020-06-28 22:41:38 -0700660 .batch_size(batch_size)
661 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800662 .Test(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven, xnn_init_f32_rnd_wasmsimd_params);
Marat Dukhan72b399a2020-06-28 22:41:38 -0700663 }
664 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800665#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan72b399a2020-06-28 22:41:38 -0700666
667
Marat Dukhan4c617792021-12-21 15:47:58 -0800668#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan33b4f752021-09-03 10:53:53 -0700669 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X4, batch_eq_4) {
670 VUnaryMicrokernelTester()
671 .batch_size(4)
672 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
673 }
674
675 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X4, batch_div_4) {
676 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
677 VUnaryMicrokernelTester()
678 .batch_size(batch_size)
679 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
680 }
681 }
682
683 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X4, batch_lt_4) {
684 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
685 VUnaryMicrokernelTester()
686 .batch_size(batch_size)
687 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
688 }
689 }
690
691 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X4, batch_gt_4) {
692 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
693 VUnaryMicrokernelTester()
694 .batch_size(batch_size)
695 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
696 }
697 }
698
699 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X4, inplace) {
700 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
701 VUnaryMicrokernelTester()
702 .batch_size(batch_size)
703 .inplace(true)
704 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
705 }
706 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800707#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan33b4f752021-09-03 10:53:53 -0700708
709
Marat Dukhan4c617792021-12-21 15:47:58 -0800710#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan33b4f752021-09-03 10:53:53 -0700711 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X8, batch_eq_8) {
712 VUnaryMicrokernelTester()
713 .batch_size(8)
714 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
715 }
716
717 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X8, batch_div_8) {
718 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
719 VUnaryMicrokernelTester()
720 .batch_size(batch_size)
721 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
722 }
723 }
724
725 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X8, batch_lt_8) {
726 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
727 VUnaryMicrokernelTester()
728 .batch_size(batch_size)
729 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
730 }
731 }
732
733 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X8, batch_gt_8) {
734 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
735 VUnaryMicrokernelTester()
736 .batch_size(batch_size)
737 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
738 }
739 }
740
741 TEST(F32_VRNDNE__WASMSIMD_NATIVE_X8, inplace) {
742 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
743 VUnaryMicrokernelTester()
744 .batch_size(batch_size)
745 .inplace(true)
746 .Test(xnn_f32_vrndne_ukernel__wasmsimd_native_x8, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
747 }
748 }
Marat Dukhan4c617792021-12-21 15:47:58 -0800749#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan33b4f752021-09-03 10:53:53 -0700750
751
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700752TEST(F32_VRNDNE__SCALAR_LIBM_X1, batch_eq_1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700753 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700754 .batch_size(1)
Marat Dukhan0e801372022-01-04 00:10:41 -0800755 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x1, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700756}
757
758TEST(F32_VRNDNE__SCALAR_LIBM_X1, batch_gt_1) {
759 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700760 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700761 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800762 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x1, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700763 }
764}
765
766TEST(F32_VRNDNE__SCALAR_LIBM_X1, inplace) {
767 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700768 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700769 .batch_size(batch_size)
770 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800771 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x1, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700772 }
773}
774
Marat Dukhanaf452482020-06-10 22:17:00 -0700775
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700776TEST(F32_VRNDNE__SCALAR_LIBM_X2, batch_eq_2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700777 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700778 .batch_size(2)
Marat Dukhan0e801372022-01-04 00:10:41 -0800779 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x2, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700780}
781
782TEST(F32_VRNDNE__SCALAR_LIBM_X2, batch_div_2) {
783 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700784 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700785 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800786 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x2, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700787 }
788}
789
790TEST(F32_VRNDNE__SCALAR_LIBM_X2, batch_lt_2) {
791 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700792 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700793 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800794 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x2, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700795 }
796}
797
798TEST(F32_VRNDNE__SCALAR_LIBM_X2, batch_gt_2) {
799 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700800 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700801 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800802 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x2, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700803 }
804}
805
806TEST(F32_VRNDNE__SCALAR_LIBM_X2, inplace) {
807 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700808 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700809 .batch_size(batch_size)
810 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800811 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x2, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700812 }
813}
814
Marat Dukhanaf452482020-06-10 22:17:00 -0700815
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700816TEST(F32_VRNDNE__SCALAR_LIBM_X4, batch_eq_4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700817 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700818 .batch_size(4)
Marat Dukhan0e801372022-01-04 00:10:41 -0800819 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700820}
821
822TEST(F32_VRNDNE__SCALAR_LIBM_X4, batch_div_4) {
823 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700824 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700825 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800826 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700827 }
828}
829
830TEST(F32_VRNDNE__SCALAR_LIBM_X4, batch_lt_4) {
831 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700832 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700833 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800834 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700835 }
836}
837
838TEST(F32_VRNDNE__SCALAR_LIBM_X4, batch_gt_4) {
839 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700840 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700841 .batch_size(batch_size)
Marat Dukhan0e801372022-01-04 00:10:41 -0800842 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700843 }
844}
845
846TEST(F32_VRNDNE__SCALAR_LIBM_X4, inplace) {
847 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
Marat Dukhan87ed45c2021-05-13 12:25:22 -0700848 VUnaryMicrokernelTester()
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700849 .batch_size(batch_size)
850 .inplace(true)
Marat Dukhan0e801372022-01-04 00:10:41 -0800851 .Test(xnn_f32_vrndne_ukernel__scalar_libm_x4, VUnaryMicrokernelTester::OpType::RoundToNearestEven);
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700852 }
Marat Dukhanaf452482020-06-10 22:17:00 -0700853}