• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-raddstoreexpminusmax.yaml
8 //   Generator: tools/generate-raddstoreexpminusmax-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/raddstoreexpminusmax.h>
17 #include "raddstoreexpminusmax-microkernel-tester.h"
18 
19 
20 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X4,elements_eq_4)21   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X4, elements_eq_4) {
22     TEST_REQUIRES_ARM_NEON;
23     RAddStoreExpMinusMaxMicrokernelTester()
24       .elements(4)
25       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x4);
26   }
27 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X4,elements_div_4)28   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X4, elements_div_4) {
29     TEST_REQUIRES_ARM_NEON;
30     for (size_t elements = 8; elements < 40; elements += 4) {
31       RAddStoreExpMinusMaxMicrokernelTester()
32         .elements(elements)
33         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x4);
34     }
35   }
36 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X4,elements_lt_4)37   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X4, elements_lt_4) {
38     TEST_REQUIRES_ARM_NEON;
39     for (size_t elements = 1; elements < 4; elements++) {
40       RAddStoreExpMinusMaxMicrokernelTester()
41         .elements(elements)
42         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x4);
43     }
44   }
45 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X4,elements_gt_4)46   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X4, elements_gt_4) {
47     TEST_REQUIRES_ARM_NEON;
48     for (size_t elements = 5; elements < 8; elements++) {
49       RAddStoreExpMinusMaxMicrokernelTester()
50         .elements(elements)
51         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x4);
52     }
53   }
54 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
55 
56 
57 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8,elements_eq_8)58   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8, elements_eq_8) {
59     TEST_REQUIRES_ARM_NEON;
60     RAddStoreExpMinusMaxMicrokernelTester()
61       .elements(8)
62       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x8);
63   }
64 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8,elements_div_8)65   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8, elements_div_8) {
66     TEST_REQUIRES_ARM_NEON;
67     for (size_t elements = 16; elements < 80; elements += 8) {
68       RAddStoreExpMinusMaxMicrokernelTester()
69         .elements(elements)
70         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x8);
71     }
72   }
73 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8,elements_lt_8)74   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8, elements_lt_8) {
75     TEST_REQUIRES_ARM_NEON;
76     for (size_t elements = 1; elements < 8; elements++) {
77       RAddStoreExpMinusMaxMicrokernelTester()
78         .elements(elements)
79         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x8);
80     }
81   }
82 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8,elements_gt_8)83   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8, elements_gt_8) {
84     TEST_REQUIRES_ARM_NEON;
85     for (size_t elements = 9; elements < 16; elements++) {
86       RAddStoreExpMinusMaxMicrokernelTester()
87         .elements(elements)
88         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x8);
89     }
90   }
91 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
92 
93 
94 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8_ACC2,elements_eq_8)95   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8_ACC2, elements_eq_8) {
96     TEST_REQUIRES_ARM_NEON;
97     RAddStoreExpMinusMaxMicrokernelTester()
98       .elements(8)
99       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x8_acc2);
100   }
101 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8_ACC2,elements_div_8)102   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8_ACC2, elements_div_8) {
103     TEST_REQUIRES_ARM_NEON;
104     for (size_t elements = 16; elements < 80; elements += 8) {
105       RAddStoreExpMinusMaxMicrokernelTester()
106         .elements(elements)
107         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x8_acc2);
108     }
109   }
110 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8_ACC2,elements_lt_8)111   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8_ACC2, elements_lt_8) {
112     TEST_REQUIRES_ARM_NEON;
113     for (size_t elements = 1; elements < 8; elements++) {
114       RAddStoreExpMinusMaxMicrokernelTester()
115         .elements(elements)
116         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x8_acc2);
117     }
118   }
119 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8_ACC2,elements_gt_8)120   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X8_ACC2, elements_gt_8) {
121     TEST_REQUIRES_ARM_NEON;
122     for (size_t elements = 9; elements < 16; elements++) {
123       RAddStoreExpMinusMaxMicrokernelTester()
124         .elements(elements)
125         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x8_acc2);
126     }
127   }
128 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
129 
130 
131 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12,elements_eq_12)132   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12, elements_eq_12) {
133     TEST_REQUIRES_ARM_NEON;
134     RAddStoreExpMinusMaxMicrokernelTester()
135       .elements(12)
136       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12);
137   }
138 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12,elements_div_12)139   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12, elements_div_12) {
140     TEST_REQUIRES_ARM_NEON;
141     for (size_t elements = 24; elements < 120; elements += 12) {
142       RAddStoreExpMinusMaxMicrokernelTester()
143         .elements(elements)
144         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12);
145     }
146   }
147 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12,elements_lt_12)148   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12, elements_lt_12) {
149     TEST_REQUIRES_ARM_NEON;
150     for (size_t elements = 1; elements < 12; elements++) {
151       RAddStoreExpMinusMaxMicrokernelTester()
152         .elements(elements)
153         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12);
154     }
155   }
156 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12,elements_gt_12)157   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12, elements_gt_12) {
158     TEST_REQUIRES_ARM_NEON;
159     for (size_t elements = 13; elements < 24; elements++) {
160       RAddStoreExpMinusMaxMicrokernelTester()
161         .elements(elements)
162         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12);
163     }
164   }
165 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
166 
167 
168 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC2,elements_eq_12)169   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC2, elements_eq_12) {
170     TEST_REQUIRES_ARM_NEON;
171     RAddStoreExpMinusMaxMicrokernelTester()
172       .elements(12)
173       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12_acc2);
174   }
175 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC2,elements_div_12)176   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC2, elements_div_12) {
177     TEST_REQUIRES_ARM_NEON;
178     for (size_t elements = 24; elements < 120; elements += 12) {
179       RAddStoreExpMinusMaxMicrokernelTester()
180         .elements(elements)
181         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12_acc2);
182     }
183   }
184 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC2,elements_lt_12)185   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC2, elements_lt_12) {
186     TEST_REQUIRES_ARM_NEON;
187     for (size_t elements = 1; elements < 12; elements++) {
188       RAddStoreExpMinusMaxMicrokernelTester()
189         .elements(elements)
190         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12_acc2);
191     }
192   }
193 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC2,elements_gt_12)194   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC2, elements_gt_12) {
195     TEST_REQUIRES_ARM_NEON;
196     for (size_t elements = 13; elements < 24; elements++) {
197       RAddStoreExpMinusMaxMicrokernelTester()
198         .elements(elements)
199         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12_acc2);
200     }
201   }
202 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
203 
204 
205 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC3,elements_eq_12)206   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC3, elements_eq_12) {
207     TEST_REQUIRES_ARM_NEON;
208     RAddStoreExpMinusMaxMicrokernelTester()
209       .elements(12)
210       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12_acc3);
211   }
212 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC3,elements_div_12)213   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC3, elements_div_12) {
214     TEST_REQUIRES_ARM_NEON;
215     for (size_t elements = 24; elements < 120; elements += 12) {
216       RAddStoreExpMinusMaxMicrokernelTester()
217         .elements(elements)
218         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12_acc3);
219     }
220   }
221 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC3,elements_lt_12)222   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC3, elements_lt_12) {
223     TEST_REQUIRES_ARM_NEON;
224     for (size_t elements = 1; elements < 12; elements++) {
225       RAddStoreExpMinusMaxMicrokernelTester()
226         .elements(elements)
227         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12_acc3);
228     }
229   }
230 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC3,elements_gt_12)231   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X12_ACC3, elements_gt_12) {
232     TEST_REQUIRES_ARM_NEON;
233     for (size_t elements = 13; elements < 24; elements++) {
234       RAddStoreExpMinusMaxMicrokernelTester()
235         .elements(elements)
236         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x12_acc3);
237     }
238   }
239 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
240 
241 
242 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16,elements_eq_16)243   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16, elements_eq_16) {
244     TEST_REQUIRES_ARM_NEON;
245     RAddStoreExpMinusMaxMicrokernelTester()
246       .elements(16)
247       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16);
248   }
249 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16,elements_div_16)250   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16, elements_div_16) {
251     TEST_REQUIRES_ARM_NEON;
252     for (size_t elements = 32; elements < 160; elements += 16) {
253       RAddStoreExpMinusMaxMicrokernelTester()
254         .elements(elements)
255         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16);
256     }
257   }
258 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16,elements_lt_16)259   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16, elements_lt_16) {
260     TEST_REQUIRES_ARM_NEON;
261     for (size_t elements = 1; elements < 16; elements++) {
262       RAddStoreExpMinusMaxMicrokernelTester()
263         .elements(elements)
264         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16);
265     }
266   }
267 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16,elements_gt_16)268   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16, elements_gt_16) {
269     TEST_REQUIRES_ARM_NEON;
270     for (size_t elements = 17; elements < 32; elements++) {
271       RAddStoreExpMinusMaxMicrokernelTester()
272         .elements(elements)
273         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16);
274     }
275   }
276 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
277 
278 
279 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC2,elements_eq_16)280   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC2, elements_eq_16) {
281     TEST_REQUIRES_ARM_NEON;
282     RAddStoreExpMinusMaxMicrokernelTester()
283       .elements(16)
284       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16_acc2);
285   }
286 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC2,elements_div_16)287   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC2, elements_div_16) {
288     TEST_REQUIRES_ARM_NEON;
289     for (size_t elements = 32; elements < 160; elements += 16) {
290       RAddStoreExpMinusMaxMicrokernelTester()
291         .elements(elements)
292         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16_acc2);
293     }
294   }
295 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC2,elements_lt_16)296   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC2, elements_lt_16) {
297     TEST_REQUIRES_ARM_NEON;
298     for (size_t elements = 1; elements < 16; elements++) {
299       RAddStoreExpMinusMaxMicrokernelTester()
300         .elements(elements)
301         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16_acc2);
302     }
303   }
304 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC2,elements_gt_16)305   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC2, elements_gt_16) {
306     TEST_REQUIRES_ARM_NEON;
307     for (size_t elements = 17; elements < 32; elements++) {
308       RAddStoreExpMinusMaxMicrokernelTester()
309         .elements(elements)
310         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16_acc2);
311     }
312   }
313 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
314 
315 
316 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC4,elements_eq_16)317   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC4, elements_eq_16) {
318     TEST_REQUIRES_ARM_NEON;
319     RAddStoreExpMinusMaxMicrokernelTester()
320       .elements(16)
321       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16_acc4);
322   }
323 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC4,elements_div_16)324   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC4, elements_div_16) {
325     TEST_REQUIRES_ARM_NEON;
326     for (size_t elements = 32; elements < 160; elements += 16) {
327       RAddStoreExpMinusMaxMicrokernelTester()
328         .elements(elements)
329         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16_acc4);
330     }
331   }
332 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC4,elements_lt_16)333   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC4, elements_lt_16) {
334     TEST_REQUIRES_ARM_NEON;
335     for (size_t elements = 1; elements < 16; elements++) {
336       RAddStoreExpMinusMaxMicrokernelTester()
337         .elements(elements)
338         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16_acc4);
339     }
340   }
341 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC4,elements_gt_16)342   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X16_ACC4, elements_gt_16) {
343     TEST_REQUIRES_ARM_NEON;
344     for (size_t elements = 17; elements < 32; elements++) {
345       RAddStoreExpMinusMaxMicrokernelTester()
346         .elements(elements)
347         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x16_acc4);
348     }
349   }
350 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
351 
352 
353 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20,elements_eq_20)354   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20, elements_eq_20) {
355     TEST_REQUIRES_ARM_NEON;
356     RAddStoreExpMinusMaxMicrokernelTester()
357       .elements(20)
358       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20);
359   }
360 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20,elements_div_20)361   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20, elements_div_20) {
362     TEST_REQUIRES_ARM_NEON;
363     for (size_t elements = 40; elements < 200; elements += 20) {
364       RAddStoreExpMinusMaxMicrokernelTester()
365         .elements(elements)
366         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20);
367     }
368   }
369 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20,elements_lt_20)370   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20, elements_lt_20) {
371     TEST_REQUIRES_ARM_NEON;
372     for (size_t elements = 1; elements < 20; elements++) {
373       RAddStoreExpMinusMaxMicrokernelTester()
374         .elements(elements)
375         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20);
376     }
377   }
378 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20,elements_gt_20)379   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20, elements_gt_20) {
380     TEST_REQUIRES_ARM_NEON;
381     for (size_t elements = 21; elements < 40; elements++) {
382       RAddStoreExpMinusMaxMicrokernelTester()
383         .elements(elements)
384         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20);
385     }
386   }
387 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
388 
389 
390 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC2,elements_eq_20)391   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC2, elements_eq_20) {
392     TEST_REQUIRES_ARM_NEON;
393     RAddStoreExpMinusMaxMicrokernelTester()
394       .elements(20)
395       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20_acc2);
396   }
397 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC2,elements_div_20)398   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC2, elements_div_20) {
399     TEST_REQUIRES_ARM_NEON;
400     for (size_t elements = 40; elements < 200; elements += 20) {
401       RAddStoreExpMinusMaxMicrokernelTester()
402         .elements(elements)
403         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20_acc2);
404     }
405   }
406 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC2,elements_lt_20)407   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC2, elements_lt_20) {
408     TEST_REQUIRES_ARM_NEON;
409     for (size_t elements = 1; elements < 20; elements++) {
410       RAddStoreExpMinusMaxMicrokernelTester()
411         .elements(elements)
412         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20_acc2);
413     }
414   }
415 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC2,elements_gt_20)416   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC2, elements_gt_20) {
417     TEST_REQUIRES_ARM_NEON;
418     for (size_t elements = 21; elements < 40; elements++) {
419       RAddStoreExpMinusMaxMicrokernelTester()
420         .elements(elements)
421         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20_acc2);
422     }
423   }
424 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
425 
426 
427 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC5,elements_eq_20)428   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC5, elements_eq_20) {
429     TEST_REQUIRES_ARM_NEON;
430     RAddStoreExpMinusMaxMicrokernelTester()
431       .elements(20)
432       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20_acc5);
433   }
434 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC5,elements_div_20)435   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC5, elements_div_20) {
436     TEST_REQUIRES_ARM_NEON;
437     for (size_t elements = 40; elements < 200; elements += 20) {
438       RAddStoreExpMinusMaxMicrokernelTester()
439         .elements(elements)
440         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20_acc5);
441     }
442   }
443 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC5,elements_lt_20)444   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC5, elements_lt_20) {
445     TEST_REQUIRES_ARM_NEON;
446     for (size_t elements = 1; elements < 20; elements++) {
447       RAddStoreExpMinusMaxMicrokernelTester()
448         .elements(elements)
449         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20_acc5);
450     }
451   }
452 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC5,elements_gt_20)453   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_P5_X20_ACC5, elements_gt_20) {
454     TEST_REQUIRES_ARM_NEON;
455     for (size_t elements = 21; elements < 40; elements++) {
456       RAddStoreExpMinusMaxMicrokernelTester()
457         .elements(elements)
458         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_p5_x20_acc5);
459     }
460   }
461 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
462 
463 
464 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X4,elements_eq_4)465   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X4, elements_eq_4) {
466     TEST_REQUIRES_ARM_NEON;
467     RAddStoreExpMinusMaxMicrokernelTester()
468       .elements(4)
469       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x4);
470   }
471 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X4,elements_div_4)472   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X4, elements_div_4) {
473     TEST_REQUIRES_ARM_NEON;
474     for (size_t elements = 8; elements < 40; elements += 4) {
475       RAddStoreExpMinusMaxMicrokernelTester()
476         .elements(elements)
477         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x4);
478     }
479   }
480 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X4,elements_lt_4)481   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X4, elements_lt_4) {
482     TEST_REQUIRES_ARM_NEON;
483     for (size_t elements = 1; elements < 4; elements++) {
484       RAddStoreExpMinusMaxMicrokernelTester()
485         .elements(elements)
486         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x4);
487     }
488   }
489 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X4,elements_gt_4)490   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X4, elements_gt_4) {
491     TEST_REQUIRES_ARM_NEON;
492     for (size_t elements = 5; elements < 8; elements++) {
493       RAddStoreExpMinusMaxMicrokernelTester()
494         .elements(elements)
495         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x4);
496     }
497   }
498 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
499 
500 
501 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8,elements_eq_8)502   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8, elements_eq_8) {
503     TEST_REQUIRES_ARM_NEON;
504     RAddStoreExpMinusMaxMicrokernelTester()
505       .elements(8)
506       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x8);
507   }
508 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8,elements_div_8)509   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8, elements_div_8) {
510     TEST_REQUIRES_ARM_NEON;
511     for (size_t elements = 16; elements < 80; elements += 8) {
512       RAddStoreExpMinusMaxMicrokernelTester()
513         .elements(elements)
514         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x8);
515     }
516   }
517 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8,elements_lt_8)518   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8, elements_lt_8) {
519     TEST_REQUIRES_ARM_NEON;
520     for (size_t elements = 1; elements < 8; elements++) {
521       RAddStoreExpMinusMaxMicrokernelTester()
522         .elements(elements)
523         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x8);
524     }
525   }
526 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8,elements_gt_8)527   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8, elements_gt_8) {
528     TEST_REQUIRES_ARM_NEON;
529     for (size_t elements = 9; elements < 16; elements++) {
530       RAddStoreExpMinusMaxMicrokernelTester()
531         .elements(elements)
532         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x8);
533     }
534   }
535 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
536 
537 
538 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8_ACC2,elements_eq_8)539   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8_ACC2, elements_eq_8) {
540     TEST_REQUIRES_ARM_NEON;
541     RAddStoreExpMinusMaxMicrokernelTester()
542       .elements(8)
543       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x8_acc2);
544   }
545 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8_ACC2,elements_div_8)546   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8_ACC2, elements_div_8) {
547     TEST_REQUIRES_ARM_NEON;
548     for (size_t elements = 16; elements < 80; elements += 8) {
549       RAddStoreExpMinusMaxMicrokernelTester()
550         .elements(elements)
551         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x8_acc2);
552     }
553   }
554 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8_ACC2,elements_lt_8)555   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8_ACC2, elements_lt_8) {
556     TEST_REQUIRES_ARM_NEON;
557     for (size_t elements = 1; elements < 8; elements++) {
558       RAddStoreExpMinusMaxMicrokernelTester()
559         .elements(elements)
560         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x8_acc2);
561     }
562   }
563 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8_ACC2,elements_gt_8)564   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X8_ACC2, elements_gt_8) {
565     TEST_REQUIRES_ARM_NEON;
566     for (size_t elements = 9; elements < 16; elements++) {
567       RAddStoreExpMinusMaxMicrokernelTester()
568         .elements(elements)
569         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x8_acc2);
570     }
571   }
572 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
573 
574 
575 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12,elements_eq_12)576   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12, elements_eq_12) {
577     TEST_REQUIRES_ARM_NEON;
578     RAddStoreExpMinusMaxMicrokernelTester()
579       .elements(12)
580       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12);
581   }
582 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12,elements_div_12)583   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12, elements_div_12) {
584     TEST_REQUIRES_ARM_NEON;
585     for (size_t elements = 24; elements < 120; elements += 12) {
586       RAddStoreExpMinusMaxMicrokernelTester()
587         .elements(elements)
588         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12);
589     }
590   }
591 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12,elements_lt_12)592   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12, elements_lt_12) {
593     TEST_REQUIRES_ARM_NEON;
594     for (size_t elements = 1; elements < 12; elements++) {
595       RAddStoreExpMinusMaxMicrokernelTester()
596         .elements(elements)
597         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12);
598     }
599   }
600 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12,elements_gt_12)601   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12, elements_gt_12) {
602     TEST_REQUIRES_ARM_NEON;
603     for (size_t elements = 13; elements < 24; elements++) {
604       RAddStoreExpMinusMaxMicrokernelTester()
605         .elements(elements)
606         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12);
607     }
608   }
609 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
610 
611 
612 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC2,elements_eq_12)613   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC2, elements_eq_12) {
614     TEST_REQUIRES_ARM_NEON;
615     RAddStoreExpMinusMaxMicrokernelTester()
616       .elements(12)
617       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12_acc2);
618   }
619 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC2,elements_div_12)620   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC2, elements_div_12) {
621     TEST_REQUIRES_ARM_NEON;
622     for (size_t elements = 24; elements < 120; elements += 12) {
623       RAddStoreExpMinusMaxMicrokernelTester()
624         .elements(elements)
625         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12_acc2);
626     }
627   }
628 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC2,elements_lt_12)629   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC2, elements_lt_12) {
630     TEST_REQUIRES_ARM_NEON;
631     for (size_t elements = 1; elements < 12; elements++) {
632       RAddStoreExpMinusMaxMicrokernelTester()
633         .elements(elements)
634         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12_acc2);
635     }
636   }
637 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC2,elements_gt_12)638   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC2, elements_gt_12) {
639     TEST_REQUIRES_ARM_NEON;
640     for (size_t elements = 13; elements < 24; elements++) {
641       RAddStoreExpMinusMaxMicrokernelTester()
642         .elements(elements)
643         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12_acc2);
644     }
645   }
646 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
647 
648 
649 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC3,elements_eq_12)650   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC3, elements_eq_12) {
651     TEST_REQUIRES_ARM_NEON;
652     RAddStoreExpMinusMaxMicrokernelTester()
653       .elements(12)
654       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12_acc3);
655   }
656 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC3,elements_div_12)657   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC3, elements_div_12) {
658     TEST_REQUIRES_ARM_NEON;
659     for (size_t elements = 24; elements < 120; elements += 12) {
660       RAddStoreExpMinusMaxMicrokernelTester()
661         .elements(elements)
662         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12_acc3);
663     }
664   }
665 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC3,elements_lt_12)666   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC3, elements_lt_12) {
667     TEST_REQUIRES_ARM_NEON;
668     for (size_t elements = 1; elements < 12; elements++) {
669       RAddStoreExpMinusMaxMicrokernelTester()
670         .elements(elements)
671         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12_acc3);
672     }
673   }
674 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC3,elements_gt_12)675   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X12_ACC3, elements_gt_12) {
676     TEST_REQUIRES_ARM_NEON;
677     for (size_t elements = 13; elements < 24; elements++) {
678       RAddStoreExpMinusMaxMicrokernelTester()
679         .elements(elements)
680         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x12_acc3);
681     }
682   }
683 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
684 
685 
686 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16,elements_eq_16)687   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16, elements_eq_16) {
688     TEST_REQUIRES_ARM_NEON;
689     RAddStoreExpMinusMaxMicrokernelTester()
690       .elements(16)
691       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16);
692   }
693 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16,elements_div_16)694   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16, elements_div_16) {
695     TEST_REQUIRES_ARM_NEON;
696     for (size_t elements = 32; elements < 160; elements += 16) {
697       RAddStoreExpMinusMaxMicrokernelTester()
698         .elements(elements)
699         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16);
700     }
701   }
702 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16,elements_lt_16)703   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16, elements_lt_16) {
704     TEST_REQUIRES_ARM_NEON;
705     for (size_t elements = 1; elements < 16; elements++) {
706       RAddStoreExpMinusMaxMicrokernelTester()
707         .elements(elements)
708         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16);
709     }
710   }
711 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16,elements_gt_16)712   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16, elements_gt_16) {
713     TEST_REQUIRES_ARM_NEON;
714     for (size_t elements = 17; elements < 32; elements++) {
715       RAddStoreExpMinusMaxMicrokernelTester()
716         .elements(elements)
717         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16);
718     }
719   }
720 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
721 
722 
723 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC2,elements_eq_16)724   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC2, elements_eq_16) {
725     TEST_REQUIRES_ARM_NEON;
726     RAddStoreExpMinusMaxMicrokernelTester()
727       .elements(16)
728       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16_acc2);
729   }
730 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC2,elements_div_16)731   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC2, elements_div_16) {
732     TEST_REQUIRES_ARM_NEON;
733     for (size_t elements = 32; elements < 160; elements += 16) {
734       RAddStoreExpMinusMaxMicrokernelTester()
735         .elements(elements)
736         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16_acc2);
737     }
738   }
739 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC2,elements_lt_16)740   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC2, elements_lt_16) {
741     TEST_REQUIRES_ARM_NEON;
742     for (size_t elements = 1; elements < 16; elements++) {
743       RAddStoreExpMinusMaxMicrokernelTester()
744         .elements(elements)
745         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16_acc2);
746     }
747   }
748 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC2,elements_gt_16)749   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC2, elements_gt_16) {
750     TEST_REQUIRES_ARM_NEON;
751     for (size_t elements = 17; elements < 32; elements++) {
752       RAddStoreExpMinusMaxMicrokernelTester()
753         .elements(elements)
754         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16_acc2);
755     }
756   }
757 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
758 
759 
760 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC4,elements_eq_16)761   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC4, elements_eq_16) {
762     TEST_REQUIRES_ARM_NEON;
763     RAddStoreExpMinusMaxMicrokernelTester()
764       .elements(16)
765       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16_acc4);
766   }
767 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC4,elements_div_16)768   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC4, elements_div_16) {
769     TEST_REQUIRES_ARM_NEON;
770     for (size_t elements = 32; elements < 160; elements += 16) {
771       RAddStoreExpMinusMaxMicrokernelTester()
772         .elements(elements)
773         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16_acc4);
774     }
775   }
776 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC4,elements_lt_16)777   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC4, elements_lt_16) {
778     TEST_REQUIRES_ARM_NEON;
779     for (size_t elements = 1; elements < 16; elements++) {
780       RAddStoreExpMinusMaxMicrokernelTester()
781         .elements(elements)
782         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16_acc4);
783     }
784   }
785 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC4,elements_gt_16)786   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X16_ACC4, elements_gt_16) {
787     TEST_REQUIRES_ARM_NEON;
788     for (size_t elements = 17; elements < 32; elements++) {
789       RAddStoreExpMinusMaxMicrokernelTester()
790         .elements(elements)
791         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x16_acc4);
792     }
793   }
794 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
795 
796 
797 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20,elements_eq_20)798   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20, elements_eq_20) {
799     TEST_REQUIRES_ARM_NEON;
800     RAddStoreExpMinusMaxMicrokernelTester()
801       .elements(20)
802       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20);
803   }
804 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20,elements_div_20)805   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20, elements_div_20) {
806     TEST_REQUIRES_ARM_NEON;
807     for (size_t elements = 40; elements < 200; elements += 20) {
808       RAddStoreExpMinusMaxMicrokernelTester()
809         .elements(elements)
810         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20);
811     }
812   }
813 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20,elements_lt_20)814   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20, elements_lt_20) {
815     TEST_REQUIRES_ARM_NEON;
816     for (size_t elements = 1; elements < 20; elements++) {
817       RAddStoreExpMinusMaxMicrokernelTester()
818         .elements(elements)
819         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20);
820     }
821   }
822 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20,elements_gt_20)823   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20, elements_gt_20) {
824     TEST_REQUIRES_ARM_NEON;
825     for (size_t elements = 21; elements < 40; elements++) {
826       RAddStoreExpMinusMaxMicrokernelTester()
827         .elements(elements)
828         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20);
829     }
830   }
831 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
832 
833 
834 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC2,elements_eq_20)835   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC2, elements_eq_20) {
836     TEST_REQUIRES_ARM_NEON;
837     RAddStoreExpMinusMaxMicrokernelTester()
838       .elements(20)
839       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20_acc2);
840   }
841 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC2,elements_div_20)842   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC2, elements_div_20) {
843     TEST_REQUIRES_ARM_NEON;
844     for (size_t elements = 40; elements < 200; elements += 20) {
845       RAddStoreExpMinusMaxMicrokernelTester()
846         .elements(elements)
847         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20_acc2);
848     }
849   }
850 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC2,elements_lt_20)851   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC2, elements_lt_20) {
852     TEST_REQUIRES_ARM_NEON;
853     for (size_t elements = 1; elements < 20; elements++) {
854       RAddStoreExpMinusMaxMicrokernelTester()
855         .elements(elements)
856         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20_acc2);
857     }
858   }
859 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC2,elements_gt_20)860   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC2, elements_gt_20) {
861     TEST_REQUIRES_ARM_NEON;
862     for (size_t elements = 21; elements < 40; elements++) {
863       RAddStoreExpMinusMaxMicrokernelTester()
864         .elements(elements)
865         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20_acc2);
866     }
867   }
868 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
869 
870 
871 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC5,elements_eq_20)872   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC5, elements_eq_20) {
873     TEST_REQUIRES_ARM_NEON;
874     RAddStoreExpMinusMaxMicrokernelTester()
875       .elements(20)
876       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20_acc5);
877   }
878 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC5,elements_div_20)879   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC5, elements_div_20) {
880     TEST_REQUIRES_ARM_NEON;
881     for (size_t elements = 40; elements < 200; elements += 20) {
882       RAddStoreExpMinusMaxMicrokernelTester()
883         .elements(elements)
884         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20_acc5);
885     }
886   }
887 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC5,elements_lt_20)888   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC5, elements_lt_20) {
889     TEST_REQUIRES_ARM_NEON;
890     for (size_t elements = 1; elements < 20; elements++) {
891       RAddStoreExpMinusMaxMicrokernelTester()
892         .elements(elements)
893         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20_acc5);
894     }
895   }
896 
TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC5,elements_gt_20)897   TEST(F32_RADDSTOREEXPMINUSMAX__NEON_LUT64_P2_X20_ACC5, elements_gt_20) {
898     TEST_REQUIRES_ARM_NEON;
899     for (size_t elements = 21; elements < 40; elements++) {
900       RAddStoreExpMinusMaxMicrokernelTester()
901         .elements(elements)
902         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_lut64_p2_x20_acc5);
903     }
904   }
905 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
906 
907 
908 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X4,elements_eq_4)909   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X4, elements_eq_4) {
910     TEST_REQUIRES_ARM_NEON_FMA;
911     RAddStoreExpMinusMaxMicrokernelTester()
912       .elements(4)
913       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x4);
914   }
915 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X4,elements_div_4)916   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X4, elements_div_4) {
917     TEST_REQUIRES_ARM_NEON_FMA;
918     for (size_t elements = 8; elements < 40; elements += 4) {
919       RAddStoreExpMinusMaxMicrokernelTester()
920         .elements(elements)
921         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x4);
922     }
923   }
924 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X4,elements_lt_4)925   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X4, elements_lt_4) {
926     TEST_REQUIRES_ARM_NEON_FMA;
927     for (size_t elements = 1; elements < 4; elements++) {
928       RAddStoreExpMinusMaxMicrokernelTester()
929         .elements(elements)
930         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x4);
931     }
932   }
933 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X4,elements_gt_4)934   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X4, elements_gt_4) {
935     TEST_REQUIRES_ARM_NEON_FMA;
936     for (size_t elements = 5; elements < 8; elements++) {
937       RAddStoreExpMinusMaxMicrokernelTester()
938         .elements(elements)
939         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x4);
940     }
941   }
942 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
943 
944 
945 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8,elements_eq_8)946   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8, elements_eq_8) {
947     TEST_REQUIRES_ARM_NEON_FMA;
948     RAddStoreExpMinusMaxMicrokernelTester()
949       .elements(8)
950       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x8);
951   }
952 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8,elements_div_8)953   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8, elements_div_8) {
954     TEST_REQUIRES_ARM_NEON_FMA;
955     for (size_t elements = 16; elements < 80; elements += 8) {
956       RAddStoreExpMinusMaxMicrokernelTester()
957         .elements(elements)
958         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x8);
959     }
960   }
961 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8,elements_lt_8)962   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8, elements_lt_8) {
963     TEST_REQUIRES_ARM_NEON_FMA;
964     for (size_t elements = 1; elements < 8; elements++) {
965       RAddStoreExpMinusMaxMicrokernelTester()
966         .elements(elements)
967         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x8);
968     }
969   }
970 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8,elements_gt_8)971   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8, elements_gt_8) {
972     TEST_REQUIRES_ARM_NEON_FMA;
973     for (size_t elements = 9; elements < 16; elements++) {
974       RAddStoreExpMinusMaxMicrokernelTester()
975         .elements(elements)
976         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x8);
977     }
978   }
979 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
980 
981 
982 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8_ACC2,elements_eq_8)983   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8_ACC2, elements_eq_8) {
984     TEST_REQUIRES_ARM_NEON_FMA;
985     RAddStoreExpMinusMaxMicrokernelTester()
986       .elements(8)
987       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x8_acc2);
988   }
989 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8_ACC2,elements_div_8)990   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8_ACC2, elements_div_8) {
991     TEST_REQUIRES_ARM_NEON_FMA;
992     for (size_t elements = 16; elements < 80; elements += 8) {
993       RAddStoreExpMinusMaxMicrokernelTester()
994         .elements(elements)
995         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x8_acc2);
996     }
997   }
998 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8_ACC2,elements_lt_8)999   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8_ACC2, elements_lt_8) {
1000     TEST_REQUIRES_ARM_NEON_FMA;
1001     for (size_t elements = 1; elements < 8; elements++) {
1002       RAddStoreExpMinusMaxMicrokernelTester()
1003         .elements(elements)
1004         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x8_acc2);
1005     }
1006   }
1007 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8_ACC2,elements_gt_8)1008   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X8_ACC2, elements_gt_8) {
1009     TEST_REQUIRES_ARM_NEON_FMA;
1010     for (size_t elements = 9; elements < 16; elements++) {
1011       RAddStoreExpMinusMaxMicrokernelTester()
1012         .elements(elements)
1013         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x8_acc2);
1014     }
1015   }
1016 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1017 
1018 
1019 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12,elements_eq_12)1020   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12, elements_eq_12) {
1021     TEST_REQUIRES_ARM_NEON_FMA;
1022     RAddStoreExpMinusMaxMicrokernelTester()
1023       .elements(12)
1024       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12);
1025   }
1026 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12,elements_div_12)1027   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12, elements_div_12) {
1028     TEST_REQUIRES_ARM_NEON_FMA;
1029     for (size_t elements = 24; elements < 120; elements += 12) {
1030       RAddStoreExpMinusMaxMicrokernelTester()
1031         .elements(elements)
1032         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12);
1033     }
1034   }
1035 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12,elements_lt_12)1036   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12, elements_lt_12) {
1037     TEST_REQUIRES_ARM_NEON_FMA;
1038     for (size_t elements = 1; elements < 12; elements++) {
1039       RAddStoreExpMinusMaxMicrokernelTester()
1040         .elements(elements)
1041         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12);
1042     }
1043   }
1044 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12,elements_gt_12)1045   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12, elements_gt_12) {
1046     TEST_REQUIRES_ARM_NEON_FMA;
1047     for (size_t elements = 13; elements < 24; elements++) {
1048       RAddStoreExpMinusMaxMicrokernelTester()
1049         .elements(elements)
1050         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12);
1051     }
1052   }
1053 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1054 
1055 
1056 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC2,elements_eq_12)1057   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC2, elements_eq_12) {
1058     TEST_REQUIRES_ARM_NEON_FMA;
1059     RAddStoreExpMinusMaxMicrokernelTester()
1060       .elements(12)
1061       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12_acc2);
1062   }
1063 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC2,elements_div_12)1064   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC2, elements_div_12) {
1065     TEST_REQUIRES_ARM_NEON_FMA;
1066     for (size_t elements = 24; elements < 120; elements += 12) {
1067       RAddStoreExpMinusMaxMicrokernelTester()
1068         .elements(elements)
1069         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12_acc2);
1070     }
1071   }
1072 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC2,elements_lt_12)1073   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC2, elements_lt_12) {
1074     TEST_REQUIRES_ARM_NEON_FMA;
1075     for (size_t elements = 1; elements < 12; elements++) {
1076       RAddStoreExpMinusMaxMicrokernelTester()
1077         .elements(elements)
1078         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12_acc2);
1079     }
1080   }
1081 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC2,elements_gt_12)1082   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC2, elements_gt_12) {
1083     TEST_REQUIRES_ARM_NEON_FMA;
1084     for (size_t elements = 13; elements < 24; elements++) {
1085       RAddStoreExpMinusMaxMicrokernelTester()
1086         .elements(elements)
1087         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12_acc2);
1088     }
1089   }
1090 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1091 
1092 
1093 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC3,elements_eq_12)1094   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC3, elements_eq_12) {
1095     TEST_REQUIRES_ARM_NEON_FMA;
1096     RAddStoreExpMinusMaxMicrokernelTester()
1097       .elements(12)
1098       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12_acc3);
1099   }
1100 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC3,elements_div_12)1101   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC3, elements_div_12) {
1102     TEST_REQUIRES_ARM_NEON_FMA;
1103     for (size_t elements = 24; elements < 120; elements += 12) {
1104       RAddStoreExpMinusMaxMicrokernelTester()
1105         .elements(elements)
1106         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12_acc3);
1107     }
1108   }
1109 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC3,elements_lt_12)1110   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC3, elements_lt_12) {
1111     TEST_REQUIRES_ARM_NEON_FMA;
1112     for (size_t elements = 1; elements < 12; elements++) {
1113       RAddStoreExpMinusMaxMicrokernelTester()
1114         .elements(elements)
1115         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12_acc3);
1116     }
1117   }
1118 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC3,elements_gt_12)1119   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X12_ACC3, elements_gt_12) {
1120     TEST_REQUIRES_ARM_NEON_FMA;
1121     for (size_t elements = 13; elements < 24; elements++) {
1122       RAddStoreExpMinusMaxMicrokernelTester()
1123         .elements(elements)
1124         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x12_acc3);
1125     }
1126   }
1127 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1128 
1129 
1130 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16,elements_eq_16)1131   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16, elements_eq_16) {
1132     TEST_REQUIRES_ARM_NEON_FMA;
1133     RAddStoreExpMinusMaxMicrokernelTester()
1134       .elements(16)
1135       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16);
1136   }
1137 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16,elements_div_16)1138   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16, elements_div_16) {
1139     TEST_REQUIRES_ARM_NEON_FMA;
1140     for (size_t elements = 32; elements < 160; elements += 16) {
1141       RAddStoreExpMinusMaxMicrokernelTester()
1142         .elements(elements)
1143         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16);
1144     }
1145   }
1146 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16,elements_lt_16)1147   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16, elements_lt_16) {
1148     TEST_REQUIRES_ARM_NEON_FMA;
1149     for (size_t elements = 1; elements < 16; elements++) {
1150       RAddStoreExpMinusMaxMicrokernelTester()
1151         .elements(elements)
1152         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16);
1153     }
1154   }
1155 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16,elements_gt_16)1156   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16, elements_gt_16) {
1157     TEST_REQUIRES_ARM_NEON_FMA;
1158     for (size_t elements = 17; elements < 32; elements++) {
1159       RAddStoreExpMinusMaxMicrokernelTester()
1160         .elements(elements)
1161         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16);
1162     }
1163   }
1164 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1165 
1166 
1167 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC2,elements_eq_16)1168   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC2, elements_eq_16) {
1169     TEST_REQUIRES_ARM_NEON_FMA;
1170     RAddStoreExpMinusMaxMicrokernelTester()
1171       .elements(16)
1172       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16_acc2);
1173   }
1174 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC2,elements_div_16)1175   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC2, elements_div_16) {
1176     TEST_REQUIRES_ARM_NEON_FMA;
1177     for (size_t elements = 32; elements < 160; elements += 16) {
1178       RAddStoreExpMinusMaxMicrokernelTester()
1179         .elements(elements)
1180         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16_acc2);
1181     }
1182   }
1183 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC2,elements_lt_16)1184   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC2, elements_lt_16) {
1185     TEST_REQUIRES_ARM_NEON_FMA;
1186     for (size_t elements = 1; elements < 16; elements++) {
1187       RAddStoreExpMinusMaxMicrokernelTester()
1188         .elements(elements)
1189         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16_acc2);
1190     }
1191   }
1192 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC2,elements_gt_16)1193   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC2, elements_gt_16) {
1194     TEST_REQUIRES_ARM_NEON_FMA;
1195     for (size_t elements = 17; elements < 32; elements++) {
1196       RAddStoreExpMinusMaxMicrokernelTester()
1197         .elements(elements)
1198         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16_acc2);
1199     }
1200   }
1201 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1202 
1203 
1204 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC4,elements_eq_16)1205   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC4, elements_eq_16) {
1206     TEST_REQUIRES_ARM_NEON_FMA;
1207     RAddStoreExpMinusMaxMicrokernelTester()
1208       .elements(16)
1209       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16_acc4);
1210   }
1211 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC4,elements_div_16)1212   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC4, elements_div_16) {
1213     TEST_REQUIRES_ARM_NEON_FMA;
1214     for (size_t elements = 32; elements < 160; elements += 16) {
1215       RAddStoreExpMinusMaxMicrokernelTester()
1216         .elements(elements)
1217         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16_acc4);
1218     }
1219   }
1220 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC4,elements_lt_16)1221   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC4, elements_lt_16) {
1222     TEST_REQUIRES_ARM_NEON_FMA;
1223     for (size_t elements = 1; elements < 16; elements++) {
1224       RAddStoreExpMinusMaxMicrokernelTester()
1225         .elements(elements)
1226         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16_acc4);
1227     }
1228   }
1229 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC4,elements_gt_16)1230   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X16_ACC4, elements_gt_16) {
1231     TEST_REQUIRES_ARM_NEON_FMA;
1232     for (size_t elements = 17; elements < 32; elements++) {
1233       RAddStoreExpMinusMaxMicrokernelTester()
1234         .elements(elements)
1235         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x16_acc4);
1236     }
1237   }
1238 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1239 
1240 
1241 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20,elements_eq_20)1242   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20, elements_eq_20) {
1243     TEST_REQUIRES_ARM_NEON_FMA;
1244     RAddStoreExpMinusMaxMicrokernelTester()
1245       .elements(20)
1246       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20);
1247   }
1248 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20,elements_div_20)1249   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20, elements_div_20) {
1250     TEST_REQUIRES_ARM_NEON_FMA;
1251     for (size_t elements = 40; elements < 200; elements += 20) {
1252       RAddStoreExpMinusMaxMicrokernelTester()
1253         .elements(elements)
1254         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20);
1255     }
1256   }
1257 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20,elements_lt_20)1258   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20, elements_lt_20) {
1259     TEST_REQUIRES_ARM_NEON_FMA;
1260     for (size_t elements = 1; elements < 20; elements++) {
1261       RAddStoreExpMinusMaxMicrokernelTester()
1262         .elements(elements)
1263         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20);
1264     }
1265   }
1266 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20,elements_gt_20)1267   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20, elements_gt_20) {
1268     TEST_REQUIRES_ARM_NEON_FMA;
1269     for (size_t elements = 21; elements < 40; elements++) {
1270       RAddStoreExpMinusMaxMicrokernelTester()
1271         .elements(elements)
1272         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20);
1273     }
1274   }
1275 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1276 
1277 
1278 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC2,elements_eq_20)1279   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC2, elements_eq_20) {
1280     TEST_REQUIRES_ARM_NEON_FMA;
1281     RAddStoreExpMinusMaxMicrokernelTester()
1282       .elements(20)
1283       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20_acc2);
1284   }
1285 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC2,elements_div_20)1286   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC2, elements_div_20) {
1287     TEST_REQUIRES_ARM_NEON_FMA;
1288     for (size_t elements = 40; elements < 200; elements += 20) {
1289       RAddStoreExpMinusMaxMicrokernelTester()
1290         .elements(elements)
1291         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20_acc2);
1292     }
1293   }
1294 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC2,elements_lt_20)1295   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC2, elements_lt_20) {
1296     TEST_REQUIRES_ARM_NEON_FMA;
1297     for (size_t elements = 1; elements < 20; elements++) {
1298       RAddStoreExpMinusMaxMicrokernelTester()
1299         .elements(elements)
1300         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20_acc2);
1301     }
1302   }
1303 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC2,elements_gt_20)1304   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC2, elements_gt_20) {
1305     TEST_REQUIRES_ARM_NEON_FMA;
1306     for (size_t elements = 21; elements < 40; elements++) {
1307       RAddStoreExpMinusMaxMicrokernelTester()
1308         .elements(elements)
1309         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20_acc2);
1310     }
1311   }
1312 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1313 
1314 
1315 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC5,elements_eq_20)1316   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC5, elements_eq_20) {
1317     TEST_REQUIRES_ARM_NEON_FMA;
1318     RAddStoreExpMinusMaxMicrokernelTester()
1319       .elements(20)
1320       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20_acc5);
1321   }
1322 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC5,elements_div_20)1323   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC5, elements_div_20) {
1324     TEST_REQUIRES_ARM_NEON_FMA;
1325     for (size_t elements = 40; elements < 200; elements += 20) {
1326       RAddStoreExpMinusMaxMicrokernelTester()
1327         .elements(elements)
1328         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20_acc5);
1329     }
1330   }
1331 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC5,elements_lt_20)1332   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC5, elements_lt_20) {
1333     TEST_REQUIRES_ARM_NEON_FMA;
1334     for (size_t elements = 1; elements < 20; elements++) {
1335       RAddStoreExpMinusMaxMicrokernelTester()
1336         .elements(elements)
1337         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20_acc5);
1338     }
1339   }
1340 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC5,elements_gt_20)1341   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_P5_X20_ACC5, elements_gt_20) {
1342     TEST_REQUIRES_ARM_NEON_FMA;
1343     for (size_t elements = 21; elements < 40; elements++) {
1344       RAddStoreExpMinusMaxMicrokernelTester()
1345         .elements(elements)
1346         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_p5_x20_acc5);
1347     }
1348   }
1349 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1350 
1351 
1352 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X4,elements_eq_4)1353   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X4, elements_eq_4) {
1354     TEST_REQUIRES_ARM_NEON_FMA;
1355     RAddStoreExpMinusMaxMicrokernelTester()
1356       .elements(4)
1357       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x4);
1358   }
1359 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X4,elements_div_4)1360   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X4, elements_div_4) {
1361     TEST_REQUIRES_ARM_NEON_FMA;
1362     for (size_t elements = 8; elements < 40; elements += 4) {
1363       RAddStoreExpMinusMaxMicrokernelTester()
1364         .elements(elements)
1365         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x4);
1366     }
1367   }
1368 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X4,elements_lt_4)1369   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X4, elements_lt_4) {
1370     TEST_REQUIRES_ARM_NEON_FMA;
1371     for (size_t elements = 1; elements < 4; elements++) {
1372       RAddStoreExpMinusMaxMicrokernelTester()
1373         .elements(elements)
1374         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x4);
1375     }
1376   }
1377 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X4,elements_gt_4)1378   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X4, elements_gt_4) {
1379     TEST_REQUIRES_ARM_NEON_FMA;
1380     for (size_t elements = 5; elements < 8; elements++) {
1381       RAddStoreExpMinusMaxMicrokernelTester()
1382         .elements(elements)
1383         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x4);
1384     }
1385   }
1386 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1387 
1388 
1389 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8,elements_eq_8)1390   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8, elements_eq_8) {
1391     TEST_REQUIRES_ARM_NEON_FMA;
1392     RAddStoreExpMinusMaxMicrokernelTester()
1393       .elements(8)
1394       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x8);
1395   }
1396 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8,elements_div_8)1397   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8, elements_div_8) {
1398     TEST_REQUIRES_ARM_NEON_FMA;
1399     for (size_t elements = 16; elements < 80; elements += 8) {
1400       RAddStoreExpMinusMaxMicrokernelTester()
1401         .elements(elements)
1402         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x8);
1403     }
1404   }
1405 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8,elements_lt_8)1406   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8, elements_lt_8) {
1407     TEST_REQUIRES_ARM_NEON_FMA;
1408     for (size_t elements = 1; elements < 8; elements++) {
1409       RAddStoreExpMinusMaxMicrokernelTester()
1410         .elements(elements)
1411         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x8);
1412     }
1413   }
1414 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8,elements_gt_8)1415   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8, elements_gt_8) {
1416     TEST_REQUIRES_ARM_NEON_FMA;
1417     for (size_t elements = 9; elements < 16; elements++) {
1418       RAddStoreExpMinusMaxMicrokernelTester()
1419         .elements(elements)
1420         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x8);
1421     }
1422   }
1423 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1424 
1425 
1426 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8_ACC2,elements_eq_8)1427   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8_ACC2, elements_eq_8) {
1428     TEST_REQUIRES_ARM_NEON_FMA;
1429     RAddStoreExpMinusMaxMicrokernelTester()
1430       .elements(8)
1431       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x8_acc2);
1432   }
1433 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8_ACC2,elements_div_8)1434   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8_ACC2, elements_div_8) {
1435     TEST_REQUIRES_ARM_NEON_FMA;
1436     for (size_t elements = 16; elements < 80; elements += 8) {
1437       RAddStoreExpMinusMaxMicrokernelTester()
1438         .elements(elements)
1439         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x8_acc2);
1440     }
1441   }
1442 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8_ACC2,elements_lt_8)1443   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8_ACC2, elements_lt_8) {
1444     TEST_REQUIRES_ARM_NEON_FMA;
1445     for (size_t elements = 1; elements < 8; elements++) {
1446       RAddStoreExpMinusMaxMicrokernelTester()
1447         .elements(elements)
1448         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x8_acc2);
1449     }
1450   }
1451 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8_ACC2,elements_gt_8)1452   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X8_ACC2, elements_gt_8) {
1453     TEST_REQUIRES_ARM_NEON_FMA;
1454     for (size_t elements = 9; elements < 16; elements++) {
1455       RAddStoreExpMinusMaxMicrokernelTester()
1456         .elements(elements)
1457         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x8_acc2);
1458     }
1459   }
1460 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1461 
1462 
1463 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12,elements_eq_12)1464   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12, elements_eq_12) {
1465     TEST_REQUIRES_ARM_NEON_FMA;
1466     RAddStoreExpMinusMaxMicrokernelTester()
1467       .elements(12)
1468       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12);
1469   }
1470 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12,elements_div_12)1471   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12, elements_div_12) {
1472     TEST_REQUIRES_ARM_NEON_FMA;
1473     for (size_t elements = 24; elements < 120; elements += 12) {
1474       RAddStoreExpMinusMaxMicrokernelTester()
1475         .elements(elements)
1476         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12);
1477     }
1478   }
1479 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12,elements_lt_12)1480   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12, elements_lt_12) {
1481     TEST_REQUIRES_ARM_NEON_FMA;
1482     for (size_t elements = 1; elements < 12; elements++) {
1483       RAddStoreExpMinusMaxMicrokernelTester()
1484         .elements(elements)
1485         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12);
1486     }
1487   }
1488 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12,elements_gt_12)1489   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12, elements_gt_12) {
1490     TEST_REQUIRES_ARM_NEON_FMA;
1491     for (size_t elements = 13; elements < 24; elements++) {
1492       RAddStoreExpMinusMaxMicrokernelTester()
1493         .elements(elements)
1494         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12);
1495     }
1496   }
1497 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1498 
1499 
1500 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC2,elements_eq_12)1501   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC2, elements_eq_12) {
1502     TEST_REQUIRES_ARM_NEON_FMA;
1503     RAddStoreExpMinusMaxMicrokernelTester()
1504       .elements(12)
1505       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12_acc2);
1506   }
1507 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC2,elements_div_12)1508   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC2, elements_div_12) {
1509     TEST_REQUIRES_ARM_NEON_FMA;
1510     for (size_t elements = 24; elements < 120; elements += 12) {
1511       RAddStoreExpMinusMaxMicrokernelTester()
1512         .elements(elements)
1513         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12_acc2);
1514     }
1515   }
1516 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC2,elements_lt_12)1517   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC2, elements_lt_12) {
1518     TEST_REQUIRES_ARM_NEON_FMA;
1519     for (size_t elements = 1; elements < 12; elements++) {
1520       RAddStoreExpMinusMaxMicrokernelTester()
1521         .elements(elements)
1522         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12_acc2);
1523     }
1524   }
1525 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC2,elements_gt_12)1526   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC2, elements_gt_12) {
1527     TEST_REQUIRES_ARM_NEON_FMA;
1528     for (size_t elements = 13; elements < 24; elements++) {
1529       RAddStoreExpMinusMaxMicrokernelTester()
1530         .elements(elements)
1531         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12_acc2);
1532     }
1533   }
1534 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1535 
1536 
1537 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC3,elements_eq_12)1538   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC3, elements_eq_12) {
1539     TEST_REQUIRES_ARM_NEON_FMA;
1540     RAddStoreExpMinusMaxMicrokernelTester()
1541       .elements(12)
1542       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12_acc3);
1543   }
1544 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC3,elements_div_12)1545   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC3, elements_div_12) {
1546     TEST_REQUIRES_ARM_NEON_FMA;
1547     for (size_t elements = 24; elements < 120; elements += 12) {
1548       RAddStoreExpMinusMaxMicrokernelTester()
1549         .elements(elements)
1550         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12_acc3);
1551     }
1552   }
1553 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC3,elements_lt_12)1554   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC3, elements_lt_12) {
1555     TEST_REQUIRES_ARM_NEON_FMA;
1556     for (size_t elements = 1; elements < 12; elements++) {
1557       RAddStoreExpMinusMaxMicrokernelTester()
1558         .elements(elements)
1559         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12_acc3);
1560     }
1561   }
1562 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC3,elements_gt_12)1563   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X12_ACC3, elements_gt_12) {
1564     TEST_REQUIRES_ARM_NEON_FMA;
1565     for (size_t elements = 13; elements < 24; elements++) {
1566       RAddStoreExpMinusMaxMicrokernelTester()
1567         .elements(elements)
1568         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x12_acc3);
1569     }
1570   }
1571 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1572 
1573 
1574 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16,elements_eq_16)1575   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16, elements_eq_16) {
1576     TEST_REQUIRES_ARM_NEON_FMA;
1577     RAddStoreExpMinusMaxMicrokernelTester()
1578       .elements(16)
1579       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16);
1580   }
1581 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16,elements_div_16)1582   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16, elements_div_16) {
1583     TEST_REQUIRES_ARM_NEON_FMA;
1584     for (size_t elements = 32; elements < 160; elements += 16) {
1585       RAddStoreExpMinusMaxMicrokernelTester()
1586         .elements(elements)
1587         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16);
1588     }
1589   }
1590 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16,elements_lt_16)1591   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16, elements_lt_16) {
1592     TEST_REQUIRES_ARM_NEON_FMA;
1593     for (size_t elements = 1; elements < 16; elements++) {
1594       RAddStoreExpMinusMaxMicrokernelTester()
1595         .elements(elements)
1596         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16);
1597     }
1598   }
1599 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16,elements_gt_16)1600   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16, elements_gt_16) {
1601     TEST_REQUIRES_ARM_NEON_FMA;
1602     for (size_t elements = 17; elements < 32; elements++) {
1603       RAddStoreExpMinusMaxMicrokernelTester()
1604         .elements(elements)
1605         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16);
1606     }
1607   }
1608 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1609 
1610 
1611 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC2,elements_eq_16)1612   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC2, elements_eq_16) {
1613     TEST_REQUIRES_ARM_NEON_FMA;
1614     RAddStoreExpMinusMaxMicrokernelTester()
1615       .elements(16)
1616       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16_acc2);
1617   }
1618 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC2,elements_div_16)1619   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC2, elements_div_16) {
1620     TEST_REQUIRES_ARM_NEON_FMA;
1621     for (size_t elements = 32; elements < 160; elements += 16) {
1622       RAddStoreExpMinusMaxMicrokernelTester()
1623         .elements(elements)
1624         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16_acc2);
1625     }
1626   }
1627 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC2,elements_lt_16)1628   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC2, elements_lt_16) {
1629     TEST_REQUIRES_ARM_NEON_FMA;
1630     for (size_t elements = 1; elements < 16; elements++) {
1631       RAddStoreExpMinusMaxMicrokernelTester()
1632         .elements(elements)
1633         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16_acc2);
1634     }
1635   }
1636 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC2,elements_gt_16)1637   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC2, elements_gt_16) {
1638     TEST_REQUIRES_ARM_NEON_FMA;
1639     for (size_t elements = 17; elements < 32; elements++) {
1640       RAddStoreExpMinusMaxMicrokernelTester()
1641         .elements(elements)
1642         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16_acc2);
1643     }
1644   }
1645 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1646 
1647 
1648 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC4,elements_eq_16)1649   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC4, elements_eq_16) {
1650     TEST_REQUIRES_ARM_NEON_FMA;
1651     RAddStoreExpMinusMaxMicrokernelTester()
1652       .elements(16)
1653       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16_acc4);
1654   }
1655 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC4,elements_div_16)1656   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC4, elements_div_16) {
1657     TEST_REQUIRES_ARM_NEON_FMA;
1658     for (size_t elements = 32; elements < 160; elements += 16) {
1659       RAddStoreExpMinusMaxMicrokernelTester()
1660         .elements(elements)
1661         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16_acc4);
1662     }
1663   }
1664 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC4,elements_lt_16)1665   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC4, elements_lt_16) {
1666     TEST_REQUIRES_ARM_NEON_FMA;
1667     for (size_t elements = 1; elements < 16; elements++) {
1668       RAddStoreExpMinusMaxMicrokernelTester()
1669         .elements(elements)
1670         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16_acc4);
1671     }
1672   }
1673 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC4,elements_gt_16)1674   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X16_ACC4, elements_gt_16) {
1675     TEST_REQUIRES_ARM_NEON_FMA;
1676     for (size_t elements = 17; elements < 32; elements++) {
1677       RAddStoreExpMinusMaxMicrokernelTester()
1678         .elements(elements)
1679         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x16_acc4);
1680     }
1681   }
1682 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1683 
1684 
1685 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20,elements_eq_20)1686   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20, elements_eq_20) {
1687     TEST_REQUIRES_ARM_NEON_FMA;
1688     RAddStoreExpMinusMaxMicrokernelTester()
1689       .elements(20)
1690       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20);
1691   }
1692 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20,elements_div_20)1693   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20, elements_div_20) {
1694     TEST_REQUIRES_ARM_NEON_FMA;
1695     for (size_t elements = 40; elements < 200; elements += 20) {
1696       RAddStoreExpMinusMaxMicrokernelTester()
1697         .elements(elements)
1698         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20);
1699     }
1700   }
1701 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20,elements_lt_20)1702   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20, elements_lt_20) {
1703     TEST_REQUIRES_ARM_NEON_FMA;
1704     for (size_t elements = 1; elements < 20; elements++) {
1705       RAddStoreExpMinusMaxMicrokernelTester()
1706         .elements(elements)
1707         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20);
1708     }
1709   }
1710 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20,elements_gt_20)1711   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20, elements_gt_20) {
1712     TEST_REQUIRES_ARM_NEON_FMA;
1713     for (size_t elements = 21; elements < 40; elements++) {
1714       RAddStoreExpMinusMaxMicrokernelTester()
1715         .elements(elements)
1716         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20);
1717     }
1718   }
1719 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1720 
1721 
1722 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC2,elements_eq_20)1723   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC2, elements_eq_20) {
1724     TEST_REQUIRES_ARM_NEON_FMA;
1725     RAddStoreExpMinusMaxMicrokernelTester()
1726       .elements(20)
1727       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20_acc2);
1728   }
1729 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC2,elements_div_20)1730   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC2, elements_div_20) {
1731     TEST_REQUIRES_ARM_NEON_FMA;
1732     for (size_t elements = 40; elements < 200; elements += 20) {
1733       RAddStoreExpMinusMaxMicrokernelTester()
1734         .elements(elements)
1735         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20_acc2);
1736     }
1737   }
1738 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC2,elements_lt_20)1739   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC2, elements_lt_20) {
1740     TEST_REQUIRES_ARM_NEON_FMA;
1741     for (size_t elements = 1; elements < 20; elements++) {
1742       RAddStoreExpMinusMaxMicrokernelTester()
1743         .elements(elements)
1744         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20_acc2);
1745     }
1746   }
1747 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC2,elements_gt_20)1748   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC2, elements_gt_20) {
1749     TEST_REQUIRES_ARM_NEON_FMA;
1750     for (size_t elements = 21; elements < 40; elements++) {
1751       RAddStoreExpMinusMaxMicrokernelTester()
1752         .elements(elements)
1753         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20_acc2);
1754     }
1755   }
1756 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1757 
1758 
1759 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC5,elements_eq_20)1760   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC5, elements_eq_20) {
1761     TEST_REQUIRES_ARM_NEON_FMA;
1762     RAddStoreExpMinusMaxMicrokernelTester()
1763       .elements(20)
1764       .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20_acc5);
1765   }
1766 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC5,elements_div_20)1767   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC5, elements_div_20) {
1768     TEST_REQUIRES_ARM_NEON_FMA;
1769     for (size_t elements = 40; elements < 200; elements += 20) {
1770       RAddStoreExpMinusMaxMicrokernelTester()
1771         .elements(elements)
1772         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20_acc5);
1773     }
1774   }
1775 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC5,elements_lt_20)1776   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC5, elements_lt_20) {
1777     TEST_REQUIRES_ARM_NEON_FMA;
1778     for (size_t elements = 1; elements < 20; elements++) {
1779       RAddStoreExpMinusMaxMicrokernelTester()
1780         .elements(elements)
1781         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20_acc5);
1782     }
1783   }
1784 
TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC5,elements_gt_20)1785   TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_LUT64_P2_X20_ACC5, elements_gt_20) {
1786     TEST_REQUIRES_ARM_NEON_FMA;
1787     for (size_t elements = 21; elements < 40; elements++) {
1788       RAddStoreExpMinusMaxMicrokernelTester()
1789         .elements(elements)
1790         .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_lut64_p2_x20_acc5);
1791     }
1792   }
1793 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1794 
1795 
1796 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X4,elements_eq_4)1797   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X4, elements_eq_4) {
1798     TEST_REQUIRES_X86_SSE2;
1799     RAddStoreExpMinusMaxMicrokernelTester()
1800       .elements(4)
1801       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x4);
1802   }
1803 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X4,elements_div_4)1804   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X4, elements_div_4) {
1805     TEST_REQUIRES_X86_SSE2;
1806     for (size_t elements = 8; elements < 40; elements += 4) {
1807       RAddStoreExpMinusMaxMicrokernelTester()
1808         .elements(elements)
1809         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x4);
1810     }
1811   }
1812 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X4,elements_lt_4)1813   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X4, elements_lt_4) {
1814     TEST_REQUIRES_X86_SSE2;
1815     for (size_t elements = 1; elements < 4; elements++) {
1816       RAddStoreExpMinusMaxMicrokernelTester()
1817         .elements(elements)
1818         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x4);
1819     }
1820   }
1821 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X4,elements_gt_4)1822   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X4, elements_gt_4) {
1823     TEST_REQUIRES_X86_SSE2;
1824     for (size_t elements = 5; elements < 8; elements++) {
1825       RAddStoreExpMinusMaxMicrokernelTester()
1826         .elements(elements)
1827         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x4);
1828     }
1829   }
1830 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1831 
1832 
1833 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8,elements_eq_8)1834   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8, elements_eq_8) {
1835     TEST_REQUIRES_X86_SSE2;
1836     RAddStoreExpMinusMaxMicrokernelTester()
1837       .elements(8)
1838       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x8);
1839   }
1840 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8,elements_div_8)1841   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8, elements_div_8) {
1842     TEST_REQUIRES_X86_SSE2;
1843     for (size_t elements = 16; elements < 80; elements += 8) {
1844       RAddStoreExpMinusMaxMicrokernelTester()
1845         .elements(elements)
1846         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x8);
1847     }
1848   }
1849 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8,elements_lt_8)1850   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8, elements_lt_8) {
1851     TEST_REQUIRES_X86_SSE2;
1852     for (size_t elements = 1; elements < 8; elements++) {
1853       RAddStoreExpMinusMaxMicrokernelTester()
1854         .elements(elements)
1855         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x8);
1856     }
1857   }
1858 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8,elements_gt_8)1859   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8, elements_gt_8) {
1860     TEST_REQUIRES_X86_SSE2;
1861     for (size_t elements = 9; elements < 16; elements++) {
1862       RAddStoreExpMinusMaxMicrokernelTester()
1863         .elements(elements)
1864         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x8);
1865     }
1866   }
1867 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1868 
1869 
1870 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8_ACC2,elements_eq_8)1871   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8_ACC2, elements_eq_8) {
1872     TEST_REQUIRES_X86_SSE2;
1873     RAddStoreExpMinusMaxMicrokernelTester()
1874       .elements(8)
1875       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x8_acc2);
1876   }
1877 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8_ACC2,elements_div_8)1878   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8_ACC2, elements_div_8) {
1879     TEST_REQUIRES_X86_SSE2;
1880     for (size_t elements = 16; elements < 80; elements += 8) {
1881       RAddStoreExpMinusMaxMicrokernelTester()
1882         .elements(elements)
1883         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x8_acc2);
1884     }
1885   }
1886 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8_ACC2,elements_lt_8)1887   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8_ACC2, elements_lt_8) {
1888     TEST_REQUIRES_X86_SSE2;
1889     for (size_t elements = 1; elements < 8; elements++) {
1890       RAddStoreExpMinusMaxMicrokernelTester()
1891         .elements(elements)
1892         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x8_acc2);
1893     }
1894   }
1895 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8_ACC2,elements_gt_8)1896   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X8_ACC2, elements_gt_8) {
1897     TEST_REQUIRES_X86_SSE2;
1898     for (size_t elements = 9; elements < 16; elements++) {
1899       RAddStoreExpMinusMaxMicrokernelTester()
1900         .elements(elements)
1901         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x8_acc2);
1902     }
1903   }
1904 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1905 
1906 
1907 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12,elements_eq_12)1908   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12, elements_eq_12) {
1909     TEST_REQUIRES_X86_SSE2;
1910     RAddStoreExpMinusMaxMicrokernelTester()
1911       .elements(12)
1912       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12);
1913   }
1914 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12,elements_div_12)1915   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12, elements_div_12) {
1916     TEST_REQUIRES_X86_SSE2;
1917     for (size_t elements = 24; elements < 120; elements += 12) {
1918       RAddStoreExpMinusMaxMicrokernelTester()
1919         .elements(elements)
1920         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12);
1921     }
1922   }
1923 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12,elements_lt_12)1924   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12, elements_lt_12) {
1925     TEST_REQUIRES_X86_SSE2;
1926     for (size_t elements = 1; elements < 12; elements++) {
1927       RAddStoreExpMinusMaxMicrokernelTester()
1928         .elements(elements)
1929         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12);
1930     }
1931   }
1932 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12,elements_gt_12)1933   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12, elements_gt_12) {
1934     TEST_REQUIRES_X86_SSE2;
1935     for (size_t elements = 13; elements < 24; elements++) {
1936       RAddStoreExpMinusMaxMicrokernelTester()
1937         .elements(elements)
1938         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12);
1939     }
1940   }
1941 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1942 
1943 
1944 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC2,elements_eq_12)1945   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC2, elements_eq_12) {
1946     TEST_REQUIRES_X86_SSE2;
1947     RAddStoreExpMinusMaxMicrokernelTester()
1948       .elements(12)
1949       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12_acc2);
1950   }
1951 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC2,elements_div_12)1952   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC2, elements_div_12) {
1953     TEST_REQUIRES_X86_SSE2;
1954     for (size_t elements = 24; elements < 120; elements += 12) {
1955       RAddStoreExpMinusMaxMicrokernelTester()
1956         .elements(elements)
1957         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12_acc2);
1958     }
1959   }
1960 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC2,elements_lt_12)1961   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC2, elements_lt_12) {
1962     TEST_REQUIRES_X86_SSE2;
1963     for (size_t elements = 1; elements < 12; elements++) {
1964       RAddStoreExpMinusMaxMicrokernelTester()
1965         .elements(elements)
1966         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12_acc2);
1967     }
1968   }
1969 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC2,elements_gt_12)1970   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC2, elements_gt_12) {
1971     TEST_REQUIRES_X86_SSE2;
1972     for (size_t elements = 13; elements < 24; elements++) {
1973       RAddStoreExpMinusMaxMicrokernelTester()
1974         .elements(elements)
1975         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12_acc2);
1976     }
1977   }
1978 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1979 
1980 
1981 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC3,elements_eq_12)1982   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC3, elements_eq_12) {
1983     TEST_REQUIRES_X86_SSE2;
1984     RAddStoreExpMinusMaxMicrokernelTester()
1985       .elements(12)
1986       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12_acc3);
1987   }
1988 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC3,elements_div_12)1989   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC3, elements_div_12) {
1990     TEST_REQUIRES_X86_SSE2;
1991     for (size_t elements = 24; elements < 120; elements += 12) {
1992       RAddStoreExpMinusMaxMicrokernelTester()
1993         .elements(elements)
1994         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12_acc3);
1995     }
1996   }
1997 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC3,elements_lt_12)1998   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC3, elements_lt_12) {
1999     TEST_REQUIRES_X86_SSE2;
2000     for (size_t elements = 1; elements < 12; elements++) {
2001       RAddStoreExpMinusMaxMicrokernelTester()
2002         .elements(elements)
2003         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12_acc3);
2004     }
2005   }
2006 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC3,elements_gt_12)2007   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X12_ACC3, elements_gt_12) {
2008     TEST_REQUIRES_X86_SSE2;
2009     for (size_t elements = 13; elements < 24; elements++) {
2010       RAddStoreExpMinusMaxMicrokernelTester()
2011         .elements(elements)
2012         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x12_acc3);
2013     }
2014   }
2015 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2016 
2017 
2018 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16,elements_eq_16)2019   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16, elements_eq_16) {
2020     TEST_REQUIRES_X86_SSE2;
2021     RAddStoreExpMinusMaxMicrokernelTester()
2022       .elements(16)
2023       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16);
2024   }
2025 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16,elements_div_16)2026   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16, elements_div_16) {
2027     TEST_REQUIRES_X86_SSE2;
2028     for (size_t elements = 32; elements < 160; elements += 16) {
2029       RAddStoreExpMinusMaxMicrokernelTester()
2030         .elements(elements)
2031         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16);
2032     }
2033   }
2034 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16,elements_lt_16)2035   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16, elements_lt_16) {
2036     TEST_REQUIRES_X86_SSE2;
2037     for (size_t elements = 1; elements < 16; elements++) {
2038       RAddStoreExpMinusMaxMicrokernelTester()
2039         .elements(elements)
2040         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16);
2041     }
2042   }
2043 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16,elements_gt_16)2044   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16, elements_gt_16) {
2045     TEST_REQUIRES_X86_SSE2;
2046     for (size_t elements = 17; elements < 32; elements++) {
2047       RAddStoreExpMinusMaxMicrokernelTester()
2048         .elements(elements)
2049         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16);
2050     }
2051   }
2052 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2053 
2054 
2055 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC2,elements_eq_16)2056   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC2, elements_eq_16) {
2057     TEST_REQUIRES_X86_SSE2;
2058     RAddStoreExpMinusMaxMicrokernelTester()
2059       .elements(16)
2060       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16_acc2);
2061   }
2062 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC2,elements_div_16)2063   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC2, elements_div_16) {
2064     TEST_REQUIRES_X86_SSE2;
2065     for (size_t elements = 32; elements < 160; elements += 16) {
2066       RAddStoreExpMinusMaxMicrokernelTester()
2067         .elements(elements)
2068         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16_acc2);
2069     }
2070   }
2071 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC2,elements_lt_16)2072   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC2, elements_lt_16) {
2073     TEST_REQUIRES_X86_SSE2;
2074     for (size_t elements = 1; elements < 16; elements++) {
2075       RAddStoreExpMinusMaxMicrokernelTester()
2076         .elements(elements)
2077         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16_acc2);
2078     }
2079   }
2080 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC2,elements_gt_16)2081   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC2, elements_gt_16) {
2082     TEST_REQUIRES_X86_SSE2;
2083     for (size_t elements = 17; elements < 32; elements++) {
2084       RAddStoreExpMinusMaxMicrokernelTester()
2085         .elements(elements)
2086         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16_acc2);
2087     }
2088   }
2089 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2090 
2091 
2092 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC4,elements_eq_16)2093   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC4, elements_eq_16) {
2094     TEST_REQUIRES_X86_SSE2;
2095     RAddStoreExpMinusMaxMicrokernelTester()
2096       .elements(16)
2097       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16_acc4);
2098   }
2099 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC4,elements_div_16)2100   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC4, elements_div_16) {
2101     TEST_REQUIRES_X86_SSE2;
2102     for (size_t elements = 32; elements < 160; elements += 16) {
2103       RAddStoreExpMinusMaxMicrokernelTester()
2104         .elements(elements)
2105         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16_acc4);
2106     }
2107   }
2108 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC4,elements_lt_16)2109   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC4, elements_lt_16) {
2110     TEST_REQUIRES_X86_SSE2;
2111     for (size_t elements = 1; elements < 16; elements++) {
2112       RAddStoreExpMinusMaxMicrokernelTester()
2113         .elements(elements)
2114         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16_acc4);
2115     }
2116   }
2117 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC4,elements_gt_16)2118   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X16_ACC4, elements_gt_16) {
2119     TEST_REQUIRES_X86_SSE2;
2120     for (size_t elements = 17; elements < 32; elements++) {
2121       RAddStoreExpMinusMaxMicrokernelTester()
2122         .elements(elements)
2123         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x16_acc4);
2124     }
2125   }
2126 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2127 
2128 
2129 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20,elements_eq_20)2130   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20, elements_eq_20) {
2131     TEST_REQUIRES_X86_SSE2;
2132     RAddStoreExpMinusMaxMicrokernelTester()
2133       .elements(20)
2134       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20);
2135   }
2136 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20,elements_div_20)2137   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20, elements_div_20) {
2138     TEST_REQUIRES_X86_SSE2;
2139     for (size_t elements = 40; elements < 200; elements += 20) {
2140       RAddStoreExpMinusMaxMicrokernelTester()
2141         .elements(elements)
2142         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20);
2143     }
2144   }
2145 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20,elements_lt_20)2146   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20, elements_lt_20) {
2147     TEST_REQUIRES_X86_SSE2;
2148     for (size_t elements = 1; elements < 20; elements++) {
2149       RAddStoreExpMinusMaxMicrokernelTester()
2150         .elements(elements)
2151         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20);
2152     }
2153   }
2154 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20,elements_gt_20)2155   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20, elements_gt_20) {
2156     TEST_REQUIRES_X86_SSE2;
2157     for (size_t elements = 21; elements < 40; elements++) {
2158       RAddStoreExpMinusMaxMicrokernelTester()
2159         .elements(elements)
2160         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20);
2161     }
2162   }
2163 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2164 
2165 
2166 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC2,elements_eq_20)2167   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC2, elements_eq_20) {
2168     TEST_REQUIRES_X86_SSE2;
2169     RAddStoreExpMinusMaxMicrokernelTester()
2170       .elements(20)
2171       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20_acc2);
2172   }
2173 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC2,elements_div_20)2174   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC2, elements_div_20) {
2175     TEST_REQUIRES_X86_SSE2;
2176     for (size_t elements = 40; elements < 200; elements += 20) {
2177       RAddStoreExpMinusMaxMicrokernelTester()
2178         .elements(elements)
2179         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20_acc2);
2180     }
2181   }
2182 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC2,elements_lt_20)2183   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC2, elements_lt_20) {
2184     TEST_REQUIRES_X86_SSE2;
2185     for (size_t elements = 1; elements < 20; elements++) {
2186       RAddStoreExpMinusMaxMicrokernelTester()
2187         .elements(elements)
2188         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20_acc2);
2189     }
2190   }
2191 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC2,elements_gt_20)2192   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC2, elements_gt_20) {
2193     TEST_REQUIRES_X86_SSE2;
2194     for (size_t elements = 21; elements < 40; elements++) {
2195       RAddStoreExpMinusMaxMicrokernelTester()
2196         .elements(elements)
2197         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20_acc2);
2198     }
2199   }
2200 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2201 
2202 
2203 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC5,elements_eq_20)2204   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC5, elements_eq_20) {
2205     TEST_REQUIRES_X86_SSE2;
2206     RAddStoreExpMinusMaxMicrokernelTester()
2207       .elements(20)
2208       .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20_acc5);
2209   }
2210 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC5,elements_div_20)2211   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC5, elements_div_20) {
2212     TEST_REQUIRES_X86_SSE2;
2213     for (size_t elements = 40; elements < 200; elements += 20) {
2214       RAddStoreExpMinusMaxMicrokernelTester()
2215         .elements(elements)
2216         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20_acc5);
2217     }
2218   }
2219 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC5,elements_lt_20)2220   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC5, elements_lt_20) {
2221     TEST_REQUIRES_X86_SSE2;
2222     for (size_t elements = 1; elements < 20; elements++) {
2223       RAddStoreExpMinusMaxMicrokernelTester()
2224         .elements(elements)
2225         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20_acc5);
2226     }
2227   }
2228 
TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC5,elements_gt_20)2229   TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_P5_X20_ACC5, elements_gt_20) {
2230     TEST_REQUIRES_X86_SSE2;
2231     for (size_t elements = 21; elements < 40; elements++) {
2232       RAddStoreExpMinusMaxMicrokernelTester()
2233         .elements(elements)
2234         .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_p5_x20_acc5);
2235     }
2236   }
2237 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2238 
2239 
2240 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64,elements_eq_64)2241   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64, elements_eq_64) {
2242     TEST_REQUIRES_X86_AVX2;
2243     RAddStoreExpMinusMaxMicrokernelTester()
2244       .elements(64)
2245       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64);
2246   }
2247 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64,elements_div_64)2248   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64, elements_div_64) {
2249     TEST_REQUIRES_X86_AVX2;
2250     for (size_t elements = 128; elements < 640; elements += 64) {
2251       RAddStoreExpMinusMaxMicrokernelTester()
2252         .elements(elements)
2253         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64);
2254     }
2255   }
2256 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64,elements_lt_64)2257   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64, elements_lt_64) {
2258     TEST_REQUIRES_X86_AVX2;
2259     for (size_t elements = 1; elements < 64; elements++) {
2260       RAddStoreExpMinusMaxMicrokernelTester()
2261         .elements(elements)
2262         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64);
2263     }
2264   }
2265 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64,elements_gt_64)2266   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64, elements_gt_64) {
2267     TEST_REQUIRES_X86_AVX2;
2268     for (size_t elements = 65; elements < 128; elements++) {
2269       RAddStoreExpMinusMaxMicrokernelTester()
2270         .elements(elements)
2271         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64);
2272     }
2273   }
2274 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2275 
2276 
2277 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC2,elements_eq_64)2278   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC2, elements_eq_64) {
2279     TEST_REQUIRES_X86_AVX2;
2280     RAddStoreExpMinusMaxMicrokernelTester()
2281       .elements(64)
2282       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64_acc2);
2283   }
2284 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC2,elements_div_64)2285   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC2, elements_div_64) {
2286     TEST_REQUIRES_X86_AVX2;
2287     for (size_t elements = 128; elements < 640; elements += 64) {
2288       RAddStoreExpMinusMaxMicrokernelTester()
2289         .elements(elements)
2290         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64_acc2);
2291     }
2292   }
2293 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC2,elements_lt_64)2294   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC2, elements_lt_64) {
2295     TEST_REQUIRES_X86_AVX2;
2296     for (size_t elements = 1; elements < 64; elements++) {
2297       RAddStoreExpMinusMaxMicrokernelTester()
2298         .elements(elements)
2299         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64_acc2);
2300     }
2301   }
2302 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC2,elements_gt_64)2303   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC2, elements_gt_64) {
2304     TEST_REQUIRES_X86_AVX2;
2305     for (size_t elements = 65; elements < 128; elements++) {
2306       RAddStoreExpMinusMaxMicrokernelTester()
2307         .elements(elements)
2308         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64_acc2);
2309     }
2310   }
2311 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2312 
2313 
2314 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC4,elements_eq_64)2315   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC4, elements_eq_64) {
2316     TEST_REQUIRES_X86_AVX2;
2317     RAddStoreExpMinusMaxMicrokernelTester()
2318       .elements(64)
2319       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64_acc4);
2320   }
2321 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC4,elements_div_64)2322   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC4, elements_div_64) {
2323     TEST_REQUIRES_X86_AVX2;
2324     for (size_t elements = 128; elements < 640; elements += 64) {
2325       RAddStoreExpMinusMaxMicrokernelTester()
2326         .elements(elements)
2327         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64_acc4);
2328     }
2329   }
2330 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC4,elements_lt_64)2331   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC4, elements_lt_64) {
2332     TEST_REQUIRES_X86_AVX2;
2333     for (size_t elements = 1; elements < 64; elements++) {
2334       RAddStoreExpMinusMaxMicrokernelTester()
2335         .elements(elements)
2336         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64_acc4);
2337     }
2338   }
2339 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC4,elements_gt_64)2340   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X64_ACC4, elements_gt_64) {
2341     TEST_REQUIRES_X86_AVX2;
2342     for (size_t elements = 65; elements < 128; elements++) {
2343       RAddStoreExpMinusMaxMicrokernelTester()
2344         .elements(elements)
2345         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x64_acc4);
2346     }
2347   }
2348 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2349 
2350 
2351 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72,elements_eq_72)2352   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72, elements_eq_72) {
2353     TEST_REQUIRES_X86_AVX2;
2354     RAddStoreExpMinusMaxMicrokernelTester()
2355       .elements(72)
2356       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x72);
2357   }
2358 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72,elements_div_72)2359   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72, elements_div_72) {
2360     TEST_REQUIRES_X86_AVX2;
2361     for (size_t elements = 144; elements < 720; elements += 72) {
2362       RAddStoreExpMinusMaxMicrokernelTester()
2363         .elements(elements)
2364         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x72);
2365     }
2366   }
2367 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72,elements_lt_72)2368   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72, elements_lt_72) {
2369     TEST_REQUIRES_X86_AVX2;
2370     for (size_t elements = 1; elements < 72; elements++) {
2371       RAddStoreExpMinusMaxMicrokernelTester()
2372         .elements(elements)
2373         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x72);
2374     }
2375   }
2376 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72,elements_gt_72)2377   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72, elements_gt_72) {
2378     TEST_REQUIRES_X86_AVX2;
2379     for (size_t elements = 73; elements < 144; elements++) {
2380       RAddStoreExpMinusMaxMicrokernelTester()
2381         .elements(elements)
2382         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x72);
2383     }
2384   }
2385 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2386 
2387 
2388 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72_ACC3,elements_eq_72)2389   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72_ACC3, elements_eq_72) {
2390     TEST_REQUIRES_X86_AVX2;
2391     RAddStoreExpMinusMaxMicrokernelTester()
2392       .elements(72)
2393       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x72_acc3);
2394   }
2395 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72_ACC3,elements_div_72)2396   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72_ACC3, elements_div_72) {
2397     TEST_REQUIRES_X86_AVX2;
2398     for (size_t elements = 144; elements < 720; elements += 72) {
2399       RAddStoreExpMinusMaxMicrokernelTester()
2400         .elements(elements)
2401         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x72_acc3);
2402     }
2403   }
2404 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72_ACC3,elements_lt_72)2405   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72_ACC3, elements_lt_72) {
2406     TEST_REQUIRES_X86_AVX2;
2407     for (size_t elements = 1; elements < 72; elements++) {
2408       RAddStoreExpMinusMaxMicrokernelTester()
2409         .elements(elements)
2410         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x72_acc3);
2411     }
2412   }
2413 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72_ACC3,elements_gt_72)2414   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X72_ACC3, elements_gt_72) {
2415     TEST_REQUIRES_X86_AVX2;
2416     for (size_t elements = 73; elements < 144; elements++) {
2417       RAddStoreExpMinusMaxMicrokernelTester()
2418         .elements(elements)
2419         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x72_acc3);
2420     }
2421   }
2422 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2423 
2424 
2425 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80,elements_eq_80)2426   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80, elements_eq_80) {
2427     TEST_REQUIRES_X86_AVX2;
2428     RAddStoreExpMinusMaxMicrokernelTester()
2429       .elements(80)
2430       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80);
2431   }
2432 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80,elements_div_80)2433   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80, elements_div_80) {
2434     TEST_REQUIRES_X86_AVX2;
2435     for (size_t elements = 160; elements < 800; elements += 80) {
2436       RAddStoreExpMinusMaxMicrokernelTester()
2437         .elements(elements)
2438         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80);
2439     }
2440   }
2441 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80,elements_lt_80)2442   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80, elements_lt_80) {
2443     TEST_REQUIRES_X86_AVX2;
2444     for (size_t elements = 1; elements < 80; elements++) {
2445       RAddStoreExpMinusMaxMicrokernelTester()
2446         .elements(elements)
2447         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80);
2448     }
2449   }
2450 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80,elements_gt_80)2451   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80, elements_gt_80) {
2452     TEST_REQUIRES_X86_AVX2;
2453     for (size_t elements = 81; elements < 160; elements++) {
2454       RAddStoreExpMinusMaxMicrokernelTester()
2455         .elements(elements)
2456         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80);
2457     }
2458   }
2459 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2460 
2461 
2462 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC2,elements_eq_80)2463   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC2, elements_eq_80) {
2464     TEST_REQUIRES_X86_AVX2;
2465     RAddStoreExpMinusMaxMicrokernelTester()
2466       .elements(80)
2467       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80_acc2);
2468   }
2469 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC2,elements_div_80)2470   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC2, elements_div_80) {
2471     TEST_REQUIRES_X86_AVX2;
2472     for (size_t elements = 160; elements < 800; elements += 80) {
2473       RAddStoreExpMinusMaxMicrokernelTester()
2474         .elements(elements)
2475         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80_acc2);
2476     }
2477   }
2478 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC2,elements_lt_80)2479   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC2, elements_lt_80) {
2480     TEST_REQUIRES_X86_AVX2;
2481     for (size_t elements = 1; elements < 80; elements++) {
2482       RAddStoreExpMinusMaxMicrokernelTester()
2483         .elements(elements)
2484         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80_acc2);
2485     }
2486   }
2487 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC2,elements_gt_80)2488   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC2, elements_gt_80) {
2489     TEST_REQUIRES_X86_AVX2;
2490     for (size_t elements = 81; elements < 160; elements++) {
2491       RAddStoreExpMinusMaxMicrokernelTester()
2492         .elements(elements)
2493         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80_acc2);
2494     }
2495   }
2496 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2497 
2498 
2499 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC5,elements_eq_80)2500   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC5, elements_eq_80) {
2501     TEST_REQUIRES_X86_AVX2;
2502     RAddStoreExpMinusMaxMicrokernelTester()
2503       .elements(80)
2504       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80_acc5);
2505   }
2506 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC5,elements_div_80)2507   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC5, elements_div_80) {
2508     TEST_REQUIRES_X86_AVX2;
2509     for (size_t elements = 160; elements < 800; elements += 80) {
2510       RAddStoreExpMinusMaxMicrokernelTester()
2511         .elements(elements)
2512         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80_acc5);
2513     }
2514   }
2515 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC5,elements_lt_80)2516   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC5, elements_lt_80) {
2517     TEST_REQUIRES_X86_AVX2;
2518     for (size_t elements = 1; elements < 80; elements++) {
2519       RAddStoreExpMinusMaxMicrokernelTester()
2520         .elements(elements)
2521         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80_acc5);
2522     }
2523   }
2524 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC5,elements_gt_80)2525   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X80_ACC5, elements_gt_80) {
2526     TEST_REQUIRES_X86_AVX2;
2527     for (size_t elements = 81; elements < 160; elements++) {
2528       RAddStoreExpMinusMaxMicrokernelTester()
2529         .elements(elements)
2530         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x80_acc5);
2531     }
2532   }
2533 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2534 
2535 
2536 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96,elements_eq_96)2537   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96, elements_eq_96) {
2538     TEST_REQUIRES_X86_AVX2;
2539     RAddStoreExpMinusMaxMicrokernelTester()
2540       .elements(96)
2541       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96);
2542   }
2543 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96,elements_div_96)2544   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96, elements_div_96) {
2545     TEST_REQUIRES_X86_AVX2;
2546     for (size_t elements = 192; elements < 960; elements += 96) {
2547       RAddStoreExpMinusMaxMicrokernelTester()
2548         .elements(elements)
2549         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96);
2550     }
2551   }
2552 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96,elements_lt_96)2553   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96, elements_lt_96) {
2554     TEST_REQUIRES_X86_AVX2;
2555     for (size_t elements = 1; elements < 96; elements++) {
2556       RAddStoreExpMinusMaxMicrokernelTester()
2557         .elements(elements)
2558         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96);
2559     }
2560   }
2561 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96,elements_gt_96)2562   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96, elements_gt_96) {
2563     TEST_REQUIRES_X86_AVX2;
2564     for (size_t elements = 97; elements < 192; elements++) {
2565       RAddStoreExpMinusMaxMicrokernelTester()
2566         .elements(elements)
2567         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96);
2568     }
2569   }
2570 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2571 
2572 
2573 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC2,elements_eq_96)2574   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC2, elements_eq_96) {
2575     TEST_REQUIRES_X86_AVX2;
2576     RAddStoreExpMinusMaxMicrokernelTester()
2577       .elements(96)
2578       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc2);
2579   }
2580 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC2,elements_div_96)2581   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC2, elements_div_96) {
2582     TEST_REQUIRES_X86_AVX2;
2583     for (size_t elements = 192; elements < 960; elements += 96) {
2584       RAddStoreExpMinusMaxMicrokernelTester()
2585         .elements(elements)
2586         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc2);
2587     }
2588   }
2589 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC2,elements_lt_96)2590   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC2, elements_lt_96) {
2591     TEST_REQUIRES_X86_AVX2;
2592     for (size_t elements = 1; elements < 96; elements++) {
2593       RAddStoreExpMinusMaxMicrokernelTester()
2594         .elements(elements)
2595         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc2);
2596     }
2597   }
2598 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC2,elements_gt_96)2599   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC2, elements_gt_96) {
2600     TEST_REQUIRES_X86_AVX2;
2601     for (size_t elements = 97; elements < 192; elements++) {
2602       RAddStoreExpMinusMaxMicrokernelTester()
2603         .elements(elements)
2604         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc2);
2605     }
2606   }
2607 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2608 
2609 
2610 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC3,elements_eq_96)2611   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC3, elements_eq_96) {
2612     TEST_REQUIRES_X86_AVX2;
2613     RAddStoreExpMinusMaxMicrokernelTester()
2614       .elements(96)
2615       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc3);
2616   }
2617 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC3,elements_div_96)2618   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC3, elements_div_96) {
2619     TEST_REQUIRES_X86_AVX2;
2620     for (size_t elements = 192; elements < 960; elements += 96) {
2621       RAddStoreExpMinusMaxMicrokernelTester()
2622         .elements(elements)
2623         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc3);
2624     }
2625   }
2626 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC3,elements_lt_96)2627   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC3, elements_lt_96) {
2628     TEST_REQUIRES_X86_AVX2;
2629     for (size_t elements = 1; elements < 96; elements++) {
2630       RAddStoreExpMinusMaxMicrokernelTester()
2631         .elements(elements)
2632         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc3);
2633     }
2634   }
2635 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC3,elements_gt_96)2636   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC3, elements_gt_96) {
2637     TEST_REQUIRES_X86_AVX2;
2638     for (size_t elements = 97; elements < 192; elements++) {
2639       RAddStoreExpMinusMaxMicrokernelTester()
2640         .elements(elements)
2641         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc3);
2642     }
2643   }
2644 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2645 
2646 
2647 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC6,elements_eq_96)2648   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC6, elements_eq_96) {
2649     TEST_REQUIRES_X86_AVX2;
2650     RAddStoreExpMinusMaxMicrokernelTester()
2651       .elements(96)
2652       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc6);
2653   }
2654 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC6,elements_div_96)2655   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC6, elements_div_96) {
2656     TEST_REQUIRES_X86_AVX2;
2657     for (size_t elements = 192; elements < 960; elements += 96) {
2658       RAddStoreExpMinusMaxMicrokernelTester()
2659         .elements(elements)
2660         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc6);
2661     }
2662   }
2663 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC6,elements_lt_96)2664   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC6, elements_lt_96) {
2665     TEST_REQUIRES_X86_AVX2;
2666     for (size_t elements = 1; elements < 96; elements++) {
2667       RAddStoreExpMinusMaxMicrokernelTester()
2668         .elements(elements)
2669         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc6);
2670     }
2671   }
2672 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC6,elements_gt_96)2673   TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_P5_X96_ACC6, elements_gt_96) {
2674     TEST_REQUIRES_X86_AVX2;
2675     for (size_t elements = 97; elements < 192; elements++) {
2676       RAddStoreExpMinusMaxMicrokernelTester()
2677         .elements(elements)
2678         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_p5_x96_acc6);
2679     }
2680   }
2681 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2682 
2683 
2684 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128,elements_eq_128)2685   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128, elements_eq_128) {
2686     TEST_REQUIRES_X86_AVX512F;
2687     RAddStoreExpMinusMaxMicrokernelTester()
2688       .elements(128)
2689       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128);
2690   }
2691 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128,elements_div_128)2692   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128, elements_div_128) {
2693     TEST_REQUIRES_X86_AVX512F;
2694     for (size_t elements = 256; elements < 1280; elements += 128) {
2695       RAddStoreExpMinusMaxMicrokernelTester()
2696         .elements(elements)
2697         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128);
2698     }
2699   }
2700 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128,elements_lt_128)2701   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128, elements_lt_128) {
2702     TEST_REQUIRES_X86_AVX512F;
2703     for (size_t elements = 1; elements < 128; elements++) {
2704       RAddStoreExpMinusMaxMicrokernelTester()
2705         .elements(elements)
2706         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128);
2707     }
2708   }
2709 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128,elements_gt_128)2710   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128, elements_gt_128) {
2711     TEST_REQUIRES_X86_AVX512F;
2712     for (size_t elements = 129; elements < 256; elements++) {
2713       RAddStoreExpMinusMaxMicrokernelTester()
2714         .elements(elements)
2715         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128);
2716     }
2717   }
2718 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2719 
2720 
2721 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC2,elements_eq_128)2722   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC2, elements_eq_128) {
2723     TEST_REQUIRES_X86_AVX512F;
2724     RAddStoreExpMinusMaxMicrokernelTester()
2725       .elements(128)
2726       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128_acc2);
2727   }
2728 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC2,elements_div_128)2729   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC2, elements_div_128) {
2730     TEST_REQUIRES_X86_AVX512F;
2731     for (size_t elements = 256; elements < 1280; elements += 128) {
2732       RAddStoreExpMinusMaxMicrokernelTester()
2733         .elements(elements)
2734         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128_acc2);
2735     }
2736   }
2737 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC2,elements_lt_128)2738   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC2, elements_lt_128) {
2739     TEST_REQUIRES_X86_AVX512F;
2740     for (size_t elements = 1; elements < 128; elements++) {
2741       RAddStoreExpMinusMaxMicrokernelTester()
2742         .elements(elements)
2743         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128_acc2);
2744     }
2745   }
2746 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC2,elements_gt_128)2747   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC2, elements_gt_128) {
2748     TEST_REQUIRES_X86_AVX512F;
2749     for (size_t elements = 129; elements < 256; elements++) {
2750       RAddStoreExpMinusMaxMicrokernelTester()
2751         .elements(elements)
2752         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128_acc2);
2753     }
2754   }
2755 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2756 
2757 
2758 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC4,elements_eq_128)2759   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC4, elements_eq_128) {
2760     TEST_REQUIRES_X86_AVX512F;
2761     RAddStoreExpMinusMaxMicrokernelTester()
2762       .elements(128)
2763       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128_acc4);
2764   }
2765 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC4,elements_div_128)2766   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC4, elements_div_128) {
2767     TEST_REQUIRES_X86_AVX512F;
2768     for (size_t elements = 256; elements < 1280; elements += 128) {
2769       RAddStoreExpMinusMaxMicrokernelTester()
2770         .elements(elements)
2771         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128_acc4);
2772     }
2773   }
2774 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC4,elements_lt_128)2775   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC4, elements_lt_128) {
2776     TEST_REQUIRES_X86_AVX512F;
2777     for (size_t elements = 1; elements < 128; elements++) {
2778       RAddStoreExpMinusMaxMicrokernelTester()
2779         .elements(elements)
2780         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128_acc4);
2781     }
2782   }
2783 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC4,elements_gt_128)2784   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X128_ACC4, elements_gt_128) {
2785     TEST_REQUIRES_X86_AVX512F;
2786     for (size_t elements = 129; elements < 256; elements++) {
2787       RAddStoreExpMinusMaxMicrokernelTester()
2788         .elements(elements)
2789         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x128_acc4);
2790     }
2791   }
2792 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2793 
2794 
2795 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144,elements_eq_144)2796   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144, elements_eq_144) {
2797     TEST_REQUIRES_X86_AVX512F;
2798     RAddStoreExpMinusMaxMicrokernelTester()
2799       .elements(144)
2800       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x144);
2801   }
2802 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144,elements_div_144)2803   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144, elements_div_144) {
2804     TEST_REQUIRES_X86_AVX512F;
2805     for (size_t elements = 288; elements < 1440; elements += 144) {
2806       RAddStoreExpMinusMaxMicrokernelTester()
2807         .elements(elements)
2808         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x144);
2809     }
2810   }
2811 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144,elements_lt_144)2812   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144, elements_lt_144) {
2813     TEST_REQUIRES_X86_AVX512F;
2814     for (size_t elements = 1; elements < 144; elements++) {
2815       RAddStoreExpMinusMaxMicrokernelTester()
2816         .elements(elements)
2817         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x144);
2818     }
2819   }
2820 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144,elements_gt_144)2821   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144, elements_gt_144) {
2822     TEST_REQUIRES_X86_AVX512F;
2823     for (size_t elements = 145; elements < 288; elements++) {
2824       RAddStoreExpMinusMaxMicrokernelTester()
2825         .elements(elements)
2826         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x144);
2827     }
2828   }
2829 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2830 
2831 
2832 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144_ACC3,elements_eq_144)2833   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144_ACC3, elements_eq_144) {
2834     TEST_REQUIRES_X86_AVX512F;
2835     RAddStoreExpMinusMaxMicrokernelTester()
2836       .elements(144)
2837       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x144_acc3);
2838   }
2839 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144_ACC3,elements_div_144)2840   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144_ACC3, elements_div_144) {
2841     TEST_REQUIRES_X86_AVX512F;
2842     for (size_t elements = 288; elements < 1440; elements += 144) {
2843       RAddStoreExpMinusMaxMicrokernelTester()
2844         .elements(elements)
2845         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x144_acc3);
2846     }
2847   }
2848 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144_ACC3,elements_lt_144)2849   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144_ACC3, elements_lt_144) {
2850     TEST_REQUIRES_X86_AVX512F;
2851     for (size_t elements = 1; elements < 144; elements++) {
2852       RAddStoreExpMinusMaxMicrokernelTester()
2853         .elements(elements)
2854         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x144_acc3);
2855     }
2856   }
2857 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144_ACC3,elements_gt_144)2858   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X144_ACC3, elements_gt_144) {
2859     TEST_REQUIRES_X86_AVX512F;
2860     for (size_t elements = 145; elements < 288; elements++) {
2861       RAddStoreExpMinusMaxMicrokernelTester()
2862         .elements(elements)
2863         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x144_acc3);
2864     }
2865   }
2866 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2867 
2868 
2869 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160,elements_eq_160)2870   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160, elements_eq_160) {
2871     TEST_REQUIRES_X86_AVX512F;
2872     RAddStoreExpMinusMaxMicrokernelTester()
2873       .elements(160)
2874       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160);
2875   }
2876 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160,elements_div_160)2877   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160, elements_div_160) {
2878     TEST_REQUIRES_X86_AVX512F;
2879     for (size_t elements = 320; elements < 1600; elements += 160) {
2880       RAddStoreExpMinusMaxMicrokernelTester()
2881         .elements(elements)
2882         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160);
2883     }
2884   }
2885 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160,elements_lt_160)2886   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160, elements_lt_160) {
2887     TEST_REQUIRES_X86_AVX512F;
2888     for (size_t elements = 1; elements < 160; elements++) {
2889       RAddStoreExpMinusMaxMicrokernelTester()
2890         .elements(elements)
2891         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160);
2892     }
2893   }
2894 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160,elements_gt_160)2895   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160, elements_gt_160) {
2896     TEST_REQUIRES_X86_AVX512F;
2897     for (size_t elements = 161; elements < 320; elements++) {
2898       RAddStoreExpMinusMaxMicrokernelTester()
2899         .elements(elements)
2900         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160);
2901     }
2902   }
2903 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2904 
2905 
2906 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC2,elements_eq_160)2907   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC2, elements_eq_160) {
2908     TEST_REQUIRES_X86_AVX512F;
2909     RAddStoreExpMinusMaxMicrokernelTester()
2910       .elements(160)
2911       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160_acc2);
2912   }
2913 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC2,elements_div_160)2914   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC2, elements_div_160) {
2915     TEST_REQUIRES_X86_AVX512F;
2916     for (size_t elements = 320; elements < 1600; elements += 160) {
2917       RAddStoreExpMinusMaxMicrokernelTester()
2918         .elements(elements)
2919         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160_acc2);
2920     }
2921   }
2922 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC2,elements_lt_160)2923   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC2, elements_lt_160) {
2924     TEST_REQUIRES_X86_AVX512F;
2925     for (size_t elements = 1; elements < 160; elements++) {
2926       RAddStoreExpMinusMaxMicrokernelTester()
2927         .elements(elements)
2928         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160_acc2);
2929     }
2930   }
2931 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC2,elements_gt_160)2932   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC2, elements_gt_160) {
2933     TEST_REQUIRES_X86_AVX512F;
2934     for (size_t elements = 161; elements < 320; elements++) {
2935       RAddStoreExpMinusMaxMicrokernelTester()
2936         .elements(elements)
2937         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160_acc2);
2938     }
2939   }
2940 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2941 
2942 
2943 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC5,elements_eq_160)2944   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC5, elements_eq_160) {
2945     TEST_REQUIRES_X86_AVX512F;
2946     RAddStoreExpMinusMaxMicrokernelTester()
2947       .elements(160)
2948       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160_acc5);
2949   }
2950 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC5,elements_div_160)2951   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC5, elements_div_160) {
2952     TEST_REQUIRES_X86_AVX512F;
2953     for (size_t elements = 320; elements < 1600; elements += 160) {
2954       RAddStoreExpMinusMaxMicrokernelTester()
2955         .elements(elements)
2956         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160_acc5);
2957     }
2958   }
2959 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC5,elements_lt_160)2960   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC5, elements_lt_160) {
2961     TEST_REQUIRES_X86_AVX512F;
2962     for (size_t elements = 1; elements < 160; elements++) {
2963       RAddStoreExpMinusMaxMicrokernelTester()
2964         .elements(elements)
2965         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160_acc5);
2966     }
2967   }
2968 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC5,elements_gt_160)2969   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X160_ACC5, elements_gt_160) {
2970     TEST_REQUIRES_X86_AVX512F;
2971     for (size_t elements = 161; elements < 320; elements++) {
2972       RAddStoreExpMinusMaxMicrokernelTester()
2973         .elements(elements)
2974         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x160_acc5);
2975     }
2976   }
2977 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2978 
2979 
2980 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192,elements_eq_192)2981   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192, elements_eq_192) {
2982     TEST_REQUIRES_X86_AVX512F;
2983     RAddStoreExpMinusMaxMicrokernelTester()
2984       .elements(192)
2985       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192);
2986   }
2987 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192,elements_div_192)2988   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192, elements_div_192) {
2989     TEST_REQUIRES_X86_AVX512F;
2990     for (size_t elements = 384; elements < 1920; elements += 192) {
2991       RAddStoreExpMinusMaxMicrokernelTester()
2992         .elements(elements)
2993         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192);
2994     }
2995   }
2996 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192,elements_lt_192)2997   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192, elements_lt_192) {
2998     TEST_REQUIRES_X86_AVX512F;
2999     for (size_t elements = 1; elements < 192; elements++) {
3000       RAddStoreExpMinusMaxMicrokernelTester()
3001         .elements(elements)
3002         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192);
3003     }
3004   }
3005 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192,elements_gt_192)3006   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192, elements_gt_192) {
3007     TEST_REQUIRES_X86_AVX512F;
3008     for (size_t elements = 193; elements < 384; elements++) {
3009       RAddStoreExpMinusMaxMicrokernelTester()
3010         .elements(elements)
3011         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192);
3012     }
3013   }
3014 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
3015 
3016 
3017 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC2,elements_eq_192)3018   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC2, elements_eq_192) {
3019     TEST_REQUIRES_X86_AVX512F;
3020     RAddStoreExpMinusMaxMicrokernelTester()
3021       .elements(192)
3022       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc2);
3023   }
3024 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC2,elements_div_192)3025   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC2, elements_div_192) {
3026     TEST_REQUIRES_X86_AVX512F;
3027     for (size_t elements = 384; elements < 1920; elements += 192) {
3028       RAddStoreExpMinusMaxMicrokernelTester()
3029         .elements(elements)
3030         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc2);
3031     }
3032   }
3033 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC2,elements_lt_192)3034   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC2, elements_lt_192) {
3035     TEST_REQUIRES_X86_AVX512F;
3036     for (size_t elements = 1; elements < 192; elements++) {
3037       RAddStoreExpMinusMaxMicrokernelTester()
3038         .elements(elements)
3039         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc2);
3040     }
3041   }
3042 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC2,elements_gt_192)3043   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC2, elements_gt_192) {
3044     TEST_REQUIRES_X86_AVX512F;
3045     for (size_t elements = 193; elements < 384; elements++) {
3046       RAddStoreExpMinusMaxMicrokernelTester()
3047         .elements(elements)
3048         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc2);
3049     }
3050   }
3051 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
3052 
3053 
3054 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC3,elements_eq_192)3055   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC3, elements_eq_192) {
3056     TEST_REQUIRES_X86_AVX512F;
3057     RAddStoreExpMinusMaxMicrokernelTester()
3058       .elements(192)
3059       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc3);
3060   }
3061 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC3,elements_div_192)3062   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC3, elements_div_192) {
3063     TEST_REQUIRES_X86_AVX512F;
3064     for (size_t elements = 384; elements < 1920; elements += 192) {
3065       RAddStoreExpMinusMaxMicrokernelTester()
3066         .elements(elements)
3067         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc3);
3068     }
3069   }
3070 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC3,elements_lt_192)3071   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC3, elements_lt_192) {
3072     TEST_REQUIRES_X86_AVX512F;
3073     for (size_t elements = 1; elements < 192; elements++) {
3074       RAddStoreExpMinusMaxMicrokernelTester()
3075         .elements(elements)
3076         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc3);
3077     }
3078   }
3079 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC3,elements_gt_192)3080   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC3, elements_gt_192) {
3081     TEST_REQUIRES_X86_AVX512F;
3082     for (size_t elements = 193; elements < 384; elements++) {
3083       RAddStoreExpMinusMaxMicrokernelTester()
3084         .elements(elements)
3085         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc3);
3086     }
3087   }
3088 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
3089 
3090 
3091 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC6,elements_eq_192)3092   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC6, elements_eq_192) {
3093     TEST_REQUIRES_X86_AVX512F;
3094     RAddStoreExpMinusMaxMicrokernelTester()
3095       .elements(192)
3096       .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc6);
3097   }
3098 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC6,elements_div_192)3099   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC6, elements_div_192) {
3100     TEST_REQUIRES_X86_AVX512F;
3101     for (size_t elements = 384; elements < 1920; elements += 192) {
3102       RAddStoreExpMinusMaxMicrokernelTester()
3103         .elements(elements)
3104         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc6);
3105     }
3106   }
3107 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC6,elements_lt_192)3108   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC6, elements_lt_192) {
3109     TEST_REQUIRES_X86_AVX512F;
3110     for (size_t elements = 1; elements < 192; elements++) {
3111       RAddStoreExpMinusMaxMicrokernelTester()
3112         .elements(elements)
3113         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc6);
3114     }
3115   }
3116 
TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC6,elements_gt_192)3117   TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_P5_SCALEF_X192_ACC6, elements_gt_192) {
3118     TEST_REQUIRES_X86_AVX512F;
3119     for (size_t elements = 193; elements < 384; elements++) {
3120       RAddStoreExpMinusMaxMicrokernelTester()
3121         .elements(elements)
3122         .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_p5_scalef_x192_acc6);
3123     }
3124   }
3125 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
3126 
3127 
3128 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X4,elements_eq_4)3129   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X4, elements_eq_4) {
3130     RAddStoreExpMinusMaxMicrokernelTester()
3131       .elements(4)
3132       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x4);
3133   }
3134 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X4,elements_div_4)3135   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X4, elements_div_4) {
3136     for (size_t elements = 8; elements < 40; elements += 4) {
3137       RAddStoreExpMinusMaxMicrokernelTester()
3138         .elements(elements)
3139         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x4);
3140     }
3141   }
3142 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X4,elements_lt_4)3143   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X4, elements_lt_4) {
3144     for (size_t elements = 1; elements < 4; elements++) {
3145       RAddStoreExpMinusMaxMicrokernelTester()
3146         .elements(elements)
3147         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x4);
3148     }
3149   }
3150 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X4,elements_gt_4)3151   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X4, elements_gt_4) {
3152     for (size_t elements = 5; elements < 8; elements++) {
3153       RAddStoreExpMinusMaxMicrokernelTester()
3154         .elements(elements)
3155         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x4);
3156     }
3157   }
3158 #endif  // XNN_ARCH_WASMSIMD
3159 
3160 
3161 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8,elements_eq_8)3162   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8, elements_eq_8) {
3163     RAddStoreExpMinusMaxMicrokernelTester()
3164       .elements(8)
3165       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x8);
3166   }
3167 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8,elements_div_8)3168   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8, elements_div_8) {
3169     for (size_t elements = 16; elements < 80; elements += 8) {
3170       RAddStoreExpMinusMaxMicrokernelTester()
3171         .elements(elements)
3172         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x8);
3173     }
3174   }
3175 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8,elements_lt_8)3176   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8, elements_lt_8) {
3177     for (size_t elements = 1; elements < 8; elements++) {
3178       RAddStoreExpMinusMaxMicrokernelTester()
3179         .elements(elements)
3180         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x8);
3181     }
3182   }
3183 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8,elements_gt_8)3184   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8, elements_gt_8) {
3185     for (size_t elements = 9; elements < 16; elements++) {
3186       RAddStoreExpMinusMaxMicrokernelTester()
3187         .elements(elements)
3188         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x8);
3189     }
3190   }
3191 #endif  // XNN_ARCH_WASMSIMD
3192 
3193 
3194 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8_ACC2,elements_eq_8)3195   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8_ACC2, elements_eq_8) {
3196     RAddStoreExpMinusMaxMicrokernelTester()
3197       .elements(8)
3198       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x8_acc2);
3199   }
3200 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8_ACC2,elements_div_8)3201   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8_ACC2, elements_div_8) {
3202     for (size_t elements = 16; elements < 80; elements += 8) {
3203       RAddStoreExpMinusMaxMicrokernelTester()
3204         .elements(elements)
3205         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x8_acc2);
3206     }
3207   }
3208 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8_ACC2,elements_lt_8)3209   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8_ACC2, elements_lt_8) {
3210     for (size_t elements = 1; elements < 8; elements++) {
3211       RAddStoreExpMinusMaxMicrokernelTester()
3212         .elements(elements)
3213         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x8_acc2);
3214     }
3215   }
3216 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8_ACC2,elements_gt_8)3217   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X8_ACC2, elements_gt_8) {
3218     for (size_t elements = 9; elements < 16; elements++) {
3219       RAddStoreExpMinusMaxMicrokernelTester()
3220         .elements(elements)
3221         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x8_acc2);
3222     }
3223   }
3224 #endif  // XNN_ARCH_WASMSIMD
3225 
3226 
3227 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12,elements_eq_12)3228   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12, elements_eq_12) {
3229     RAddStoreExpMinusMaxMicrokernelTester()
3230       .elements(12)
3231       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12);
3232   }
3233 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12,elements_div_12)3234   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12, elements_div_12) {
3235     for (size_t elements = 24; elements < 120; elements += 12) {
3236       RAddStoreExpMinusMaxMicrokernelTester()
3237         .elements(elements)
3238         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12);
3239     }
3240   }
3241 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12,elements_lt_12)3242   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12, elements_lt_12) {
3243     for (size_t elements = 1; elements < 12; elements++) {
3244       RAddStoreExpMinusMaxMicrokernelTester()
3245         .elements(elements)
3246         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12);
3247     }
3248   }
3249 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12,elements_gt_12)3250   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12, elements_gt_12) {
3251     for (size_t elements = 13; elements < 24; elements++) {
3252       RAddStoreExpMinusMaxMicrokernelTester()
3253         .elements(elements)
3254         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12);
3255     }
3256   }
3257 #endif  // XNN_ARCH_WASMSIMD
3258 
3259 
3260 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC2,elements_eq_12)3261   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC2, elements_eq_12) {
3262     RAddStoreExpMinusMaxMicrokernelTester()
3263       .elements(12)
3264       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12_acc2);
3265   }
3266 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC2,elements_div_12)3267   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC2, elements_div_12) {
3268     for (size_t elements = 24; elements < 120; elements += 12) {
3269       RAddStoreExpMinusMaxMicrokernelTester()
3270         .elements(elements)
3271         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12_acc2);
3272     }
3273   }
3274 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC2,elements_lt_12)3275   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC2, elements_lt_12) {
3276     for (size_t elements = 1; elements < 12; elements++) {
3277       RAddStoreExpMinusMaxMicrokernelTester()
3278         .elements(elements)
3279         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12_acc2);
3280     }
3281   }
3282 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC2,elements_gt_12)3283   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC2, elements_gt_12) {
3284     for (size_t elements = 13; elements < 24; elements++) {
3285       RAddStoreExpMinusMaxMicrokernelTester()
3286         .elements(elements)
3287         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12_acc2);
3288     }
3289   }
3290 #endif  // XNN_ARCH_WASMSIMD
3291 
3292 
3293 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC3,elements_eq_12)3294   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC3, elements_eq_12) {
3295     RAddStoreExpMinusMaxMicrokernelTester()
3296       .elements(12)
3297       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12_acc3);
3298   }
3299 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC3,elements_div_12)3300   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC3, elements_div_12) {
3301     for (size_t elements = 24; elements < 120; elements += 12) {
3302       RAddStoreExpMinusMaxMicrokernelTester()
3303         .elements(elements)
3304         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12_acc3);
3305     }
3306   }
3307 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC3,elements_lt_12)3308   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC3, elements_lt_12) {
3309     for (size_t elements = 1; elements < 12; elements++) {
3310       RAddStoreExpMinusMaxMicrokernelTester()
3311         .elements(elements)
3312         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12_acc3);
3313     }
3314   }
3315 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC3,elements_gt_12)3316   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X12_ACC3, elements_gt_12) {
3317     for (size_t elements = 13; elements < 24; elements++) {
3318       RAddStoreExpMinusMaxMicrokernelTester()
3319         .elements(elements)
3320         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x12_acc3);
3321     }
3322   }
3323 #endif  // XNN_ARCH_WASMSIMD
3324 
3325 
3326 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16,elements_eq_16)3327   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16, elements_eq_16) {
3328     RAddStoreExpMinusMaxMicrokernelTester()
3329       .elements(16)
3330       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16);
3331   }
3332 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16,elements_div_16)3333   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16, elements_div_16) {
3334     for (size_t elements = 32; elements < 160; elements += 16) {
3335       RAddStoreExpMinusMaxMicrokernelTester()
3336         .elements(elements)
3337         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16);
3338     }
3339   }
3340 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16,elements_lt_16)3341   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16, elements_lt_16) {
3342     for (size_t elements = 1; elements < 16; elements++) {
3343       RAddStoreExpMinusMaxMicrokernelTester()
3344         .elements(elements)
3345         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16);
3346     }
3347   }
3348 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16,elements_gt_16)3349   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16, elements_gt_16) {
3350     for (size_t elements = 17; elements < 32; elements++) {
3351       RAddStoreExpMinusMaxMicrokernelTester()
3352         .elements(elements)
3353         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16);
3354     }
3355   }
3356 #endif  // XNN_ARCH_WASMSIMD
3357 
3358 
3359 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC2,elements_eq_16)3360   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC2, elements_eq_16) {
3361     RAddStoreExpMinusMaxMicrokernelTester()
3362       .elements(16)
3363       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16_acc2);
3364   }
3365 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC2,elements_div_16)3366   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC2, elements_div_16) {
3367     for (size_t elements = 32; elements < 160; elements += 16) {
3368       RAddStoreExpMinusMaxMicrokernelTester()
3369         .elements(elements)
3370         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16_acc2);
3371     }
3372   }
3373 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC2,elements_lt_16)3374   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC2, elements_lt_16) {
3375     for (size_t elements = 1; elements < 16; elements++) {
3376       RAddStoreExpMinusMaxMicrokernelTester()
3377         .elements(elements)
3378         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16_acc2);
3379     }
3380   }
3381 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC2,elements_gt_16)3382   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC2, elements_gt_16) {
3383     for (size_t elements = 17; elements < 32; elements++) {
3384       RAddStoreExpMinusMaxMicrokernelTester()
3385         .elements(elements)
3386         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16_acc2);
3387     }
3388   }
3389 #endif  // XNN_ARCH_WASMSIMD
3390 
3391 
3392 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC4,elements_eq_16)3393   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC4, elements_eq_16) {
3394     RAddStoreExpMinusMaxMicrokernelTester()
3395       .elements(16)
3396       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16_acc4);
3397   }
3398 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC4,elements_div_16)3399   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC4, elements_div_16) {
3400     for (size_t elements = 32; elements < 160; elements += 16) {
3401       RAddStoreExpMinusMaxMicrokernelTester()
3402         .elements(elements)
3403         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16_acc4);
3404     }
3405   }
3406 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC4,elements_lt_16)3407   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC4, elements_lt_16) {
3408     for (size_t elements = 1; elements < 16; elements++) {
3409       RAddStoreExpMinusMaxMicrokernelTester()
3410         .elements(elements)
3411         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16_acc4);
3412     }
3413   }
3414 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC4,elements_gt_16)3415   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X16_ACC4, elements_gt_16) {
3416     for (size_t elements = 17; elements < 32; elements++) {
3417       RAddStoreExpMinusMaxMicrokernelTester()
3418         .elements(elements)
3419         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x16_acc4);
3420     }
3421   }
3422 #endif  // XNN_ARCH_WASMSIMD
3423 
3424 
3425 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20,elements_eq_20)3426   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20, elements_eq_20) {
3427     RAddStoreExpMinusMaxMicrokernelTester()
3428       .elements(20)
3429       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20);
3430   }
3431 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20,elements_div_20)3432   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20, elements_div_20) {
3433     for (size_t elements = 40; elements < 200; elements += 20) {
3434       RAddStoreExpMinusMaxMicrokernelTester()
3435         .elements(elements)
3436         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20);
3437     }
3438   }
3439 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20,elements_lt_20)3440   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20, elements_lt_20) {
3441     for (size_t elements = 1; elements < 20; elements++) {
3442       RAddStoreExpMinusMaxMicrokernelTester()
3443         .elements(elements)
3444         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20);
3445     }
3446   }
3447 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20,elements_gt_20)3448   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20, elements_gt_20) {
3449     for (size_t elements = 21; elements < 40; elements++) {
3450       RAddStoreExpMinusMaxMicrokernelTester()
3451         .elements(elements)
3452         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20);
3453     }
3454   }
3455 #endif  // XNN_ARCH_WASMSIMD
3456 
3457 
3458 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC2,elements_eq_20)3459   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC2, elements_eq_20) {
3460     RAddStoreExpMinusMaxMicrokernelTester()
3461       .elements(20)
3462       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20_acc2);
3463   }
3464 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC2,elements_div_20)3465   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC2, elements_div_20) {
3466     for (size_t elements = 40; elements < 200; elements += 20) {
3467       RAddStoreExpMinusMaxMicrokernelTester()
3468         .elements(elements)
3469         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20_acc2);
3470     }
3471   }
3472 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC2,elements_lt_20)3473   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC2, elements_lt_20) {
3474     for (size_t elements = 1; elements < 20; elements++) {
3475       RAddStoreExpMinusMaxMicrokernelTester()
3476         .elements(elements)
3477         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20_acc2);
3478     }
3479   }
3480 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC2,elements_gt_20)3481   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC2, elements_gt_20) {
3482     for (size_t elements = 21; elements < 40; elements++) {
3483       RAddStoreExpMinusMaxMicrokernelTester()
3484         .elements(elements)
3485         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20_acc2);
3486     }
3487   }
3488 #endif  // XNN_ARCH_WASMSIMD
3489 
3490 
3491 #if XNN_ARCH_WASMSIMD
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC5,elements_eq_20)3492   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC5, elements_eq_20) {
3493     RAddStoreExpMinusMaxMicrokernelTester()
3494       .elements(20)
3495       .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20_acc5);
3496   }
3497 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC5,elements_div_20)3498   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC5, elements_div_20) {
3499     for (size_t elements = 40; elements < 200; elements += 20) {
3500       RAddStoreExpMinusMaxMicrokernelTester()
3501         .elements(elements)
3502         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20_acc5);
3503     }
3504   }
3505 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC5,elements_lt_20)3506   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC5, elements_lt_20) {
3507     for (size_t elements = 1; elements < 20; elements++) {
3508       RAddStoreExpMinusMaxMicrokernelTester()
3509         .elements(elements)
3510         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20_acc5);
3511     }
3512   }
3513 
TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC5,elements_gt_20)3514   TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_P5_X20_ACC5, elements_gt_20) {
3515     for (size_t elements = 21; elements < 40; elements++) {
3516       RAddStoreExpMinusMaxMicrokernelTester()
3517         .elements(elements)
3518         .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_p5_x20_acc5);
3519     }
3520   }
3521 #endif  // XNN_ARCH_WASMSIMD
3522 
3523 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X1,elements_eq_1)3524 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X1, elements_eq_1) {
3525   RAddStoreExpMinusMaxMicrokernelTester()
3526     .elements(1)
3527     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x1);
3528 }
3529 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X1,elements_gt_1)3530 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X1, elements_gt_1) {
3531   for (size_t elements = 2; elements < 10; elements++) {
3532     RAddStoreExpMinusMaxMicrokernelTester()
3533       .elements(elements)
3534       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x1);
3535   }
3536 }
3537 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2,elements_eq_2)3538 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2, elements_eq_2) {
3539   RAddStoreExpMinusMaxMicrokernelTester()
3540     .elements(2)
3541     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x2);
3542 }
3543 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2,elements_div_2)3544 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2, elements_div_2) {
3545   for (size_t elements = 4; elements < 20; elements += 2) {
3546     RAddStoreExpMinusMaxMicrokernelTester()
3547       .elements(elements)
3548       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x2);
3549   }
3550 }
3551 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2,elements_lt_2)3552 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2, elements_lt_2) {
3553   for (size_t elements = 1; elements < 2; elements++) {
3554     RAddStoreExpMinusMaxMicrokernelTester()
3555       .elements(elements)
3556       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x2);
3557   }
3558 }
3559 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2,elements_gt_2)3560 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2, elements_gt_2) {
3561   for (size_t elements = 3; elements < 4; elements++) {
3562     RAddStoreExpMinusMaxMicrokernelTester()
3563       .elements(elements)
3564       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x2);
3565   }
3566 }
3567 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2_ACC2,elements_eq_2)3568 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2_ACC2, elements_eq_2) {
3569   RAddStoreExpMinusMaxMicrokernelTester()
3570     .elements(2)
3571     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x2_acc2);
3572 }
3573 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2_ACC2,elements_div_2)3574 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2_ACC2, elements_div_2) {
3575   for (size_t elements = 4; elements < 20; elements += 2) {
3576     RAddStoreExpMinusMaxMicrokernelTester()
3577       .elements(elements)
3578       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x2_acc2);
3579   }
3580 }
3581 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2_ACC2,elements_lt_2)3582 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2_ACC2, elements_lt_2) {
3583   for (size_t elements = 1; elements < 2; elements++) {
3584     RAddStoreExpMinusMaxMicrokernelTester()
3585       .elements(elements)
3586       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x2_acc2);
3587   }
3588 }
3589 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2_ACC2,elements_gt_2)3590 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X2_ACC2, elements_gt_2) {
3591   for (size_t elements = 3; elements < 4; elements++) {
3592     RAddStoreExpMinusMaxMicrokernelTester()
3593       .elements(elements)
3594       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x2_acc2);
3595   }
3596 }
3597 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4,elements_eq_4)3598 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4, elements_eq_4) {
3599   RAddStoreExpMinusMaxMicrokernelTester()
3600     .elements(4)
3601     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4);
3602 }
3603 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4,elements_div_4)3604 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4, elements_div_4) {
3605   for (size_t elements = 8; elements < 40; elements += 4) {
3606     RAddStoreExpMinusMaxMicrokernelTester()
3607       .elements(elements)
3608       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4);
3609   }
3610 }
3611 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4,elements_lt_4)3612 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4, elements_lt_4) {
3613   for (size_t elements = 1; elements < 4; elements++) {
3614     RAddStoreExpMinusMaxMicrokernelTester()
3615       .elements(elements)
3616       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4);
3617   }
3618 }
3619 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4,elements_gt_4)3620 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4, elements_gt_4) {
3621   for (size_t elements = 5; elements < 8; elements++) {
3622     RAddStoreExpMinusMaxMicrokernelTester()
3623       .elements(elements)
3624       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4);
3625   }
3626 }
3627 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC2,elements_eq_4)3628 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC2, elements_eq_4) {
3629   RAddStoreExpMinusMaxMicrokernelTester()
3630     .elements(4)
3631     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4_acc2);
3632 }
3633 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC2,elements_div_4)3634 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC2, elements_div_4) {
3635   for (size_t elements = 8; elements < 40; elements += 4) {
3636     RAddStoreExpMinusMaxMicrokernelTester()
3637       .elements(elements)
3638       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4_acc2);
3639   }
3640 }
3641 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC2,elements_lt_4)3642 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC2, elements_lt_4) {
3643   for (size_t elements = 1; elements < 4; elements++) {
3644     RAddStoreExpMinusMaxMicrokernelTester()
3645       .elements(elements)
3646       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4_acc2);
3647   }
3648 }
3649 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC2,elements_gt_4)3650 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC2, elements_gt_4) {
3651   for (size_t elements = 5; elements < 8; elements++) {
3652     RAddStoreExpMinusMaxMicrokernelTester()
3653       .elements(elements)
3654       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4_acc2);
3655   }
3656 }
3657 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC4,elements_eq_4)3658 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC4, elements_eq_4) {
3659   RAddStoreExpMinusMaxMicrokernelTester()
3660     .elements(4)
3661     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4_acc4);
3662 }
3663 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC4,elements_div_4)3664 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC4, elements_div_4) {
3665   for (size_t elements = 8; elements < 40; elements += 4) {
3666     RAddStoreExpMinusMaxMicrokernelTester()
3667       .elements(elements)
3668       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4_acc4);
3669   }
3670 }
3671 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC4,elements_lt_4)3672 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC4, elements_lt_4) {
3673   for (size_t elements = 1; elements < 4; elements++) {
3674     RAddStoreExpMinusMaxMicrokernelTester()
3675       .elements(elements)
3676       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4_acc4);
3677   }
3678 }
3679 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC4,elements_gt_4)3680 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_P5_X4_ACC4, elements_gt_4) {
3681   for (size_t elements = 5; elements < 8; elements++) {
3682     RAddStoreExpMinusMaxMicrokernelTester()
3683       .elements(elements)
3684       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_p5_x4_acc4);
3685   }
3686 }
3687 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X1,elements_eq_1)3688 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X1, elements_eq_1) {
3689   RAddStoreExpMinusMaxMicrokernelTester()
3690     .elements(1)
3691     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x1);
3692 }
3693 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X1,elements_gt_1)3694 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X1, elements_gt_1) {
3695   for (size_t elements = 2; elements < 10; elements++) {
3696     RAddStoreExpMinusMaxMicrokernelTester()
3697       .elements(elements)
3698       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x1);
3699   }
3700 }
3701 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2,elements_eq_2)3702 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2, elements_eq_2) {
3703   RAddStoreExpMinusMaxMicrokernelTester()
3704     .elements(2)
3705     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x2);
3706 }
3707 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2,elements_div_2)3708 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2, elements_div_2) {
3709   for (size_t elements = 4; elements < 20; elements += 2) {
3710     RAddStoreExpMinusMaxMicrokernelTester()
3711       .elements(elements)
3712       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x2);
3713   }
3714 }
3715 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2,elements_lt_2)3716 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2, elements_lt_2) {
3717   for (size_t elements = 1; elements < 2; elements++) {
3718     RAddStoreExpMinusMaxMicrokernelTester()
3719       .elements(elements)
3720       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x2);
3721   }
3722 }
3723 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2,elements_gt_2)3724 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2, elements_gt_2) {
3725   for (size_t elements = 3; elements < 4; elements++) {
3726     RAddStoreExpMinusMaxMicrokernelTester()
3727       .elements(elements)
3728       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x2);
3729   }
3730 }
3731 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2_ACC2,elements_eq_2)3732 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2_ACC2, elements_eq_2) {
3733   RAddStoreExpMinusMaxMicrokernelTester()
3734     .elements(2)
3735     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x2_acc2);
3736 }
3737 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2_ACC2,elements_div_2)3738 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2_ACC2, elements_div_2) {
3739   for (size_t elements = 4; elements < 20; elements += 2) {
3740     RAddStoreExpMinusMaxMicrokernelTester()
3741       .elements(elements)
3742       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x2_acc2);
3743   }
3744 }
3745 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2_ACC2,elements_lt_2)3746 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2_ACC2, elements_lt_2) {
3747   for (size_t elements = 1; elements < 2; elements++) {
3748     RAddStoreExpMinusMaxMicrokernelTester()
3749       .elements(elements)
3750       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x2_acc2);
3751   }
3752 }
3753 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2_ACC2,elements_gt_2)3754 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X2_ACC2, elements_gt_2) {
3755   for (size_t elements = 3; elements < 4; elements++) {
3756     RAddStoreExpMinusMaxMicrokernelTester()
3757       .elements(elements)
3758       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x2_acc2);
3759   }
3760 }
3761 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4,elements_eq_4)3762 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4, elements_eq_4) {
3763   RAddStoreExpMinusMaxMicrokernelTester()
3764     .elements(4)
3765     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4);
3766 }
3767 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4,elements_div_4)3768 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4, elements_div_4) {
3769   for (size_t elements = 8; elements < 40; elements += 4) {
3770     RAddStoreExpMinusMaxMicrokernelTester()
3771       .elements(elements)
3772       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4);
3773   }
3774 }
3775 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4,elements_lt_4)3776 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4, elements_lt_4) {
3777   for (size_t elements = 1; elements < 4; elements++) {
3778     RAddStoreExpMinusMaxMicrokernelTester()
3779       .elements(elements)
3780       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4);
3781   }
3782 }
3783 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4,elements_gt_4)3784 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4, elements_gt_4) {
3785   for (size_t elements = 5; elements < 8; elements++) {
3786     RAddStoreExpMinusMaxMicrokernelTester()
3787       .elements(elements)
3788       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4);
3789   }
3790 }
3791 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC2,elements_eq_4)3792 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC2, elements_eq_4) {
3793   RAddStoreExpMinusMaxMicrokernelTester()
3794     .elements(4)
3795     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4_acc2);
3796 }
3797 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC2,elements_div_4)3798 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC2, elements_div_4) {
3799   for (size_t elements = 8; elements < 40; elements += 4) {
3800     RAddStoreExpMinusMaxMicrokernelTester()
3801       .elements(elements)
3802       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4_acc2);
3803   }
3804 }
3805 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC2,elements_lt_4)3806 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC2, elements_lt_4) {
3807   for (size_t elements = 1; elements < 4; elements++) {
3808     RAddStoreExpMinusMaxMicrokernelTester()
3809       .elements(elements)
3810       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4_acc2);
3811   }
3812 }
3813 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC2,elements_gt_4)3814 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC2, elements_gt_4) {
3815   for (size_t elements = 5; elements < 8; elements++) {
3816     RAddStoreExpMinusMaxMicrokernelTester()
3817       .elements(elements)
3818       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4_acc2);
3819   }
3820 }
3821 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC4,elements_eq_4)3822 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC4, elements_eq_4) {
3823   RAddStoreExpMinusMaxMicrokernelTester()
3824     .elements(4)
3825     .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4_acc4);
3826 }
3827 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC4,elements_div_4)3828 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC4, elements_div_4) {
3829   for (size_t elements = 8; elements < 40; elements += 4) {
3830     RAddStoreExpMinusMaxMicrokernelTester()
3831       .elements(elements)
3832       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4_acc4);
3833   }
3834 }
3835 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC4,elements_lt_4)3836 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC4, elements_lt_4) {
3837   for (size_t elements = 1; elements < 4; elements++) {
3838     RAddStoreExpMinusMaxMicrokernelTester()
3839       .elements(elements)
3840       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4_acc4);
3841   }
3842 }
3843 
TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC4,elements_gt_4)3844 TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_LUT64_P2_X4_ACC4, elements_gt_4) {
3845   for (size_t elements = 5; elements < 8; elements++) {
3846     RAddStoreExpMinusMaxMicrokernelTester()
3847       .elements(elements)
3848       .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_lut64_p2_x4_acc4);
3849   }
3850 }