xref: /aosp_15_r20/external/XNNPACK/test/f32-vscaleexpminusmax.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1 // 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-vscaleexpminusmax.yaml
8 //   Generator: tools/generate-vscaleexpminusmax-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/vscaleexpminusmax.h>
17 #include "vscaleexpminusmax-microkernel-tester.h"
18 
19 
20 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8,elements_eq_8)21   TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, elements_eq_8) {
22     TEST_REQUIRES_X86_AVX2;
23     VScaleExpMinusMaxMicrokernelTester()
24       .elements(8)
25       .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
26   }
27 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8,elements_div_8)28   TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, elements_div_8) {
29     TEST_REQUIRES_X86_AVX2;
30     for (size_t elements = 16; elements < 80; elements += 8) {
31       VScaleExpMinusMaxMicrokernelTester()
32         .elements(elements)
33         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
34     }
35   }
36 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8,elements_lt_8)37   TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, elements_lt_8) {
38     TEST_REQUIRES_X86_AVX2;
39     for (size_t elements = 1; elements < 8; elements++) {
40       VScaleExpMinusMaxMicrokernelTester()
41         .elements(elements)
42         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
43     }
44   }
45 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8,elements_gt_8)46   TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8, elements_gt_8) {
47     TEST_REQUIRES_X86_AVX2;
48     for (size_t elements = 9; elements < 16; elements++) {
49       VScaleExpMinusMaxMicrokernelTester()
50         .elements(elements)
51         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
52     }
53   }
54 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X8,scale)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)
60         .scale(0.01f)
61         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
62       VScaleExpMinusMaxMicrokernelTester()
63         .elements(elements)
64         .scale(100.0f)
65         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x8);
66     }
67   }
68 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
69 
70 
71 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16,elements_eq_16)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16,elements_div_16)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) {
82       VScaleExpMinusMaxMicrokernelTester()
83         .elements(elements)
84         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx2_p5_x16);
85     }
86   }
87 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16,elements_lt_16)88   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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16,elements_gt_16)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X16,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24,elements_eq_24)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24,elements_div_24)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24,elements_lt_24)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24,elements_gt_24)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X24,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32,elements_eq_32)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32,elements_div_32)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32,elements_lt_32)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32,elements_gt_32)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X32,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40,elements_eq_40)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40,elements_div_40)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40,elements_lt_40)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40,elements_gt_40)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X40,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48,elements_eq_48)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48,elements_div_48)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48,elements_lt_48)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48,elements_gt_48)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X48,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56,elements_eq_56)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56,elements_div_56)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56,elements_lt_56)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56,elements_gt_56)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X56,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64,elements_eq_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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64,elements_div_64)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64,elements_lt_64)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64,elements_gt_64)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X64,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72,elements_eq_72)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72,elements_div_72)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72,elements_lt_72)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72,elements_gt_72)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X72,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80,elements_eq_80)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80,elements_div_80)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80,elements_lt_80)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80,elements_gt_80)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X80,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88,elements_eq_88)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88,elements_div_88)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88,elements_lt_88)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88,elements_gt_88)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X88,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96,elements_eq_96)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96,elements_div_96)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96,elements_lt_96)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96,elements_gt_96)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX2_P5_X96,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16,elements_eq_16)633   TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, elements_eq_16) {
634     TEST_REQUIRES_X86_AVX512F;
635     VScaleExpMinusMaxMicrokernelTester()
636       .elements(16)
637       .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
638   }
639 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16,elements_div_16)640   TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, elements_div_16) {
641     TEST_REQUIRES_X86_AVX512F;
642     for (size_t elements = 32; elements < 160; elements += 16) {
643       VScaleExpMinusMaxMicrokernelTester()
644         .elements(elements)
645         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
646     }
647   }
648 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16,elements_lt_16)649   TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, elements_lt_16) {
650     TEST_REQUIRES_X86_AVX512F;
651     for (size_t elements = 1; elements < 16; elements++) {
652       VScaleExpMinusMaxMicrokernelTester()
653         .elements(elements)
654         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
655     }
656   }
657 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16,elements_gt_16)658   TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16, elements_gt_16) {
659     TEST_REQUIRES_X86_AVX512F;
660     for (size_t elements = 17; elements < 32; elements++) {
661       VScaleExpMinusMaxMicrokernelTester()
662         .elements(elements)
663         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
664     }
665   }
666 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X16,scale)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)
672         .scale(0.01f)
673         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
674       VScaleExpMinusMaxMicrokernelTester()
675         .elements(elements)
676         .scale(100.0f)
677         .Test(xnn_f32_vscaleexpminusmax_ukernel__avx512f_p5_scalef_x16);
678     }
679   }
680 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
681 
682 
683 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32,elements_eq_32)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32,elements_div_32)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32,elements_lt_32)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32,elements_gt_32)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X32,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48,elements_eq_48)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48,elements_div_48)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48,elements_lt_48)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48,elements_gt_48)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X48,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64,elements_eq_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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64,elements_div_64)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64,elements_lt_64)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64,elements_gt_64)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X64,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80,elements_eq_80)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80,elements_div_80)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80,elements_lt_80)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80,elements_gt_80)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X80,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96,elements_eq_96)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96,elements_div_96)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96,elements_lt_96)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96,elements_gt_96)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X96,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112,elements_eq_112)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112,elements_div_112)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112,elements_lt_112)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112,elements_gt_112)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X112,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128,elements_eq_128)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128,elements_div_128)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128,elements_lt_128)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128,elements_gt_128)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X128,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144,elements_eq_144)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144,elements_div_144)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144,elements_lt_144)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144,elements_gt_144)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X144,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160,elements_eq_160)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160,elements_div_160)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160,elements_lt_160)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160,elements_gt_160)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X160,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176,elements_eq_176)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176,elements_div_176)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176,elements_lt_176)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176,elements_gt_176)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X176,scale)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
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192,elements_eq_192)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192,elements_div_192)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192,elements_lt_192)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192,elements_gt_192)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 
TEST(F32_VSCALEEXPMINUSMAX__AVX512F_P5_SCALEF_X192,scale)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
1242