xref: /aosp_15_r20/external/XNNPACK/test/f16-raddstoreexpminusmax.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1 // Copyright 2019 Google LLC
2 //
3 // This source code is licensed under the BSD-style license found in the
4 // LICENSE file in the root directory of this source tree.
5 //
6 // Auto-generated file. Do not edit!
7 //   Specification: test/f16-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_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32,elements_eq_32)21   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32, elements_eq_32) {
22     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
23     RAddStoreExpMinusMaxMicrokernelTester()
24       .elements(32)
25       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
26   }
27 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32,elements_div_32)28   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32, elements_div_32) {
29     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
30     for (size_t elements = 64; elements < 320; elements += 32) {
31       RAddStoreExpMinusMaxMicrokernelTester()
32         .elements(elements)
33         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
34     }
35   }
36 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32,elements_lt_32)37   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32, elements_lt_32) {
38     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
39     for (size_t elements = 1; elements < 32; elements++) {
40       RAddStoreExpMinusMaxMicrokernelTester()
41         .elements(elements)
42         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
43     }
44   }
45 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32,elements_gt_32)46   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32, elements_gt_32) {
47     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
48     for (size_t elements = 33; elements < 64; elements++) {
49       RAddStoreExpMinusMaxMicrokernelTester()
50         .elements(elements)
51         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
52     }
53   }
54 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
55 
56 
57 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC2,elements_eq_32)58   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC2, elements_eq_32) {
59     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
60     RAddStoreExpMinusMaxMicrokernelTester()
61       .elements(32)
62       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
63   }
64 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC2,elements_div_32)65   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC2, elements_div_32) {
66     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
67     for (size_t elements = 64; elements < 320; elements += 32) {
68       RAddStoreExpMinusMaxMicrokernelTester()
69         .elements(elements)
70         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
71     }
72   }
73 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC2,elements_lt_32)74   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC2, elements_lt_32) {
75     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
76     for (size_t elements = 1; elements < 32; elements++) {
77       RAddStoreExpMinusMaxMicrokernelTester()
78         .elements(elements)
79         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
80     }
81   }
82 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC2,elements_gt_32)83   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC2, elements_gt_32) {
84     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
85     for (size_t elements = 33; elements < 64; elements++) {
86       RAddStoreExpMinusMaxMicrokernelTester()
87         .elements(elements)
88         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
89     }
90   }
91 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
92 
93 
94 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC4,elements_eq_32)95   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC4, elements_eq_32) {
96     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
97     RAddStoreExpMinusMaxMicrokernelTester()
98       .elements(32)
99       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32_acc4, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
100   }
101 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC4,elements_div_32)102   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC4, elements_div_32) {
103     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
104     for (size_t elements = 64; elements < 320; elements += 32) {
105       RAddStoreExpMinusMaxMicrokernelTester()
106         .elements(elements)
107         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32_acc4, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
108     }
109   }
110 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC4,elements_lt_32)111   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC4, elements_lt_32) {
112     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
113     for (size_t elements = 1; elements < 32; elements++) {
114       RAddStoreExpMinusMaxMicrokernelTester()
115         .elements(elements)
116         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32_acc4, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
117     }
118   }
119 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC4,elements_gt_32)120   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X32_ACC4, elements_gt_32) {
121     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
122     for (size_t elements = 33; elements < 64; elements++) {
123       RAddStoreExpMinusMaxMicrokernelTester()
124         .elements(elements)
125         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x32_acc4, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
126     }
127   }
128 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
129 
130 
131 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40,elements_eq_40)132   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40, elements_eq_40) {
133     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
134     RAddStoreExpMinusMaxMicrokernelTester()
135       .elements(40)
136       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
137   }
138 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40,elements_div_40)139   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40, elements_div_40) {
140     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
141     for (size_t elements = 80; elements < 400; elements += 40) {
142       RAddStoreExpMinusMaxMicrokernelTester()
143         .elements(elements)
144         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
145     }
146   }
147 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40,elements_lt_40)148   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40, elements_lt_40) {
149     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
150     for (size_t elements = 1; elements < 40; elements++) {
151       RAddStoreExpMinusMaxMicrokernelTester()
152         .elements(elements)
153         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
154     }
155   }
156 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40,elements_gt_40)157   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40, elements_gt_40) {
158     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
159     for (size_t elements = 41; elements < 80; elements++) {
160       RAddStoreExpMinusMaxMicrokernelTester()
161         .elements(elements)
162         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
163     }
164   }
165 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
166 
167 
168 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC2,elements_eq_40)169   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC2, elements_eq_40) {
170     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
171     RAddStoreExpMinusMaxMicrokernelTester()
172       .elements(40)
173       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
174   }
175 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC2,elements_div_40)176   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC2, elements_div_40) {
177     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
178     for (size_t elements = 80; elements < 400; elements += 40) {
179       RAddStoreExpMinusMaxMicrokernelTester()
180         .elements(elements)
181         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
182     }
183   }
184 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC2,elements_lt_40)185   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC2, elements_lt_40) {
186     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
187     for (size_t elements = 1; elements < 40; elements++) {
188       RAddStoreExpMinusMaxMicrokernelTester()
189         .elements(elements)
190         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
191     }
192   }
193 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC2,elements_gt_40)194   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC2, elements_gt_40) {
195     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
196     for (size_t elements = 41; elements < 80; elements++) {
197       RAddStoreExpMinusMaxMicrokernelTester()
198         .elements(elements)
199         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
200     }
201   }
202 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
203 
204 
205 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC5,elements_eq_40)206   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC5, elements_eq_40) {
207     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
208     RAddStoreExpMinusMaxMicrokernelTester()
209       .elements(40)
210       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40_acc5, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
211   }
212 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC5,elements_div_40)213   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC5, elements_div_40) {
214     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
215     for (size_t elements = 80; elements < 400; elements += 40) {
216       RAddStoreExpMinusMaxMicrokernelTester()
217         .elements(elements)
218         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40_acc5, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
219     }
220   }
221 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC5,elements_lt_40)222   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC5, elements_lt_40) {
223     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
224     for (size_t elements = 1; elements < 40; elements++) {
225       RAddStoreExpMinusMaxMicrokernelTester()
226         .elements(elements)
227         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40_acc5, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
228     }
229   }
230 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC5,elements_gt_40)231   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X40_ACC5, elements_gt_40) {
232     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
233     for (size_t elements = 41; elements < 80; elements++) {
234       RAddStoreExpMinusMaxMicrokernelTester()
235         .elements(elements)
236         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x40_acc5, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
237     }
238   }
239 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
240 
241 
242 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48,elements_eq_48)243   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48, elements_eq_48) {
244     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
245     RAddStoreExpMinusMaxMicrokernelTester()
246       .elements(48)
247       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
248   }
249 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48,elements_div_48)250   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48, elements_div_48) {
251     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
252     for (size_t elements = 96; elements < 480; elements += 48) {
253       RAddStoreExpMinusMaxMicrokernelTester()
254         .elements(elements)
255         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
256     }
257   }
258 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48,elements_lt_48)259   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48, elements_lt_48) {
260     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
261     for (size_t elements = 1; elements < 48; elements++) {
262       RAddStoreExpMinusMaxMicrokernelTester()
263         .elements(elements)
264         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
265     }
266   }
267 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48,elements_gt_48)268   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48, elements_gt_48) {
269     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
270     for (size_t elements = 49; elements < 96; elements++) {
271       RAddStoreExpMinusMaxMicrokernelTester()
272         .elements(elements)
273         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
274     }
275   }
276 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
277 
278 
279 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC2,elements_eq_48)280   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC2, elements_eq_48) {
281     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
282     RAddStoreExpMinusMaxMicrokernelTester()
283       .elements(48)
284       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
285   }
286 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC2,elements_div_48)287   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC2, elements_div_48) {
288     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
289     for (size_t elements = 96; elements < 480; elements += 48) {
290       RAddStoreExpMinusMaxMicrokernelTester()
291         .elements(elements)
292         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
293     }
294   }
295 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC2,elements_lt_48)296   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC2, elements_lt_48) {
297     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
298     for (size_t elements = 1; elements < 48; elements++) {
299       RAddStoreExpMinusMaxMicrokernelTester()
300         .elements(elements)
301         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
302     }
303   }
304 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC2,elements_gt_48)305   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC2, elements_gt_48) {
306     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
307     for (size_t elements = 49; elements < 96; elements++) {
308       RAddStoreExpMinusMaxMicrokernelTester()
309         .elements(elements)
310         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
311     }
312   }
313 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
314 
315 
316 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC3,elements_eq_48)317   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC3, elements_eq_48) {
318     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
319     RAddStoreExpMinusMaxMicrokernelTester()
320       .elements(48)
321       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
322   }
323 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC3,elements_div_48)324   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC3, elements_div_48) {
325     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
326     for (size_t elements = 96; elements < 480; elements += 48) {
327       RAddStoreExpMinusMaxMicrokernelTester()
328         .elements(elements)
329         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
330     }
331   }
332 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC3,elements_lt_48)333   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC3, elements_lt_48) {
334     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
335     for (size_t elements = 1; elements < 48; elements++) {
336       RAddStoreExpMinusMaxMicrokernelTester()
337         .elements(elements)
338         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
339     }
340   }
341 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC3,elements_gt_48)342   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X48_ACC3, elements_gt_48) {
343     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
344     for (size_t elements = 49; elements < 96; elements++) {
345       RAddStoreExpMinusMaxMicrokernelTester()
346         .elements(elements)
347         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x48_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
348     }
349   }
350 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
351 
352 
353 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64,elements_eq_64)354   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64, elements_eq_64) {
355     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
356     RAddStoreExpMinusMaxMicrokernelTester()
357       .elements(64)
358       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
359   }
360 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64,elements_div_64)361   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64, elements_div_64) {
362     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
363     for (size_t elements = 128; elements < 640; elements += 64) {
364       RAddStoreExpMinusMaxMicrokernelTester()
365         .elements(elements)
366         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
367     }
368   }
369 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64,elements_lt_64)370   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64, elements_lt_64) {
371     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
372     for (size_t elements = 1; elements < 64; elements++) {
373       RAddStoreExpMinusMaxMicrokernelTester()
374         .elements(elements)
375         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
376     }
377   }
378 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64,elements_gt_64)379   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64, elements_gt_64) {
380     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
381     for (size_t elements = 65; elements < 128; elements++) {
382       RAddStoreExpMinusMaxMicrokernelTester()
383         .elements(elements)
384         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
385     }
386   }
387 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
388 
389 
390 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC2,elements_eq_64)391   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC2, elements_eq_64) {
392     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
393     RAddStoreExpMinusMaxMicrokernelTester()
394       .elements(64)
395       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
396   }
397 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC2,elements_div_64)398   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC2, elements_div_64) {
399     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
400     for (size_t elements = 128; elements < 640; elements += 64) {
401       RAddStoreExpMinusMaxMicrokernelTester()
402         .elements(elements)
403         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
404     }
405   }
406 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC2,elements_lt_64)407   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC2, elements_lt_64) {
408     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
409     for (size_t elements = 1; elements < 64; elements++) {
410       RAddStoreExpMinusMaxMicrokernelTester()
411         .elements(elements)
412         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
413     }
414   }
415 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC2,elements_gt_64)416   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC2, elements_gt_64) {
417     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
418     for (size_t elements = 65; elements < 128; elements++) {
419       RAddStoreExpMinusMaxMicrokernelTester()
420         .elements(elements)
421         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
422     }
423   }
424 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
425 
426 
427 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC4,elements_eq_64)428   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC4, elements_eq_64) {
429     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
430     RAddStoreExpMinusMaxMicrokernelTester()
431       .elements(64)
432       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64_acc4, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
433   }
434 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC4,elements_div_64)435   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC4, elements_div_64) {
436     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
437     for (size_t elements = 128; elements < 640; elements += 64) {
438       RAddStoreExpMinusMaxMicrokernelTester()
439         .elements(elements)
440         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64_acc4, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
441     }
442   }
443 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC4,elements_lt_64)444   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC4, elements_lt_64) {
445     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
446     for (size_t elements = 1; elements < 64; elements++) {
447       RAddStoreExpMinusMaxMicrokernelTester()
448         .elements(elements)
449         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64_acc4, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
450     }
451   }
452 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC4,elements_gt_64)453   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X64_ACC4, elements_gt_64) {
454     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
455     for (size_t elements = 65; elements < 128; elements++) {
456       RAddStoreExpMinusMaxMicrokernelTester()
457         .elements(elements)
458         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x64_acc4, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
459     }
460   }
461 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
462 
463 
464 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72,elements_eq_72)465   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72, elements_eq_72) {
466     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
467     RAddStoreExpMinusMaxMicrokernelTester()
468       .elements(72)
469       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x72, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
470   }
471 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72,elements_div_72)472   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72, elements_div_72) {
473     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
474     for (size_t elements = 144; elements < 720; elements += 72) {
475       RAddStoreExpMinusMaxMicrokernelTester()
476         .elements(elements)
477         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x72, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
478     }
479   }
480 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72,elements_lt_72)481   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72, elements_lt_72) {
482     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
483     for (size_t elements = 1; elements < 72; elements++) {
484       RAddStoreExpMinusMaxMicrokernelTester()
485         .elements(elements)
486         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x72, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
487     }
488   }
489 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72,elements_gt_72)490   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72, elements_gt_72) {
491     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
492     for (size_t elements = 73; elements < 144; elements++) {
493       RAddStoreExpMinusMaxMicrokernelTester()
494         .elements(elements)
495         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x72, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
496     }
497   }
498 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
499 
500 
501 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72_ACC3,elements_eq_72)502   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72_ACC3, elements_eq_72) {
503     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
504     RAddStoreExpMinusMaxMicrokernelTester()
505       .elements(72)
506       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x72_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
507   }
508 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72_ACC3,elements_div_72)509   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72_ACC3, elements_div_72) {
510     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
511     for (size_t elements = 144; elements < 720; elements += 72) {
512       RAddStoreExpMinusMaxMicrokernelTester()
513         .elements(elements)
514         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x72_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
515     }
516   }
517 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72_ACC3,elements_lt_72)518   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72_ACC3, elements_lt_72) {
519     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
520     for (size_t elements = 1; elements < 72; elements++) {
521       RAddStoreExpMinusMaxMicrokernelTester()
522         .elements(elements)
523         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x72_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
524     }
525   }
526 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72_ACC3,elements_gt_72)527   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X72_ACC3, elements_gt_72) {
528     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
529     for (size_t elements = 73; elements < 144; elements++) {
530       RAddStoreExpMinusMaxMicrokernelTester()
531         .elements(elements)
532         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x72_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
533     }
534   }
535 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
536 
537 
538 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80,elements_eq_80)539   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80, elements_eq_80) {
540     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
541     RAddStoreExpMinusMaxMicrokernelTester()
542       .elements(80)
543       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
544   }
545 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80,elements_div_80)546   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80, elements_div_80) {
547     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
548     for (size_t elements = 160; elements < 800; elements += 80) {
549       RAddStoreExpMinusMaxMicrokernelTester()
550         .elements(elements)
551         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
552     }
553   }
554 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80,elements_lt_80)555   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80, elements_lt_80) {
556     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
557     for (size_t elements = 1; elements < 80; elements++) {
558       RAddStoreExpMinusMaxMicrokernelTester()
559         .elements(elements)
560         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
561     }
562   }
563 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80,elements_gt_80)564   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80, elements_gt_80) {
565     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
566     for (size_t elements = 81; elements < 160; elements++) {
567       RAddStoreExpMinusMaxMicrokernelTester()
568         .elements(elements)
569         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
570     }
571   }
572 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
573 
574 
575 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC2,elements_eq_80)576   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC2, elements_eq_80) {
577     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
578     RAddStoreExpMinusMaxMicrokernelTester()
579       .elements(80)
580       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
581   }
582 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC2,elements_div_80)583   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC2, elements_div_80) {
584     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
585     for (size_t elements = 160; elements < 800; elements += 80) {
586       RAddStoreExpMinusMaxMicrokernelTester()
587         .elements(elements)
588         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
589     }
590   }
591 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC2,elements_lt_80)592   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC2, elements_lt_80) {
593     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
594     for (size_t elements = 1; elements < 80; elements++) {
595       RAddStoreExpMinusMaxMicrokernelTester()
596         .elements(elements)
597         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
598     }
599   }
600 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC2,elements_gt_80)601   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC2, elements_gt_80) {
602     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
603     for (size_t elements = 81; elements < 160; elements++) {
604       RAddStoreExpMinusMaxMicrokernelTester()
605         .elements(elements)
606         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
607     }
608   }
609 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
610 
611 
612 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC5,elements_eq_80)613   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC5, elements_eq_80) {
614     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
615     RAddStoreExpMinusMaxMicrokernelTester()
616       .elements(80)
617       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80_acc5, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
618   }
619 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC5,elements_div_80)620   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC5, elements_div_80) {
621     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
622     for (size_t elements = 160; elements < 800; elements += 80) {
623       RAddStoreExpMinusMaxMicrokernelTester()
624         .elements(elements)
625         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80_acc5, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
626     }
627   }
628 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC5,elements_lt_80)629   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC5, elements_lt_80) {
630     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
631     for (size_t elements = 1; elements < 80; elements++) {
632       RAddStoreExpMinusMaxMicrokernelTester()
633         .elements(elements)
634         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80_acc5, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
635     }
636   }
637 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC5,elements_gt_80)638   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X80_ACC5, elements_gt_80) {
639     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
640     for (size_t elements = 81; elements < 160; elements++) {
641       RAddStoreExpMinusMaxMicrokernelTester()
642         .elements(elements)
643         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x80_acc5, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
644     }
645   }
646 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
647 
648 
649 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96,elements_eq_96)650   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96, elements_eq_96) {
651     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
652     RAddStoreExpMinusMaxMicrokernelTester()
653       .elements(96)
654       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
655   }
656 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96,elements_div_96)657   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96, elements_div_96) {
658     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
659     for (size_t elements = 192; elements < 960; elements += 96) {
660       RAddStoreExpMinusMaxMicrokernelTester()
661         .elements(elements)
662         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
663     }
664   }
665 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96,elements_lt_96)666   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96, elements_lt_96) {
667     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
668     for (size_t elements = 1; elements < 96; elements++) {
669       RAddStoreExpMinusMaxMicrokernelTester()
670         .elements(elements)
671         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
672     }
673   }
674 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96,elements_gt_96)675   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96, elements_gt_96) {
676     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
677     for (size_t elements = 97; elements < 192; elements++) {
678       RAddStoreExpMinusMaxMicrokernelTester()
679         .elements(elements)
680         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
681     }
682   }
683 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
684 
685 
686 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC2,elements_eq_96)687   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC2, elements_eq_96) {
688     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
689     RAddStoreExpMinusMaxMicrokernelTester()
690       .elements(96)
691       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
692   }
693 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC2,elements_div_96)694   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC2, elements_div_96) {
695     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
696     for (size_t elements = 192; elements < 960; elements += 96) {
697       RAddStoreExpMinusMaxMicrokernelTester()
698         .elements(elements)
699         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
700     }
701   }
702 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC2,elements_lt_96)703   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC2, elements_lt_96) {
704     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
705     for (size_t elements = 1; elements < 96; elements++) {
706       RAddStoreExpMinusMaxMicrokernelTester()
707         .elements(elements)
708         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
709     }
710   }
711 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC2,elements_gt_96)712   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC2, elements_gt_96) {
713     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
714     for (size_t elements = 97; elements < 192; elements++) {
715       RAddStoreExpMinusMaxMicrokernelTester()
716         .elements(elements)
717         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc2, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
718     }
719   }
720 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
721 
722 
723 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC3,elements_eq_96)724   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC3, elements_eq_96) {
725     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
726     RAddStoreExpMinusMaxMicrokernelTester()
727       .elements(96)
728       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
729   }
730 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC3,elements_div_96)731   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC3, elements_div_96) {
732     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
733     for (size_t elements = 192; elements < 960; elements += 96) {
734       RAddStoreExpMinusMaxMicrokernelTester()
735         .elements(elements)
736         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
737     }
738   }
739 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC3,elements_lt_96)740   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC3, elements_lt_96) {
741     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
742     for (size_t elements = 1; elements < 96; elements++) {
743       RAddStoreExpMinusMaxMicrokernelTester()
744         .elements(elements)
745         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
746     }
747   }
748 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC3,elements_gt_96)749   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC3, elements_gt_96) {
750     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
751     for (size_t elements = 97; elements < 192; elements++) {
752       RAddStoreExpMinusMaxMicrokernelTester()
753         .elements(elements)
754         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc3, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
755     }
756   }
757 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
758 
759 
760 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC6,elements_eq_96)761   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC6, elements_eq_96) {
762     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
763     RAddStoreExpMinusMaxMicrokernelTester()
764       .elements(96)
765       .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc6, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
766   }
767 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC6,elements_div_96)768   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC6, elements_div_96) {
769     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
770     for (size_t elements = 192; elements < 960; elements += 96) {
771       RAddStoreExpMinusMaxMicrokernelTester()
772         .elements(elements)
773         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc6, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
774     }
775   }
776 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC6,elements_lt_96)777   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC6, elements_lt_96) {
778     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
779     for (size_t elements = 1; elements < 96; elements++) {
780       RAddStoreExpMinusMaxMicrokernelTester()
781         .elements(elements)
782         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc6, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
783     }
784   }
785 
TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC6,elements_gt_96)786   TEST(F16_RADDSTOREEXPMINUSMAX__NEONFP16ARITH_RR2_P2_X96_ACC6, elements_gt_96) {
787     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
788     for (size_t elements = 97; elements < 192; elements++) {
789       RAddStoreExpMinusMaxMicrokernelTester()
790         .elements(elements)
791         .Test(xnn_f16_raddstoreexpminusmax_ukernel__neonfp16arith_rr2_p2_x96_acc6, xnn_init_f16_expminus_neonfp16arith_rr2_p2_params);
792     }
793   }
794 #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
795 
796 
797 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32,elements_eq_32)798   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32, elements_eq_32) {
799     TEST_REQUIRES_X86_AVX2;
800     RAddStoreExpMinusMaxMicrokernelTester()
801       .elements(32)
802       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32, xnn_init_f16_expminus_avx2_rr1_p2_params);
803   }
804 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32,elements_div_32)805   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32, elements_div_32) {
806     TEST_REQUIRES_X86_AVX2;
807     for (size_t elements = 64; elements < 320; elements += 32) {
808       RAddStoreExpMinusMaxMicrokernelTester()
809         .elements(elements)
810         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32, xnn_init_f16_expminus_avx2_rr1_p2_params);
811     }
812   }
813 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32,elements_lt_32)814   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32, elements_lt_32) {
815     TEST_REQUIRES_X86_AVX2;
816     for (size_t elements = 1; elements < 32; elements++) {
817       RAddStoreExpMinusMaxMicrokernelTester()
818         .elements(elements)
819         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32, xnn_init_f16_expminus_avx2_rr1_p2_params);
820     }
821   }
822 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32,elements_gt_32)823   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32, elements_gt_32) {
824     TEST_REQUIRES_X86_AVX2;
825     for (size_t elements = 33; elements < 64; elements++) {
826       RAddStoreExpMinusMaxMicrokernelTester()
827         .elements(elements)
828         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32, xnn_init_f16_expminus_avx2_rr1_p2_params);
829     }
830   }
831 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
832 
833 
834 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC2,elements_eq_32)835   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC2, elements_eq_32) {
836     TEST_REQUIRES_X86_AVX2;
837     RAddStoreExpMinusMaxMicrokernelTester()
838       .elements(32)
839       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
840   }
841 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC2,elements_div_32)842   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC2, elements_div_32) {
843     TEST_REQUIRES_X86_AVX2;
844     for (size_t elements = 64; elements < 320; elements += 32) {
845       RAddStoreExpMinusMaxMicrokernelTester()
846         .elements(elements)
847         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
848     }
849   }
850 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC2,elements_lt_32)851   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC2, elements_lt_32) {
852     TEST_REQUIRES_X86_AVX2;
853     for (size_t elements = 1; elements < 32; elements++) {
854       RAddStoreExpMinusMaxMicrokernelTester()
855         .elements(elements)
856         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
857     }
858   }
859 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC2,elements_gt_32)860   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC2, elements_gt_32) {
861     TEST_REQUIRES_X86_AVX2;
862     for (size_t elements = 33; elements < 64; elements++) {
863       RAddStoreExpMinusMaxMicrokernelTester()
864         .elements(elements)
865         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
866     }
867   }
868 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
869 
870 
871 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC4,elements_eq_32)872   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC4, elements_eq_32) {
873     TEST_REQUIRES_X86_AVX2;
874     RAddStoreExpMinusMaxMicrokernelTester()
875       .elements(32)
876       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32_acc4, xnn_init_f16_expminus_avx2_rr1_p2_params);
877   }
878 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC4,elements_div_32)879   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC4, elements_div_32) {
880     TEST_REQUIRES_X86_AVX2;
881     for (size_t elements = 64; elements < 320; elements += 32) {
882       RAddStoreExpMinusMaxMicrokernelTester()
883         .elements(elements)
884         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32_acc4, xnn_init_f16_expminus_avx2_rr1_p2_params);
885     }
886   }
887 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC4,elements_lt_32)888   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC4, elements_lt_32) {
889     TEST_REQUIRES_X86_AVX2;
890     for (size_t elements = 1; elements < 32; elements++) {
891       RAddStoreExpMinusMaxMicrokernelTester()
892         .elements(elements)
893         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32_acc4, xnn_init_f16_expminus_avx2_rr1_p2_params);
894     }
895   }
896 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC4,elements_gt_32)897   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X32_ACC4, elements_gt_32) {
898     TEST_REQUIRES_X86_AVX2;
899     for (size_t elements = 33; elements < 64; elements++) {
900       RAddStoreExpMinusMaxMicrokernelTester()
901         .elements(elements)
902         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x32_acc4, xnn_init_f16_expminus_avx2_rr1_p2_params);
903     }
904   }
905 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
906 
907 
908 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40,elements_eq_40)909   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40, elements_eq_40) {
910     TEST_REQUIRES_X86_AVX2;
911     RAddStoreExpMinusMaxMicrokernelTester()
912       .elements(40)
913       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40, xnn_init_f16_expminus_avx2_rr1_p2_params);
914   }
915 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40,elements_div_40)916   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40, elements_div_40) {
917     TEST_REQUIRES_X86_AVX2;
918     for (size_t elements = 80; elements < 400; elements += 40) {
919       RAddStoreExpMinusMaxMicrokernelTester()
920         .elements(elements)
921         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40, xnn_init_f16_expminus_avx2_rr1_p2_params);
922     }
923   }
924 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40,elements_lt_40)925   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40, elements_lt_40) {
926     TEST_REQUIRES_X86_AVX2;
927     for (size_t elements = 1; elements < 40; elements++) {
928       RAddStoreExpMinusMaxMicrokernelTester()
929         .elements(elements)
930         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40, xnn_init_f16_expminus_avx2_rr1_p2_params);
931     }
932   }
933 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40,elements_gt_40)934   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40, elements_gt_40) {
935     TEST_REQUIRES_X86_AVX2;
936     for (size_t elements = 41; elements < 80; elements++) {
937       RAddStoreExpMinusMaxMicrokernelTester()
938         .elements(elements)
939         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40, xnn_init_f16_expminus_avx2_rr1_p2_params);
940     }
941   }
942 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
943 
944 
945 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC2,elements_eq_40)946   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC2, elements_eq_40) {
947     TEST_REQUIRES_X86_AVX2;
948     RAddStoreExpMinusMaxMicrokernelTester()
949       .elements(40)
950       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
951   }
952 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC2,elements_div_40)953   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC2, elements_div_40) {
954     TEST_REQUIRES_X86_AVX2;
955     for (size_t elements = 80; elements < 400; elements += 40) {
956       RAddStoreExpMinusMaxMicrokernelTester()
957         .elements(elements)
958         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
959     }
960   }
961 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC2,elements_lt_40)962   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC2, elements_lt_40) {
963     TEST_REQUIRES_X86_AVX2;
964     for (size_t elements = 1; elements < 40; elements++) {
965       RAddStoreExpMinusMaxMicrokernelTester()
966         .elements(elements)
967         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
968     }
969   }
970 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC2,elements_gt_40)971   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC2, elements_gt_40) {
972     TEST_REQUIRES_X86_AVX2;
973     for (size_t elements = 41; elements < 80; elements++) {
974       RAddStoreExpMinusMaxMicrokernelTester()
975         .elements(elements)
976         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
977     }
978   }
979 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
980 
981 
982 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC5,elements_eq_40)983   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC5, elements_eq_40) {
984     TEST_REQUIRES_X86_AVX2;
985     RAddStoreExpMinusMaxMicrokernelTester()
986       .elements(40)
987       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40_acc5, xnn_init_f16_expminus_avx2_rr1_p2_params);
988   }
989 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC5,elements_div_40)990   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC5, elements_div_40) {
991     TEST_REQUIRES_X86_AVX2;
992     for (size_t elements = 80; elements < 400; elements += 40) {
993       RAddStoreExpMinusMaxMicrokernelTester()
994         .elements(elements)
995         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40_acc5, xnn_init_f16_expminus_avx2_rr1_p2_params);
996     }
997   }
998 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC5,elements_lt_40)999   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC5, elements_lt_40) {
1000     TEST_REQUIRES_X86_AVX2;
1001     for (size_t elements = 1; elements < 40; elements++) {
1002       RAddStoreExpMinusMaxMicrokernelTester()
1003         .elements(elements)
1004         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40_acc5, xnn_init_f16_expminus_avx2_rr1_p2_params);
1005     }
1006   }
1007 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC5,elements_gt_40)1008   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X40_ACC5, elements_gt_40) {
1009     TEST_REQUIRES_X86_AVX2;
1010     for (size_t elements = 41; elements < 80; elements++) {
1011       RAddStoreExpMinusMaxMicrokernelTester()
1012         .elements(elements)
1013         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x40_acc5, xnn_init_f16_expminus_avx2_rr1_p2_params);
1014     }
1015   }
1016 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1017 
1018 
1019 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48,elements_eq_48)1020   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48, elements_eq_48) {
1021     TEST_REQUIRES_X86_AVX2;
1022     RAddStoreExpMinusMaxMicrokernelTester()
1023       .elements(48)
1024       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48, xnn_init_f16_expminus_avx2_rr1_p2_params);
1025   }
1026 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48,elements_div_48)1027   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48, elements_div_48) {
1028     TEST_REQUIRES_X86_AVX2;
1029     for (size_t elements = 96; elements < 480; elements += 48) {
1030       RAddStoreExpMinusMaxMicrokernelTester()
1031         .elements(elements)
1032         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48, xnn_init_f16_expminus_avx2_rr1_p2_params);
1033     }
1034   }
1035 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48,elements_lt_48)1036   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48, elements_lt_48) {
1037     TEST_REQUIRES_X86_AVX2;
1038     for (size_t elements = 1; elements < 48; elements++) {
1039       RAddStoreExpMinusMaxMicrokernelTester()
1040         .elements(elements)
1041         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48, xnn_init_f16_expminus_avx2_rr1_p2_params);
1042     }
1043   }
1044 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48,elements_gt_48)1045   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48, elements_gt_48) {
1046     TEST_REQUIRES_X86_AVX2;
1047     for (size_t elements = 49; elements < 96; elements++) {
1048       RAddStoreExpMinusMaxMicrokernelTester()
1049         .elements(elements)
1050         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48, xnn_init_f16_expminus_avx2_rr1_p2_params);
1051     }
1052   }
1053 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1054 
1055 
1056 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC2,elements_eq_48)1057   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC2, elements_eq_48) {
1058     TEST_REQUIRES_X86_AVX2;
1059     RAddStoreExpMinusMaxMicrokernelTester()
1060       .elements(48)
1061       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1062   }
1063 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC2,elements_div_48)1064   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC2, elements_div_48) {
1065     TEST_REQUIRES_X86_AVX2;
1066     for (size_t elements = 96; elements < 480; elements += 48) {
1067       RAddStoreExpMinusMaxMicrokernelTester()
1068         .elements(elements)
1069         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1070     }
1071   }
1072 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC2,elements_lt_48)1073   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC2, elements_lt_48) {
1074     TEST_REQUIRES_X86_AVX2;
1075     for (size_t elements = 1; elements < 48; elements++) {
1076       RAddStoreExpMinusMaxMicrokernelTester()
1077         .elements(elements)
1078         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1079     }
1080   }
1081 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC2,elements_gt_48)1082   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC2, elements_gt_48) {
1083     TEST_REQUIRES_X86_AVX2;
1084     for (size_t elements = 49; elements < 96; elements++) {
1085       RAddStoreExpMinusMaxMicrokernelTester()
1086         .elements(elements)
1087         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1088     }
1089   }
1090 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1091 
1092 
1093 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC3,elements_eq_48)1094   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC3, elements_eq_48) {
1095     TEST_REQUIRES_X86_AVX2;
1096     RAddStoreExpMinusMaxMicrokernelTester()
1097       .elements(48)
1098       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1099   }
1100 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC3,elements_div_48)1101   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC3, elements_div_48) {
1102     TEST_REQUIRES_X86_AVX2;
1103     for (size_t elements = 96; elements < 480; elements += 48) {
1104       RAddStoreExpMinusMaxMicrokernelTester()
1105         .elements(elements)
1106         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1107     }
1108   }
1109 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC3,elements_lt_48)1110   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC3, elements_lt_48) {
1111     TEST_REQUIRES_X86_AVX2;
1112     for (size_t elements = 1; elements < 48; elements++) {
1113       RAddStoreExpMinusMaxMicrokernelTester()
1114         .elements(elements)
1115         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1116     }
1117   }
1118 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC3,elements_gt_48)1119   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X48_ACC3, elements_gt_48) {
1120     TEST_REQUIRES_X86_AVX2;
1121     for (size_t elements = 49; elements < 96; elements++) {
1122       RAddStoreExpMinusMaxMicrokernelTester()
1123         .elements(elements)
1124         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x48_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1125     }
1126   }
1127 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1128 
1129 
1130 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64,elements_eq_64)1131   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64, elements_eq_64) {
1132     TEST_REQUIRES_X86_AVX2;
1133     RAddStoreExpMinusMaxMicrokernelTester()
1134       .elements(64)
1135       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64, xnn_init_f16_expminus_avx2_rr1_p2_params);
1136   }
1137 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64,elements_div_64)1138   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64, elements_div_64) {
1139     TEST_REQUIRES_X86_AVX2;
1140     for (size_t elements = 128; elements < 640; elements += 64) {
1141       RAddStoreExpMinusMaxMicrokernelTester()
1142         .elements(elements)
1143         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64, xnn_init_f16_expminus_avx2_rr1_p2_params);
1144     }
1145   }
1146 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64,elements_lt_64)1147   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64, elements_lt_64) {
1148     TEST_REQUIRES_X86_AVX2;
1149     for (size_t elements = 1; elements < 64; elements++) {
1150       RAddStoreExpMinusMaxMicrokernelTester()
1151         .elements(elements)
1152         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64, xnn_init_f16_expminus_avx2_rr1_p2_params);
1153     }
1154   }
1155 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64,elements_gt_64)1156   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64, elements_gt_64) {
1157     TEST_REQUIRES_X86_AVX2;
1158     for (size_t elements = 65; elements < 128; elements++) {
1159       RAddStoreExpMinusMaxMicrokernelTester()
1160         .elements(elements)
1161         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64, xnn_init_f16_expminus_avx2_rr1_p2_params);
1162     }
1163   }
1164 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1165 
1166 
1167 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC2,elements_eq_64)1168   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC2, elements_eq_64) {
1169     TEST_REQUIRES_X86_AVX2;
1170     RAddStoreExpMinusMaxMicrokernelTester()
1171       .elements(64)
1172       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1173   }
1174 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC2,elements_div_64)1175   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC2, elements_div_64) {
1176     TEST_REQUIRES_X86_AVX2;
1177     for (size_t elements = 128; elements < 640; elements += 64) {
1178       RAddStoreExpMinusMaxMicrokernelTester()
1179         .elements(elements)
1180         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1181     }
1182   }
1183 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC2,elements_lt_64)1184   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC2, elements_lt_64) {
1185     TEST_REQUIRES_X86_AVX2;
1186     for (size_t elements = 1; elements < 64; elements++) {
1187       RAddStoreExpMinusMaxMicrokernelTester()
1188         .elements(elements)
1189         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1190     }
1191   }
1192 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC2,elements_gt_64)1193   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC2, elements_gt_64) {
1194     TEST_REQUIRES_X86_AVX2;
1195     for (size_t elements = 65; elements < 128; elements++) {
1196       RAddStoreExpMinusMaxMicrokernelTester()
1197         .elements(elements)
1198         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1199     }
1200   }
1201 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1202 
1203 
1204 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC4,elements_eq_64)1205   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC4, elements_eq_64) {
1206     TEST_REQUIRES_X86_AVX2;
1207     RAddStoreExpMinusMaxMicrokernelTester()
1208       .elements(64)
1209       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64_acc4, xnn_init_f16_expminus_avx2_rr1_p2_params);
1210   }
1211 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC4,elements_div_64)1212   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC4, elements_div_64) {
1213     TEST_REQUIRES_X86_AVX2;
1214     for (size_t elements = 128; elements < 640; elements += 64) {
1215       RAddStoreExpMinusMaxMicrokernelTester()
1216         .elements(elements)
1217         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64_acc4, xnn_init_f16_expminus_avx2_rr1_p2_params);
1218     }
1219   }
1220 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC4,elements_lt_64)1221   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC4, elements_lt_64) {
1222     TEST_REQUIRES_X86_AVX2;
1223     for (size_t elements = 1; elements < 64; elements++) {
1224       RAddStoreExpMinusMaxMicrokernelTester()
1225         .elements(elements)
1226         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64_acc4, xnn_init_f16_expminus_avx2_rr1_p2_params);
1227     }
1228   }
1229 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC4,elements_gt_64)1230   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X64_ACC4, elements_gt_64) {
1231     TEST_REQUIRES_X86_AVX2;
1232     for (size_t elements = 65; elements < 128; elements++) {
1233       RAddStoreExpMinusMaxMicrokernelTester()
1234         .elements(elements)
1235         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x64_acc4, xnn_init_f16_expminus_avx2_rr1_p2_params);
1236     }
1237   }
1238 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1239 
1240 
1241 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72,elements_eq_72)1242   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72, elements_eq_72) {
1243     TEST_REQUIRES_X86_AVX2;
1244     RAddStoreExpMinusMaxMicrokernelTester()
1245       .elements(72)
1246       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x72, xnn_init_f16_expminus_avx2_rr1_p2_params);
1247   }
1248 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72,elements_div_72)1249   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72, elements_div_72) {
1250     TEST_REQUIRES_X86_AVX2;
1251     for (size_t elements = 144; elements < 720; elements += 72) {
1252       RAddStoreExpMinusMaxMicrokernelTester()
1253         .elements(elements)
1254         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x72, xnn_init_f16_expminus_avx2_rr1_p2_params);
1255     }
1256   }
1257 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72,elements_lt_72)1258   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72, elements_lt_72) {
1259     TEST_REQUIRES_X86_AVX2;
1260     for (size_t elements = 1; elements < 72; elements++) {
1261       RAddStoreExpMinusMaxMicrokernelTester()
1262         .elements(elements)
1263         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x72, xnn_init_f16_expminus_avx2_rr1_p2_params);
1264     }
1265   }
1266 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72,elements_gt_72)1267   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72, elements_gt_72) {
1268     TEST_REQUIRES_X86_AVX2;
1269     for (size_t elements = 73; elements < 144; elements++) {
1270       RAddStoreExpMinusMaxMicrokernelTester()
1271         .elements(elements)
1272         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x72, xnn_init_f16_expminus_avx2_rr1_p2_params);
1273     }
1274   }
1275 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1276 
1277 
1278 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72_ACC3,elements_eq_72)1279   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72_ACC3, elements_eq_72) {
1280     TEST_REQUIRES_X86_AVX2;
1281     RAddStoreExpMinusMaxMicrokernelTester()
1282       .elements(72)
1283       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x72_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1284   }
1285 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72_ACC3,elements_div_72)1286   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72_ACC3, elements_div_72) {
1287     TEST_REQUIRES_X86_AVX2;
1288     for (size_t elements = 144; elements < 720; elements += 72) {
1289       RAddStoreExpMinusMaxMicrokernelTester()
1290         .elements(elements)
1291         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x72_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1292     }
1293   }
1294 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72_ACC3,elements_lt_72)1295   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72_ACC3, elements_lt_72) {
1296     TEST_REQUIRES_X86_AVX2;
1297     for (size_t elements = 1; elements < 72; elements++) {
1298       RAddStoreExpMinusMaxMicrokernelTester()
1299         .elements(elements)
1300         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x72_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1301     }
1302   }
1303 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72_ACC3,elements_gt_72)1304   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X72_ACC3, elements_gt_72) {
1305     TEST_REQUIRES_X86_AVX2;
1306     for (size_t elements = 73; elements < 144; elements++) {
1307       RAddStoreExpMinusMaxMicrokernelTester()
1308         .elements(elements)
1309         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x72_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1310     }
1311   }
1312 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1313 
1314 
1315 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80,elements_eq_80)1316   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80, elements_eq_80) {
1317     TEST_REQUIRES_X86_AVX2;
1318     RAddStoreExpMinusMaxMicrokernelTester()
1319       .elements(80)
1320       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80, xnn_init_f16_expminus_avx2_rr1_p2_params);
1321   }
1322 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80,elements_div_80)1323   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80, elements_div_80) {
1324     TEST_REQUIRES_X86_AVX2;
1325     for (size_t elements = 160; elements < 800; elements += 80) {
1326       RAddStoreExpMinusMaxMicrokernelTester()
1327         .elements(elements)
1328         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80, xnn_init_f16_expminus_avx2_rr1_p2_params);
1329     }
1330   }
1331 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80,elements_lt_80)1332   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80, elements_lt_80) {
1333     TEST_REQUIRES_X86_AVX2;
1334     for (size_t elements = 1; elements < 80; elements++) {
1335       RAddStoreExpMinusMaxMicrokernelTester()
1336         .elements(elements)
1337         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80, xnn_init_f16_expminus_avx2_rr1_p2_params);
1338     }
1339   }
1340 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80,elements_gt_80)1341   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80, elements_gt_80) {
1342     TEST_REQUIRES_X86_AVX2;
1343     for (size_t elements = 81; elements < 160; elements++) {
1344       RAddStoreExpMinusMaxMicrokernelTester()
1345         .elements(elements)
1346         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80, xnn_init_f16_expminus_avx2_rr1_p2_params);
1347     }
1348   }
1349 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1350 
1351 
1352 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC2,elements_eq_80)1353   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC2, elements_eq_80) {
1354     TEST_REQUIRES_X86_AVX2;
1355     RAddStoreExpMinusMaxMicrokernelTester()
1356       .elements(80)
1357       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1358   }
1359 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC2,elements_div_80)1360   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC2, elements_div_80) {
1361     TEST_REQUIRES_X86_AVX2;
1362     for (size_t elements = 160; elements < 800; elements += 80) {
1363       RAddStoreExpMinusMaxMicrokernelTester()
1364         .elements(elements)
1365         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1366     }
1367   }
1368 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC2,elements_lt_80)1369   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC2, elements_lt_80) {
1370     TEST_REQUIRES_X86_AVX2;
1371     for (size_t elements = 1; elements < 80; elements++) {
1372       RAddStoreExpMinusMaxMicrokernelTester()
1373         .elements(elements)
1374         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1375     }
1376   }
1377 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC2,elements_gt_80)1378   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC2, elements_gt_80) {
1379     TEST_REQUIRES_X86_AVX2;
1380     for (size_t elements = 81; elements < 160; elements++) {
1381       RAddStoreExpMinusMaxMicrokernelTester()
1382         .elements(elements)
1383         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1384     }
1385   }
1386 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1387 
1388 
1389 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC5,elements_eq_80)1390   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC5, elements_eq_80) {
1391     TEST_REQUIRES_X86_AVX2;
1392     RAddStoreExpMinusMaxMicrokernelTester()
1393       .elements(80)
1394       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80_acc5, xnn_init_f16_expminus_avx2_rr1_p2_params);
1395   }
1396 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC5,elements_div_80)1397   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC5, elements_div_80) {
1398     TEST_REQUIRES_X86_AVX2;
1399     for (size_t elements = 160; elements < 800; elements += 80) {
1400       RAddStoreExpMinusMaxMicrokernelTester()
1401         .elements(elements)
1402         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80_acc5, xnn_init_f16_expminus_avx2_rr1_p2_params);
1403     }
1404   }
1405 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC5,elements_lt_80)1406   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC5, elements_lt_80) {
1407     TEST_REQUIRES_X86_AVX2;
1408     for (size_t elements = 1; elements < 80; elements++) {
1409       RAddStoreExpMinusMaxMicrokernelTester()
1410         .elements(elements)
1411         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80_acc5, xnn_init_f16_expminus_avx2_rr1_p2_params);
1412     }
1413   }
1414 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC5,elements_gt_80)1415   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X80_ACC5, elements_gt_80) {
1416     TEST_REQUIRES_X86_AVX2;
1417     for (size_t elements = 81; elements < 160; elements++) {
1418       RAddStoreExpMinusMaxMicrokernelTester()
1419         .elements(elements)
1420         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x80_acc5, xnn_init_f16_expminus_avx2_rr1_p2_params);
1421     }
1422   }
1423 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1424 
1425 
1426 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96,elements_eq_96)1427   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96, elements_eq_96) {
1428     TEST_REQUIRES_X86_AVX2;
1429     RAddStoreExpMinusMaxMicrokernelTester()
1430       .elements(96)
1431       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96, xnn_init_f16_expminus_avx2_rr1_p2_params);
1432   }
1433 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96,elements_div_96)1434   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96, elements_div_96) {
1435     TEST_REQUIRES_X86_AVX2;
1436     for (size_t elements = 192; elements < 960; elements += 96) {
1437       RAddStoreExpMinusMaxMicrokernelTester()
1438         .elements(elements)
1439         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96, xnn_init_f16_expminus_avx2_rr1_p2_params);
1440     }
1441   }
1442 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96,elements_lt_96)1443   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96, elements_lt_96) {
1444     TEST_REQUIRES_X86_AVX2;
1445     for (size_t elements = 1; elements < 96; elements++) {
1446       RAddStoreExpMinusMaxMicrokernelTester()
1447         .elements(elements)
1448         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96, xnn_init_f16_expminus_avx2_rr1_p2_params);
1449     }
1450   }
1451 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96,elements_gt_96)1452   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96, elements_gt_96) {
1453     TEST_REQUIRES_X86_AVX2;
1454     for (size_t elements = 97; elements < 192; elements++) {
1455       RAddStoreExpMinusMaxMicrokernelTester()
1456         .elements(elements)
1457         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96, xnn_init_f16_expminus_avx2_rr1_p2_params);
1458     }
1459   }
1460 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1461 
1462 
1463 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC2,elements_eq_96)1464   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC2, elements_eq_96) {
1465     TEST_REQUIRES_X86_AVX2;
1466     RAddStoreExpMinusMaxMicrokernelTester()
1467       .elements(96)
1468       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1469   }
1470 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC2,elements_div_96)1471   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC2, elements_div_96) {
1472     TEST_REQUIRES_X86_AVX2;
1473     for (size_t elements = 192; elements < 960; elements += 96) {
1474       RAddStoreExpMinusMaxMicrokernelTester()
1475         .elements(elements)
1476         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1477     }
1478   }
1479 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC2,elements_lt_96)1480   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC2, elements_lt_96) {
1481     TEST_REQUIRES_X86_AVX2;
1482     for (size_t elements = 1; elements < 96; elements++) {
1483       RAddStoreExpMinusMaxMicrokernelTester()
1484         .elements(elements)
1485         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1486     }
1487   }
1488 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC2,elements_gt_96)1489   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC2, elements_gt_96) {
1490     TEST_REQUIRES_X86_AVX2;
1491     for (size_t elements = 97; elements < 192; elements++) {
1492       RAddStoreExpMinusMaxMicrokernelTester()
1493         .elements(elements)
1494         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc2, xnn_init_f16_expminus_avx2_rr1_p2_params);
1495     }
1496   }
1497 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1498 
1499 
1500 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC3,elements_eq_96)1501   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC3, elements_eq_96) {
1502     TEST_REQUIRES_X86_AVX2;
1503     RAddStoreExpMinusMaxMicrokernelTester()
1504       .elements(96)
1505       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1506   }
1507 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC3,elements_div_96)1508   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC3, elements_div_96) {
1509     TEST_REQUIRES_X86_AVX2;
1510     for (size_t elements = 192; elements < 960; elements += 96) {
1511       RAddStoreExpMinusMaxMicrokernelTester()
1512         .elements(elements)
1513         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1514     }
1515   }
1516 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC3,elements_lt_96)1517   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC3, elements_lt_96) {
1518     TEST_REQUIRES_X86_AVX2;
1519     for (size_t elements = 1; elements < 96; elements++) {
1520       RAddStoreExpMinusMaxMicrokernelTester()
1521         .elements(elements)
1522         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1523     }
1524   }
1525 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC3,elements_gt_96)1526   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC3, elements_gt_96) {
1527     TEST_REQUIRES_X86_AVX2;
1528     for (size_t elements = 97; elements < 192; elements++) {
1529       RAddStoreExpMinusMaxMicrokernelTester()
1530         .elements(elements)
1531         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc3, xnn_init_f16_expminus_avx2_rr1_p2_params);
1532     }
1533   }
1534 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1535 
1536 
1537 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC6,elements_eq_96)1538   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC6, elements_eq_96) {
1539     TEST_REQUIRES_X86_AVX2;
1540     RAddStoreExpMinusMaxMicrokernelTester()
1541       .elements(96)
1542       .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc6, xnn_init_f16_expminus_avx2_rr1_p2_params);
1543   }
1544 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC6,elements_div_96)1545   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC6, elements_div_96) {
1546     TEST_REQUIRES_X86_AVX2;
1547     for (size_t elements = 192; elements < 960; elements += 96) {
1548       RAddStoreExpMinusMaxMicrokernelTester()
1549         .elements(elements)
1550         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc6, xnn_init_f16_expminus_avx2_rr1_p2_params);
1551     }
1552   }
1553 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC6,elements_lt_96)1554   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC6, elements_lt_96) {
1555     TEST_REQUIRES_X86_AVX2;
1556     for (size_t elements = 1; elements < 96; elements++) {
1557       RAddStoreExpMinusMaxMicrokernelTester()
1558         .elements(elements)
1559         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc6, xnn_init_f16_expminus_avx2_rr1_p2_params);
1560     }
1561   }
1562 
TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC6,elements_gt_96)1563   TEST(F16_RADDSTOREEXPMINUSMAX__AVX2_RR1_P2_X96_ACC6, elements_gt_96) {
1564     TEST_REQUIRES_X86_AVX2;
1565     for (size_t elements = 97; elements < 192; elements++) {
1566       RAddStoreExpMinusMaxMicrokernelTester()
1567         .elements(elements)
1568         .Test(xnn_f16_raddstoreexpminusmax_ukernel__avx2_rr1_p2_x96_acc6, xnn_init_f16_expminus_avx2_rr1_p2_params);
1569     }
1570   }
1571 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1572