blob: 530bc59e42bcfdfe158b5c568b62df6360bb0752 [file] [log] [blame]
Marat Dukhan97579532019-10-18 16:40:39 -07001// Copyright 2019 Google LLC
2//
3// This source code is licensed under the BSD-style license found in the
4// LICENSE file in the root directory of this source tree.
Marat Dukhan4c4eb002019-12-08 21:27:49 -08005//
6// Auto-generated file. Do not edit!
7// Specification: test/f32-raddstoreexpminusmax.yaml
8// Generator: tools/generate-raddstoreexpminusmax-test.py
9
Marat Dukhan97579532019-10-18 16:40:39 -070010
11#include <gtest/gtest.h>
12
13#include <xnnpack/common.h>
14#include <xnnpack/isa-checks.h>
15
16#include <xnnpack/raddstoreexpminusmax.h>
17#include "raddstoreexpminusmax-microkernel-tester.h"
18
19
Marat Dukhan8137e4c2020-01-25 12:56:58 -080020#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -080021 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X4, elements_eq_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080022 TEST_REQUIRES_ARM_NEON;
23 RAddStoreExpMinusMaxMicrokernelTester()
24 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080025 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x4, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -080026 }
27
Marat Dukhan5999c922022-01-05 18:10:20 -080028 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X4, elements_div_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080029 TEST_REQUIRES_ARM_NEON;
30 for (size_t elements = 8; elements < 40; elements += 4) {
31 RAddStoreExpMinusMaxMicrokernelTester()
32 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080033 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x4, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -080034 }
35 }
36
Marat Dukhan5999c922022-01-05 18:10:20 -080037 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X4, elements_lt_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080038 TEST_REQUIRES_ARM_NEON;
39 for (size_t elements = 1; elements < 4; elements++) {
40 RAddStoreExpMinusMaxMicrokernelTester()
41 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080042 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x4, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -080043 }
44 }
45
Marat Dukhan5999c922022-01-05 18:10:20 -080046 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X4, elements_gt_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080047 TEST_REQUIRES_ARM_NEON;
48 for (size_t elements = 5; elements < 8; elements++) {
49 RAddStoreExpMinusMaxMicrokernelTester()
50 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080051 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x4, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -080052 }
53 }
54#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
55
56
57#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -080058 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X8, elements_eq_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080059 TEST_REQUIRES_ARM_NEON;
60 RAddStoreExpMinusMaxMicrokernelTester()
61 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080062 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x8, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -080063 }
64
Marat Dukhan5999c922022-01-05 18:10:20 -080065 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X8, elements_div_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080066 TEST_REQUIRES_ARM_NEON;
67 for (size_t elements = 16; elements < 80; elements += 8) {
68 RAddStoreExpMinusMaxMicrokernelTester()
69 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080070 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x8, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -080071 }
72 }
73
Marat Dukhan5999c922022-01-05 18:10:20 -080074 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X8, elements_lt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080075 TEST_REQUIRES_ARM_NEON;
76 for (size_t elements = 1; elements < 8; elements++) {
77 RAddStoreExpMinusMaxMicrokernelTester()
78 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080079 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x8, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -080080 }
81 }
82
Marat Dukhan5999c922022-01-05 18:10:20 -080083 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X8, elements_gt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080084 TEST_REQUIRES_ARM_NEON;
85 for (size_t elements = 9; elements < 16; elements++) {
86 RAddStoreExpMinusMaxMicrokernelTester()
87 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080088 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x8, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -080089 }
90 }
91#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
92
93
94#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -080095 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X8_ACC2, elements_eq_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -080096 TEST_REQUIRES_ARM_NEON;
97 RAddStoreExpMinusMaxMicrokernelTester()
98 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -080099 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x8_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800100 }
101
Marat Dukhan5999c922022-01-05 18:10:20 -0800102 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X8_ACC2, elements_div_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800103 TEST_REQUIRES_ARM_NEON;
104 for (size_t elements = 16; elements < 80; elements += 8) {
105 RAddStoreExpMinusMaxMicrokernelTester()
106 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800107 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x8_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800108 }
109 }
110
Marat Dukhan5999c922022-01-05 18:10:20 -0800111 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X8_ACC2, elements_lt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800112 TEST_REQUIRES_ARM_NEON;
113 for (size_t elements = 1; elements < 8; elements++) {
114 RAddStoreExpMinusMaxMicrokernelTester()
115 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800116 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x8_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800117 }
118 }
119
Marat Dukhan5999c922022-01-05 18:10:20 -0800120 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X8_ACC2, elements_gt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800121 TEST_REQUIRES_ARM_NEON;
122 for (size_t elements = 9; elements < 16; elements++) {
123 RAddStoreExpMinusMaxMicrokernelTester()
124 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800125 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x8_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800126 }
127 }
128#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
129
130
131#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800132 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800133 TEST_REQUIRES_ARM_NEON;
134 RAddStoreExpMinusMaxMicrokernelTester()
135 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800136 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800137 }
138
Marat Dukhan5999c922022-01-05 18:10:20 -0800139 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800140 TEST_REQUIRES_ARM_NEON;
141 for (size_t elements = 24; elements < 120; elements += 12) {
142 RAddStoreExpMinusMaxMicrokernelTester()
143 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800144 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800145 }
146 }
147
Marat Dukhan5999c922022-01-05 18:10:20 -0800148 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800149 TEST_REQUIRES_ARM_NEON;
150 for (size_t elements = 1; elements < 12; elements++) {
151 RAddStoreExpMinusMaxMicrokernelTester()
152 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800153 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800154 }
155 }
156
Marat Dukhan5999c922022-01-05 18:10:20 -0800157 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800158 TEST_REQUIRES_ARM_NEON;
159 for (size_t elements = 13; elements < 24; elements++) {
160 RAddStoreExpMinusMaxMicrokernelTester()
161 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800162 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800163 }
164 }
165#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
166
167
168#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800169 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12_ACC2, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800170 TEST_REQUIRES_ARM_NEON;
171 RAddStoreExpMinusMaxMicrokernelTester()
172 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800173 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800174 }
175
Marat Dukhan5999c922022-01-05 18:10:20 -0800176 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12_ACC2, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800177 TEST_REQUIRES_ARM_NEON;
178 for (size_t elements = 24; elements < 120; elements += 12) {
179 RAddStoreExpMinusMaxMicrokernelTester()
180 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800181 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800182 }
183 }
184
Marat Dukhan5999c922022-01-05 18:10:20 -0800185 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12_ACC2, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800186 TEST_REQUIRES_ARM_NEON;
187 for (size_t elements = 1; elements < 12; elements++) {
188 RAddStoreExpMinusMaxMicrokernelTester()
189 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800190 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800191 }
192 }
193
Marat Dukhan5999c922022-01-05 18:10:20 -0800194 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12_ACC2, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800195 TEST_REQUIRES_ARM_NEON;
196 for (size_t elements = 13; elements < 24; elements++) {
197 RAddStoreExpMinusMaxMicrokernelTester()
198 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800199 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800200 }
201 }
202#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
203
204
205#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800206 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12_ACC3, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800207 TEST_REQUIRES_ARM_NEON;
208 RAddStoreExpMinusMaxMicrokernelTester()
209 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800210 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12_acc3, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800211 }
212
Marat Dukhan5999c922022-01-05 18:10:20 -0800213 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12_ACC3, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800214 TEST_REQUIRES_ARM_NEON;
215 for (size_t elements = 24; elements < 120; elements += 12) {
216 RAddStoreExpMinusMaxMicrokernelTester()
217 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800218 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12_acc3, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800219 }
220 }
221
Marat Dukhan5999c922022-01-05 18:10:20 -0800222 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12_ACC3, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800223 TEST_REQUIRES_ARM_NEON;
224 for (size_t elements = 1; elements < 12; elements++) {
225 RAddStoreExpMinusMaxMicrokernelTester()
226 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800227 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12_acc3, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800228 }
229 }
230
Marat Dukhan5999c922022-01-05 18:10:20 -0800231 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X12_ACC3, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800232 TEST_REQUIRES_ARM_NEON;
233 for (size_t elements = 13; elements < 24; elements++) {
234 RAddStoreExpMinusMaxMicrokernelTester()
235 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800236 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x12_acc3, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800237 }
238 }
239#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
240
241
242#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800243 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800244 TEST_REQUIRES_ARM_NEON;
245 RAddStoreExpMinusMaxMicrokernelTester()
246 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800247 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800248 }
249
Marat Dukhan5999c922022-01-05 18:10:20 -0800250 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800251 TEST_REQUIRES_ARM_NEON;
252 for (size_t elements = 32; elements < 160; elements += 16) {
253 RAddStoreExpMinusMaxMicrokernelTester()
254 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800255 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800256 }
257 }
258
Marat Dukhan5999c922022-01-05 18:10:20 -0800259 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800260 TEST_REQUIRES_ARM_NEON;
261 for (size_t elements = 1; elements < 16; elements++) {
262 RAddStoreExpMinusMaxMicrokernelTester()
263 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800264 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800265 }
266 }
267
Marat Dukhan5999c922022-01-05 18:10:20 -0800268 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800269 TEST_REQUIRES_ARM_NEON;
270 for (size_t elements = 17; elements < 32; elements++) {
271 RAddStoreExpMinusMaxMicrokernelTester()
272 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800273 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800274 }
275 }
276#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
277
278
279#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800280 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16_ACC2, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800281 TEST_REQUIRES_ARM_NEON;
282 RAddStoreExpMinusMaxMicrokernelTester()
283 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800284 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800285 }
286
Marat Dukhan5999c922022-01-05 18:10:20 -0800287 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16_ACC2, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800288 TEST_REQUIRES_ARM_NEON;
289 for (size_t elements = 32; elements < 160; elements += 16) {
290 RAddStoreExpMinusMaxMicrokernelTester()
291 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800292 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800293 }
294 }
295
Marat Dukhan5999c922022-01-05 18:10:20 -0800296 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16_ACC2, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800297 TEST_REQUIRES_ARM_NEON;
298 for (size_t elements = 1; elements < 16; elements++) {
299 RAddStoreExpMinusMaxMicrokernelTester()
300 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800301 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800302 }
303 }
304
Marat Dukhan5999c922022-01-05 18:10:20 -0800305 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16_ACC2, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800306 TEST_REQUIRES_ARM_NEON;
307 for (size_t elements = 17; elements < 32; elements++) {
308 RAddStoreExpMinusMaxMicrokernelTester()
309 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800310 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800311 }
312 }
313#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
314
315
316#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800317 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16_ACC4, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800318 TEST_REQUIRES_ARM_NEON;
319 RAddStoreExpMinusMaxMicrokernelTester()
320 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800321 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16_acc4, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800322 }
323
Marat Dukhan5999c922022-01-05 18:10:20 -0800324 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16_ACC4, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800325 TEST_REQUIRES_ARM_NEON;
326 for (size_t elements = 32; elements < 160; elements += 16) {
327 RAddStoreExpMinusMaxMicrokernelTester()
328 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800329 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16_acc4, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800330 }
331 }
332
Marat Dukhan5999c922022-01-05 18:10:20 -0800333 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16_ACC4, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800334 TEST_REQUIRES_ARM_NEON;
335 for (size_t elements = 1; elements < 16; elements++) {
336 RAddStoreExpMinusMaxMicrokernelTester()
337 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800338 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16_acc4, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800339 }
340 }
341
Marat Dukhan5999c922022-01-05 18:10:20 -0800342 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X16_ACC4, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800343 TEST_REQUIRES_ARM_NEON;
344 for (size_t elements = 17; elements < 32; elements++) {
345 RAddStoreExpMinusMaxMicrokernelTester()
346 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800347 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x16_acc4, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800348 }
349 }
350#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
351
352
353#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800354 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800355 TEST_REQUIRES_ARM_NEON;
356 RAddStoreExpMinusMaxMicrokernelTester()
357 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800358 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800359 }
360
Marat Dukhan5999c922022-01-05 18:10:20 -0800361 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800362 TEST_REQUIRES_ARM_NEON;
363 for (size_t elements = 40; elements < 200; elements += 20) {
364 RAddStoreExpMinusMaxMicrokernelTester()
365 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800366 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800367 }
368 }
369
Marat Dukhan5999c922022-01-05 18:10:20 -0800370 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800371 TEST_REQUIRES_ARM_NEON;
372 for (size_t elements = 1; elements < 20; elements++) {
373 RAddStoreExpMinusMaxMicrokernelTester()
374 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800375 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800376 }
377 }
378
Marat Dukhan5999c922022-01-05 18:10:20 -0800379 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800380 TEST_REQUIRES_ARM_NEON;
381 for (size_t elements = 21; elements < 40; elements++) {
382 RAddStoreExpMinusMaxMicrokernelTester()
383 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800384 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800385 }
386 }
387#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
388
389
390#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800391 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20_ACC2, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800392 TEST_REQUIRES_ARM_NEON;
393 RAddStoreExpMinusMaxMicrokernelTester()
394 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800395 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800396 }
397
Marat Dukhan5999c922022-01-05 18:10:20 -0800398 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20_ACC2, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800399 TEST_REQUIRES_ARM_NEON;
400 for (size_t elements = 40; elements < 200; elements += 20) {
401 RAddStoreExpMinusMaxMicrokernelTester()
402 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800403 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800404 }
405 }
406
Marat Dukhan5999c922022-01-05 18:10:20 -0800407 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20_ACC2, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800408 TEST_REQUIRES_ARM_NEON;
409 for (size_t elements = 1; elements < 20; elements++) {
410 RAddStoreExpMinusMaxMicrokernelTester()
411 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800412 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800413 }
414 }
415
Marat Dukhan5999c922022-01-05 18:10:20 -0800416 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20_ACC2, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800417 TEST_REQUIRES_ARM_NEON;
418 for (size_t elements = 21; elements < 40; elements++) {
419 RAddStoreExpMinusMaxMicrokernelTester()
420 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800421 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20_acc2, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800422 }
423 }
424#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
425
426
427#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800428 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20_ACC5, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800429 TEST_REQUIRES_ARM_NEON;
430 RAddStoreExpMinusMaxMicrokernelTester()
431 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800432 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20_acc5, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800433 }
434
Marat Dukhan5999c922022-01-05 18:10:20 -0800435 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20_ACC5, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800436 TEST_REQUIRES_ARM_NEON;
437 for (size_t elements = 40; elements < 200; elements += 20) {
438 RAddStoreExpMinusMaxMicrokernelTester()
439 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800440 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20_acc5, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800441 }
442 }
443
Marat Dukhan5999c922022-01-05 18:10:20 -0800444 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20_ACC5, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800445 TEST_REQUIRES_ARM_NEON;
446 for (size_t elements = 1; elements < 20; elements++) {
447 RAddStoreExpMinusMaxMicrokernelTester()
448 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800449 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20_acc5, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800450 }
451 }
452
Marat Dukhan5999c922022-01-05 18:10:20 -0800453 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_P5_X20_ACC5, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800454 TEST_REQUIRES_ARM_NEON;
455 for (size_t elements = 21; elements < 40; elements++) {
456 RAddStoreExpMinusMaxMicrokernelTester()
457 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800458 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_p5_x20_acc5, xnn_init_f32_expminus_neon_rr2_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800459 }
460 }
461#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
462
463
464#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800465 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X4, elements_eq_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800466 TEST_REQUIRES_ARM_NEON;
467 RAddStoreExpMinusMaxMicrokernelTester()
468 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800469 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x4, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800470 }
471
Marat Dukhan5999c922022-01-05 18:10:20 -0800472 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X4, elements_div_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800473 TEST_REQUIRES_ARM_NEON;
474 for (size_t elements = 8; elements < 40; elements += 4) {
475 RAddStoreExpMinusMaxMicrokernelTester()
476 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800477 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x4, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800478 }
479 }
480
Marat Dukhan5999c922022-01-05 18:10:20 -0800481 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X4, elements_lt_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800482 TEST_REQUIRES_ARM_NEON;
483 for (size_t elements = 1; elements < 4; elements++) {
484 RAddStoreExpMinusMaxMicrokernelTester()
485 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800486 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x4, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800487 }
488 }
489
Marat Dukhan5999c922022-01-05 18:10:20 -0800490 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X4, elements_gt_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800491 TEST_REQUIRES_ARM_NEON;
492 for (size_t elements = 5; elements < 8; elements++) {
493 RAddStoreExpMinusMaxMicrokernelTester()
494 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800495 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x4, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800496 }
497 }
498#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
499
500
501#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800502 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X8, elements_eq_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800503 TEST_REQUIRES_ARM_NEON;
504 RAddStoreExpMinusMaxMicrokernelTester()
505 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800506 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x8, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800507 }
508
Marat Dukhan5999c922022-01-05 18:10:20 -0800509 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X8, elements_div_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800510 TEST_REQUIRES_ARM_NEON;
511 for (size_t elements = 16; elements < 80; elements += 8) {
512 RAddStoreExpMinusMaxMicrokernelTester()
513 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800514 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x8, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800515 }
516 }
517
Marat Dukhan5999c922022-01-05 18:10:20 -0800518 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X8, elements_lt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800519 TEST_REQUIRES_ARM_NEON;
520 for (size_t elements = 1; elements < 8; elements++) {
521 RAddStoreExpMinusMaxMicrokernelTester()
522 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800523 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x8, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800524 }
525 }
526
Marat Dukhan5999c922022-01-05 18:10:20 -0800527 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X8, elements_gt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800528 TEST_REQUIRES_ARM_NEON;
529 for (size_t elements = 9; elements < 16; elements++) {
530 RAddStoreExpMinusMaxMicrokernelTester()
531 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800532 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x8, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800533 }
534 }
535#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
536
537
538#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800539 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X8_ACC2, elements_eq_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800540 TEST_REQUIRES_ARM_NEON;
541 RAddStoreExpMinusMaxMicrokernelTester()
542 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800543 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x8_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800544 }
545
Marat Dukhan5999c922022-01-05 18:10:20 -0800546 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X8_ACC2, elements_div_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800547 TEST_REQUIRES_ARM_NEON;
548 for (size_t elements = 16; elements < 80; elements += 8) {
549 RAddStoreExpMinusMaxMicrokernelTester()
550 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800551 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x8_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800552 }
553 }
554
Marat Dukhan5999c922022-01-05 18:10:20 -0800555 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X8_ACC2, elements_lt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800556 TEST_REQUIRES_ARM_NEON;
557 for (size_t elements = 1; elements < 8; elements++) {
558 RAddStoreExpMinusMaxMicrokernelTester()
559 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800560 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x8_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800561 }
562 }
563
Marat Dukhan5999c922022-01-05 18:10:20 -0800564 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X8_ACC2, elements_gt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800565 TEST_REQUIRES_ARM_NEON;
566 for (size_t elements = 9; elements < 16; elements++) {
567 RAddStoreExpMinusMaxMicrokernelTester()
568 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800569 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x8_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800570 }
571 }
572#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
573
574
575#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800576 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800577 TEST_REQUIRES_ARM_NEON;
578 RAddStoreExpMinusMaxMicrokernelTester()
579 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800580 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800581 }
582
Marat Dukhan5999c922022-01-05 18:10:20 -0800583 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800584 TEST_REQUIRES_ARM_NEON;
585 for (size_t elements = 24; elements < 120; elements += 12) {
586 RAddStoreExpMinusMaxMicrokernelTester()
587 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800588 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800589 }
590 }
591
Marat Dukhan5999c922022-01-05 18:10:20 -0800592 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800593 TEST_REQUIRES_ARM_NEON;
594 for (size_t elements = 1; elements < 12; elements++) {
595 RAddStoreExpMinusMaxMicrokernelTester()
596 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800597 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800598 }
599 }
600
Marat Dukhan5999c922022-01-05 18:10:20 -0800601 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800602 TEST_REQUIRES_ARM_NEON;
603 for (size_t elements = 13; elements < 24; elements++) {
604 RAddStoreExpMinusMaxMicrokernelTester()
605 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800606 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800607 }
608 }
609#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
610
611
612#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800613 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12_ACC2, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800614 TEST_REQUIRES_ARM_NEON;
615 RAddStoreExpMinusMaxMicrokernelTester()
616 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800617 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800618 }
619
Marat Dukhan5999c922022-01-05 18:10:20 -0800620 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12_ACC2, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800621 TEST_REQUIRES_ARM_NEON;
622 for (size_t elements = 24; elements < 120; elements += 12) {
623 RAddStoreExpMinusMaxMicrokernelTester()
624 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800625 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800626 }
627 }
628
Marat Dukhan5999c922022-01-05 18:10:20 -0800629 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12_ACC2, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800630 TEST_REQUIRES_ARM_NEON;
631 for (size_t elements = 1; elements < 12; elements++) {
632 RAddStoreExpMinusMaxMicrokernelTester()
633 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800634 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800635 }
636 }
637
Marat Dukhan5999c922022-01-05 18:10:20 -0800638 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12_ACC2, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800639 TEST_REQUIRES_ARM_NEON;
640 for (size_t elements = 13; elements < 24; elements++) {
641 RAddStoreExpMinusMaxMicrokernelTester()
642 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800643 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800644 }
645 }
646#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
647
648
649#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800650 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12_ACC3, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800651 TEST_REQUIRES_ARM_NEON;
652 RAddStoreExpMinusMaxMicrokernelTester()
653 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800654 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12_acc3, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800655 }
656
Marat Dukhan5999c922022-01-05 18:10:20 -0800657 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12_ACC3, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800658 TEST_REQUIRES_ARM_NEON;
659 for (size_t elements = 24; elements < 120; elements += 12) {
660 RAddStoreExpMinusMaxMicrokernelTester()
661 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800662 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12_acc3, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800663 }
664 }
665
Marat Dukhan5999c922022-01-05 18:10:20 -0800666 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12_ACC3, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800667 TEST_REQUIRES_ARM_NEON;
668 for (size_t elements = 1; elements < 12; elements++) {
669 RAddStoreExpMinusMaxMicrokernelTester()
670 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800671 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12_acc3, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800672 }
673 }
674
Marat Dukhan5999c922022-01-05 18:10:20 -0800675 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X12_ACC3, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800676 TEST_REQUIRES_ARM_NEON;
677 for (size_t elements = 13; elements < 24; elements++) {
678 RAddStoreExpMinusMaxMicrokernelTester()
679 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800680 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x12_acc3, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800681 }
682 }
683#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
684
685
686#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800687 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800688 TEST_REQUIRES_ARM_NEON;
689 RAddStoreExpMinusMaxMicrokernelTester()
690 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800691 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800692 }
693
Marat Dukhan5999c922022-01-05 18:10:20 -0800694 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800695 TEST_REQUIRES_ARM_NEON;
696 for (size_t elements = 32; elements < 160; elements += 16) {
697 RAddStoreExpMinusMaxMicrokernelTester()
698 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800699 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800700 }
701 }
702
Marat Dukhan5999c922022-01-05 18:10:20 -0800703 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800704 TEST_REQUIRES_ARM_NEON;
705 for (size_t elements = 1; elements < 16; elements++) {
706 RAddStoreExpMinusMaxMicrokernelTester()
707 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800708 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800709 }
710 }
711
Marat Dukhan5999c922022-01-05 18:10:20 -0800712 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800713 TEST_REQUIRES_ARM_NEON;
714 for (size_t elements = 17; elements < 32; elements++) {
715 RAddStoreExpMinusMaxMicrokernelTester()
716 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800717 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800718 }
719 }
720#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
721
722
723#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800724 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16_ACC2, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800725 TEST_REQUIRES_ARM_NEON;
726 RAddStoreExpMinusMaxMicrokernelTester()
727 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800728 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800729 }
730
Marat Dukhan5999c922022-01-05 18:10:20 -0800731 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16_ACC2, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800732 TEST_REQUIRES_ARM_NEON;
733 for (size_t elements = 32; elements < 160; elements += 16) {
734 RAddStoreExpMinusMaxMicrokernelTester()
735 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800736 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800737 }
738 }
739
Marat Dukhan5999c922022-01-05 18:10:20 -0800740 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16_ACC2, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800741 TEST_REQUIRES_ARM_NEON;
742 for (size_t elements = 1; elements < 16; elements++) {
743 RAddStoreExpMinusMaxMicrokernelTester()
744 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800745 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800746 }
747 }
748
Marat Dukhan5999c922022-01-05 18:10:20 -0800749 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16_ACC2, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800750 TEST_REQUIRES_ARM_NEON;
751 for (size_t elements = 17; elements < 32; elements++) {
752 RAddStoreExpMinusMaxMicrokernelTester()
753 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800754 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800755 }
756 }
757#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
758
759
760#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800761 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16_ACC4, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800762 TEST_REQUIRES_ARM_NEON;
763 RAddStoreExpMinusMaxMicrokernelTester()
764 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800765 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16_acc4, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800766 }
767
Marat Dukhan5999c922022-01-05 18:10:20 -0800768 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16_ACC4, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800769 TEST_REQUIRES_ARM_NEON;
770 for (size_t elements = 32; elements < 160; elements += 16) {
771 RAddStoreExpMinusMaxMicrokernelTester()
772 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800773 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16_acc4, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800774 }
775 }
776
Marat Dukhan5999c922022-01-05 18:10:20 -0800777 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16_ACC4, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800778 TEST_REQUIRES_ARM_NEON;
779 for (size_t elements = 1; elements < 16; elements++) {
780 RAddStoreExpMinusMaxMicrokernelTester()
781 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800782 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16_acc4, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800783 }
784 }
785
Marat Dukhan5999c922022-01-05 18:10:20 -0800786 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X16_ACC4, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800787 TEST_REQUIRES_ARM_NEON;
788 for (size_t elements = 17; elements < 32; elements++) {
789 RAddStoreExpMinusMaxMicrokernelTester()
790 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800791 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x16_acc4, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800792 }
793 }
794#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
795
796
797#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800798 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800799 TEST_REQUIRES_ARM_NEON;
800 RAddStoreExpMinusMaxMicrokernelTester()
801 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800802 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800803 }
804
Marat Dukhan5999c922022-01-05 18:10:20 -0800805 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800806 TEST_REQUIRES_ARM_NEON;
807 for (size_t elements = 40; elements < 200; elements += 20) {
808 RAddStoreExpMinusMaxMicrokernelTester()
809 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800810 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800811 }
812 }
813
Marat Dukhan5999c922022-01-05 18:10:20 -0800814 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800815 TEST_REQUIRES_ARM_NEON;
816 for (size_t elements = 1; elements < 20; elements++) {
817 RAddStoreExpMinusMaxMicrokernelTester()
818 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800819 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800820 }
821 }
822
Marat Dukhan5999c922022-01-05 18:10:20 -0800823 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800824 TEST_REQUIRES_ARM_NEON;
825 for (size_t elements = 21; elements < 40; elements++) {
826 RAddStoreExpMinusMaxMicrokernelTester()
827 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800828 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800829 }
830 }
831#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
832
833
834#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800835 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20_ACC2, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800836 TEST_REQUIRES_ARM_NEON;
837 RAddStoreExpMinusMaxMicrokernelTester()
838 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800839 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800840 }
841
Marat Dukhan5999c922022-01-05 18:10:20 -0800842 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20_ACC2, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800843 TEST_REQUIRES_ARM_NEON;
844 for (size_t elements = 40; elements < 200; elements += 20) {
845 RAddStoreExpMinusMaxMicrokernelTester()
846 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800847 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800848 }
849 }
850
Marat Dukhan5999c922022-01-05 18:10:20 -0800851 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20_ACC2, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800852 TEST_REQUIRES_ARM_NEON;
853 for (size_t elements = 1; elements < 20; elements++) {
854 RAddStoreExpMinusMaxMicrokernelTester()
855 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800856 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800857 }
858 }
859
Marat Dukhan5999c922022-01-05 18:10:20 -0800860 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20_ACC2, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800861 TEST_REQUIRES_ARM_NEON;
862 for (size_t elements = 21; elements < 40; elements++) {
863 RAddStoreExpMinusMaxMicrokernelTester()
864 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800865 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20_acc2, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800866 }
867 }
868#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
869
870
871#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800872 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20_ACC5, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800873 TEST_REQUIRES_ARM_NEON;
874 RAddStoreExpMinusMaxMicrokernelTester()
875 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800876 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20_acc5, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800877 }
878
Marat Dukhan5999c922022-01-05 18:10:20 -0800879 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20_ACC5, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800880 TEST_REQUIRES_ARM_NEON;
881 for (size_t elements = 40; elements < 200; elements += 20) {
882 RAddStoreExpMinusMaxMicrokernelTester()
883 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800884 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20_acc5, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800885 }
886 }
887
Marat Dukhan5999c922022-01-05 18:10:20 -0800888 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20_ACC5, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800889 TEST_REQUIRES_ARM_NEON;
890 for (size_t elements = 1; elements < 20; elements++) {
891 RAddStoreExpMinusMaxMicrokernelTester()
892 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800893 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20_acc5, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800894 }
895 }
896
Marat Dukhan5999c922022-01-05 18:10:20 -0800897 TEST(F32_RADDSTOREEXPMINUSMAX__NEON_RR2_LUT64_P2_X20_ACC5, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800898 TEST_REQUIRES_ARM_NEON;
899 for (size_t elements = 21; elements < 40; elements++) {
900 RAddStoreExpMinusMaxMicrokernelTester()
901 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800902 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neon_rr2_lut64_p2_x20_acc5, xnn_init_f32_expminus_neon_rr2_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800903 }
904 }
905#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
906
907
908#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800909 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X4, elements_eq_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800910 TEST_REQUIRES_ARM_NEON_FMA;
911 RAddStoreExpMinusMaxMicrokernelTester()
912 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800913 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x4, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800914 }
915
Marat Dukhan5999c922022-01-05 18:10:20 -0800916 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X4, elements_div_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800917 TEST_REQUIRES_ARM_NEON_FMA;
918 for (size_t elements = 8; elements < 40; elements += 4) {
919 RAddStoreExpMinusMaxMicrokernelTester()
920 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800921 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x4, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800922 }
923 }
924
Marat Dukhan5999c922022-01-05 18:10:20 -0800925 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X4, elements_lt_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800926 TEST_REQUIRES_ARM_NEON_FMA;
927 for (size_t elements = 1; elements < 4; elements++) {
928 RAddStoreExpMinusMaxMicrokernelTester()
929 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800930 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x4, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800931 }
932 }
933
Marat Dukhan5999c922022-01-05 18:10:20 -0800934 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X4, elements_gt_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800935 TEST_REQUIRES_ARM_NEON_FMA;
936 for (size_t elements = 5; elements < 8; elements++) {
937 RAddStoreExpMinusMaxMicrokernelTester()
938 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800939 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x4, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800940 }
941 }
942#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
943
944
945#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800946 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X8, elements_eq_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800947 TEST_REQUIRES_ARM_NEON_FMA;
948 RAddStoreExpMinusMaxMicrokernelTester()
949 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800950 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x8, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800951 }
952
Marat Dukhan5999c922022-01-05 18:10:20 -0800953 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X8, elements_div_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800954 TEST_REQUIRES_ARM_NEON_FMA;
955 for (size_t elements = 16; elements < 80; elements += 8) {
956 RAddStoreExpMinusMaxMicrokernelTester()
957 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800958 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x8, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800959 }
960 }
961
Marat Dukhan5999c922022-01-05 18:10:20 -0800962 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X8, elements_lt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800963 TEST_REQUIRES_ARM_NEON_FMA;
964 for (size_t elements = 1; elements < 8; elements++) {
965 RAddStoreExpMinusMaxMicrokernelTester()
966 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800967 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x8, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800968 }
969 }
970
Marat Dukhan5999c922022-01-05 18:10:20 -0800971 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X8, elements_gt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800972 TEST_REQUIRES_ARM_NEON_FMA;
973 for (size_t elements = 9; elements < 16; elements++) {
974 RAddStoreExpMinusMaxMicrokernelTester()
975 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800976 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x8, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800977 }
978 }
979#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
980
981
982#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -0800983 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X8_ACC2, elements_eq_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800984 TEST_REQUIRES_ARM_NEON_FMA;
985 RAddStoreExpMinusMaxMicrokernelTester()
986 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800987 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x8_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800988 }
989
Marat Dukhan5999c922022-01-05 18:10:20 -0800990 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X8_ACC2, elements_div_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800991 TEST_REQUIRES_ARM_NEON_FMA;
992 for (size_t elements = 16; elements < 80; elements += 8) {
993 RAddStoreExpMinusMaxMicrokernelTester()
994 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -0800995 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x8_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800996 }
997 }
998
Marat Dukhan5999c922022-01-05 18:10:20 -0800999 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X8_ACC2, elements_lt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001000 TEST_REQUIRES_ARM_NEON_FMA;
1001 for (size_t elements = 1; elements < 8; elements++) {
1002 RAddStoreExpMinusMaxMicrokernelTester()
1003 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001004 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x8_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001005 }
1006 }
1007
Marat Dukhan5999c922022-01-05 18:10:20 -08001008 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X8_ACC2, elements_gt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001009 TEST_REQUIRES_ARM_NEON_FMA;
1010 for (size_t elements = 9; elements < 16; elements++) {
1011 RAddStoreExpMinusMaxMicrokernelTester()
1012 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001013 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x8_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001014 }
1015 }
1016#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1017
1018
1019#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001020 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001021 TEST_REQUIRES_ARM_NEON_FMA;
1022 RAddStoreExpMinusMaxMicrokernelTester()
1023 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001024 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001025 }
1026
Marat Dukhan5999c922022-01-05 18:10:20 -08001027 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001028 TEST_REQUIRES_ARM_NEON_FMA;
1029 for (size_t elements = 24; elements < 120; elements += 12) {
1030 RAddStoreExpMinusMaxMicrokernelTester()
1031 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001032 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001033 }
1034 }
1035
Marat Dukhan5999c922022-01-05 18:10:20 -08001036 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001037 TEST_REQUIRES_ARM_NEON_FMA;
1038 for (size_t elements = 1; elements < 12; elements++) {
1039 RAddStoreExpMinusMaxMicrokernelTester()
1040 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001041 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001042 }
1043 }
1044
Marat Dukhan5999c922022-01-05 18:10:20 -08001045 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001046 TEST_REQUIRES_ARM_NEON_FMA;
1047 for (size_t elements = 13; elements < 24; elements++) {
1048 RAddStoreExpMinusMaxMicrokernelTester()
1049 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001050 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001051 }
1052 }
1053#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1054
1055
1056#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001057 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12_ACC2, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001058 TEST_REQUIRES_ARM_NEON_FMA;
1059 RAddStoreExpMinusMaxMicrokernelTester()
1060 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001061 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001062 }
1063
Marat Dukhan5999c922022-01-05 18:10:20 -08001064 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12_ACC2, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001065 TEST_REQUIRES_ARM_NEON_FMA;
1066 for (size_t elements = 24; elements < 120; elements += 12) {
1067 RAddStoreExpMinusMaxMicrokernelTester()
1068 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001069 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001070 }
1071 }
1072
Marat Dukhan5999c922022-01-05 18:10:20 -08001073 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12_ACC2, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001074 TEST_REQUIRES_ARM_NEON_FMA;
1075 for (size_t elements = 1; elements < 12; elements++) {
1076 RAddStoreExpMinusMaxMicrokernelTester()
1077 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001078 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001079 }
1080 }
1081
Marat Dukhan5999c922022-01-05 18:10:20 -08001082 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12_ACC2, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001083 TEST_REQUIRES_ARM_NEON_FMA;
1084 for (size_t elements = 13; elements < 24; elements++) {
1085 RAddStoreExpMinusMaxMicrokernelTester()
1086 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001087 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001088 }
1089 }
1090#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1091
1092
1093#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001094 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12_ACC3, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001095 TEST_REQUIRES_ARM_NEON_FMA;
1096 RAddStoreExpMinusMaxMicrokernelTester()
1097 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001098 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12_acc3, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001099 }
1100
Marat Dukhan5999c922022-01-05 18:10:20 -08001101 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12_ACC3, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001102 TEST_REQUIRES_ARM_NEON_FMA;
1103 for (size_t elements = 24; elements < 120; elements += 12) {
1104 RAddStoreExpMinusMaxMicrokernelTester()
1105 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001106 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12_acc3, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001107 }
1108 }
1109
Marat Dukhan5999c922022-01-05 18:10:20 -08001110 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12_ACC3, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001111 TEST_REQUIRES_ARM_NEON_FMA;
1112 for (size_t elements = 1; elements < 12; elements++) {
1113 RAddStoreExpMinusMaxMicrokernelTester()
1114 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001115 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12_acc3, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001116 }
1117 }
1118
Marat Dukhan5999c922022-01-05 18:10:20 -08001119 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X12_ACC3, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001120 TEST_REQUIRES_ARM_NEON_FMA;
1121 for (size_t elements = 13; elements < 24; elements++) {
1122 RAddStoreExpMinusMaxMicrokernelTester()
1123 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001124 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x12_acc3, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001125 }
1126 }
1127#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1128
1129
1130#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001131 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001132 TEST_REQUIRES_ARM_NEON_FMA;
1133 RAddStoreExpMinusMaxMicrokernelTester()
1134 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001135 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001136 }
1137
Marat Dukhan5999c922022-01-05 18:10:20 -08001138 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001139 TEST_REQUIRES_ARM_NEON_FMA;
1140 for (size_t elements = 32; elements < 160; elements += 16) {
1141 RAddStoreExpMinusMaxMicrokernelTester()
1142 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001143 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001144 }
1145 }
1146
Marat Dukhan5999c922022-01-05 18:10:20 -08001147 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001148 TEST_REQUIRES_ARM_NEON_FMA;
1149 for (size_t elements = 1; elements < 16; elements++) {
1150 RAddStoreExpMinusMaxMicrokernelTester()
1151 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001152 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001153 }
1154 }
1155
Marat Dukhan5999c922022-01-05 18:10:20 -08001156 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001157 TEST_REQUIRES_ARM_NEON_FMA;
1158 for (size_t elements = 17; elements < 32; elements++) {
1159 RAddStoreExpMinusMaxMicrokernelTester()
1160 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001161 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001162 }
1163 }
1164#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1165
1166
1167#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001168 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16_ACC2, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001169 TEST_REQUIRES_ARM_NEON_FMA;
1170 RAddStoreExpMinusMaxMicrokernelTester()
1171 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001172 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001173 }
1174
Marat Dukhan5999c922022-01-05 18:10:20 -08001175 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16_ACC2, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001176 TEST_REQUIRES_ARM_NEON_FMA;
1177 for (size_t elements = 32; elements < 160; elements += 16) {
1178 RAddStoreExpMinusMaxMicrokernelTester()
1179 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001180 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001181 }
1182 }
1183
Marat Dukhan5999c922022-01-05 18:10:20 -08001184 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16_ACC2, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001185 TEST_REQUIRES_ARM_NEON_FMA;
1186 for (size_t elements = 1; elements < 16; elements++) {
1187 RAddStoreExpMinusMaxMicrokernelTester()
1188 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001189 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001190 }
1191 }
1192
Marat Dukhan5999c922022-01-05 18:10:20 -08001193 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16_ACC2, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001194 TEST_REQUIRES_ARM_NEON_FMA;
1195 for (size_t elements = 17; elements < 32; elements++) {
1196 RAddStoreExpMinusMaxMicrokernelTester()
1197 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001198 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001199 }
1200 }
1201#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1202
1203
1204#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001205 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16_ACC4, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001206 TEST_REQUIRES_ARM_NEON_FMA;
1207 RAddStoreExpMinusMaxMicrokernelTester()
1208 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001209 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16_acc4, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001210 }
1211
Marat Dukhan5999c922022-01-05 18:10:20 -08001212 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16_ACC4, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001213 TEST_REQUIRES_ARM_NEON_FMA;
1214 for (size_t elements = 32; elements < 160; elements += 16) {
1215 RAddStoreExpMinusMaxMicrokernelTester()
1216 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001217 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16_acc4, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001218 }
1219 }
1220
Marat Dukhan5999c922022-01-05 18:10:20 -08001221 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16_ACC4, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001222 TEST_REQUIRES_ARM_NEON_FMA;
1223 for (size_t elements = 1; elements < 16; elements++) {
1224 RAddStoreExpMinusMaxMicrokernelTester()
1225 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001226 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16_acc4, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001227 }
1228 }
1229
Marat Dukhan5999c922022-01-05 18:10:20 -08001230 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X16_ACC4, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001231 TEST_REQUIRES_ARM_NEON_FMA;
1232 for (size_t elements = 17; elements < 32; elements++) {
1233 RAddStoreExpMinusMaxMicrokernelTester()
1234 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001235 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x16_acc4, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001236 }
1237 }
1238#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1239
1240
1241#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001242 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001243 TEST_REQUIRES_ARM_NEON_FMA;
1244 RAddStoreExpMinusMaxMicrokernelTester()
1245 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001246 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001247 }
1248
Marat Dukhan5999c922022-01-05 18:10:20 -08001249 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001250 TEST_REQUIRES_ARM_NEON_FMA;
1251 for (size_t elements = 40; elements < 200; elements += 20) {
1252 RAddStoreExpMinusMaxMicrokernelTester()
1253 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001254 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001255 }
1256 }
1257
Marat Dukhan5999c922022-01-05 18:10:20 -08001258 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001259 TEST_REQUIRES_ARM_NEON_FMA;
1260 for (size_t elements = 1; elements < 20; elements++) {
1261 RAddStoreExpMinusMaxMicrokernelTester()
1262 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001263 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001264 }
1265 }
1266
Marat Dukhan5999c922022-01-05 18:10:20 -08001267 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001268 TEST_REQUIRES_ARM_NEON_FMA;
1269 for (size_t elements = 21; elements < 40; elements++) {
1270 RAddStoreExpMinusMaxMicrokernelTester()
1271 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001272 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001273 }
1274 }
1275#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1276
1277
1278#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001279 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20_ACC2, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001280 TEST_REQUIRES_ARM_NEON_FMA;
1281 RAddStoreExpMinusMaxMicrokernelTester()
1282 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001283 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001284 }
1285
Marat Dukhan5999c922022-01-05 18:10:20 -08001286 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20_ACC2, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001287 TEST_REQUIRES_ARM_NEON_FMA;
1288 for (size_t elements = 40; elements < 200; elements += 20) {
1289 RAddStoreExpMinusMaxMicrokernelTester()
1290 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001291 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001292 }
1293 }
1294
Marat Dukhan5999c922022-01-05 18:10:20 -08001295 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20_ACC2, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001296 TEST_REQUIRES_ARM_NEON_FMA;
1297 for (size_t elements = 1; elements < 20; elements++) {
1298 RAddStoreExpMinusMaxMicrokernelTester()
1299 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001300 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001301 }
1302 }
1303
Marat Dukhan5999c922022-01-05 18:10:20 -08001304 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20_ACC2, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001305 TEST_REQUIRES_ARM_NEON_FMA;
1306 for (size_t elements = 21; elements < 40; elements++) {
1307 RAddStoreExpMinusMaxMicrokernelTester()
1308 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001309 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20_acc2, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001310 }
1311 }
1312#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1313
1314
1315#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001316 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20_ACC5, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001317 TEST_REQUIRES_ARM_NEON_FMA;
1318 RAddStoreExpMinusMaxMicrokernelTester()
1319 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001320 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20_acc5, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001321 }
1322
Marat Dukhan5999c922022-01-05 18:10:20 -08001323 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20_ACC5, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001324 TEST_REQUIRES_ARM_NEON_FMA;
1325 for (size_t elements = 40; elements < 200; elements += 20) {
1326 RAddStoreExpMinusMaxMicrokernelTester()
1327 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001328 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20_acc5, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001329 }
1330 }
1331
Marat Dukhan5999c922022-01-05 18:10:20 -08001332 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20_ACC5, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001333 TEST_REQUIRES_ARM_NEON_FMA;
1334 for (size_t elements = 1; elements < 20; elements++) {
1335 RAddStoreExpMinusMaxMicrokernelTester()
1336 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001337 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20_acc5, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001338 }
1339 }
1340
Marat Dukhan5999c922022-01-05 18:10:20 -08001341 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_P5_X20_ACC5, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001342 TEST_REQUIRES_ARM_NEON_FMA;
1343 for (size_t elements = 21; elements < 40; elements++) {
1344 RAddStoreExpMinusMaxMicrokernelTester()
1345 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001346 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_p5_x20_acc5, xnn_init_f32_expminus_neonfma_rr1_p5_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001347 }
1348 }
1349#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1350
1351
1352#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001353 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X4, elements_eq_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001354 TEST_REQUIRES_ARM_NEON_FMA;
1355 RAddStoreExpMinusMaxMicrokernelTester()
1356 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001357 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x4, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001358 }
1359
Marat Dukhan5999c922022-01-05 18:10:20 -08001360 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X4, elements_div_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001361 TEST_REQUIRES_ARM_NEON_FMA;
1362 for (size_t elements = 8; elements < 40; elements += 4) {
1363 RAddStoreExpMinusMaxMicrokernelTester()
1364 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001365 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x4, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001366 }
1367 }
1368
Marat Dukhan5999c922022-01-05 18:10:20 -08001369 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X4, elements_lt_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001370 TEST_REQUIRES_ARM_NEON_FMA;
1371 for (size_t elements = 1; elements < 4; elements++) {
1372 RAddStoreExpMinusMaxMicrokernelTester()
1373 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001374 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x4, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001375 }
1376 }
1377
Marat Dukhan5999c922022-01-05 18:10:20 -08001378 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X4, elements_gt_4) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001379 TEST_REQUIRES_ARM_NEON_FMA;
1380 for (size_t elements = 5; elements < 8; elements++) {
1381 RAddStoreExpMinusMaxMicrokernelTester()
1382 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001383 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x4, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001384 }
1385 }
1386#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1387
1388
1389#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001390 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X8, elements_eq_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001391 TEST_REQUIRES_ARM_NEON_FMA;
1392 RAddStoreExpMinusMaxMicrokernelTester()
1393 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001394 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x8, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001395 }
1396
Marat Dukhan5999c922022-01-05 18:10:20 -08001397 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X8, elements_div_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001398 TEST_REQUIRES_ARM_NEON_FMA;
1399 for (size_t elements = 16; elements < 80; elements += 8) {
1400 RAddStoreExpMinusMaxMicrokernelTester()
1401 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001402 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x8, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001403 }
1404 }
1405
Marat Dukhan5999c922022-01-05 18:10:20 -08001406 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X8, elements_lt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001407 TEST_REQUIRES_ARM_NEON_FMA;
1408 for (size_t elements = 1; elements < 8; elements++) {
1409 RAddStoreExpMinusMaxMicrokernelTester()
1410 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001411 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x8, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001412 }
1413 }
1414
Marat Dukhan5999c922022-01-05 18:10:20 -08001415 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X8, elements_gt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001416 TEST_REQUIRES_ARM_NEON_FMA;
1417 for (size_t elements = 9; elements < 16; elements++) {
1418 RAddStoreExpMinusMaxMicrokernelTester()
1419 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001420 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x8, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001421 }
1422 }
1423#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1424
1425
1426#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001427 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X8_ACC2, elements_eq_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001428 TEST_REQUIRES_ARM_NEON_FMA;
1429 RAddStoreExpMinusMaxMicrokernelTester()
1430 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001431 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x8_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001432 }
1433
Marat Dukhan5999c922022-01-05 18:10:20 -08001434 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X8_ACC2, elements_div_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001435 TEST_REQUIRES_ARM_NEON_FMA;
1436 for (size_t elements = 16; elements < 80; elements += 8) {
1437 RAddStoreExpMinusMaxMicrokernelTester()
1438 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001439 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x8_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001440 }
1441 }
1442
Marat Dukhan5999c922022-01-05 18:10:20 -08001443 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X8_ACC2, elements_lt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001444 TEST_REQUIRES_ARM_NEON_FMA;
1445 for (size_t elements = 1; elements < 8; elements++) {
1446 RAddStoreExpMinusMaxMicrokernelTester()
1447 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001448 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x8_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001449 }
1450 }
1451
Marat Dukhan5999c922022-01-05 18:10:20 -08001452 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X8_ACC2, elements_gt_8) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001453 TEST_REQUIRES_ARM_NEON_FMA;
1454 for (size_t elements = 9; elements < 16; elements++) {
1455 RAddStoreExpMinusMaxMicrokernelTester()
1456 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001457 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x8_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001458 }
1459 }
1460#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1461
1462
1463#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001464 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001465 TEST_REQUIRES_ARM_NEON_FMA;
1466 RAddStoreExpMinusMaxMicrokernelTester()
1467 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001468 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001469 }
1470
Marat Dukhan5999c922022-01-05 18:10:20 -08001471 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001472 TEST_REQUIRES_ARM_NEON_FMA;
1473 for (size_t elements = 24; elements < 120; elements += 12) {
1474 RAddStoreExpMinusMaxMicrokernelTester()
1475 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001476 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001477 }
1478 }
1479
Marat Dukhan5999c922022-01-05 18:10:20 -08001480 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001481 TEST_REQUIRES_ARM_NEON_FMA;
1482 for (size_t elements = 1; elements < 12; elements++) {
1483 RAddStoreExpMinusMaxMicrokernelTester()
1484 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001485 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001486 }
1487 }
1488
Marat Dukhan5999c922022-01-05 18:10:20 -08001489 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001490 TEST_REQUIRES_ARM_NEON_FMA;
1491 for (size_t elements = 13; elements < 24; elements++) {
1492 RAddStoreExpMinusMaxMicrokernelTester()
1493 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001494 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001495 }
1496 }
1497#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1498
1499
1500#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001501 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12_ACC2, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001502 TEST_REQUIRES_ARM_NEON_FMA;
1503 RAddStoreExpMinusMaxMicrokernelTester()
1504 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001505 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001506 }
1507
Marat Dukhan5999c922022-01-05 18:10:20 -08001508 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12_ACC2, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001509 TEST_REQUIRES_ARM_NEON_FMA;
1510 for (size_t elements = 24; elements < 120; elements += 12) {
1511 RAddStoreExpMinusMaxMicrokernelTester()
1512 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001513 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001514 }
1515 }
1516
Marat Dukhan5999c922022-01-05 18:10:20 -08001517 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12_ACC2, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001518 TEST_REQUIRES_ARM_NEON_FMA;
1519 for (size_t elements = 1; elements < 12; elements++) {
1520 RAddStoreExpMinusMaxMicrokernelTester()
1521 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001522 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001523 }
1524 }
1525
Marat Dukhan5999c922022-01-05 18:10:20 -08001526 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12_ACC2, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001527 TEST_REQUIRES_ARM_NEON_FMA;
1528 for (size_t elements = 13; elements < 24; elements++) {
1529 RAddStoreExpMinusMaxMicrokernelTester()
1530 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001531 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001532 }
1533 }
1534#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1535
1536
1537#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001538 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12_ACC3, elements_eq_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001539 TEST_REQUIRES_ARM_NEON_FMA;
1540 RAddStoreExpMinusMaxMicrokernelTester()
1541 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001542 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12_acc3, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001543 }
1544
Marat Dukhan5999c922022-01-05 18:10:20 -08001545 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12_ACC3, elements_div_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001546 TEST_REQUIRES_ARM_NEON_FMA;
1547 for (size_t elements = 24; elements < 120; elements += 12) {
1548 RAddStoreExpMinusMaxMicrokernelTester()
1549 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001550 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12_acc3, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001551 }
1552 }
1553
Marat Dukhan5999c922022-01-05 18:10:20 -08001554 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12_ACC3, elements_lt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001555 TEST_REQUIRES_ARM_NEON_FMA;
1556 for (size_t elements = 1; elements < 12; elements++) {
1557 RAddStoreExpMinusMaxMicrokernelTester()
1558 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001559 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12_acc3, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001560 }
1561 }
1562
Marat Dukhan5999c922022-01-05 18:10:20 -08001563 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X12_ACC3, elements_gt_12) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001564 TEST_REQUIRES_ARM_NEON_FMA;
1565 for (size_t elements = 13; elements < 24; elements++) {
1566 RAddStoreExpMinusMaxMicrokernelTester()
1567 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001568 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x12_acc3, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001569 }
1570 }
1571#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1572
1573
1574#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001575 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001576 TEST_REQUIRES_ARM_NEON_FMA;
1577 RAddStoreExpMinusMaxMicrokernelTester()
1578 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001579 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001580 }
1581
Marat Dukhan5999c922022-01-05 18:10:20 -08001582 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001583 TEST_REQUIRES_ARM_NEON_FMA;
1584 for (size_t elements = 32; elements < 160; elements += 16) {
1585 RAddStoreExpMinusMaxMicrokernelTester()
1586 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001587 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001588 }
1589 }
1590
Marat Dukhan5999c922022-01-05 18:10:20 -08001591 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001592 TEST_REQUIRES_ARM_NEON_FMA;
1593 for (size_t elements = 1; elements < 16; elements++) {
1594 RAddStoreExpMinusMaxMicrokernelTester()
1595 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001596 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001597 }
1598 }
1599
Marat Dukhan5999c922022-01-05 18:10:20 -08001600 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001601 TEST_REQUIRES_ARM_NEON_FMA;
1602 for (size_t elements = 17; elements < 32; elements++) {
1603 RAddStoreExpMinusMaxMicrokernelTester()
1604 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001605 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001606 }
1607 }
1608#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1609
1610
1611#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001612 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16_ACC2, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001613 TEST_REQUIRES_ARM_NEON_FMA;
1614 RAddStoreExpMinusMaxMicrokernelTester()
1615 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001616 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001617 }
1618
Marat Dukhan5999c922022-01-05 18:10:20 -08001619 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16_ACC2, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001620 TEST_REQUIRES_ARM_NEON_FMA;
1621 for (size_t elements = 32; elements < 160; elements += 16) {
1622 RAddStoreExpMinusMaxMicrokernelTester()
1623 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001624 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001625 }
1626 }
1627
Marat Dukhan5999c922022-01-05 18:10:20 -08001628 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16_ACC2, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001629 TEST_REQUIRES_ARM_NEON_FMA;
1630 for (size_t elements = 1; elements < 16; elements++) {
1631 RAddStoreExpMinusMaxMicrokernelTester()
1632 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001633 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001634 }
1635 }
1636
Marat Dukhan5999c922022-01-05 18:10:20 -08001637 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16_ACC2, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001638 TEST_REQUIRES_ARM_NEON_FMA;
1639 for (size_t elements = 17; elements < 32; elements++) {
1640 RAddStoreExpMinusMaxMicrokernelTester()
1641 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001642 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001643 }
1644 }
1645#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1646
1647
1648#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001649 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16_ACC4, elements_eq_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001650 TEST_REQUIRES_ARM_NEON_FMA;
1651 RAddStoreExpMinusMaxMicrokernelTester()
1652 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001653 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16_acc4, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001654 }
1655
Marat Dukhan5999c922022-01-05 18:10:20 -08001656 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16_ACC4, elements_div_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001657 TEST_REQUIRES_ARM_NEON_FMA;
1658 for (size_t elements = 32; elements < 160; elements += 16) {
1659 RAddStoreExpMinusMaxMicrokernelTester()
1660 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001661 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16_acc4, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001662 }
1663 }
1664
Marat Dukhan5999c922022-01-05 18:10:20 -08001665 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16_ACC4, elements_lt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001666 TEST_REQUIRES_ARM_NEON_FMA;
1667 for (size_t elements = 1; elements < 16; elements++) {
1668 RAddStoreExpMinusMaxMicrokernelTester()
1669 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001670 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16_acc4, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001671 }
1672 }
1673
Marat Dukhan5999c922022-01-05 18:10:20 -08001674 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X16_ACC4, elements_gt_16) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001675 TEST_REQUIRES_ARM_NEON_FMA;
1676 for (size_t elements = 17; elements < 32; elements++) {
1677 RAddStoreExpMinusMaxMicrokernelTester()
1678 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001679 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x16_acc4, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001680 }
1681 }
1682#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1683
1684
1685#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001686 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001687 TEST_REQUIRES_ARM_NEON_FMA;
1688 RAddStoreExpMinusMaxMicrokernelTester()
1689 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001690 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001691 }
1692
Marat Dukhan5999c922022-01-05 18:10:20 -08001693 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001694 TEST_REQUIRES_ARM_NEON_FMA;
1695 for (size_t elements = 40; elements < 200; elements += 20) {
1696 RAddStoreExpMinusMaxMicrokernelTester()
1697 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001698 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001699 }
1700 }
1701
Marat Dukhan5999c922022-01-05 18:10:20 -08001702 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001703 TEST_REQUIRES_ARM_NEON_FMA;
1704 for (size_t elements = 1; elements < 20; elements++) {
1705 RAddStoreExpMinusMaxMicrokernelTester()
1706 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001707 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001708 }
1709 }
1710
Marat Dukhan5999c922022-01-05 18:10:20 -08001711 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001712 TEST_REQUIRES_ARM_NEON_FMA;
1713 for (size_t elements = 21; elements < 40; elements++) {
1714 RAddStoreExpMinusMaxMicrokernelTester()
1715 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001716 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001717 }
1718 }
1719#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1720
1721
1722#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001723 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20_ACC2, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001724 TEST_REQUIRES_ARM_NEON_FMA;
1725 RAddStoreExpMinusMaxMicrokernelTester()
1726 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001727 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001728 }
1729
Marat Dukhan5999c922022-01-05 18:10:20 -08001730 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20_ACC2, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001731 TEST_REQUIRES_ARM_NEON_FMA;
1732 for (size_t elements = 40; elements < 200; elements += 20) {
1733 RAddStoreExpMinusMaxMicrokernelTester()
1734 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001735 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001736 }
1737 }
1738
Marat Dukhan5999c922022-01-05 18:10:20 -08001739 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20_ACC2, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001740 TEST_REQUIRES_ARM_NEON_FMA;
1741 for (size_t elements = 1; elements < 20; elements++) {
1742 RAddStoreExpMinusMaxMicrokernelTester()
1743 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001744 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001745 }
1746 }
1747
Marat Dukhan5999c922022-01-05 18:10:20 -08001748 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20_ACC2, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001749 TEST_REQUIRES_ARM_NEON_FMA;
1750 for (size_t elements = 21; elements < 40; elements++) {
1751 RAddStoreExpMinusMaxMicrokernelTester()
1752 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001753 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20_acc2, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001754 }
1755 }
1756#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1757
1758
1759#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan5999c922022-01-05 18:10:20 -08001760 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20_ACC5, elements_eq_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001761 TEST_REQUIRES_ARM_NEON_FMA;
1762 RAddStoreExpMinusMaxMicrokernelTester()
1763 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001764 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20_acc5, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001765 }
1766
Marat Dukhan5999c922022-01-05 18:10:20 -08001767 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20_ACC5, elements_div_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001768 TEST_REQUIRES_ARM_NEON_FMA;
1769 for (size_t elements = 40; elements < 200; elements += 20) {
1770 RAddStoreExpMinusMaxMicrokernelTester()
1771 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001772 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20_acc5, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001773 }
1774 }
1775
Marat Dukhan5999c922022-01-05 18:10:20 -08001776 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20_ACC5, elements_lt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001777 TEST_REQUIRES_ARM_NEON_FMA;
1778 for (size_t elements = 1; elements < 20; elements++) {
1779 RAddStoreExpMinusMaxMicrokernelTester()
1780 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001781 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20_acc5, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001782 }
1783 }
1784
Marat Dukhan5999c922022-01-05 18:10:20 -08001785 TEST(F32_RADDSTOREEXPMINUSMAX__NEONFMA_RR1_LUT64_P2_X20_ACC5, elements_gt_20) {
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001786 TEST_REQUIRES_ARM_NEON_FMA;
1787 for (size_t elements = 21; elements < 40; elements++) {
1788 RAddStoreExpMinusMaxMicrokernelTester()
1789 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001790 .Test(xnn_f32_raddstoreexpminusmax_ukernel__neonfma_rr1_lut64_p2_x20_acc5, xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params);
Marat Dukhan8137e4c2020-01-25 12:56:58 -08001791 }
1792 }
1793#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1794
1795
Marat Dukhan4c4eb002019-12-08 21:27:49 -08001796#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08001797 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X4, elements_eq_4) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001798 TEST_REQUIRES_X86_SSE2;
1799 RAddStoreExpMinusMaxMicrokernelTester()
1800 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001801 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x4, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001802 }
1803
Marat Dukhan5999c922022-01-05 18:10:20 -08001804 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X4, elements_div_4) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001805 TEST_REQUIRES_X86_SSE2;
1806 for (size_t elements = 8; elements < 40; elements += 4) {
1807 RAddStoreExpMinusMaxMicrokernelTester()
1808 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001809 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x4, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001810 }
1811 }
1812
Marat Dukhan5999c922022-01-05 18:10:20 -08001813 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X4, elements_lt_4) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001814 TEST_REQUIRES_X86_SSE2;
1815 for (size_t elements = 1; elements < 4; elements++) {
1816 RAddStoreExpMinusMaxMicrokernelTester()
1817 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001818 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x4, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001819 }
1820 }
1821
Marat Dukhan5999c922022-01-05 18:10:20 -08001822 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X4, elements_gt_4) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001823 TEST_REQUIRES_X86_SSE2;
1824 for (size_t elements = 5; elements < 8; elements++) {
1825 RAddStoreExpMinusMaxMicrokernelTester()
1826 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001827 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x4, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001828 }
1829 }
1830#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1831
1832
1833#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08001834 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X8, elements_eq_8) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001835 TEST_REQUIRES_X86_SSE2;
1836 RAddStoreExpMinusMaxMicrokernelTester()
1837 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001838 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x8, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001839 }
1840
Marat Dukhan5999c922022-01-05 18:10:20 -08001841 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X8, elements_div_8) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001842 TEST_REQUIRES_X86_SSE2;
1843 for (size_t elements = 16; elements < 80; elements += 8) {
1844 RAddStoreExpMinusMaxMicrokernelTester()
1845 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001846 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x8, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001847 }
1848 }
1849
Marat Dukhan5999c922022-01-05 18:10:20 -08001850 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X8, elements_lt_8) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001851 TEST_REQUIRES_X86_SSE2;
1852 for (size_t elements = 1; elements < 8; elements++) {
1853 RAddStoreExpMinusMaxMicrokernelTester()
1854 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001855 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x8, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001856 }
1857 }
1858
Marat Dukhan5999c922022-01-05 18:10:20 -08001859 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X8, elements_gt_8) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001860 TEST_REQUIRES_X86_SSE2;
1861 for (size_t elements = 9; elements < 16; elements++) {
1862 RAddStoreExpMinusMaxMicrokernelTester()
1863 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001864 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x8, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001865 }
1866 }
1867#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1868
1869
1870#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08001871 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X8_ACC2, elements_eq_8) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001872 TEST_REQUIRES_X86_SSE2;
1873 RAddStoreExpMinusMaxMicrokernelTester()
1874 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001875 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x8_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001876 }
1877
Marat Dukhan5999c922022-01-05 18:10:20 -08001878 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X8_ACC2, elements_div_8) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001879 TEST_REQUIRES_X86_SSE2;
1880 for (size_t elements = 16; elements < 80; elements += 8) {
1881 RAddStoreExpMinusMaxMicrokernelTester()
1882 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001883 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x8_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001884 }
1885 }
1886
Marat Dukhan5999c922022-01-05 18:10:20 -08001887 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X8_ACC2, elements_lt_8) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001888 TEST_REQUIRES_X86_SSE2;
1889 for (size_t elements = 1; elements < 8; elements++) {
1890 RAddStoreExpMinusMaxMicrokernelTester()
1891 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001892 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x8_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001893 }
1894 }
1895
Marat Dukhan5999c922022-01-05 18:10:20 -08001896 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X8_ACC2, elements_gt_8) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001897 TEST_REQUIRES_X86_SSE2;
1898 for (size_t elements = 9; elements < 16; elements++) {
1899 RAddStoreExpMinusMaxMicrokernelTester()
1900 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001901 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x8_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001902 }
1903 }
1904#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1905
1906
1907#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08001908 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12, elements_eq_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001909 TEST_REQUIRES_X86_SSE2;
1910 RAddStoreExpMinusMaxMicrokernelTester()
1911 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001912 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001913 }
1914
Marat Dukhan5999c922022-01-05 18:10:20 -08001915 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12, elements_div_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001916 TEST_REQUIRES_X86_SSE2;
1917 for (size_t elements = 24; elements < 120; elements += 12) {
1918 RAddStoreExpMinusMaxMicrokernelTester()
1919 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001920 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001921 }
1922 }
1923
Marat Dukhan5999c922022-01-05 18:10:20 -08001924 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12, elements_lt_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001925 TEST_REQUIRES_X86_SSE2;
1926 for (size_t elements = 1; elements < 12; elements++) {
1927 RAddStoreExpMinusMaxMicrokernelTester()
1928 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001929 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001930 }
1931 }
1932
Marat Dukhan5999c922022-01-05 18:10:20 -08001933 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12, elements_gt_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001934 TEST_REQUIRES_X86_SSE2;
1935 for (size_t elements = 13; elements < 24; elements++) {
1936 RAddStoreExpMinusMaxMicrokernelTester()
1937 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001938 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001939 }
1940 }
1941#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1942
1943
1944#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08001945 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12_ACC2, elements_eq_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001946 TEST_REQUIRES_X86_SSE2;
1947 RAddStoreExpMinusMaxMicrokernelTester()
1948 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001949 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001950 }
1951
Marat Dukhan5999c922022-01-05 18:10:20 -08001952 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12_ACC2, elements_div_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001953 TEST_REQUIRES_X86_SSE2;
1954 for (size_t elements = 24; elements < 120; elements += 12) {
1955 RAddStoreExpMinusMaxMicrokernelTester()
1956 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001957 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001958 }
1959 }
1960
Marat Dukhan5999c922022-01-05 18:10:20 -08001961 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12_ACC2, elements_lt_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001962 TEST_REQUIRES_X86_SSE2;
1963 for (size_t elements = 1; elements < 12; elements++) {
1964 RAddStoreExpMinusMaxMicrokernelTester()
1965 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001966 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001967 }
1968 }
1969
Marat Dukhan5999c922022-01-05 18:10:20 -08001970 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12_ACC2, elements_gt_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001971 TEST_REQUIRES_X86_SSE2;
1972 for (size_t elements = 13; elements < 24; elements++) {
1973 RAddStoreExpMinusMaxMicrokernelTester()
1974 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001975 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001976 }
1977 }
1978#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
1979
1980
1981#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08001982 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12_ACC3, elements_eq_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001983 TEST_REQUIRES_X86_SSE2;
1984 RAddStoreExpMinusMaxMicrokernelTester()
1985 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001986 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12_acc3, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001987 }
1988
Marat Dukhan5999c922022-01-05 18:10:20 -08001989 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12_ACC3, elements_div_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001990 TEST_REQUIRES_X86_SSE2;
1991 for (size_t elements = 24; elements < 120; elements += 12) {
1992 RAddStoreExpMinusMaxMicrokernelTester()
1993 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08001994 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12_acc3, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08001995 }
1996 }
1997
Marat Dukhan5999c922022-01-05 18:10:20 -08001998 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12_ACC3, elements_lt_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08001999 TEST_REQUIRES_X86_SSE2;
2000 for (size_t elements = 1; elements < 12; elements++) {
2001 RAddStoreExpMinusMaxMicrokernelTester()
2002 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002003 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12_acc3, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002004 }
2005 }
2006
Marat Dukhan5999c922022-01-05 18:10:20 -08002007 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X12_ACC3, elements_gt_12) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002008 TEST_REQUIRES_X86_SSE2;
2009 for (size_t elements = 13; elements < 24; elements++) {
2010 RAddStoreExpMinusMaxMicrokernelTester()
2011 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002012 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x12_acc3, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002013 }
2014 }
2015#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2016
2017
2018#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002019 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16, elements_eq_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002020 TEST_REQUIRES_X86_SSE2;
2021 RAddStoreExpMinusMaxMicrokernelTester()
2022 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002023 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002024 }
2025
Marat Dukhan5999c922022-01-05 18:10:20 -08002026 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16, elements_div_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002027 TEST_REQUIRES_X86_SSE2;
2028 for (size_t elements = 32; elements < 160; elements += 16) {
2029 RAddStoreExpMinusMaxMicrokernelTester()
2030 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002031 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002032 }
2033 }
2034
Marat Dukhan5999c922022-01-05 18:10:20 -08002035 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16, elements_lt_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002036 TEST_REQUIRES_X86_SSE2;
2037 for (size_t elements = 1; elements < 16; elements++) {
2038 RAddStoreExpMinusMaxMicrokernelTester()
2039 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002040 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002041 }
2042 }
2043
Marat Dukhan5999c922022-01-05 18:10:20 -08002044 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16, elements_gt_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002045 TEST_REQUIRES_X86_SSE2;
2046 for (size_t elements = 17; elements < 32; elements++) {
2047 RAddStoreExpMinusMaxMicrokernelTester()
2048 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002049 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002050 }
2051 }
2052#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2053
2054
2055#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002056 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16_ACC2, elements_eq_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002057 TEST_REQUIRES_X86_SSE2;
2058 RAddStoreExpMinusMaxMicrokernelTester()
2059 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002060 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002061 }
2062
Marat Dukhan5999c922022-01-05 18:10:20 -08002063 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16_ACC2, elements_div_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002064 TEST_REQUIRES_X86_SSE2;
2065 for (size_t elements = 32; elements < 160; elements += 16) {
2066 RAddStoreExpMinusMaxMicrokernelTester()
2067 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002068 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002069 }
2070 }
2071
Marat Dukhan5999c922022-01-05 18:10:20 -08002072 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16_ACC2, elements_lt_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002073 TEST_REQUIRES_X86_SSE2;
2074 for (size_t elements = 1; elements < 16; elements++) {
2075 RAddStoreExpMinusMaxMicrokernelTester()
2076 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002077 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002078 }
2079 }
2080
Marat Dukhan5999c922022-01-05 18:10:20 -08002081 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16_ACC2, elements_gt_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002082 TEST_REQUIRES_X86_SSE2;
2083 for (size_t elements = 17; elements < 32; elements++) {
2084 RAddStoreExpMinusMaxMicrokernelTester()
2085 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002086 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002087 }
2088 }
2089#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2090
2091
2092#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002093 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16_ACC4, elements_eq_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002094 TEST_REQUIRES_X86_SSE2;
2095 RAddStoreExpMinusMaxMicrokernelTester()
2096 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002097 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16_acc4, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002098 }
2099
Marat Dukhan5999c922022-01-05 18:10:20 -08002100 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16_ACC4, elements_div_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002101 TEST_REQUIRES_X86_SSE2;
2102 for (size_t elements = 32; elements < 160; elements += 16) {
2103 RAddStoreExpMinusMaxMicrokernelTester()
2104 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002105 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16_acc4, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002106 }
2107 }
2108
Marat Dukhan5999c922022-01-05 18:10:20 -08002109 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16_ACC4, elements_lt_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002110 TEST_REQUIRES_X86_SSE2;
2111 for (size_t elements = 1; elements < 16; elements++) {
2112 RAddStoreExpMinusMaxMicrokernelTester()
2113 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002114 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16_acc4, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002115 }
2116 }
2117
Marat Dukhan5999c922022-01-05 18:10:20 -08002118 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X16_ACC4, elements_gt_16) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002119 TEST_REQUIRES_X86_SSE2;
2120 for (size_t elements = 17; elements < 32; elements++) {
2121 RAddStoreExpMinusMaxMicrokernelTester()
2122 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002123 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x16_acc4, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002124 }
2125 }
2126#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2127
2128
2129#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002130 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20, elements_eq_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002131 TEST_REQUIRES_X86_SSE2;
2132 RAddStoreExpMinusMaxMicrokernelTester()
2133 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002134 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002135 }
2136
Marat Dukhan5999c922022-01-05 18:10:20 -08002137 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20, elements_div_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002138 TEST_REQUIRES_X86_SSE2;
2139 for (size_t elements = 40; elements < 200; elements += 20) {
2140 RAddStoreExpMinusMaxMicrokernelTester()
2141 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002142 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002143 }
2144 }
2145
Marat Dukhan5999c922022-01-05 18:10:20 -08002146 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20, elements_lt_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002147 TEST_REQUIRES_X86_SSE2;
2148 for (size_t elements = 1; elements < 20; elements++) {
2149 RAddStoreExpMinusMaxMicrokernelTester()
2150 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002151 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002152 }
2153 }
2154
Marat Dukhan5999c922022-01-05 18:10:20 -08002155 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20, elements_gt_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002156 TEST_REQUIRES_X86_SSE2;
2157 for (size_t elements = 21; elements < 40; elements++) {
2158 RAddStoreExpMinusMaxMicrokernelTester()
2159 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002160 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002161 }
2162 }
2163#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2164
2165
2166#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002167 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20_ACC2, elements_eq_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002168 TEST_REQUIRES_X86_SSE2;
2169 RAddStoreExpMinusMaxMicrokernelTester()
2170 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002171 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002172 }
2173
Marat Dukhan5999c922022-01-05 18:10:20 -08002174 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20_ACC2, elements_div_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002175 TEST_REQUIRES_X86_SSE2;
2176 for (size_t elements = 40; elements < 200; elements += 20) {
2177 RAddStoreExpMinusMaxMicrokernelTester()
2178 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002179 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002180 }
2181 }
2182
Marat Dukhan5999c922022-01-05 18:10:20 -08002183 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20_ACC2, elements_lt_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002184 TEST_REQUIRES_X86_SSE2;
2185 for (size_t elements = 1; elements < 20; elements++) {
2186 RAddStoreExpMinusMaxMicrokernelTester()
2187 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002188 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002189 }
2190 }
2191
Marat Dukhan5999c922022-01-05 18:10:20 -08002192 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20_ACC2, elements_gt_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002193 TEST_REQUIRES_X86_SSE2;
2194 for (size_t elements = 21; elements < 40; elements++) {
2195 RAddStoreExpMinusMaxMicrokernelTester()
2196 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002197 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20_acc2, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002198 }
2199 }
2200#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2201
2202
2203#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002204 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20_ACC5, elements_eq_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002205 TEST_REQUIRES_X86_SSE2;
2206 RAddStoreExpMinusMaxMicrokernelTester()
2207 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002208 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20_acc5, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002209 }
2210
Marat Dukhan5999c922022-01-05 18:10:20 -08002211 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20_ACC5, elements_div_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002212 TEST_REQUIRES_X86_SSE2;
2213 for (size_t elements = 40; elements < 200; elements += 20) {
2214 RAddStoreExpMinusMaxMicrokernelTester()
2215 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002216 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20_acc5, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002217 }
2218 }
2219
Marat Dukhan5999c922022-01-05 18:10:20 -08002220 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20_ACC5, elements_lt_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002221 TEST_REQUIRES_X86_SSE2;
2222 for (size_t elements = 1; elements < 20; elements++) {
2223 RAddStoreExpMinusMaxMicrokernelTester()
2224 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002225 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20_acc5, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002226 }
2227 }
2228
Marat Dukhan5999c922022-01-05 18:10:20 -08002229 TEST(F32_RADDSTOREEXPMINUSMAX__SSE2_RR2_P5_X20_ACC5, elements_gt_20) {
Marat Dukhanb39689d2020-01-24 13:32:20 -08002230 TEST_REQUIRES_X86_SSE2;
2231 for (size_t elements = 21; elements < 40; elements++) {
2232 RAddStoreExpMinusMaxMicrokernelTester()
2233 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002234 .Test(xnn_f32_raddstoreexpminusmax_ukernel__sse2_rr2_p5_x20_acc5, xnn_init_f32_expminus_sse2_rr2_p5_params);
Marat Dukhanb39689d2020-01-24 13:32:20 -08002235 }
2236 }
2237#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2238
2239
2240#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002241 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64, elements_eq_64) {
Marat Dukhan97579532019-10-18 16:40:39 -07002242 TEST_REQUIRES_X86_AVX2;
2243 RAddStoreExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002244 .elements(64)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002245 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan97579532019-10-18 16:40:39 -07002246 }
2247
Marat Dukhan5999c922022-01-05 18:10:20 -08002248 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64, elements_div_64) {
Marat Dukhan97579532019-10-18 16:40:39 -07002249 TEST_REQUIRES_X86_AVX2;
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002250 for (size_t elements = 128; elements < 640; elements += 64) {
Marat Dukhan97579532019-10-18 16:40:39 -07002251 RAddStoreExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002252 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002253 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan97579532019-10-18 16:40:39 -07002254 }
2255 }
2256
Marat Dukhan5999c922022-01-05 18:10:20 -08002257 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64, elements_lt_64) {
Marat Dukhan97579532019-10-18 16:40:39 -07002258 TEST_REQUIRES_X86_AVX2;
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002259 for (size_t elements = 1; elements < 64; elements++) {
Marat Dukhan97579532019-10-18 16:40:39 -07002260 RAddStoreExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002261 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002262 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan97579532019-10-18 16:40:39 -07002263 }
2264 }
2265
Marat Dukhan5999c922022-01-05 18:10:20 -08002266 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64, elements_gt_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002267 TEST_REQUIRES_X86_AVX2;
2268 for (size_t elements = 65; elements < 128; elements++) {
2269 RAddStoreExpMinusMaxMicrokernelTester()
2270 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002271 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002272 }
2273 }
2274#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2275
2276
2277#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002278 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64_ACC2, elements_eq_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002279 TEST_REQUIRES_X86_AVX2;
2280 RAddStoreExpMinusMaxMicrokernelTester()
2281 .elements(64)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002282 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002283 }
2284
Marat Dukhan5999c922022-01-05 18:10:20 -08002285 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64_ACC2, elements_div_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002286 TEST_REQUIRES_X86_AVX2;
2287 for (size_t elements = 128; elements < 640; elements += 64) {
2288 RAddStoreExpMinusMaxMicrokernelTester()
2289 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002290 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002291 }
2292 }
2293
Marat Dukhan5999c922022-01-05 18:10:20 -08002294 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64_ACC2, elements_lt_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002295 TEST_REQUIRES_X86_AVX2;
2296 for (size_t elements = 1; elements < 64; elements++) {
2297 RAddStoreExpMinusMaxMicrokernelTester()
2298 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002299 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002300 }
2301 }
2302
Marat Dukhan5999c922022-01-05 18:10:20 -08002303 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64_ACC2, elements_gt_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002304 TEST_REQUIRES_X86_AVX2;
2305 for (size_t elements = 65; elements < 128; elements++) {
2306 RAddStoreExpMinusMaxMicrokernelTester()
2307 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002308 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002309 }
2310 }
2311#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2312
2313
2314#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002315 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64_ACC4, elements_eq_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002316 TEST_REQUIRES_X86_AVX2;
2317 RAddStoreExpMinusMaxMicrokernelTester()
2318 .elements(64)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002319 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64_acc4, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002320 }
2321
Marat Dukhan5999c922022-01-05 18:10:20 -08002322 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64_ACC4, elements_div_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002323 TEST_REQUIRES_X86_AVX2;
2324 for (size_t elements = 128; elements < 640; elements += 64) {
2325 RAddStoreExpMinusMaxMicrokernelTester()
2326 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002327 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64_acc4, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002328 }
2329 }
2330
Marat Dukhan5999c922022-01-05 18:10:20 -08002331 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64_ACC4, elements_lt_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002332 TEST_REQUIRES_X86_AVX2;
2333 for (size_t elements = 1; elements < 64; elements++) {
2334 RAddStoreExpMinusMaxMicrokernelTester()
2335 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002336 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64_acc4, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002337 }
2338 }
2339
Marat Dukhan5999c922022-01-05 18:10:20 -08002340 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X64_ACC4, elements_gt_64) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002341 TEST_REQUIRES_X86_AVX2;
2342 for (size_t elements = 65; elements < 128; elements++) {
2343 RAddStoreExpMinusMaxMicrokernelTester()
2344 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002345 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x64_acc4, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002346 }
2347 }
2348#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2349
2350
2351#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002352 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X72, elements_eq_72) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002353 TEST_REQUIRES_X86_AVX2;
2354 RAddStoreExpMinusMaxMicrokernelTester()
2355 .elements(72)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002356 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x72, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002357 }
2358
Marat Dukhan5999c922022-01-05 18:10:20 -08002359 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X72, elements_div_72) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002360 TEST_REQUIRES_X86_AVX2;
2361 for (size_t elements = 144; elements < 720; elements += 72) {
2362 RAddStoreExpMinusMaxMicrokernelTester()
2363 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002364 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x72, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002365 }
2366 }
2367
Marat Dukhan5999c922022-01-05 18:10:20 -08002368 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X72, elements_lt_72) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002369 TEST_REQUIRES_X86_AVX2;
2370 for (size_t elements = 1; elements < 72; elements++) {
2371 RAddStoreExpMinusMaxMicrokernelTester()
2372 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002373 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x72, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002374 }
2375 }
2376
Marat Dukhan5999c922022-01-05 18:10:20 -08002377 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X72, elements_gt_72) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002378 TEST_REQUIRES_X86_AVX2;
2379 for (size_t elements = 73; elements < 144; elements++) {
2380 RAddStoreExpMinusMaxMicrokernelTester()
2381 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002382 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x72, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002383 }
2384 }
2385#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2386
2387
2388#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002389 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X72_ACC3, elements_eq_72) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002390 TEST_REQUIRES_X86_AVX2;
2391 RAddStoreExpMinusMaxMicrokernelTester()
2392 .elements(72)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002393 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x72_acc3, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002394 }
2395
Marat Dukhan5999c922022-01-05 18:10:20 -08002396 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X72_ACC3, elements_div_72) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002397 TEST_REQUIRES_X86_AVX2;
2398 for (size_t elements = 144; elements < 720; elements += 72) {
2399 RAddStoreExpMinusMaxMicrokernelTester()
2400 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002401 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x72_acc3, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002402 }
2403 }
2404
Marat Dukhan5999c922022-01-05 18:10:20 -08002405 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X72_ACC3, elements_lt_72) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002406 TEST_REQUIRES_X86_AVX2;
2407 for (size_t elements = 1; elements < 72; elements++) {
2408 RAddStoreExpMinusMaxMicrokernelTester()
2409 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002410 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x72_acc3, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002411 }
2412 }
2413
Marat Dukhan5999c922022-01-05 18:10:20 -08002414 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X72_ACC3, elements_gt_72) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002415 TEST_REQUIRES_X86_AVX2;
2416 for (size_t elements = 73; elements < 144; elements++) {
2417 RAddStoreExpMinusMaxMicrokernelTester()
2418 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002419 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x72_acc3, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002420 }
2421 }
2422#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2423
2424
2425#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002426 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80, elements_eq_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002427 TEST_REQUIRES_X86_AVX2;
2428 RAddStoreExpMinusMaxMicrokernelTester()
2429 .elements(80)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002430 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002431 }
2432
Marat Dukhan5999c922022-01-05 18:10:20 -08002433 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80, elements_div_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002434 TEST_REQUIRES_X86_AVX2;
2435 for (size_t elements = 160; elements < 800; elements += 80) {
2436 RAddStoreExpMinusMaxMicrokernelTester()
2437 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002438 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002439 }
2440 }
2441
Marat Dukhan5999c922022-01-05 18:10:20 -08002442 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80, elements_lt_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002443 TEST_REQUIRES_X86_AVX2;
2444 for (size_t elements = 1; elements < 80; elements++) {
2445 RAddStoreExpMinusMaxMicrokernelTester()
2446 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002447 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002448 }
2449 }
2450
Marat Dukhan5999c922022-01-05 18:10:20 -08002451 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80, elements_gt_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002452 TEST_REQUIRES_X86_AVX2;
2453 for (size_t elements = 81; elements < 160; elements++) {
2454 RAddStoreExpMinusMaxMicrokernelTester()
2455 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002456 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002457 }
2458 }
2459#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2460
2461
2462#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002463 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80_ACC2, elements_eq_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002464 TEST_REQUIRES_X86_AVX2;
2465 RAddStoreExpMinusMaxMicrokernelTester()
2466 .elements(80)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002467 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002468 }
2469
Marat Dukhan5999c922022-01-05 18:10:20 -08002470 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80_ACC2, elements_div_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002471 TEST_REQUIRES_X86_AVX2;
2472 for (size_t elements = 160; elements < 800; elements += 80) {
2473 RAddStoreExpMinusMaxMicrokernelTester()
2474 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002475 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002476 }
2477 }
2478
Marat Dukhan5999c922022-01-05 18:10:20 -08002479 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80_ACC2, elements_lt_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002480 TEST_REQUIRES_X86_AVX2;
2481 for (size_t elements = 1; elements < 80; elements++) {
2482 RAddStoreExpMinusMaxMicrokernelTester()
2483 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002484 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002485 }
2486 }
2487
Marat Dukhan5999c922022-01-05 18:10:20 -08002488 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80_ACC2, elements_gt_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002489 TEST_REQUIRES_X86_AVX2;
2490 for (size_t elements = 81; elements < 160; elements++) {
2491 RAddStoreExpMinusMaxMicrokernelTester()
2492 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002493 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002494 }
2495 }
2496#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2497
2498
2499#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002500 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80_ACC5, elements_eq_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002501 TEST_REQUIRES_X86_AVX2;
2502 RAddStoreExpMinusMaxMicrokernelTester()
2503 .elements(80)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002504 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80_acc5, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002505 }
2506
Marat Dukhan5999c922022-01-05 18:10:20 -08002507 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80_ACC5, elements_div_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002508 TEST_REQUIRES_X86_AVX2;
2509 for (size_t elements = 160; elements < 800; elements += 80) {
2510 RAddStoreExpMinusMaxMicrokernelTester()
2511 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002512 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80_acc5, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002513 }
2514 }
2515
Marat Dukhan5999c922022-01-05 18:10:20 -08002516 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80_ACC5, elements_lt_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002517 TEST_REQUIRES_X86_AVX2;
2518 for (size_t elements = 1; elements < 80; elements++) {
2519 RAddStoreExpMinusMaxMicrokernelTester()
2520 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002521 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80_acc5, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002522 }
2523 }
2524
Marat Dukhan5999c922022-01-05 18:10:20 -08002525 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X80_ACC5, elements_gt_80) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002526 TEST_REQUIRES_X86_AVX2;
2527 for (size_t elements = 81; elements < 160; elements++) {
2528 RAddStoreExpMinusMaxMicrokernelTester()
2529 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002530 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x80_acc5, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002531 }
2532 }
2533#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2534
2535
2536#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002537 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96, elements_eq_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002538 TEST_REQUIRES_X86_AVX2;
2539 RAddStoreExpMinusMaxMicrokernelTester()
2540 .elements(96)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002541 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002542 }
2543
Marat Dukhan5999c922022-01-05 18:10:20 -08002544 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96, elements_div_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002545 TEST_REQUIRES_X86_AVX2;
2546 for (size_t elements = 192; elements < 960; elements += 96) {
2547 RAddStoreExpMinusMaxMicrokernelTester()
2548 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002549 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002550 }
2551 }
2552
Marat Dukhan5999c922022-01-05 18:10:20 -08002553 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96, elements_lt_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002554 TEST_REQUIRES_X86_AVX2;
2555 for (size_t elements = 1; elements < 96; elements++) {
2556 RAddStoreExpMinusMaxMicrokernelTester()
2557 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002558 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002559 }
2560 }
2561
Marat Dukhan5999c922022-01-05 18:10:20 -08002562 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96, elements_gt_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002563 TEST_REQUIRES_X86_AVX2;
2564 for (size_t elements = 97; elements < 192; elements++) {
2565 RAddStoreExpMinusMaxMicrokernelTester()
2566 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002567 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002568 }
2569 }
2570#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2571
2572
2573#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002574 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC2, elements_eq_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002575 TEST_REQUIRES_X86_AVX2;
2576 RAddStoreExpMinusMaxMicrokernelTester()
2577 .elements(96)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002578 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002579 }
2580
Marat Dukhan5999c922022-01-05 18:10:20 -08002581 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC2, elements_div_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002582 TEST_REQUIRES_X86_AVX2;
2583 for (size_t elements = 192; elements < 960; elements += 96) {
2584 RAddStoreExpMinusMaxMicrokernelTester()
2585 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002586 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002587 }
2588 }
2589
Marat Dukhan5999c922022-01-05 18:10:20 -08002590 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC2, elements_lt_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002591 TEST_REQUIRES_X86_AVX2;
2592 for (size_t elements = 1; elements < 96; elements++) {
2593 RAddStoreExpMinusMaxMicrokernelTester()
2594 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002595 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002596 }
2597 }
2598
Marat Dukhan5999c922022-01-05 18:10:20 -08002599 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC2, elements_gt_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002600 TEST_REQUIRES_X86_AVX2;
2601 for (size_t elements = 97; elements < 192; elements++) {
2602 RAddStoreExpMinusMaxMicrokernelTester()
2603 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002604 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc2, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002605 }
2606 }
2607#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2608
2609
2610#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002611 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC3, elements_eq_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002612 TEST_REQUIRES_X86_AVX2;
2613 RAddStoreExpMinusMaxMicrokernelTester()
2614 .elements(96)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002615 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc3, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002616 }
2617
Marat Dukhan5999c922022-01-05 18:10:20 -08002618 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC3, elements_div_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002619 TEST_REQUIRES_X86_AVX2;
2620 for (size_t elements = 192; elements < 960; elements += 96) {
2621 RAddStoreExpMinusMaxMicrokernelTester()
2622 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002623 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc3, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002624 }
2625 }
2626
Marat Dukhan5999c922022-01-05 18:10:20 -08002627 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC3, elements_lt_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002628 TEST_REQUIRES_X86_AVX2;
2629 for (size_t elements = 1; elements < 96; elements++) {
2630 RAddStoreExpMinusMaxMicrokernelTester()
2631 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002632 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc3, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002633 }
2634 }
2635
Marat Dukhan5999c922022-01-05 18:10:20 -08002636 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC3, elements_gt_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002637 TEST_REQUIRES_X86_AVX2;
2638 for (size_t elements = 97; elements < 192; elements++) {
2639 RAddStoreExpMinusMaxMicrokernelTester()
2640 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002641 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc3, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002642 }
2643 }
2644#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2645
2646
2647#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002648 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC6, elements_eq_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002649 TEST_REQUIRES_X86_AVX2;
2650 RAddStoreExpMinusMaxMicrokernelTester()
2651 .elements(96)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002652 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc6, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002653 }
2654
Marat Dukhan5999c922022-01-05 18:10:20 -08002655 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC6, elements_div_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002656 TEST_REQUIRES_X86_AVX2;
2657 for (size_t elements = 192; elements < 960; elements += 96) {
2658 RAddStoreExpMinusMaxMicrokernelTester()
2659 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002660 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc6, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002661 }
2662 }
2663
Marat Dukhan5999c922022-01-05 18:10:20 -08002664 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC6, elements_lt_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002665 TEST_REQUIRES_X86_AVX2;
2666 for (size_t elements = 1; elements < 96; elements++) {
2667 RAddStoreExpMinusMaxMicrokernelTester()
2668 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002669 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc6, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002670 }
2671 }
2672
Marat Dukhan5999c922022-01-05 18:10:20 -08002673 TEST(F32_RADDSTOREEXPMINUSMAX__AVX2_RR1_P5_X96_ACC6, elements_gt_96) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002674 TEST_REQUIRES_X86_AVX2;
2675 for (size_t elements = 97; elements < 192; elements++) {
2676 RAddStoreExpMinusMaxMicrokernelTester()
2677 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002678 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx2_rr1_p5_x96_acc6, xnn_init_f32_expminus_avx2_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002679 }
2680 }
2681#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2682
2683
2684#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002685 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128, elements_eq_128) {
Marat Dukhan97579532019-10-18 16:40:39 -07002686 TEST_REQUIRES_X86_AVX512F;
2687 RAddStoreExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002688 .elements(128)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002689 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan97579532019-10-18 16:40:39 -07002690 }
2691
Marat Dukhan5999c922022-01-05 18:10:20 -08002692 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128, elements_div_128) {
Marat Dukhan97579532019-10-18 16:40:39 -07002693 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002694 for (size_t elements = 256; elements < 1280; elements += 128) {
Marat Dukhan97579532019-10-18 16:40:39 -07002695 RAddStoreExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002696 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002697 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan97579532019-10-18 16:40:39 -07002698 }
2699 }
2700
Marat Dukhan5999c922022-01-05 18:10:20 -08002701 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128, elements_lt_128) {
Marat Dukhan97579532019-10-18 16:40:39 -07002702 TEST_REQUIRES_X86_AVX512F;
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002703 for (size_t elements = 1; elements < 128; elements++) {
Marat Dukhan97579532019-10-18 16:40:39 -07002704 RAddStoreExpMinusMaxMicrokernelTester()
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002705 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002706 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan97579532019-10-18 16:40:39 -07002707 }
2708 }
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002709
Marat Dukhan5999c922022-01-05 18:10:20 -08002710 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128, elements_gt_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002711 TEST_REQUIRES_X86_AVX512F;
2712 for (size_t elements = 129; elements < 256; elements++) {
2713 RAddStoreExpMinusMaxMicrokernelTester()
2714 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002715 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002716 }
2717 }
2718#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2719
2720
2721#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002722 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128_ACC2, elements_eq_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002723 TEST_REQUIRES_X86_AVX512F;
2724 RAddStoreExpMinusMaxMicrokernelTester()
2725 .elements(128)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002726 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002727 }
2728
Marat Dukhan5999c922022-01-05 18:10:20 -08002729 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128_ACC2, elements_div_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002730 TEST_REQUIRES_X86_AVX512F;
2731 for (size_t elements = 256; elements < 1280; elements += 128) {
2732 RAddStoreExpMinusMaxMicrokernelTester()
2733 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002734 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002735 }
2736 }
2737
Marat Dukhan5999c922022-01-05 18:10:20 -08002738 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128_ACC2, elements_lt_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002739 TEST_REQUIRES_X86_AVX512F;
2740 for (size_t elements = 1; elements < 128; elements++) {
2741 RAddStoreExpMinusMaxMicrokernelTester()
2742 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002743 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002744 }
2745 }
2746
Marat Dukhan5999c922022-01-05 18:10:20 -08002747 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128_ACC2, elements_gt_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002748 TEST_REQUIRES_X86_AVX512F;
2749 for (size_t elements = 129; elements < 256; elements++) {
2750 RAddStoreExpMinusMaxMicrokernelTester()
2751 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002752 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002753 }
2754 }
2755#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2756
2757
2758#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002759 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128_ACC4, elements_eq_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002760 TEST_REQUIRES_X86_AVX512F;
2761 RAddStoreExpMinusMaxMicrokernelTester()
2762 .elements(128)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002763 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128_acc4, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002764 }
2765
Marat Dukhan5999c922022-01-05 18:10:20 -08002766 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128_ACC4, elements_div_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002767 TEST_REQUIRES_X86_AVX512F;
2768 for (size_t elements = 256; elements < 1280; elements += 128) {
2769 RAddStoreExpMinusMaxMicrokernelTester()
2770 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002771 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128_acc4, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002772 }
2773 }
2774
Marat Dukhan5999c922022-01-05 18:10:20 -08002775 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128_ACC4, elements_lt_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002776 TEST_REQUIRES_X86_AVX512F;
2777 for (size_t elements = 1; elements < 128; elements++) {
2778 RAddStoreExpMinusMaxMicrokernelTester()
2779 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002780 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128_acc4, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002781 }
2782 }
2783
Marat Dukhan5999c922022-01-05 18:10:20 -08002784 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X128_ACC4, elements_gt_128) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002785 TEST_REQUIRES_X86_AVX512F;
2786 for (size_t elements = 129; elements < 256; elements++) {
2787 RAddStoreExpMinusMaxMicrokernelTester()
2788 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002789 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x128_acc4, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002790 }
2791 }
2792#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2793
2794
2795#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002796 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X144, elements_eq_144) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002797 TEST_REQUIRES_X86_AVX512F;
2798 RAddStoreExpMinusMaxMicrokernelTester()
2799 .elements(144)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002800 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x144, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002801 }
2802
Marat Dukhan5999c922022-01-05 18:10:20 -08002803 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X144, elements_div_144) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002804 TEST_REQUIRES_X86_AVX512F;
2805 for (size_t elements = 288; elements < 1440; elements += 144) {
2806 RAddStoreExpMinusMaxMicrokernelTester()
2807 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002808 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x144, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002809 }
2810 }
2811
Marat Dukhan5999c922022-01-05 18:10:20 -08002812 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X144, elements_lt_144) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002813 TEST_REQUIRES_X86_AVX512F;
2814 for (size_t elements = 1; elements < 144; elements++) {
2815 RAddStoreExpMinusMaxMicrokernelTester()
2816 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002817 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x144, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002818 }
2819 }
2820
Marat Dukhan5999c922022-01-05 18:10:20 -08002821 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X144, elements_gt_144) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002822 TEST_REQUIRES_X86_AVX512F;
2823 for (size_t elements = 145; elements < 288; elements++) {
2824 RAddStoreExpMinusMaxMicrokernelTester()
2825 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002826 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x144, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002827 }
2828 }
2829#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2830
2831
2832#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002833 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X144_ACC3, elements_eq_144) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002834 TEST_REQUIRES_X86_AVX512F;
2835 RAddStoreExpMinusMaxMicrokernelTester()
2836 .elements(144)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002837 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x144_acc3, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002838 }
2839
Marat Dukhan5999c922022-01-05 18:10:20 -08002840 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X144_ACC3, elements_div_144) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002841 TEST_REQUIRES_X86_AVX512F;
2842 for (size_t elements = 288; elements < 1440; elements += 144) {
2843 RAddStoreExpMinusMaxMicrokernelTester()
2844 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002845 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x144_acc3, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002846 }
2847 }
2848
Marat Dukhan5999c922022-01-05 18:10:20 -08002849 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X144_ACC3, elements_lt_144) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002850 TEST_REQUIRES_X86_AVX512F;
2851 for (size_t elements = 1; elements < 144; elements++) {
2852 RAddStoreExpMinusMaxMicrokernelTester()
2853 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002854 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x144_acc3, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002855 }
2856 }
2857
Marat Dukhan5999c922022-01-05 18:10:20 -08002858 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X144_ACC3, elements_gt_144) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002859 TEST_REQUIRES_X86_AVX512F;
2860 for (size_t elements = 145; elements < 288; elements++) {
2861 RAddStoreExpMinusMaxMicrokernelTester()
2862 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002863 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x144_acc3, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002864 }
2865 }
2866#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2867
2868
2869#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002870 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160, elements_eq_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002871 TEST_REQUIRES_X86_AVX512F;
2872 RAddStoreExpMinusMaxMicrokernelTester()
2873 .elements(160)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002874 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002875 }
2876
Marat Dukhan5999c922022-01-05 18:10:20 -08002877 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160, elements_div_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002878 TEST_REQUIRES_X86_AVX512F;
2879 for (size_t elements = 320; elements < 1600; elements += 160) {
2880 RAddStoreExpMinusMaxMicrokernelTester()
2881 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002882 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002883 }
2884 }
2885
Marat Dukhan5999c922022-01-05 18:10:20 -08002886 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160, elements_lt_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002887 TEST_REQUIRES_X86_AVX512F;
2888 for (size_t elements = 1; elements < 160; elements++) {
2889 RAddStoreExpMinusMaxMicrokernelTester()
2890 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002891 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002892 }
2893 }
2894
Marat Dukhan5999c922022-01-05 18:10:20 -08002895 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160, elements_gt_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002896 TEST_REQUIRES_X86_AVX512F;
2897 for (size_t elements = 161; elements < 320; elements++) {
2898 RAddStoreExpMinusMaxMicrokernelTester()
2899 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002900 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002901 }
2902 }
2903#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2904
2905
2906#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002907 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160_ACC2, elements_eq_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002908 TEST_REQUIRES_X86_AVX512F;
2909 RAddStoreExpMinusMaxMicrokernelTester()
2910 .elements(160)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002911 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002912 }
2913
Marat Dukhan5999c922022-01-05 18:10:20 -08002914 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160_ACC2, elements_div_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002915 TEST_REQUIRES_X86_AVX512F;
2916 for (size_t elements = 320; elements < 1600; elements += 160) {
2917 RAddStoreExpMinusMaxMicrokernelTester()
2918 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002919 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002920 }
2921 }
2922
Marat Dukhan5999c922022-01-05 18:10:20 -08002923 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160_ACC2, elements_lt_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002924 TEST_REQUIRES_X86_AVX512F;
2925 for (size_t elements = 1; elements < 160; elements++) {
2926 RAddStoreExpMinusMaxMicrokernelTester()
2927 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002928 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002929 }
2930 }
2931
Marat Dukhan5999c922022-01-05 18:10:20 -08002932 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160_ACC2, elements_gt_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002933 TEST_REQUIRES_X86_AVX512F;
2934 for (size_t elements = 161; elements < 320; elements++) {
2935 RAddStoreExpMinusMaxMicrokernelTester()
2936 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002937 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002938 }
2939 }
2940#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2941
2942
2943#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002944 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160_ACC5, elements_eq_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002945 TEST_REQUIRES_X86_AVX512F;
2946 RAddStoreExpMinusMaxMicrokernelTester()
2947 .elements(160)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002948 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160_acc5, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002949 }
2950
Marat Dukhan5999c922022-01-05 18:10:20 -08002951 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160_ACC5, elements_div_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002952 TEST_REQUIRES_X86_AVX512F;
2953 for (size_t elements = 320; elements < 1600; elements += 160) {
2954 RAddStoreExpMinusMaxMicrokernelTester()
2955 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002956 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160_acc5, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002957 }
2958 }
2959
Marat Dukhan5999c922022-01-05 18:10:20 -08002960 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160_ACC5, elements_lt_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002961 TEST_REQUIRES_X86_AVX512F;
2962 for (size_t elements = 1; elements < 160; elements++) {
2963 RAddStoreExpMinusMaxMicrokernelTester()
2964 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002965 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160_acc5, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002966 }
2967 }
2968
Marat Dukhan5999c922022-01-05 18:10:20 -08002969 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X160_ACC5, elements_gt_160) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002970 TEST_REQUIRES_X86_AVX512F;
2971 for (size_t elements = 161; elements < 320; elements++) {
2972 RAddStoreExpMinusMaxMicrokernelTester()
2973 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002974 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x160_acc5, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002975 }
2976 }
2977#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2978
2979
2980#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08002981 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192, elements_eq_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002982 TEST_REQUIRES_X86_AVX512F;
2983 RAddStoreExpMinusMaxMicrokernelTester()
2984 .elements(192)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002985 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002986 }
2987
Marat Dukhan5999c922022-01-05 18:10:20 -08002988 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192, elements_div_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002989 TEST_REQUIRES_X86_AVX512F;
2990 for (size_t elements = 384; elements < 1920; elements += 192) {
2991 RAddStoreExpMinusMaxMicrokernelTester()
2992 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08002993 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002994 }
2995 }
2996
Marat Dukhan5999c922022-01-05 18:10:20 -08002997 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192, elements_lt_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08002998 TEST_REQUIRES_X86_AVX512F;
2999 for (size_t elements = 1; elements < 192; elements++) {
3000 RAddStoreExpMinusMaxMicrokernelTester()
3001 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003002 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003003 }
3004 }
3005
Marat Dukhan5999c922022-01-05 18:10:20 -08003006 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192, elements_gt_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003007 TEST_REQUIRES_X86_AVX512F;
3008 for (size_t elements = 193; elements < 384; elements++) {
3009 RAddStoreExpMinusMaxMicrokernelTester()
3010 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003011 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003012 }
3013 }
3014#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3015
3016
3017#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08003018 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC2, elements_eq_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003019 TEST_REQUIRES_X86_AVX512F;
3020 RAddStoreExpMinusMaxMicrokernelTester()
3021 .elements(192)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003022 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003023 }
3024
Marat Dukhan5999c922022-01-05 18:10:20 -08003025 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC2, elements_div_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003026 TEST_REQUIRES_X86_AVX512F;
3027 for (size_t elements = 384; elements < 1920; elements += 192) {
3028 RAddStoreExpMinusMaxMicrokernelTester()
3029 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003030 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003031 }
3032 }
3033
Marat Dukhan5999c922022-01-05 18:10:20 -08003034 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC2, elements_lt_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003035 TEST_REQUIRES_X86_AVX512F;
3036 for (size_t elements = 1; elements < 192; elements++) {
3037 RAddStoreExpMinusMaxMicrokernelTester()
3038 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003039 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003040 }
3041 }
3042
Marat Dukhan5999c922022-01-05 18:10:20 -08003043 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC2, elements_gt_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003044 TEST_REQUIRES_X86_AVX512F;
3045 for (size_t elements = 193; elements < 384; elements++) {
3046 RAddStoreExpMinusMaxMicrokernelTester()
3047 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003048 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc2, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003049 }
3050 }
3051#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3052
3053
3054#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08003055 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC3, elements_eq_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003056 TEST_REQUIRES_X86_AVX512F;
3057 RAddStoreExpMinusMaxMicrokernelTester()
3058 .elements(192)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003059 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc3, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003060 }
3061
Marat Dukhan5999c922022-01-05 18:10:20 -08003062 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC3, elements_div_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003063 TEST_REQUIRES_X86_AVX512F;
3064 for (size_t elements = 384; elements < 1920; elements += 192) {
3065 RAddStoreExpMinusMaxMicrokernelTester()
3066 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003067 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc3, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003068 }
3069 }
3070
Marat Dukhan5999c922022-01-05 18:10:20 -08003071 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC3, elements_lt_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003072 TEST_REQUIRES_X86_AVX512F;
3073 for (size_t elements = 1; elements < 192; elements++) {
3074 RAddStoreExpMinusMaxMicrokernelTester()
3075 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003076 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc3, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003077 }
3078 }
3079
Marat Dukhan5999c922022-01-05 18:10:20 -08003080 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC3, elements_gt_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003081 TEST_REQUIRES_X86_AVX512F;
3082 for (size_t elements = 193; elements < 384; elements++) {
3083 RAddStoreExpMinusMaxMicrokernelTester()
3084 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003085 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc3, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003086 }
3087 }
3088#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
3089
3090
3091#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan5999c922022-01-05 18:10:20 -08003092 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC6, elements_eq_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003093 TEST_REQUIRES_X86_AVX512F;
3094 RAddStoreExpMinusMaxMicrokernelTester()
3095 .elements(192)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003096 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc6, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003097 }
3098
Marat Dukhan5999c922022-01-05 18:10:20 -08003099 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC6, elements_div_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003100 TEST_REQUIRES_X86_AVX512F;
3101 for (size_t elements = 384; elements < 1920; elements += 192) {
3102 RAddStoreExpMinusMaxMicrokernelTester()
3103 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003104 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc6, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003105 }
3106 }
3107
Marat Dukhan5999c922022-01-05 18:10:20 -08003108 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC6, elements_lt_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003109 TEST_REQUIRES_X86_AVX512F;
3110 for (size_t elements = 1; elements < 192; elements++) {
3111 RAddStoreExpMinusMaxMicrokernelTester()
3112 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003113 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc6, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003114 }
3115 }
3116
Marat Dukhan5999c922022-01-05 18:10:20 -08003117 TEST(F32_RADDSTOREEXPMINUSMAX__AVX512F_RR1_P5_SCALEF_X192_ACC6, elements_gt_192) {
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003118 TEST_REQUIRES_X86_AVX512F;
3119 for (size_t elements = 193; elements < 384; elements++) {
3120 RAddStoreExpMinusMaxMicrokernelTester()
3121 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003122 .Test(xnn_f32_raddstoreexpminusmax_ukernel__avx512f_rr1_p5_scalef_x192_acc6, xnn_init_f32_expminus_avx512_rr1_p5_params);
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003123 }
3124 }
3125#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhanf46f6752020-01-21 11:03:49 -08003126
3127
Marat Dukhan4c617792021-12-21 15:47:58 -08003128#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003129 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X4, elements_eq_4) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003130 RAddStoreExpMinusMaxMicrokernelTester()
3131 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003132 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x4, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003133 }
3134
Marat Dukhan5999c922022-01-05 18:10:20 -08003135 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X4, elements_div_4) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003136 for (size_t elements = 8; elements < 40; elements += 4) {
3137 RAddStoreExpMinusMaxMicrokernelTester()
3138 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003139 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x4, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003140 }
3141 }
3142
Marat Dukhan5999c922022-01-05 18:10:20 -08003143 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X4, elements_lt_4) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003144 for (size_t elements = 1; elements < 4; elements++) {
3145 RAddStoreExpMinusMaxMicrokernelTester()
3146 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003147 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x4, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003148 }
3149 }
3150
Marat Dukhan5999c922022-01-05 18:10:20 -08003151 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X4, elements_gt_4) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003152 for (size_t elements = 5; elements < 8; elements++) {
3153 RAddStoreExpMinusMaxMicrokernelTester()
3154 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003155 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x4, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003156 }
3157 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003158#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003159
3160
Marat Dukhan4c617792021-12-21 15:47:58 -08003161#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003162 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X8, elements_eq_8) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003163 RAddStoreExpMinusMaxMicrokernelTester()
3164 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003165 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x8, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003166 }
3167
Marat Dukhan5999c922022-01-05 18:10:20 -08003168 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X8, elements_div_8) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003169 for (size_t elements = 16; elements < 80; elements += 8) {
3170 RAddStoreExpMinusMaxMicrokernelTester()
3171 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003172 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x8, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003173 }
3174 }
3175
Marat Dukhan5999c922022-01-05 18:10:20 -08003176 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X8, elements_lt_8) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003177 for (size_t elements = 1; elements < 8; elements++) {
3178 RAddStoreExpMinusMaxMicrokernelTester()
3179 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003180 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x8, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003181 }
3182 }
3183
Marat Dukhan5999c922022-01-05 18:10:20 -08003184 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X8, elements_gt_8) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003185 for (size_t elements = 9; elements < 16; elements++) {
3186 RAddStoreExpMinusMaxMicrokernelTester()
3187 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003188 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x8, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003189 }
3190 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003191#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003192
3193
Marat Dukhan4c617792021-12-21 15:47:58 -08003194#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003195 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X8_ACC2, elements_eq_8) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003196 RAddStoreExpMinusMaxMicrokernelTester()
3197 .elements(8)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003198 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x8_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003199 }
3200
Marat Dukhan5999c922022-01-05 18:10:20 -08003201 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X8_ACC2, elements_div_8) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003202 for (size_t elements = 16; elements < 80; elements += 8) {
3203 RAddStoreExpMinusMaxMicrokernelTester()
3204 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003205 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x8_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003206 }
3207 }
3208
Marat Dukhan5999c922022-01-05 18:10:20 -08003209 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X8_ACC2, elements_lt_8) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003210 for (size_t elements = 1; elements < 8; elements++) {
3211 RAddStoreExpMinusMaxMicrokernelTester()
3212 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003213 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x8_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003214 }
3215 }
3216
Marat Dukhan5999c922022-01-05 18:10:20 -08003217 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X8_ACC2, elements_gt_8) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003218 for (size_t elements = 9; elements < 16; elements++) {
3219 RAddStoreExpMinusMaxMicrokernelTester()
3220 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003221 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x8_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003222 }
3223 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003224#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003225
3226
Marat Dukhan4c617792021-12-21 15:47:58 -08003227#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003228 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12, elements_eq_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003229 RAddStoreExpMinusMaxMicrokernelTester()
3230 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003231 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003232 }
3233
Marat Dukhan5999c922022-01-05 18:10:20 -08003234 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12, elements_div_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003235 for (size_t elements = 24; elements < 120; elements += 12) {
3236 RAddStoreExpMinusMaxMicrokernelTester()
3237 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003238 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003239 }
3240 }
3241
Marat Dukhan5999c922022-01-05 18:10:20 -08003242 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12, elements_lt_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003243 for (size_t elements = 1; elements < 12; elements++) {
3244 RAddStoreExpMinusMaxMicrokernelTester()
3245 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003246 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003247 }
3248 }
3249
Marat Dukhan5999c922022-01-05 18:10:20 -08003250 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12, elements_gt_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003251 for (size_t elements = 13; elements < 24; elements++) {
3252 RAddStoreExpMinusMaxMicrokernelTester()
3253 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003254 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003255 }
3256 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003257#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003258
3259
Marat Dukhan4c617792021-12-21 15:47:58 -08003260#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003261 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12_ACC2, elements_eq_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003262 RAddStoreExpMinusMaxMicrokernelTester()
3263 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003264 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003265 }
3266
Marat Dukhan5999c922022-01-05 18:10:20 -08003267 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12_ACC2, elements_div_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003268 for (size_t elements = 24; elements < 120; elements += 12) {
3269 RAddStoreExpMinusMaxMicrokernelTester()
3270 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003271 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003272 }
3273 }
3274
Marat Dukhan5999c922022-01-05 18:10:20 -08003275 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12_ACC2, elements_lt_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003276 for (size_t elements = 1; elements < 12; elements++) {
3277 RAddStoreExpMinusMaxMicrokernelTester()
3278 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003279 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003280 }
3281 }
3282
Marat Dukhan5999c922022-01-05 18:10:20 -08003283 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12_ACC2, elements_gt_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003284 for (size_t elements = 13; elements < 24; elements++) {
3285 RAddStoreExpMinusMaxMicrokernelTester()
3286 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003287 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003288 }
3289 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003290#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003291
3292
Marat Dukhan4c617792021-12-21 15:47:58 -08003293#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003294 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12_ACC3, elements_eq_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003295 RAddStoreExpMinusMaxMicrokernelTester()
3296 .elements(12)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003297 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12_acc3, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003298 }
3299
Marat Dukhan5999c922022-01-05 18:10:20 -08003300 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12_ACC3, elements_div_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003301 for (size_t elements = 24; elements < 120; elements += 12) {
3302 RAddStoreExpMinusMaxMicrokernelTester()
3303 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003304 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12_acc3, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003305 }
3306 }
3307
Marat Dukhan5999c922022-01-05 18:10:20 -08003308 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12_ACC3, elements_lt_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003309 for (size_t elements = 1; elements < 12; elements++) {
3310 RAddStoreExpMinusMaxMicrokernelTester()
3311 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003312 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12_acc3, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003313 }
3314 }
3315
Marat Dukhan5999c922022-01-05 18:10:20 -08003316 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X12_ACC3, elements_gt_12) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003317 for (size_t elements = 13; elements < 24; elements++) {
3318 RAddStoreExpMinusMaxMicrokernelTester()
3319 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003320 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x12_acc3, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003321 }
3322 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003323#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003324
3325
Marat Dukhan4c617792021-12-21 15:47:58 -08003326#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003327 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16, elements_eq_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003328 RAddStoreExpMinusMaxMicrokernelTester()
3329 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003330 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003331 }
3332
Marat Dukhan5999c922022-01-05 18:10:20 -08003333 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16, elements_div_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003334 for (size_t elements = 32; elements < 160; elements += 16) {
3335 RAddStoreExpMinusMaxMicrokernelTester()
3336 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003337 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003338 }
3339 }
3340
Marat Dukhan5999c922022-01-05 18:10:20 -08003341 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16, elements_lt_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003342 for (size_t elements = 1; elements < 16; elements++) {
3343 RAddStoreExpMinusMaxMicrokernelTester()
3344 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003345 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003346 }
3347 }
3348
Marat Dukhan5999c922022-01-05 18:10:20 -08003349 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16, elements_gt_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003350 for (size_t elements = 17; elements < 32; elements++) {
3351 RAddStoreExpMinusMaxMicrokernelTester()
3352 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003353 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003354 }
3355 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003356#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003357
3358
Marat Dukhan4c617792021-12-21 15:47:58 -08003359#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003360 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16_ACC2, elements_eq_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003361 RAddStoreExpMinusMaxMicrokernelTester()
3362 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003363 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003364 }
3365
Marat Dukhan5999c922022-01-05 18:10:20 -08003366 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16_ACC2, elements_div_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003367 for (size_t elements = 32; elements < 160; elements += 16) {
3368 RAddStoreExpMinusMaxMicrokernelTester()
3369 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003370 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003371 }
3372 }
3373
Marat Dukhan5999c922022-01-05 18:10:20 -08003374 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16_ACC2, elements_lt_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003375 for (size_t elements = 1; elements < 16; elements++) {
3376 RAddStoreExpMinusMaxMicrokernelTester()
3377 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003378 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003379 }
3380 }
3381
Marat Dukhan5999c922022-01-05 18:10:20 -08003382 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16_ACC2, elements_gt_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003383 for (size_t elements = 17; elements < 32; elements++) {
3384 RAddStoreExpMinusMaxMicrokernelTester()
3385 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003386 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003387 }
3388 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003389#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003390
3391
Marat Dukhan4c617792021-12-21 15:47:58 -08003392#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003393 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16_ACC4, elements_eq_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003394 RAddStoreExpMinusMaxMicrokernelTester()
3395 .elements(16)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003396 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16_acc4, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003397 }
3398
Marat Dukhan5999c922022-01-05 18:10:20 -08003399 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16_ACC4, elements_div_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003400 for (size_t elements = 32; elements < 160; elements += 16) {
3401 RAddStoreExpMinusMaxMicrokernelTester()
3402 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003403 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16_acc4, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003404 }
3405 }
3406
Marat Dukhan5999c922022-01-05 18:10:20 -08003407 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16_ACC4, elements_lt_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003408 for (size_t elements = 1; elements < 16; elements++) {
3409 RAddStoreExpMinusMaxMicrokernelTester()
3410 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003411 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16_acc4, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003412 }
3413 }
3414
Marat Dukhan5999c922022-01-05 18:10:20 -08003415 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X16_ACC4, elements_gt_16) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003416 for (size_t elements = 17; elements < 32; elements++) {
3417 RAddStoreExpMinusMaxMicrokernelTester()
3418 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003419 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x16_acc4, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003420 }
3421 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003422#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003423
3424
Marat Dukhan4c617792021-12-21 15:47:58 -08003425#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003426 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20, elements_eq_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003427 RAddStoreExpMinusMaxMicrokernelTester()
3428 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003429 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003430 }
3431
Marat Dukhan5999c922022-01-05 18:10:20 -08003432 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20, elements_div_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003433 for (size_t elements = 40; elements < 200; elements += 20) {
3434 RAddStoreExpMinusMaxMicrokernelTester()
3435 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003436 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003437 }
3438 }
3439
Marat Dukhan5999c922022-01-05 18:10:20 -08003440 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20, elements_lt_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003441 for (size_t elements = 1; elements < 20; elements++) {
3442 RAddStoreExpMinusMaxMicrokernelTester()
3443 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003444 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003445 }
3446 }
3447
Marat Dukhan5999c922022-01-05 18:10:20 -08003448 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20, elements_gt_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003449 for (size_t elements = 21; elements < 40; elements++) {
3450 RAddStoreExpMinusMaxMicrokernelTester()
3451 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003452 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003453 }
3454 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003455#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003456
3457
Marat Dukhan4c617792021-12-21 15:47:58 -08003458#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003459 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20_ACC2, elements_eq_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003460 RAddStoreExpMinusMaxMicrokernelTester()
3461 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003462 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003463 }
3464
Marat Dukhan5999c922022-01-05 18:10:20 -08003465 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20_ACC2, elements_div_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003466 for (size_t elements = 40; elements < 200; elements += 20) {
3467 RAddStoreExpMinusMaxMicrokernelTester()
3468 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003469 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003470 }
3471 }
3472
Marat Dukhan5999c922022-01-05 18:10:20 -08003473 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20_ACC2, elements_lt_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003474 for (size_t elements = 1; elements < 20; elements++) {
3475 RAddStoreExpMinusMaxMicrokernelTester()
3476 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003477 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003478 }
3479 }
3480
Marat Dukhan5999c922022-01-05 18:10:20 -08003481 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20_ACC2, elements_gt_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003482 for (size_t elements = 21; elements < 40; elements++) {
3483 RAddStoreExpMinusMaxMicrokernelTester()
3484 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003485 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20_acc2, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003486 }
3487 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003488#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003489
3490
Marat Dukhan4c617792021-12-21 15:47:58 -08003491#if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan5999c922022-01-05 18:10:20 -08003492 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20_ACC5, elements_eq_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003493 RAddStoreExpMinusMaxMicrokernelTester()
3494 .elements(20)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003495 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20_acc5, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003496 }
3497
Marat Dukhan5999c922022-01-05 18:10:20 -08003498 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20_ACC5, elements_div_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003499 for (size_t elements = 40; elements < 200; elements += 20) {
3500 RAddStoreExpMinusMaxMicrokernelTester()
3501 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003502 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20_acc5, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003503 }
3504 }
3505
Marat Dukhan5999c922022-01-05 18:10:20 -08003506 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20_ACC5, elements_lt_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003507 for (size_t elements = 1; elements < 20; elements++) {
3508 RAddStoreExpMinusMaxMicrokernelTester()
3509 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003510 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20_acc5, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003511 }
3512 }
3513
Marat Dukhan5999c922022-01-05 18:10:20 -08003514 TEST(F32_RADDSTOREEXPMINUSMAX__WASMSIMD_RR2_P5_X20_ACC5, elements_gt_20) {
Marat Dukhan52238f02020-07-16 15:30:28 -07003515 for (size_t elements = 21; elements < 40; elements++) {
3516 RAddStoreExpMinusMaxMicrokernelTester()
3517 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003518 .Test(xnn_f32_raddstoreexpminusmax_ukernel__wasmsimd_rr2_p5_x20_acc5, xnn_init_f32_expminus_wasmsimd_rr2_p5_params);
Marat Dukhan52238f02020-07-16 15:30:28 -07003519 }
3520 }
Marat Dukhan4c617792021-12-21 15:47:58 -08003521#endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
Marat Dukhan52238f02020-07-16 15:30:28 -07003522
3523
Marat Dukhan5999c922022-01-05 18:10:20 -08003524TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X1, elements_eq_1) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003525 RAddStoreExpMinusMaxMicrokernelTester()
3526 .elements(1)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003527 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x1, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003528}
3529
Marat Dukhan5999c922022-01-05 18:10:20 -08003530TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X1, elements_gt_1) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003531 for (size_t elements = 2; elements < 10; elements++) {
3532 RAddStoreExpMinusMaxMicrokernelTester()
3533 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003534 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x1, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003535 }
3536}
3537
Marat Dukhan5999c922022-01-05 18:10:20 -08003538TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X2, elements_eq_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003539 RAddStoreExpMinusMaxMicrokernelTester()
3540 .elements(2)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003541 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003542}
3543
Marat Dukhan5999c922022-01-05 18:10:20 -08003544TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X2, elements_div_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003545 for (size_t elements = 4; elements < 20; elements += 2) {
3546 RAddStoreExpMinusMaxMicrokernelTester()
3547 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003548 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003549 }
3550}
3551
Marat Dukhan5999c922022-01-05 18:10:20 -08003552TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X2, elements_lt_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003553 for (size_t elements = 1; elements < 2; elements++) {
3554 RAddStoreExpMinusMaxMicrokernelTester()
3555 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003556 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003557 }
3558}
3559
Marat Dukhan5999c922022-01-05 18:10:20 -08003560TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X2, elements_gt_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003561 for (size_t elements = 3; elements < 4; elements++) {
3562 RAddStoreExpMinusMaxMicrokernelTester()
3563 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003564 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003565 }
3566}
3567
Marat Dukhan5999c922022-01-05 18:10:20 -08003568TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X2_ACC2, elements_eq_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003569 RAddStoreExpMinusMaxMicrokernelTester()
3570 .elements(2)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003571 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x2_acc2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003572}
3573
Marat Dukhan5999c922022-01-05 18:10:20 -08003574TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X2_ACC2, elements_div_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003575 for (size_t elements = 4; elements < 20; elements += 2) {
3576 RAddStoreExpMinusMaxMicrokernelTester()
3577 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003578 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x2_acc2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003579 }
3580}
3581
Marat Dukhan5999c922022-01-05 18:10:20 -08003582TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X2_ACC2, elements_lt_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003583 for (size_t elements = 1; elements < 2; elements++) {
3584 RAddStoreExpMinusMaxMicrokernelTester()
3585 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003586 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x2_acc2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003587 }
3588}
3589
Marat Dukhan5999c922022-01-05 18:10:20 -08003590TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X2_ACC2, elements_gt_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003591 for (size_t elements = 3; elements < 4; elements++) {
3592 RAddStoreExpMinusMaxMicrokernelTester()
3593 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003594 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x2_acc2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003595 }
3596}
3597
Marat Dukhan5999c922022-01-05 18:10:20 -08003598TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4, elements_eq_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003599 RAddStoreExpMinusMaxMicrokernelTester()
3600 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003601 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003602}
3603
Marat Dukhan5999c922022-01-05 18:10:20 -08003604TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4, elements_div_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003605 for (size_t elements = 8; elements < 40; elements += 4) {
3606 RAddStoreExpMinusMaxMicrokernelTester()
3607 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003608 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003609 }
3610}
3611
Marat Dukhan5999c922022-01-05 18:10:20 -08003612TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4, elements_lt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003613 for (size_t elements = 1; elements < 4; elements++) {
3614 RAddStoreExpMinusMaxMicrokernelTester()
3615 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003616 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003617 }
3618}
3619
Marat Dukhan5999c922022-01-05 18:10:20 -08003620TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4, elements_gt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003621 for (size_t elements = 5; elements < 8; elements++) {
3622 RAddStoreExpMinusMaxMicrokernelTester()
3623 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003624 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003625 }
3626}
3627
Marat Dukhan5999c922022-01-05 18:10:20 -08003628TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4_ACC2, elements_eq_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003629 RAddStoreExpMinusMaxMicrokernelTester()
3630 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003631 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4_acc2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003632}
3633
Marat Dukhan5999c922022-01-05 18:10:20 -08003634TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4_ACC2, elements_div_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003635 for (size_t elements = 8; elements < 40; elements += 4) {
3636 RAddStoreExpMinusMaxMicrokernelTester()
3637 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003638 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4_acc2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003639 }
3640}
3641
Marat Dukhan5999c922022-01-05 18:10:20 -08003642TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4_ACC2, elements_lt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003643 for (size_t elements = 1; elements < 4; elements++) {
3644 RAddStoreExpMinusMaxMicrokernelTester()
3645 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003646 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4_acc2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003647 }
3648}
3649
Marat Dukhan5999c922022-01-05 18:10:20 -08003650TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4_ACC2, elements_gt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003651 for (size_t elements = 5; elements < 8; elements++) {
3652 RAddStoreExpMinusMaxMicrokernelTester()
3653 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003654 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4_acc2, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003655 }
3656}
3657
Marat Dukhan5999c922022-01-05 18:10:20 -08003658TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4_ACC4, elements_eq_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003659 RAddStoreExpMinusMaxMicrokernelTester()
3660 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003661 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4_acc4, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003662}
3663
Marat Dukhan5999c922022-01-05 18:10:20 -08003664TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4_ACC4, elements_div_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003665 for (size_t elements = 8; elements < 40; elements += 4) {
3666 RAddStoreExpMinusMaxMicrokernelTester()
3667 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003668 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4_acc4, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003669 }
3670}
3671
Marat Dukhan5999c922022-01-05 18:10:20 -08003672TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4_ACC4, elements_lt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003673 for (size_t elements = 1; elements < 4; elements++) {
3674 RAddStoreExpMinusMaxMicrokernelTester()
3675 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003676 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4_acc4, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003677 }
3678}
3679
Marat Dukhan5999c922022-01-05 18:10:20 -08003680TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_P5_X4_ACC4, elements_gt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003681 for (size_t elements = 5; elements < 8; elements++) {
3682 RAddStoreExpMinusMaxMicrokernelTester()
3683 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003684 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_p5_x4_acc4, xnn_init_f32_expminus_scalar_rr2_p5_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003685 }
3686}
3687
Marat Dukhan5999c922022-01-05 18:10:20 -08003688TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X1, elements_eq_1) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003689 RAddStoreExpMinusMaxMicrokernelTester()
3690 .elements(1)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003691 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x1, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003692}
3693
Marat Dukhan5999c922022-01-05 18:10:20 -08003694TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X1, elements_gt_1) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003695 for (size_t elements = 2; elements < 10; elements++) {
3696 RAddStoreExpMinusMaxMicrokernelTester()
3697 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003698 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x1, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003699 }
3700}
3701
Marat Dukhan5999c922022-01-05 18:10:20 -08003702TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X2, elements_eq_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003703 RAddStoreExpMinusMaxMicrokernelTester()
3704 .elements(2)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003705 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003706}
3707
Marat Dukhan5999c922022-01-05 18:10:20 -08003708TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X2, elements_div_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003709 for (size_t elements = 4; elements < 20; elements += 2) {
3710 RAddStoreExpMinusMaxMicrokernelTester()
3711 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003712 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003713 }
3714}
3715
Marat Dukhan5999c922022-01-05 18:10:20 -08003716TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X2, elements_lt_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003717 for (size_t elements = 1; elements < 2; elements++) {
3718 RAddStoreExpMinusMaxMicrokernelTester()
3719 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003720 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003721 }
3722}
3723
Marat Dukhan5999c922022-01-05 18:10:20 -08003724TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X2, elements_gt_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003725 for (size_t elements = 3; elements < 4; elements++) {
3726 RAddStoreExpMinusMaxMicrokernelTester()
3727 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003728 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003729 }
3730}
3731
Marat Dukhan5999c922022-01-05 18:10:20 -08003732TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X2_ACC2, elements_eq_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003733 RAddStoreExpMinusMaxMicrokernelTester()
3734 .elements(2)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003735 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x2_acc2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003736}
3737
Marat Dukhan5999c922022-01-05 18:10:20 -08003738TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X2_ACC2, elements_div_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003739 for (size_t elements = 4; elements < 20; elements += 2) {
3740 RAddStoreExpMinusMaxMicrokernelTester()
3741 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003742 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x2_acc2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003743 }
3744}
3745
Marat Dukhan5999c922022-01-05 18:10:20 -08003746TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X2_ACC2, elements_lt_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003747 for (size_t elements = 1; elements < 2; elements++) {
3748 RAddStoreExpMinusMaxMicrokernelTester()
3749 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003750 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x2_acc2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003751 }
3752}
3753
Marat Dukhan5999c922022-01-05 18:10:20 -08003754TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X2_ACC2, elements_gt_2) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003755 for (size_t elements = 3; elements < 4; elements++) {
3756 RAddStoreExpMinusMaxMicrokernelTester()
3757 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003758 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x2_acc2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003759 }
3760}
3761
Marat Dukhan5999c922022-01-05 18:10:20 -08003762TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4, elements_eq_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003763 RAddStoreExpMinusMaxMicrokernelTester()
3764 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003765 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003766}
3767
Marat Dukhan5999c922022-01-05 18:10:20 -08003768TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4, elements_div_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003769 for (size_t elements = 8; elements < 40; elements += 4) {
3770 RAddStoreExpMinusMaxMicrokernelTester()
3771 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003772 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003773 }
3774}
3775
Marat Dukhan5999c922022-01-05 18:10:20 -08003776TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4, elements_lt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003777 for (size_t elements = 1; elements < 4; elements++) {
3778 RAddStoreExpMinusMaxMicrokernelTester()
3779 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003780 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003781 }
3782}
3783
Marat Dukhan5999c922022-01-05 18:10:20 -08003784TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4, elements_gt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003785 for (size_t elements = 5; elements < 8; elements++) {
3786 RAddStoreExpMinusMaxMicrokernelTester()
3787 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003788 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003789 }
3790}
3791
Marat Dukhan5999c922022-01-05 18:10:20 -08003792TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4_ACC2, elements_eq_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003793 RAddStoreExpMinusMaxMicrokernelTester()
3794 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003795 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4_acc2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003796}
3797
Marat Dukhan5999c922022-01-05 18:10:20 -08003798TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4_ACC2, elements_div_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003799 for (size_t elements = 8; elements < 40; elements += 4) {
3800 RAddStoreExpMinusMaxMicrokernelTester()
3801 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003802 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4_acc2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003803 }
3804}
3805
Marat Dukhan5999c922022-01-05 18:10:20 -08003806TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4_ACC2, elements_lt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003807 for (size_t elements = 1; elements < 4; elements++) {
3808 RAddStoreExpMinusMaxMicrokernelTester()
3809 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003810 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4_acc2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003811 }
3812}
3813
Marat Dukhan5999c922022-01-05 18:10:20 -08003814TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4_ACC2, elements_gt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003815 for (size_t elements = 5; elements < 8; elements++) {
3816 RAddStoreExpMinusMaxMicrokernelTester()
3817 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003818 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4_acc2, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003819 }
3820}
3821
Marat Dukhan5999c922022-01-05 18:10:20 -08003822TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4_ACC4, elements_eq_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003823 RAddStoreExpMinusMaxMicrokernelTester()
3824 .elements(4)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003825 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4_acc4, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003826}
3827
Marat Dukhan5999c922022-01-05 18:10:20 -08003828TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4_ACC4, elements_div_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003829 for (size_t elements = 8; elements < 40; elements += 4) {
3830 RAddStoreExpMinusMaxMicrokernelTester()
3831 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003832 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4_acc4, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003833 }
3834}
3835
Marat Dukhan5999c922022-01-05 18:10:20 -08003836TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4_ACC4, elements_lt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003837 for (size_t elements = 1; elements < 4; elements++) {
3838 RAddStoreExpMinusMaxMicrokernelTester()
3839 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003840 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4_acc4, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003841 }
3842}
3843
Marat Dukhan5999c922022-01-05 18:10:20 -08003844TEST(F32_RADDSTOREEXPMINUSMAX__SCALAR_RR2_LUT64_P2_X4_ACC4, elements_gt_4) {
Marat Dukhanf46f6752020-01-21 11:03:49 -08003845 for (size_t elements = 5; elements < 8; elements++) {
3846 RAddStoreExpMinusMaxMicrokernelTester()
3847 .elements(elements)
Marat Dukhan4a5c7712022-01-05 22:43:13 -08003848 .Test(xnn_f32_raddstoreexpminusmax_ukernel__scalar_rr2_lut64_p2_x4_acc4, xnn_init_f32_expminus_scalar_rr2_lut64_p2_params);
Marat Dukhanf46f6752020-01-21 11:03:49 -08003849 }
3850}