blob: 156ca04413ef74f570662ae286525dc206072edb [file] [log] [blame]
Marat Dukhan97579532019-10-18 16:40:39 -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.
Marat Dukhan4c4eb002019-12-08 21:27:49 -08005//
6// Auto-generated file. Do not edit!
7// Specification: test/f32-vscaleexpminusmax.yaml
8// Generator: tools/generate-vscaleexpminusmax-test.py
9
Marat Dukhan97579532019-10-18 16:40:39 -070010
11#include <gtest/gtest.h>
12
13#include <xnnpack/common.h>
14#include <xnnpack/isa-checks.h>
15
16#include <xnnpack/vscaleexpminusmax.h>
17#include "vscaleexpminusmax-microkernel-tester.h"
18
19
Marat Dukhan4c4eb002019-12-08 21:27:49 -080020#if XNN_ARCH_X86 || XNN_ARCH_X86_64
21 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, elements_eq_8) {
Marat Dukhan97579532019-10-18 16:40:39 -070022 TEST_REQUIRES_X86_AVX2;
23 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -080024 .elements(8)
25 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
Marat Dukhan97579532019-10-18 16:40:39 -070026 }
27
Marat Dukhan4c4eb002019-12-08 21:27:49 -080028 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, elements_div_8) {
Marat Dukhan97579532019-10-18 16:40:39 -070029 TEST_REQUIRES_X86_AVX2;
Marat Dukhan4c4eb002019-12-08 21:27:49 -080030 for (size_t elements = 16; elements < 80; elements += 8) {
Marat Dukhan97579532019-10-18 16:40:39 -070031 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -080032 .elements(elements)
33 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
Marat Dukhan97579532019-10-18 16:40:39 -070034 }
35 }
36
Marat Dukhan4c4eb002019-12-08 21:27:49 -080037 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, elements_lt_8) {
Marat Dukhan97579532019-10-18 16:40:39 -070038 TEST_REQUIRES_X86_AVX2;
Marat Dukhan4c4eb002019-12-08 21:27:49 -080039 for (size_t elements = 1; elements < 8; elements++) {
Marat Dukhan97579532019-10-18 16:40:39 -070040 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -080041 .elements(elements)
42 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
Marat Dukhan97579532019-10-18 16:40:39 -070043 }
44 }
45
Marat Dukhan4c4eb002019-12-08 21:27:49 -080046 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, elements_gt_8) {
Marat Dukhan97579532019-10-18 16:40:39 -070047 TEST_REQUIRES_X86_AVX2;
Marat Dukhan4c4eb002019-12-08 21:27:49 -080048 for (size_t elements = 9; elements < 16; elements++) {
Marat Dukhan97579532019-10-18 16:40:39 -070049 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -080050 .elements(elements)
51 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
52 }
53 }
54
55 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, scale) {
56 TEST_REQUIRES_X86_AVX2;
57 for (size_t elements = 1; elements <= 40; elements += 7) {
58 VScaleExpMinusMaxMicrokernelTester()
59 .elements(elements)
Marat Dukhan97579532019-10-18 16:40:39 -070060 .scale(0.01f)
Marat Dukhan4c4eb002019-12-08 21:27:49 -080061 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
Marat Dukhan97579532019-10-18 16:40:39 -070062 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -080063 .elements(elements)
Marat Dukhan97579532019-10-18 16:40:39 -070064 .scale(100.0f)
Marat Dukhan4c4eb002019-12-08 21:27:49 -080065 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
Marat Dukhan97579532019-10-18 16:40:39 -070066 }
67 }
Marat Dukhan4c4eb002019-12-08 21:27:49 -080068#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan97579532019-10-18 16:40:39 -070069
Marat Dukhan4c4eb002019-12-08 21:27:49 -080070
71#if XNN_ARCH_X86 || XNN_ARCH_X86_64
72 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16, elements_eq_16) {
73 TEST_REQUIRES_X86_AVX2;
74 VScaleExpMinusMaxMicrokernelTester()
75 .elements(16)
76 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x16);
77 }
78
79 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16, elements_div_16) {
80 TEST_REQUIRES_X86_AVX2;
81 for (size_t elements = 32; elements < 160; elements += 16) {
Marat Dukhan97579532019-10-18 16:40:39 -070082 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -080083 .elements(elements)
84 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x16);
Marat Dukhan97579532019-10-18 16:40:39 -070085 }
86 }
87
Marat Dukhan4c4eb002019-12-08 21:27:49 -080088 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16, elements_lt_16) {
89 TEST_REQUIRES_X86_AVX2;
90 for (size_t elements = 1; elements < 16; elements++) {
91 VScaleExpMinusMaxMicrokernelTester()
92 .elements(elements)
93 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x16);
94 }
95 }
96
97 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16, elements_gt_16) {
98 TEST_REQUIRES_X86_AVX2;
99 for (size_t elements = 17; elements < 32; elements++) {
100 VScaleExpMinusMaxMicrokernelTester()
101 .elements(elements)
102 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x16);
103 }
104 }
105
106 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16, scale) {
107 TEST_REQUIRES_X86_AVX2;
108 for (size_t elements = 1; elements <= 80; elements += 15) {
109 VScaleExpMinusMaxMicrokernelTester()
110 .elements(elements)
111 .scale(0.01f)
112 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x16);
113 VScaleExpMinusMaxMicrokernelTester()
114 .elements(elements)
115 .scale(100.0f)
116 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x16);
117 }
118 }
119#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
120
121
122#if XNN_ARCH_X86 || XNN_ARCH_X86_64
123 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24, elements_eq_24) {
124 TEST_REQUIRES_X86_AVX2;
125 VScaleExpMinusMaxMicrokernelTester()
126 .elements(24)
127 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x24);
128 }
129
130 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24, elements_div_24) {
131 TEST_REQUIRES_X86_AVX2;
132 for (size_t elements = 48; elements < 240; elements += 24) {
133 VScaleExpMinusMaxMicrokernelTester()
134 .elements(elements)
135 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x24);
136 }
137 }
138
139 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24, elements_lt_24) {
140 TEST_REQUIRES_X86_AVX2;
141 for (size_t elements = 1; elements < 24; elements++) {
142 VScaleExpMinusMaxMicrokernelTester()
143 .elements(elements)
144 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x24);
145 }
146 }
147
148 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24, elements_gt_24) {
149 TEST_REQUIRES_X86_AVX2;
150 for (size_t elements = 25; elements < 48; elements++) {
151 VScaleExpMinusMaxMicrokernelTester()
152 .elements(elements)
153 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x24);
154 }
155 }
156
157 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24, scale) {
158 TEST_REQUIRES_X86_AVX2;
159 for (size_t elements = 1; elements <= 120; elements += 23) {
160 VScaleExpMinusMaxMicrokernelTester()
161 .elements(elements)
162 .scale(0.01f)
163 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x24);
164 VScaleExpMinusMaxMicrokernelTester()
165 .elements(elements)
166 .scale(100.0f)
167 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x24);
168 }
169 }
170#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
171
172
173#if XNN_ARCH_X86 || XNN_ARCH_X86_64
174 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32, elements_eq_32) {
175 TEST_REQUIRES_X86_AVX2;
176 VScaleExpMinusMaxMicrokernelTester()
177 .elements(32)
178 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x32);
179 }
180
181 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32, elements_div_32) {
182 TEST_REQUIRES_X86_AVX2;
183 for (size_t elements = 64; elements < 320; elements += 32) {
184 VScaleExpMinusMaxMicrokernelTester()
185 .elements(elements)
186 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x32);
187 }
188 }
189
190 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32, elements_lt_32) {
191 TEST_REQUIRES_X86_AVX2;
192 for (size_t elements = 1; elements < 32; elements++) {
193 VScaleExpMinusMaxMicrokernelTester()
194 .elements(elements)
195 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x32);
196 }
197 }
198
199 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32, elements_gt_32) {
200 TEST_REQUIRES_X86_AVX2;
201 for (size_t elements = 33; elements < 64; elements++) {
202 VScaleExpMinusMaxMicrokernelTester()
203 .elements(elements)
204 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x32);
205 }
206 }
207
208 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32, scale) {
209 TEST_REQUIRES_X86_AVX2;
210 for (size_t elements = 1; elements <= 160; elements += 31) {
211 VScaleExpMinusMaxMicrokernelTester()
212 .elements(elements)
213 .scale(0.01f)
214 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x32);
215 VScaleExpMinusMaxMicrokernelTester()
216 .elements(elements)
217 .scale(100.0f)
218 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x32);
219 }
220 }
221#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
222
223
224#if XNN_ARCH_X86 || XNN_ARCH_X86_64
225 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40, elements_eq_40) {
226 TEST_REQUIRES_X86_AVX2;
227 VScaleExpMinusMaxMicrokernelTester()
228 .elements(40)
229 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x40);
230 }
231
232 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40, elements_div_40) {
233 TEST_REQUIRES_X86_AVX2;
234 for (size_t elements = 80; elements < 400; elements += 40) {
235 VScaleExpMinusMaxMicrokernelTester()
236 .elements(elements)
237 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x40);
238 }
239 }
240
241 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40, elements_lt_40) {
242 TEST_REQUIRES_X86_AVX2;
243 for (size_t elements = 1; elements < 40; elements++) {
244 VScaleExpMinusMaxMicrokernelTester()
245 .elements(elements)
246 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x40);
247 }
248 }
249
250 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40, elements_gt_40) {
251 TEST_REQUIRES_X86_AVX2;
252 for (size_t elements = 41; elements < 80; elements++) {
253 VScaleExpMinusMaxMicrokernelTester()
254 .elements(elements)
255 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x40);
256 }
257 }
258
259 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40, scale) {
260 TEST_REQUIRES_X86_AVX2;
261 for (size_t elements = 1; elements <= 200; elements += 39) {
262 VScaleExpMinusMaxMicrokernelTester()
263 .elements(elements)
264 .scale(0.01f)
265 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x40);
266 VScaleExpMinusMaxMicrokernelTester()
267 .elements(elements)
268 .scale(100.0f)
269 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x40);
270 }
271 }
272#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
273
274
275#if XNN_ARCH_X86 || XNN_ARCH_X86_64
276 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48, elements_eq_48) {
277 TEST_REQUIRES_X86_AVX2;
278 VScaleExpMinusMaxMicrokernelTester()
279 .elements(48)
280 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x48);
281 }
282
283 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48, elements_div_48) {
284 TEST_REQUIRES_X86_AVX2;
285 for (size_t elements = 96; elements < 480; elements += 48) {
286 VScaleExpMinusMaxMicrokernelTester()
287 .elements(elements)
288 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x48);
289 }
290 }
291
292 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48, elements_lt_48) {
293 TEST_REQUIRES_X86_AVX2;
294 for (size_t elements = 1; elements < 48; elements++) {
295 VScaleExpMinusMaxMicrokernelTester()
296 .elements(elements)
297 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x48);
298 }
299 }
300
301 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48, elements_gt_48) {
302 TEST_REQUIRES_X86_AVX2;
303 for (size_t elements = 49; elements < 96; elements++) {
304 VScaleExpMinusMaxMicrokernelTester()
305 .elements(elements)
306 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x48);
307 }
308 }
309
310 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48, scale) {
311 TEST_REQUIRES_X86_AVX2;
312 for (size_t elements = 1; elements <= 240; elements += 47) {
313 VScaleExpMinusMaxMicrokernelTester()
314 .elements(elements)
315 .scale(0.01f)
316 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x48);
317 VScaleExpMinusMaxMicrokernelTester()
318 .elements(elements)
319 .scale(100.0f)
320 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x48);
321 }
322 }
323#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
324
325
326#if XNN_ARCH_X86 || XNN_ARCH_X86_64
327 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56, elements_eq_56) {
328 TEST_REQUIRES_X86_AVX2;
329 VScaleExpMinusMaxMicrokernelTester()
330 .elements(56)
331 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x56);
332 }
333
334 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56, elements_div_56) {
335 TEST_REQUIRES_X86_AVX2;
336 for (size_t elements = 112; elements < 560; elements += 56) {
337 VScaleExpMinusMaxMicrokernelTester()
338 .elements(elements)
339 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x56);
340 }
341 }
342
343 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56, elements_lt_56) {
344 TEST_REQUIRES_X86_AVX2;
345 for (size_t elements = 1; elements < 56; elements++) {
346 VScaleExpMinusMaxMicrokernelTester()
347 .elements(elements)
348 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x56);
349 }
350 }
351
352 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56, elements_gt_56) {
353 TEST_REQUIRES_X86_AVX2;
354 for (size_t elements = 57; elements < 112; elements++) {
355 VScaleExpMinusMaxMicrokernelTester()
356 .elements(elements)
357 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x56);
358 }
359 }
360
361 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56, scale) {
362 TEST_REQUIRES_X86_AVX2;
363 for (size_t elements = 1; elements <= 280; elements += 55) {
364 VScaleExpMinusMaxMicrokernelTester()
365 .elements(elements)
366 .scale(0.01f)
367 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x56);
368 VScaleExpMinusMaxMicrokernelTester()
369 .elements(elements)
370 .scale(100.0f)
371 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x56);
372 }
373 }
374#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
375
376
377#if XNN_ARCH_X86 || XNN_ARCH_X86_64
378 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64, elements_eq_64) {
379 TEST_REQUIRES_X86_AVX2;
380 VScaleExpMinusMaxMicrokernelTester()
381 .elements(64)
382 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x64);
383 }
384
385 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64, elements_div_64) {
386 TEST_REQUIRES_X86_AVX2;
387 for (size_t elements = 128; elements < 640; elements += 64) {
388 VScaleExpMinusMaxMicrokernelTester()
389 .elements(elements)
390 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x64);
391 }
392 }
393
394 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64, elements_lt_64) {
395 TEST_REQUIRES_X86_AVX2;
396 for (size_t elements = 1; elements < 64; elements++) {
397 VScaleExpMinusMaxMicrokernelTester()
398 .elements(elements)
399 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x64);
400 }
401 }
402
403 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64, elements_gt_64) {
404 TEST_REQUIRES_X86_AVX2;
405 for (size_t elements = 65; elements < 128; elements++) {
406 VScaleExpMinusMaxMicrokernelTester()
407 .elements(elements)
408 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x64);
409 }
410 }
411
412 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64, scale) {
413 TEST_REQUIRES_X86_AVX2;
414 for (size_t elements = 1; elements <= 320; elements += 63) {
415 VScaleExpMinusMaxMicrokernelTester()
416 .elements(elements)
417 .scale(0.01f)
418 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x64);
419 VScaleExpMinusMaxMicrokernelTester()
420 .elements(elements)
421 .scale(100.0f)
422 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x64);
423 }
424 }
425#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
426
427
428#if XNN_ARCH_X86 || XNN_ARCH_X86_64
429 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72, elements_eq_72) {
430 TEST_REQUIRES_X86_AVX2;
431 VScaleExpMinusMaxMicrokernelTester()
432 .elements(72)
433 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x72);
434 }
435
436 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72, elements_div_72) {
437 TEST_REQUIRES_X86_AVX2;
438 for (size_t elements = 144; elements < 720; elements += 72) {
439 VScaleExpMinusMaxMicrokernelTester()
440 .elements(elements)
441 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x72);
442 }
443 }
444
445 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72, elements_lt_72) {
446 TEST_REQUIRES_X86_AVX2;
447 for (size_t elements = 1; elements < 72; elements++) {
448 VScaleExpMinusMaxMicrokernelTester()
449 .elements(elements)
450 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x72);
451 }
452 }
453
454 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72, elements_gt_72) {
455 TEST_REQUIRES_X86_AVX2;
456 for (size_t elements = 73; elements < 144; elements++) {
457 VScaleExpMinusMaxMicrokernelTester()
458 .elements(elements)
459 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x72);
460 }
461 }
462
463 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72, scale) {
464 TEST_REQUIRES_X86_AVX2;
465 for (size_t elements = 1; elements <= 360; elements += 71) {
466 VScaleExpMinusMaxMicrokernelTester()
467 .elements(elements)
468 .scale(0.01f)
469 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x72);
470 VScaleExpMinusMaxMicrokernelTester()
471 .elements(elements)
472 .scale(100.0f)
473 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x72);
474 }
475 }
476#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
477
478
479#if XNN_ARCH_X86 || XNN_ARCH_X86_64
480 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80, elements_eq_80) {
481 TEST_REQUIRES_X86_AVX2;
482 VScaleExpMinusMaxMicrokernelTester()
483 .elements(80)
484 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x80);
485 }
486
487 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80, elements_div_80) {
488 TEST_REQUIRES_X86_AVX2;
489 for (size_t elements = 160; elements < 800; elements += 80) {
490 VScaleExpMinusMaxMicrokernelTester()
491 .elements(elements)
492 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x80);
493 }
494 }
495
496 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80, elements_lt_80) {
497 TEST_REQUIRES_X86_AVX2;
498 for (size_t elements = 1; elements < 80; elements++) {
499 VScaleExpMinusMaxMicrokernelTester()
500 .elements(elements)
501 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x80);
502 }
503 }
504
505 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80, elements_gt_80) {
506 TEST_REQUIRES_X86_AVX2;
507 for (size_t elements = 81; elements < 160; elements++) {
508 VScaleExpMinusMaxMicrokernelTester()
509 .elements(elements)
510 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x80);
511 }
512 }
513
514 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80, scale) {
515 TEST_REQUIRES_X86_AVX2;
516 for (size_t elements = 1; elements <= 400; elements += 79) {
517 VScaleExpMinusMaxMicrokernelTester()
518 .elements(elements)
519 .scale(0.01f)
520 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x80);
521 VScaleExpMinusMaxMicrokernelTester()
522 .elements(elements)
523 .scale(100.0f)
524 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x80);
525 }
526 }
527#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
528
529
530#if XNN_ARCH_X86 || XNN_ARCH_X86_64
531 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88, elements_eq_88) {
532 TEST_REQUIRES_X86_AVX2;
533 VScaleExpMinusMaxMicrokernelTester()
534 .elements(88)
535 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x88);
536 }
537
538 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88, elements_div_88) {
539 TEST_REQUIRES_X86_AVX2;
540 for (size_t elements = 176; elements < 880; elements += 88) {
541 VScaleExpMinusMaxMicrokernelTester()
542 .elements(elements)
543 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x88);
544 }
545 }
546
547 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88, elements_lt_88) {
548 TEST_REQUIRES_X86_AVX2;
549 for (size_t elements = 1; elements < 88; elements++) {
550 VScaleExpMinusMaxMicrokernelTester()
551 .elements(elements)
552 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x88);
553 }
554 }
555
556 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88, elements_gt_88) {
557 TEST_REQUIRES_X86_AVX2;
558 for (size_t elements = 89; elements < 176; elements++) {
559 VScaleExpMinusMaxMicrokernelTester()
560 .elements(elements)
561 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x88);
562 }
563 }
564
565 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88, scale) {
566 TEST_REQUIRES_X86_AVX2;
567 for (size_t elements = 1; elements <= 440; elements += 87) {
568 VScaleExpMinusMaxMicrokernelTester()
569 .elements(elements)
570 .scale(0.01f)
571 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x88);
572 VScaleExpMinusMaxMicrokernelTester()
573 .elements(elements)
574 .scale(100.0f)
575 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x88);
576 }
577 }
578#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
579
580
581#if XNN_ARCH_X86 || XNN_ARCH_X86_64
582 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96, elements_eq_96) {
583 TEST_REQUIRES_X86_AVX2;
584 VScaleExpMinusMaxMicrokernelTester()
585 .elements(96)
586 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x96);
587 }
588
589 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96, elements_div_96) {
590 TEST_REQUIRES_X86_AVX2;
591 for (size_t elements = 192; elements < 960; elements += 96) {
592 VScaleExpMinusMaxMicrokernelTester()
593 .elements(elements)
594 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x96);
595 }
596 }
597
598 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96, elements_lt_96) {
599 TEST_REQUIRES_X86_AVX2;
600 for (size_t elements = 1; elements < 96; elements++) {
601 VScaleExpMinusMaxMicrokernelTester()
602 .elements(elements)
603 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x96);
604 }
605 }
606
607 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96, elements_gt_96) {
608 TEST_REQUIRES_X86_AVX2;
609 for (size_t elements = 97; elements < 192; elements++) {
610 VScaleExpMinusMaxMicrokernelTester()
611 .elements(elements)
612 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x96);
613 }
614 }
615
616 TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96, scale) {
617 TEST_REQUIRES_X86_AVX2;
618 for (size_t elements = 1; elements <= 480; elements += 95) {
619 VScaleExpMinusMaxMicrokernelTester()
620 .elements(elements)
621 .scale(0.01f)
622 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x96);
623 VScaleExpMinusMaxMicrokernelTester()
624 .elements(elements)
625 .scale(100.0f)
626 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x96);
627 }
628 }
629#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
630
631
632#if XNN_ARCH_X86 || XNN_ARCH_X86_64
633 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, elements_eq_16) {
Marat Dukhan97579532019-10-18 16:40:39 -0700634 TEST_REQUIRES_X86_AVX512F;
635 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800636 .elements(16)
637 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
Marat Dukhan97579532019-10-18 16:40:39 -0700638 }
639
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800640 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, elements_div_16) {
Marat Dukhan97579532019-10-18 16:40:39 -0700641 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800642 for (size_t elements = 32; elements < 160; elements += 16) {
Marat Dukhan97579532019-10-18 16:40:39 -0700643 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800644 .elements(elements)
645 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
Marat Dukhan97579532019-10-18 16:40:39 -0700646 }
647 }
648
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800649 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, elements_lt_16) {
Marat Dukhan97579532019-10-18 16:40:39 -0700650 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800651 for (size_t elements = 1; elements < 16; elements++) {
Marat Dukhan97579532019-10-18 16:40:39 -0700652 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800653 .elements(elements)
654 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
Marat Dukhan97579532019-10-18 16:40:39 -0700655 }
656 }
657
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800658 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, elements_gt_16) {
Marat Dukhan97579532019-10-18 16:40:39 -0700659 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800660 for (size_t elements = 17; elements < 32; elements++) {
Marat Dukhan97579532019-10-18 16:40:39 -0700661 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800662 .elements(elements)
663 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
664 }
665 }
666
667 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, scale) {
668 TEST_REQUIRES_X86_AVX512F;
669 for (size_t elements = 1; elements <= 80; elements += 15) {
670 VScaleExpMinusMaxMicrokernelTester()
671 .elements(elements)
Marat Dukhan97579532019-10-18 16:40:39 -0700672 .scale(0.01f)
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800673 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
Marat Dukhan97579532019-10-18 16:40:39 -0700674 VScaleExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800675 .elements(elements)
Marat Dukhan97579532019-10-18 16:40:39 -0700676 .scale(100.0f)
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800677 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
Marat Dukhan97579532019-10-18 16:40:39 -0700678 }
679 }
Marat Dukhan4c4eb002019-12-08 21:27:49 -0800680#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
681
682
683#if XNN_ARCH_X86 || XNN_ARCH_X86_64
684 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32, elements_eq_32) {
685 TEST_REQUIRES_X86_AVX512F;
686 VScaleExpMinusMaxMicrokernelTester()
687 .elements(32)
688 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x32);
689 }
690
691 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32, elements_div_32) {
692 TEST_REQUIRES_X86_AVX512F;
693 for (size_t elements = 64; elements < 320; elements += 32) {
694 VScaleExpMinusMaxMicrokernelTester()
695 .elements(elements)
696 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x32);
697 }
698 }
699
700 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32, elements_lt_32) {
701 TEST_REQUIRES_X86_AVX512F;
702 for (size_t elements = 1; elements < 32; elements++) {
703 VScaleExpMinusMaxMicrokernelTester()
704 .elements(elements)
705 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x32);
706 }
707 }
708
709 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32, elements_gt_32) {
710 TEST_REQUIRES_X86_AVX512F;
711 for (size_t elements = 33; elements < 64; elements++) {
712 VScaleExpMinusMaxMicrokernelTester()
713 .elements(elements)
714 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x32);
715 }
716 }
717
718 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32, scale) {
719 TEST_REQUIRES_X86_AVX512F;
720 for (size_t elements = 1; elements <= 160; elements += 31) {
721 VScaleExpMinusMaxMicrokernelTester()
722 .elements(elements)
723 .scale(0.01f)
724 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x32);
725 VScaleExpMinusMaxMicrokernelTester()
726 .elements(elements)
727 .scale(100.0f)
728 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x32);
729 }
730 }
731#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
732
733
734#if XNN_ARCH_X86 || XNN_ARCH_X86_64
735 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48, elements_eq_48) {
736 TEST_REQUIRES_X86_AVX512F;
737 VScaleExpMinusMaxMicrokernelTester()
738 .elements(48)
739 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x48);
740 }
741
742 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48, elements_div_48) {
743 TEST_REQUIRES_X86_AVX512F;
744 for (size_t elements = 96; elements < 480; elements += 48) {
745 VScaleExpMinusMaxMicrokernelTester()
746 .elements(elements)
747 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x48);
748 }
749 }
750
751 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48, elements_lt_48) {
752 TEST_REQUIRES_X86_AVX512F;
753 for (size_t elements = 1; elements < 48; elements++) {
754 VScaleExpMinusMaxMicrokernelTester()
755 .elements(elements)
756 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x48);
757 }
758 }
759
760 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48, elements_gt_48) {
761 TEST_REQUIRES_X86_AVX512F;
762 for (size_t elements = 49; elements < 96; elements++) {
763 VScaleExpMinusMaxMicrokernelTester()
764 .elements(elements)
765 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x48);
766 }
767 }
768
769 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48, scale) {
770 TEST_REQUIRES_X86_AVX512F;
771 for (size_t elements = 1; elements <= 240; elements += 47) {
772 VScaleExpMinusMaxMicrokernelTester()
773 .elements(elements)
774 .scale(0.01f)
775 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x48);
776 VScaleExpMinusMaxMicrokernelTester()
777 .elements(elements)
778 .scale(100.0f)
779 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x48);
780 }
781 }
782#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
783
784
785#if XNN_ARCH_X86 || XNN_ARCH_X86_64
786 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64, elements_eq_64) {
787 TEST_REQUIRES_X86_AVX512F;
788 VScaleExpMinusMaxMicrokernelTester()
789 .elements(64)
790 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x64);
791 }
792
793 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64, elements_div_64) {
794 TEST_REQUIRES_X86_AVX512F;
795 for (size_t elements = 128; elements < 640; elements += 64) {
796 VScaleExpMinusMaxMicrokernelTester()
797 .elements(elements)
798 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x64);
799 }
800 }
801
802 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64, elements_lt_64) {
803 TEST_REQUIRES_X86_AVX512F;
804 for (size_t elements = 1; elements < 64; elements++) {
805 VScaleExpMinusMaxMicrokernelTester()
806 .elements(elements)
807 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x64);
808 }
809 }
810
811 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64, elements_gt_64) {
812 TEST_REQUIRES_X86_AVX512F;
813 for (size_t elements = 65; elements < 128; elements++) {
814 VScaleExpMinusMaxMicrokernelTester()
815 .elements(elements)
816 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x64);
817 }
818 }
819
820 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64, scale) {
821 TEST_REQUIRES_X86_AVX512F;
822 for (size_t elements = 1; elements <= 320; elements += 63) {
823 VScaleExpMinusMaxMicrokernelTester()
824 .elements(elements)
825 .scale(0.01f)
826 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x64);
827 VScaleExpMinusMaxMicrokernelTester()
828 .elements(elements)
829 .scale(100.0f)
830 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x64);
831 }
832 }
833#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
834
835
836#if XNN_ARCH_X86 || XNN_ARCH_X86_64
837 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80, elements_eq_80) {
838 TEST_REQUIRES_X86_AVX512F;
839 VScaleExpMinusMaxMicrokernelTester()
840 .elements(80)
841 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x80);
842 }
843
844 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80, elements_div_80) {
845 TEST_REQUIRES_X86_AVX512F;
846 for (size_t elements = 160; elements < 800; elements += 80) {
847 VScaleExpMinusMaxMicrokernelTester()
848 .elements(elements)
849 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x80);
850 }
851 }
852
853 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80, elements_lt_80) {
854 TEST_REQUIRES_X86_AVX512F;
855 for (size_t elements = 1; elements < 80; elements++) {
856 VScaleExpMinusMaxMicrokernelTester()
857 .elements(elements)
858 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x80);
859 }
860 }
861
862 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80, elements_gt_80) {
863 TEST_REQUIRES_X86_AVX512F;
864 for (size_t elements = 81; elements < 160; elements++) {
865 VScaleExpMinusMaxMicrokernelTester()
866 .elements(elements)
867 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x80);
868 }
869 }
870
871 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80, scale) {
872 TEST_REQUIRES_X86_AVX512F;
873 for (size_t elements = 1; elements <= 400; elements += 79) {
874 VScaleExpMinusMaxMicrokernelTester()
875 .elements(elements)
876 .scale(0.01f)
877 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x80);
878 VScaleExpMinusMaxMicrokernelTester()
879 .elements(elements)
880 .scale(100.0f)
881 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x80);
882 }
883 }
884#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
885
886
887#if XNN_ARCH_X86 || XNN_ARCH_X86_64
888 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96, elements_eq_96) {
889 TEST_REQUIRES_X86_AVX512F;
890 VScaleExpMinusMaxMicrokernelTester()
891 .elements(96)
892 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x96);
893 }
894
895 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96, elements_div_96) {
896 TEST_REQUIRES_X86_AVX512F;
897 for (size_t elements = 192; elements < 960; elements += 96) {
898 VScaleExpMinusMaxMicrokernelTester()
899 .elements(elements)
900 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x96);
901 }
902 }
903
904 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96, elements_lt_96) {
905 TEST_REQUIRES_X86_AVX512F;
906 for (size_t elements = 1; elements < 96; elements++) {
907 VScaleExpMinusMaxMicrokernelTester()
908 .elements(elements)
909 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x96);
910 }
911 }
912
913 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96, elements_gt_96) {
914 TEST_REQUIRES_X86_AVX512F;
915 for (size_t elements = 97; elements < 192; elements++) {
916 VScaleExpMinusMaxMicrokernelTester()
917 .elements(elements)
918 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x96);
919 }
920 }
921
922 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96, scale) {
923 TEST_REQUIRES_X86_AVX512F;
924 for (size_t elements = 1; elements <= 480; elements += 95) {
925 VScaleExpMinusMaxMicrokernelTester()
926 .elements(elements)
927 .scale(0.01f)
928 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x96);
929 VScaleExpMinusMaxMicrokernelTester()
930 .elements(elements)
931 .scale(100.0f)
932 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x96);
933 }
934 }
935#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
936
937
938#if XNN_ARCH_X86 || XNN_ARCH_X86_64
939 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112, elements_eq_112) {
940 TEST_REQUIRES_X86_AVX512F;
941 VScaleExpMinusMaxMicrokernelTester()
942 .elements(112)
943 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x112);
944 }
945
946 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112, elements_div_112) {
947 TEST_REQUIRES_X86_AVX512F;
948 for (size_t elements = 224; elements < 1120; elements += 112) {
949 VScaleExpMinusMaxMicrokernelTester()
950 .elements(elements)
951 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x112);
952 }
953 }
954
955 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112, elements_lt_112) {
956 TEST_REQUIRES_X86_AVX512F;
957 for (size_t elements = 1; elements < 112; elements++) {
958 VScaleExpMinusMaxMicrokernelTester()
959 .elements(elements)
960 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x112);
961 }
962 }
963
964 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112, elements_gt_112) {
965 TEST_REQUIRES_X86_AVX512F;
966 for (size_t elements = 113; elements < 224; elements++) {
967 VScaleExpMinusMaxMicrokernelTester()
968 .elements(elements)
969 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x112);
970 }
971 }
972
973 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112, scale) {
974 TEST_REQUIRES_X86_AVX512F;
975 for (size_t elements = 1; elements <= 560; elements += 111) {
976 VScaleExpMinusMaxMicrokernelTester()
977 .elements(elements)
978 .scale(0.01f)
979 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x112);
980 VScaleExpMinusMaxMicrokernelTester()
981 .elements(elements)
982 .scale(100.0f)
983 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x112);
984 }
985 }
986#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
987
988
989#if XNN_ARCH_X86 || XNN_ARCH_X86_64
990 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128, elements_eq_128) {
991 TEST_REQUIRES_X86_AVX512F;
992 VScaleExpMinusMaxMicrokernelTester()
993 .elements(128)
994 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x128);
995 }
996
997 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128, elements_div_128) {
998 TEST_REQUIRES_X86_AVX512F;
999 for (size_t elements = 256; elements < 1280; elements += 128) {
1000 VScaleExpMinusMaxMicrokernelTester()
1001 .elements(elements)
1002 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x128);
1003 }
1004 }
1005
1006 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128, elements_lt_128) {
1007 TEST_REQUIRES_X86_AVX512F;
1008 for (size_t elements = 1; elements < 128; elements++) {
1009 VScaleExpMinusMaxMicrokernelTester()
1010 .elements(elements)
1011 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x128);
1012 }
1013 }
1014
1015 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128, elements_gt_128) {
1016 TEST_REQUIRES_X86_AVX512F;
1017 for (size_t elements = 129; elements < 256; elements++) {
1018 VScaleExpMinusMaxMicrokernelTester()
1019 .elements(elements)
1020 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x128);
1021 }
1022 }
1023
1024 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128, scale) {
1025 TEST_REQUIRES_X86_AVX512F;
1026 for (size_t elements = 1; elements <= 640; elements += 127) {
1027 VScaleExpMinusMaxMicrokernelTester()
1028 .elements(elements)
1029 .scale(0.01f)
1030 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x128);
1031 VScaleExpMinusMaxMicrokernelTester()
1032 .elements(elements)
1033 .scale(100.0f)
1034 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x128);
1035 }
1036 }
1037#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1038
1039
1040#if XNN_ARCH_X86 || XNN_ARCH_X86_64
1041 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144, elements_eq_144) {
1042 TEST_REQUIRES_X86_AVX512F;
1043 VScaleExpMinusMaxMicrokernelTester()
1044 .elements(144)
1045 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x144);
1046 }
1047
1048 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144, elements_div_144) {
1049 TEST_REQUIRES_X86_AVX512F;
1050 for (size_t elements = 288; elements < 1440; elements += 144) {
1051 VScaleExpMinusMaxMicrokernelTester()
1052 .elements(elements)
1053 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x144);
1054 }
1055 }
1056
1057 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144, elements_lt_144) {
1058 TEST_REQUIRES_X86_AVX512F;
1059 for (size_t elements = 1; elements < 144; elements++) {
1060 VScaleExpMinusMaxMicrokernelTester()
1061 .elements(elements)
1062 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x144);
1063 }
1064 }
1065
1066 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144, elements_gt_144) {
1067 TEST_REQUIRES_X86_AVX512F;
1068 for (size_t elements = 145; elements < 288; elements++) {
1069 VScaleExpMinusMaxMicrokernelTester()
1070 .elements(elements)
1071 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x144);
1072 }
1073 }
1074
1075 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144, scale) {
1076 TEST_REQUIRES_X86_AVX512F;
1077 for (size_t elements = 1; elements <= 720; elements += 143) {
1078 VScaleExpMinusMaxMicrokernelTester()
1079 .elements(elements)
1080 .scale(0.01f)
1081 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x144);
1082 VScaleExpMinusMaxMicrokernelTester()
1083 .elements(elements)
1084 .scale(100.0f)
1085 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x144);
1086 }
1087 }
1088#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1089
1090
1091#if XNN_ARCH_X86 || XNN_ARCH_X86_64
1092 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160, elements_eq_160) {
1093 TEST_REQUIRES_X86_AVX512F;
1094 VScaleExpMinusMaxMicrokernelTester()
1095 .elements(160)
1096 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x160);
1097 }
1098
1099 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160, elements_div_160) {
1100 TEST_REQUIRES_X86_AVX512F;
1101 for (size_t elements = 320; elements < 1600; elements += 160) {
1102 VScaleExpMinusMaxMicrokernelTester()
1103 .elements(elements)
1104 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x160);
1105 }
1106 }
1107
1108 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160, elements_lt_160) {
1109 TEST_REQUIRES_X86_AVX512F;
1110 for (size_t elements = 1; elements < 160; elements++) {
1111 VScaleExpMinusMaxMicrokernelTester()
1112 .elements(elements)
1113 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x160);
1114 }
1115 }
1116
1117 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160, elements_gt_160) {
1118 TEST_REQUIRES_X86_AVX512F;
1119 for (size_t elements = 161; elements < 320; elements++) {
1120 VScaleExpMinusMaxMicrokernelTester()
1121 .elements(elements)
1122 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x160);
1123 }
1124 }
1125
1126 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160, scale) {
1127 TEST_REQUIRES_X86_AVX512F;
1128 for (size_t elements = 1; elements <= 800; elements += 159) {
1129 VScaleExpMinusMaxMicrokernelTester()
1130 .elements(elements)
1131 .scale(0.01f)
1132 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x160);
1133 VScaleExpMinusMaxMicrokernelTester()
1134 .elements(elements)
1135 .scale(100.0f)
1136 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x160);
1137 }
1138 }
1139#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1140
1141
1142#if XNN_ARCH_X86 || XNN_ARCH_X86_64
1143 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176, elements_eq_176) {
1144 TEST_REQUIRES_X86_AVX512F;
1145 VScaleExpMinusMaxMicrokernelTester()
1146 .elements(176)
1147 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x176);
1148 }
1149
1150 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176, elements_div_176) {
1151 TEST_REQUIRES_X86_AVX512F;
1152 for (size_t elements = 352; elements < 1760; elements += 176) {
1153 VScaleExpMinusMaxMicrokernelTester()
1154 .elements(elements)
1155 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x176);
1156 }
1157 }
1158
1159 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176, elements_lt_176) {
1160 TEST_REQUIRES_X86_AVX512F;
1161 for (size_t elements = 1; elements < 176; elements++) {
1162 VScaleExpMinusMaxMicrokernelTester()
1163 .elements(elements)
1164 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x176);
1165 }
1166 }
1167
1168 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176, elements_gt_176) {
1169 TEST_REQUIRES_X86_AVX512F;
1170 for (size_t elements = 177; elements < 352; elements++) {
1171 VScaleExpMinusMaxMicrokernelTester()
1172 .elements(elements)
1173 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x176);
1174 }
1175 }
1176
1177 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176, scale) {
1178 TEST_REQUIRES_X86_AVX512F;
1179 for (size_t elements = 1; elements <= 880; elements += 175) {
1180 VScaleExpMinusMaxMicrokernelTester()
1181 .elements(elements)
1182 .scale(0.01f)
1183 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x176);
1184 VScaleExpMinusMaxMicrokernelTester()
1185 .elements(elements)
1186 .scale(100.0f)
1187 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x176);
1188 }
1189 }
1190#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1191
1192
1193#if XNN_ARCH_X86 || XNN_ARCH_X86_64
1194 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192, elements_eq_192) {
1195 TEST_REQUIRES_X86_AVX512F;
1196 VScaleExpMinusMaxMicrokernelTester()
1197 .elements(192)
1198 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x192);
1199 }
1200
1201 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192, elements_div_192) {
1202 TEST_REQUIRES_X86_AVX512F;
1203 for (size_t elements = 384; elements < 1920; elements += 192) {
1204 VScaleExpMinusMaxMicrokernelTester()
1205 .elements(elements)
1206 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x192);
1207 }
1208 }
1209
1210 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192, elements_lt_192) {
1211 TEST_REQUIRES_X86_AVX512F;
1212 for (size_t elements = 1; elements < 192; elements++) {
1213 VScaleExpMinusMaxMicrokernelTester()
1214 .elements(elements)
1215 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x192);
1216 }
1217 }
1218
1219 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192, elements_gt_192) {
1220 TEST_REQUIRES_X86_AVX512F;
1221 for (size_t elements = 193; elements < 384; elements++) {
1222 VScaleExpMinusMaxMicrokernelTester()
1223 .elements(elements)
1224 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x192);
1225 }
1226 }
1227
1228 TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192, scale) {
1229 TEST_REQUIRES_X86_AVX512F;
1230 for (size_t elements = 1; elements <= 960; elements += 191) {
1231 VScaleExpMinusMaxMicrokernelTester()
1232 .elements(elements)
1233 .scale(0.01f)
1234 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x192);
1235 VScaleExpMinusMaxMicrokernelTester()
1236 .elements(elements)
1237 .scale(100.0f)
1238 .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x192);
1239 }
1240 }
1241#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64