blob: 4b763b5953d67049cff59f6a743b744d3238d128 [file] [log] [blame]
Marat Dukhan346a9e52019-11-15 09:06:30 -08001// Copyright 2019 Google LLC
2//
3// This source code is licensed under the BSD-style license found in the
4// LICENSE file in the root directory of this source tree.
5//
6// Auto-generated file. Do not edit!
7// Specification: test/f32-sigmoid.yaml
Marat Dukhan1e782c42019-11-21 17:02:40 -08008// Generator: tools/generate-vunary-test.py
Marat Dukhan346a9e52019-11-15 09:06:30 -08009
10
11#include <gtest/gtest.h>
12
13#include <xnnpack/common.h>
14#include <xnnpack/isa-checks.h>
15
Marat Dukhan1e782c42019-11-21 17:02:40 -080016#include <xnnpack/vunary.h>
17#include "vunary-microkernel-tester.h"
Marat Dukhan346a9e52019-11-15 09:06:30 -080018
19
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080020#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -080021 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080022 TEST_REQUIRES_ARM_NEON_FMA;
23 VUnOpMicrokernelTester()
24 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -070025 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080026 }
27
Marat Dukhan4a24a582020-01-06 13:30:00 -080028 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080029 TEST_REQUIRES_ARM_NEON_FMA;
30 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
31 VUnOpMicrokernelTester()
32 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070033 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080034 }
35 }
36
Marat Dukhan4a24a582020-01-06 13:30:00 -080037 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080038 TEST_REQUIRES_ARM_NEON_FMA;
39 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
40 VUnOpMicrokernelTester()
41 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070042 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080043 }
44 }
45
Marat Dukhan4a24a582020-01-06 13:30:00 -080046 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080047 TEST_REQUIRES_ARM_NEON_FMA;
48 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
49 VUnOpMicrokernelTester()
50 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070051 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080052 }
53 }
54
Marat Dukhan4a24a582020-01-06 13:30:00 -080055 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080056 TEST_REQUIRES_ARM_NEON_FMA;
57 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
58 VUnOpMicrokernelTester()
59 .batch_size(batch_size)
60 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070061 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080062 }
63 }
64#endif // XNN_ARCH_ARM64
65
66
67#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -080068 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080069 TEST_REQUIRES_ARM_NEON_FMA;
70 VUnOpMicrokernelTester()
71 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -070072 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080073 }
74
Marat Dukhan4a24a582020-01-06 13:30:00 -080075 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080076 TEST_REQUIRES_ARM_NEON_FMA;
77 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
78 VUnOpMicrokernelTester()
79 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070080 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080081 }
82 }
83
Marat Dukhan4a24a582020-01-06 13:30:00 -080084 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080085 TEST_REQUIRES_ARM_NEON_FMA;
86 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
87 VUnOpMicrokernelTester()
88 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070089 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080090 }
91 }
92
Marat Dukhan4a24a582020-01-06 13:30:00 -080093 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080094 TEST_REQUIRES_ARM_NEON_FMA;
95 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
96 VUnOpMicrokernelTester()
97 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070098 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -080099 }
100 }
101
Marat Dukhan4a24a582020-01-06 13:30:00 -0800102 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800103 TEST_REQUIRES_ARM_NEON_FMA;
104 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
105 VUnOpMicrokernelTester()
106 .batch_size(batch_size)
107 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700108 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800109 }
110 }
111#endif // XNN_ARCH_ARM64
112
113
114#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800115 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800116 TEST_REQUIRES_ARM_NEON_FMA;
117 VUnOpMicrokernelTester()
118 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -0700119 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800120 }
121
Marat Dukhan4a24a582020-01-06 13:30:00 -0800122 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800123 TEST_REQUIRES_ARM_NEON_FMA;
124 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
125 VUnOpMicrokernelTester()
126 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700127 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800128 }
129 }
130
Marat Dukhan4a24a582020-01-06 13:30:00 -0800131 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800132 TEST_REQUIRES_ARM_NEON_FMA;
133 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
134 VUnOpMicrokernelTester()
135 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700136 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800137 }
138 }
139
Marat Dukhan4a24a582020-01-06 13:30:00 -0800140 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800141 TEST_REQUIRES_ARM_NEON_FMA;
142 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
143 VUnOpMicrokernelTester()
144 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700145 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800146 }
147 }
148
Marat Dukhan4a24a582020-01-06 13:30:00 -0800149 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800150 TEST_REQUIRES_ARM_NEON_FMA;
151 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
152 VUnOpMicrokernelTester()
153 .batch_size(batch_size)
154 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700155 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800156 }
157 }
158#endif // XNN_ARCH_ARM64
159
160
161#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800162 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800163 TEST_REQUIRES_ARM_NEON_FMA;
164 VUnOpMicrokernelTester()
165 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -0700166 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800167 }
168
Marat Dukhan4a24a582020-01-06 13:30:00 -0800169 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800170 TEST_REQUIRES_ARM_NEON_FMA;
171 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
172 VUnOpMicrokernelTester()
173 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700174 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800175 }
176 }
177
Marat Dukhan4a24a582020-01-06 13:30:00 -0800178 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800179 TEST_REQUIRES_ARM_NEON_FMA;
180 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
181 VUnOpMicrokernelTester()
182 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700183 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800184 }
185 }
186
Marat Dukhan4a24a582020-01-06 13:30:00 -0800187 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800188 TEST_REQUIRES_ARM_NEON_FMA;
189 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
190 VUnOpMicrokernelTester()
191 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700192 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800193 }
194 }
195
Marat Dukhan4a24a582020-01-06 13:30:00 -0800196 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800197 TEST_REQUIRES_ARM_NEON_FMA;
198 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
199 VUnOpMicrokernelTester()
200 .batch_size(batch_size)
201 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700202 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800203 }
204 }
205#endif // XNN_ARCH_ARM64
206
207
208#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800209 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800210 TEST_REQUIRES_ARM_NEON_FMA;
211 VUnOpMicrokernelTester()
212 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -0700213 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800214 }
215
Marat Dukhan4a24a582020-01-06 13:30:00 -0800216 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800217 TEST_REQUIRES_ARM_NEON_FMA;
218 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
219 VUnOpMicrokernelTester()
220 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700221 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800222 }
223 }
224
Marat Dukhan4a24a582020-01-06 13:30:00 -0800225 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800226 TEST_REQUIRES_ARM_NEON_FMA;
227 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
228 VUnOpMicrokernelTester()
229 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700230 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800231 }
232 }
233
Marat Dukhan4a24a582020-01-06 13:30:00 -0800234 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800235 TEST_REQUIRES_ARM_NEON_FMA;
236 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
237 VUnOpMicrokernelTester()
238 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700239 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800240 }
241 }
242
Marat Dukhan4a24a582020-01-06 13:30:00 -0800243 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800244 TEST_REQUIRES_ARM_NEON_FMA;
245 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
246 VUnOpMicrokernelTester()
247 .batch_size(batch_size)
248 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700249 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800250 }
251 }
252#endif // XNN_ARCH_ARM64
253
254
255#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800256 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800257 TEST_REQUIRES_ARM_NEON_FMA;
258 VUnOpMicrokernelTester()
259 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -0700260 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800261 }
262
Marat Dukhan4a24a582020-01-06 13:30:00 -0800263 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800264 TEST_REQUIRES_ARM_NEON_FMA;
265 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
266 VUnOpMicrokernelTester()
267 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700268 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800269 }
270 }
271
Marat Dukhan4a24a582020-01-06 13:30:00 -0800272 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800273 TEST_REQUIRES_ARM_NEON_FMA;
274 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
275 VUnOpMicrokernelTester()
276 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700277 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800278 }
279 }
280
Marat Dukhan4a24a582020-01-06 13:30:00 -0800281 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800282 TEST_REQUIRES_ARM_NEON_FMA;
283 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
284 VUnOpMicrokernelTester()
285 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700286 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800287 }
288 }
289
Marat Dukhan4a24a582020-01-06 13:30:00 -0800290 TEST(F32_SIGMOID__NEONFMA_RR1_P5_DIV_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800291 TEST_REQUIRES_ARM_NEON_FMA;
292 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
293 VUnOpMicrokernelTester()
294 .batch_size(batch_size)
295 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700296 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800297 }
298 }
299#endif // XNN_ARCH_ARM64
300
301
302#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800303 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800304 TEST_REQUIRES_ARM_NEON_FMA;
305 VUnOpMicrokernelTester()
306 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -0700307 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800308 }
309
Marat Dukhan4a24a582020-01-06 13:30:00 -0800310 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800311 TEST_REQUIRES_ARM_NEON_FMA;
312 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
313 VUnOpMicrokernelTester()
314 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700315 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800316 }
317 }
318
Marat Dukhan4a24a582020-01-06 13:30:00 -0800319 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800320 TEST_REQUIRES_ARM_NEON_FMA;
321 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
322 VUnOpMicrokernelTester()
323 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700324 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800325 }
326 }
327
Marat Dukhan4a24a582020-01-06 13:30:00 -0800328 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800329 TEST_REQUIRES_ARM_NEON_FMA;
330 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
331 VUnOpMicrokernelTester()
332 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700333 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800334 }
335 }
336
Marat Dukhan4a24a582020-01-06 13:30:00 -0800337 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800338 TEST_REQUIRES_ARM_NEON_FMA;
339 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
340 VUnOpMicrokernelTester()
341 .batch_size(batch_size)
342 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700343 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800344 }
345 }
346#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
347
348
349#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800350 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800351 TEST_REQUIRES_ARM_NEON_FMA;
352 VUnOpMicrokernelTester()
353 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -0700354 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800355 }
356
Marat Dukhan4a24a582020-01-06 13:30:00 -0800357 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800358 TEST_REQUIRES_ARM_NEON_FMA;
359 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
360 VUnOpMicrokernelTester()
361 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700362 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800363 }
364 }
365
Marat Dukhan4a24a582020-01-06 13:30:00 -0800366 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800367 TEST_REQUIRES_ARM_NEON_FMA;
368 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
369 VUnOpMicrokernelTester()
370 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700371 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800372 }
373 }
374
Marat Dukhan4a24a582020-01-06 13:30:00 -0800375 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800376 TEST_REQUIRES_ARM_NEON_FMA;
377 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
378 VUnOpMicrokernelTester()
379 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700380 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800381 }
382 }
383
Marat Dukhan4a24a582020-01-06 13:30:00 -0800384 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800385 TEST_REQUIRES_ARM_NEON_FMA;
386 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
387 VUnOpMicrokernelTester()
388 .batch_size(batch_size)
389 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700390 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800391 }
392 }
393#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
394
395
396#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800397 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800398 TEST_REQUIRES_ARM_NEON_FMA;
399 VUnOpMicrokernelTester()
400 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -0700401 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800402 }
403
Marat Dukhan4a24a582020-01-06 13:30:00 -0800404 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800405 TEST_REQUIRES_ARM_NEON_FMA;
406 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
407 VUnOpMicrokernelTester()
408 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700409 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800410 }
411 }
412
Marat Dukhan4a24a582020-01-06 13:30:00 -0800413 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800414 TEST_REQUIRES_ARM_NEON_FMA;
415 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
416 VUnOpMicrokernelTester()
417 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700418 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800419 }
420 }
421
Marat Dukhan4a24a582020-01-06 13:30:00 -0800422 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800423 TEST_REQUIRES_ARM_NEON_FMA;
424 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
425 VUnOpMicrokernelTester()
426 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700427 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800428 }
429 }
430
Marat Dukhan4a24a582020-01-06 13:30:00 -0800431 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800432 TEST_REQUIRES_ARM_NEON_FMA;
433 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
434 VUnOpMicrokernelTester()
435 .batch_size(batch_size)
436 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700437 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800438 }
439 }
440#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
441
442
Marat Dukhan346a9e52019-11-15 09:06:30 -0800443#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800444 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, batch_eq_16) {
Marat Dukhan346a9e52019-11-15 09:06:30 -0800445 TEST_REQUIRES_ARM_NEON_FMA;
446 VUnOpMicrokernelTester()
447 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -0700448 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan346a9e52019-11-15 09:06:30 -0800449 }
450
Marat Dukhan4a24a582020-01-06 13:30:00 -0800451 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, batch_div_16) {
Marat Dukhan346a9e52019-11-15 09:06:30 -0800452 TEST_REQUIRES_ARM_NEON_FMA;
453 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
454 VUnOpMicrokernelTester()
455 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700456 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan346a9e52019-11-15 09:06:30 -0800457 }
458 }
459
Marat Dukhan4a24a582020-01-06 13:30:00 -0800460 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, batch_lt_16) {
Marat Dukhan346a9e52019-11-15 09:06:30 -0800461 TEST_REQUIRES_ARM_NEON_FMA;
462 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
463 VUnOpMicrokernelTester()
464 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700465 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan346a9e52019-11-15 09:06:30 -0800466 }
467 }
468
Marat Dukhan4a24a582020-01-06 13:30:00 -0800469 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, batch_gt_16) {
Marat Dukhan346a9e52019-11-15 09:06:30 -0800470 TEST_REQUIRES_ARM_NEON_FMA;
471 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
472 VUnOpMicrokernelTester()
473 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700474 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan346a9e52019-11-15 09:06:30 -0800475 }
476 }
477
Marat Dukhan4a24a582020-01-06 13:30:00 -0800478 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, inplace) {
Marat Dukhan346a9e52019-11-15 09:06:30 -0800479 TEST_REQUIRES_ARM_NEON_FMA;
480 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
481 VUnOpMicrokernelTester()
482 .batch_size(batch_size)
483 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700484 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan346a9e52019-11-15 09:06:30 -0800485 }
486 }
487#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
Erich Elsen8fd7b5f2019-11-18 10:50:41 -0800488
489
490#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800491 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800492 TEST_REQUIRES_ARM_NEON_FMA;
493 VUnOpMicrokernelTester()
494 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -0700495 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800496 }
497
Marat Dukhan4a24a582020-01-06 13:30:00 -0800498 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800499 TEST_REQUIRES_ARM_NEON_FMA;
500 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
501 VUnOpMicrokernelTester()
502 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700503 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800504 }
505 }
506
Marat Dukhan4a24a582020-01-06 13:30:00 -0800507 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800508 TEST_REQUIRES_ARM_NEON_FMA;
509 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
510 VUnOpMicrokernelTester()
511 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700512 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800513 }
514 }
515
Marat Dukhan4a24a582020-01-06 13:30:00 -0800516 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800517 TEST_REQUIRES_ARM_NEON_FMA;
518 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
519 VUnOpMicrokernelTester()
520 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700521 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800522 }
523 }
524
Marat Dukhan4a24a582020-01-06 13:30:00 -0800525 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800526 TEST_REQUIRES_ARM_NEON_FMA;
527 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
528 VUnOpMicrokernelTester()
529 .batch_size(batch_size)
530 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700531 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800532 }
533 }
534#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
535
536
537#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800538 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800539 TEST_REQUIRES_ARM_NEON_FMA;
540 VUnOpMicrokernelTester()
541 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -0700542 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800543 }
544
Marat Dukhan4a24a582020-01-06 13:30:00 -0800545 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800546 TEST_REQUIRES_ARM_NEON_FMA;
547 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
548 VUnOpMicrokernelTester()
549 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700550 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800551 }
552 }
553
Marat Dukhan4a24a582020-01-06 13:30:00 -0800554 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800555 TEST_REQUIRES_ARM_NEON_FMA;
556 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
557 VUnOpMicrokernelTester()
558 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700559 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800560 }
561 }
562
Marat Dukhan4a24a582020-01-06 13:30:00 -0800563 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800564 TEST_REQUIRES_ARM_NEON_FMA;
565 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
566 VUnOpMicrokernelTester()
567 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700568 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800569 }
570 }
571
Marat Dukhan4a24a582020-01-06 13:30:00 -0800572 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800573 TEST_REQUIRES_ARM_NEON_FMA;
574 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
575 VUnOpMicrokernelTester()
576 .batch_size(batch_size)
577 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700578 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800579 }
580 }
581#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
582
583
584#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800585 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800586 TEST_REQUIRES_ARM_NEON_FMA;
587 VUnOpMicrokernelTester()
588 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -0700589 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800590 }
591
Marat Dukhan4a24a582020-01-06 13:30:00 -0800592 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800593 TEST_REQUIRES_ARM_NEON_FMA;
594 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
595 VUnOpMicrokernelTester()
596 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700597 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800598 }
599 }
600
Marat Dukhan4a24a582020-01-06 13:30:00 -0800601 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800602 TEST_REQUIRES_ARM_NEON_FMA;
603 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
604 VUnOpMicrokernelTester()
605 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700606 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800607 }
608 }
609
Marat Dukhan4a24a582020-01-06 13:30:00 -0800610 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800611 TEST_REQUIRES_ARM_NEON_FMA;
612 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
613 VUnOpMicrokernelTester()
614 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700615 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800616 }
617 }
618
Marat Dukhan4a24a582020-01-06 13:30:00 -0800619 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800620 TEST_REQUIRES_ARM_NEON_FMA;
621 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
622 VUnOpMicrokernelTester()
623 .batch_size(batch_size)
624 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700625 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800626 }
627 }
628#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
629
630
631#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800632 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800633 TEST_REQUIRES_ARM_NEON_FMA;
634 VUnOpMicrokernelTester()
635 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -0700636 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800637 }
638
Marat Dukhan4a24a582020-01-06 13:30:00 -0800639 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800640 TEST_REQUIRES_ARM_NEON_FMA;
641 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
642 VUnOpMicrokernelTester()
643 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700644 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800645 }
646 }
647
Marat Dukhan4a24a582020-01-06 13:30:00 -0800648 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800649 TEST_REQUIRES_ARM_NEON_FMA;
650 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
651 VUnOpMicrokernelTester()
652 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700653 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800654 }
655 }
656
Marat Dukhan4a24a582020-01-06 13:30:00 -0800657 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800658 TEST_REQUIRES_ARM_NEON_FMA;
659 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
660 VUnOpMicrokernelTester()
661 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700662 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800663 }
664 }
665
Marat Dukhan4a24a582020-01-06 13:30:00 -0800666 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800667 TEST_REQUIRES_ARM_NEON_FMA;
668 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
669 VUnOpMicrokernelTester()
670 .batch_size(batch_size)
671 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700672 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800673 }
674 }
675#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
676
677
678#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800679 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800680 TEST_REQUIRES_ARM_NEON_FMA;
681 VUnOpMicrokernelTester()
682 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -0700683 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800684 }
685
Marat Dukhan4a24a582020-01-06 13:30:00 -0800686 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800687 TEST_REQUIRES_ARM_NEON_FMA;
688 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
689 VUnOpMicrokernelTester()
690 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700691 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800692 }
693 }
694
Marat Dukhan4a24a582020-01-06 13:30:00 -0800695 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800696 TEST_REQUIRES_ARM_NEON_FMA;
697 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
698 VUnOpMicrokernelTester()
699 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700700 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800701 }
702 }
703
Marat Dukhan4a24a582020-01-06 13:30:00 -0800704 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800705 TEST_REQUIRES_ARM_NEON_FMA;
706 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
707 VUnOpMicrokernelTester()
708 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700709 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800710 }
711 }
712
Marat Dukhan4a24a582020-01-06 13:30:00 -0800713 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800714 TEST_REQUIRES_ARM_NEON_FMA;
715 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
716 VUnOpMicrokernelTester()
717 .batch_size(batch_size)
718 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700719 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800720 }
721 }
722#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
723
724
725#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800726 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800727 TEST_REQUIRES_ARM_NEON_FMA;
728 VUnOpMicrokernelTester()
729 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -0700730 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800731 }
732
Marat Dukhan4a24a582020-01-06 13:30:00 -0800733 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800734 TEST_REQUIRES_ARM_NEON_FMA;
735 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
736 VUnOpMicrokernelTester()
737 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700738 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800739 }
740 }
741
Marat Dukhan4a24a582020-01-06 13:30:00 -0800742 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800743 TEST_REQUIRES_ARM_NEON_FMA;
744 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
745 VUnOpMicrokernelTester()
746 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700747 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800748 }
749 }
750
Marat Dukhan4a24a582020-01-06 13:30:00 -0800751 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800752 TEST_REQUIRES_ARM_NEON_FMA;
753 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
754 VUnOpMicrokernelTester()
755 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700756 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800757 }
758 }
759
Marat Dukhan4a24a582020-01-06 13:30:00 -0800760 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800761 TEST_REQUIRES_ARM_NEON_FMA;
762 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
763 VUnOpMicrokernelTester()
764 .batch_size(batch_size)
765 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700766 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800767 }
768 }
769#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
770
771
772#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800773 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800774 TEST_REQUIRES_ARM_NEON_FMA;
775 VUnOpMicrokernelTester()
776 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -0700777 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800778 }
779
Marat Dukhan4a24a582020-01-06 13:30:00 -0800780 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800781 TEST_REQUIRES_ARM_NEON_FMA;
782 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
783 VUnOpMicrokernelTester()
784 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700785 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800786 }
787 }
788
Marat Dukhan4a24a582020-01-06 13:30:00 -0800789 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800790 TEST_REQUIRES_ARM_NEON_FMA;
791 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
792 VUnOpMicrokernelTester()
793 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700794 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800795 }
796 }
797
Marat Dukhan4a24a582020-01-06 13:30:00 -0800798 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800799 TEST_REQUIRES_ARM_NEON_FMA;
800 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
801 VUnOpMicrokernelTester()
802 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700803 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800804 }
805 }
806
Marat Dukhan4a24a582020-01-06 13:30:00 -0800807 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800808 TEST_REQUIRES_ARM_NEON_FMA;
809 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
810 VUnOpMicrokernelTester()
811 .batch_size(batch_size)
812 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700813 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800814 }
815 }
816#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
817
818
819#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800820 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800821 TEST_REQUIRES_ARM_NEON_FMA;
822 VUnOpMicrokernelTester()
823 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -0700824 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800825 }
826
Marat Dukhan4a24a582020-01-06 13:30:00 -0800827 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800828 TEST_REQUIRES_ARM_NEON_FMA;
829 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
830 VUnOpMicrokernelTester()
831 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700832 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800833 }
834 }
835
Marat Dukhan4a24a582020-01-06 13:30:00 -0800836 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800837 TEST_REQUIRES_ARM_NEON_FMA;
838 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
839 VUnOpMicrokernelTester()
840 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700841 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800842 }
843 }
844
Marat Dukhan4a24a582020-01-06 13:30:00 -0800845 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800846 TEST_REQUIRES_ARM_NEON_FMA;
847 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
848 VUnOpMicrokernelTester()
849 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700850 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800851 }
852 }
853
Marat Dukhan4a24a582020-01-06 13:30:00 -0800854 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800855 TEST_REQUIRES_ARM_NEON_FMA;
856 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
857 VUnOpMicrokernelTester()
858 .batch_size(batch_size)
859 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700860 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800861 }
862 }
863#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
864
865
866#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800867 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800868 TEST_REQUIRES_ARM_NEON_FMA;
869 VUnOpMicrokernelTester()
870 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -0700871 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800872 }
873
Marat Dukhan4a24a582020-01-06 13:30:00 -0800874 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800875 TEST_REQUIRES_ARM_NEON_FMA;
876 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
877 VUnOpMicrokernelTester()
878 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700879 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800880 }
881 }
882
Marat Dukhan4a24a582020-01-06 13:30:00 -0800883 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800884 TEST_REQUIRES_ARM_NEON_FMA;
885 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
886 VUnOpMicrokernelTester()
887 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700888 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800889 }
890 }
891
Marat Dukhan4a24a582020-01-06 13:30:00 -0800892 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800893 TEST_REQUIRES_ARM_NEON_FMA;
894 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
895 VUnOpMicrokernelTester()
896 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700897 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800898 }
899 }
900
Marat Dukhan4a24a582020-01-06 13:30:00 -0800901 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800902 TEST_REQUIRES_ARM_NEON_FMA;
903 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
904 VUnOpMicrokernelTester()
905 .batch_size(batch_size)
906 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700907 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800908 }
909 }
910#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
911
912
913#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800914 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800915 TEST_REQUIRES_ARM_NEON_FMA;
916 VUnOpMicrokernelTester()
917 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -0700918 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800919 }
920
Marat Dukhan4a24a582020-01-06 13:30:00 -0800921 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800922 TEST_REQUIRES_ARM_NEON_FMA;
923 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
924 VUnOpMicrokernelTester()
925 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700926 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800927 }
928 }
929
Marat Dukhan4a24a582020-01-06 13:30:00 -0800930 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800931 TEST_REQUIRES_ARM_NEON_FMA;
932 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
933 VUnOpMicrokernelTester()
934 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700935 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800936 }
937 }
938
Marat Dukhan4a24a582020-01-06 13:30:00 -0800939 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800940 TEST_REQUIRES_ARM_NEON_FMA;
941 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
942 VUnOpMicrokernelTester()
943 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700944 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800945 }
946 }
947
Marat Dukhan4a24a582020-01-06 13:30:00 -0800948 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800949 TEST_REQUIRES_ARM_NEON_FMA;
950 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
951 VUnOpMicrokernelTester()
952 .batch_size(batch_size)
953 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -0700954 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800955 }
956 }
957#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
958
959
960#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -0800961 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800962 TEST_REQUIRES_ARM_NEON_FMA;
963 VUnOpMicrokernelTester()
964 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -0700965 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800966 }
967
Marat Dukhan4a24a582020-01-06 13:30:00 -0800968 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800969 TEST_REQUIRES_ARM_NEON_FMA;
970 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
971 VUnOpMicrokernelTester()
972 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700973 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800974 }
975 }
976
Marat Dukhan4a24a582020-01-06 13:30:00 -0800977 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800978 TEST_REQUIRES_ARM_NEON_FMA;
979 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
980 VUnOpMicrokernelTester()
981 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700982 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800983 }
984 }
985
Marat Dukhan4a24a582020-01-06 13:30:00 -0800986 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800987 TEST_REQUIRES_ARM_NEON_FMA;
988 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
989 VUnOpMicrokernelTester()
990 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -0700991 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800992 }
993 }
994
Marat Dukhan4a24a582020-01-06 13:30:00 -0800995 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800996 TEST_REQUIRES_ARM_NEON_FMA;
997 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
998 VUnOpMicrokernelTester()
999 .batch_size(batch_size)
1000 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001001 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001002 }
1003 }
1004#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1005
1006
1007#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001008 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001009 TEST_REQUIRES_ARM_NEON_FMA;
1010 VUnOpMicrokernelTester()
1011 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07001012 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001013 }
1014
Marat Dukhan4a24a582020-01-06 13:30:00 -08001015 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001016 TEST_REQUIRES_ARM_NEON_FMA;
1017 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
1018 VUnOpMicrokernelTester()
1019 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001020 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001021 }
1022 }
1023
Marat Dukhan4a24a582020-01-06 13:30:00 -08001024 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001025 TEST_REQUIRES_ARM_NEON_FMA;
1026 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
1027 VUnOpMicrokernelTester()
1028 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001029 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001030 }
1031 }
1032
Marat Dukhan4a24a582020-01-06 13:30:00 -08001033 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001034 TEST_REQUIRES_ARM_NEON_FMA;
1035 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
1036 VUnOpMicrokernelTester()
1037 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001038 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001039 }
1040 }
1041
Marat Dukhan4a24a582020-01-06 13:30:00 -08001042 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001043 TEST_REQUIRES_ARM_NEON_FMA;
1044 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1045 VUnOpMicrokernelTester()
1046 .batch_size(batch_size)
1047 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001048 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001049 }
1050 }
1051#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1052
1053
1054#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001055 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001056 TEST_REQUIRES_ARM_NEON_FMA;
1057 VUnOpMicrokernelTester()
1058 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07001059 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001060 }
1061
Marat Dukhan4a24a582020-01-06 13:30:00 -08001062 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001063 TEST_REQUIRES_ARM_NEON_FMA;
1064 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
1065 VUnOpMicrokernelTester()
1066 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001067 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001068 }
1069 }
1070
Marat Dukhan4a24a582020-01-06 13:30:00 -08001071 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001072 TEST_REQUIRES_ARM_NEON_FMA;
1073 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
1074 VUnOpMicrokernelTester()
1075 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001076 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001077 }
1078 }
1079
Marat Dukhan4a24a582020-01-06 13:30:00 -08001080 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001081 TEST_REQUIRES_ARM_NEON_FMA;
1082 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
1083 VUnOpMicrokernelTester()
1084 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001085 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001086 }
1087 }
1088
Marat Dukhan4a24a582020-01-06 13:30:00 -08001089 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001090 TEST_REQUIRES_ARM_NEON_FMA;
1091 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
1092 VUnOpMicrokernelTester()
1093 .batch_size(batch_size)
1094 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001095 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001096 }
1097 }
1098#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1099
1100
1101#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001102 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001103 TEST_REQUIRES_ARM_NEON_FMA;
1104 VUnOpMicrokernelTester()
1105 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07001106 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001107 }
1108
Marat Dukhan4a24a582020-01-06 13:30:00 -08001109 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001110 TEST_REQUIRES_ARM_NEON_FMA;
1111 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
1112 VUnOpMicrokernelTester()
1113 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001114 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001115 }
1116 }
1117
Marat Dukhan4a24a582020-01-06 13:30:00 -08001118 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001119 TEST_REQUIRES_ARM_NEON_FMA;
1120 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
1121 VUnOpMicrokernelTester()
1122 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001123 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001124 }
1125 }
1126
Marat Dukhan4a24a582020-01-06 13:30:00 -08001127 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001128 TEST_REQUIRES_ARM_NEON_FMA;
1129 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
1130 VUnOpMicrokernelTester()
1131 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001132 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001133 }
1134 }
1135
Marat Dukhan4a24a582020-01-06 13:30:00 -08001136 TEST(F32_SIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001137 TEST_REQUIRES_ARM_NEON_FMA;
1138 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
1139 VUnOpMicrokernelTester()
1140 .batch_size(batch_size)
1141 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001142 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001143 }
1144 }
1145#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1146
1147
1148#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001149 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001150 TEST_REQUIRES_ARM_NEON;
1151 VUnOpMicrokernelTester()
1152 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07001153 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001154 }
1155
Marat Dukhan4a24a582020-01-06 13:30:00 -08001156 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001157 TEST_REQUIRES_ARM_NEON;
1158 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1159 VUnOpMicrokernelTester()
1160 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001161 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001162 }
1163 }
1164
Marat Dukhan4a24a582020-01-06 13:30:00 -08001165 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001166 TEST_REQUIRES_ARM_NEON;
1167 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1168 VUnOpMicrokernelTester()
1169 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001170 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001171 }
1172 }
1173
Marat Dukhan4a24a582020-01-06 13:30:00 -08001174 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001175 TEST_REQUIRES_ARM_NEON;
1176 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1177 VUnOpMicrokernelTester()
1178 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001179 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001180 }
1181 }
1182
Marat Dukhan4a24a582020-01-06 13:30:00 -08001183 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001184 TEST_REQUIRES_ARM_NEON;
1185 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1186 VUnOpMicrokernelTester()
1187 .batch_size(batch_size)
1188 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001189 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001190 }
1191 }
1192#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1193
1194
1195#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001196 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001197 TEST_REQUIRES_ARM_NEON;
1198 VUnOpMicrokernelTester()
1199 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07001200 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001201 }
1202
Marat Dukhan4a24a582020-01-06 13:30:00 -08001203 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001204 TEST_REQUIRES_ARM_NEON;
1205 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1206 VUnOpMicrokernelTester()
1207 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001208 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001209 }
1210 }
1211
Marat Dukhan4a24a582020-01-06 13:30:00 -08001212 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001213 TEST_REQUIRES_ARM_NEON;
1214 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1215 VUnOpMicrokernelTester()
1216 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001217 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001218 }
1219 }
1220
Marat Dukhan4a24a582020-01-06 13:30:00 -08001221 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001222 TEST_REQUIRES_ARM_NEON;
1223 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1224 VUnOpMicrokernelTester()
1225 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001226 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001227 }
1228 }
1229
Marat Dukhan4a24a582020-01-06 13:30:00 -08001230 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001231 TEST_REQUIRES_ARM_NEON;
1232 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1233 VUnOpMicrokernelTester()
1234 .batch_size(batch_size)
1235 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001236 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001237 }
1238 }
1239#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1240
1241
1242#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001243 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001244 TEST_REQUIRES_ARM_NEON;
1245 VUnOpMicrokernelTester()
1246 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07001247 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001248 }
1249
Marat Dukhan4a24a582020-01-06 13:30:00 -08001250 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001251 TEST_REQUIRES_ARM_NEON;
1252 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
1253 VUnOpMicrokernelTester()
1254 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001255 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001256 }
1257 }
1258
Marat Dukhan4a24a582020-01-06 13:30:00 -08001259 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001260 TEST_REQUIRES_ARM_NEON;
1261 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
1262 VUnOpMicrokernelTester()
1263 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001264 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001265 }
1266 }
1267
Marat Dukhan4a24a582020-01-06 13:30:00 -08001268 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001269 TEST_REQUIRES_ARM_NEON;
1270 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
1271 VUnOpMicrokernelTester()
1272 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001273 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001274 }
1275 }
1276
Marat Dukhan4a24a582020-01-06 13:30:00 -08001277 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001278 TEST_REQUIRES_ARM_NEON;
1279 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
1280 VUnOpMicrokernelTester()
1281 .batch_size(batch_size)
1282 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001283 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001284 }
1285 }
1286#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1287
1288
1289#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001290 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001291 TEST_REQUIRES_ARM_NEON;
1292 VUnOpMicrokernelTester()
1293 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07001294 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001295 }
1296
Marat Dukhan4a24a582020-01-06 13:30:00 -08001297 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001298 TEST_REQUIRES_ARM_NEON;
1299 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
1300 VUnOpMicrokernelTester()
1301 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001302 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001303 }
1304 }
1305
Marat Dukhan4a24a582020-01-06 13:30:00 -08001306 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001307 TEST_REQUIRES_ARM_NEON;
1308 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
1309 VUnOpMicrokernelTester()
1310 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001311 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001312 }
1313 }
1314
Marat Dukhan4a24a582020-01-06 13:30:00 -08001315 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001316 TEST_REQUIRES_ARM_NEON;
1317 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
1318 VUnOpMicrokernelTester()
1319 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001320 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001321 }
1322 }
1323
Marat Dukhan4a24a582020-01-06 13:30:00 -08001324 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001325 TEST_REQUIRES_ARM_NEON;
1326 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1327 VUnOpMicrokernelTester()
1328 .batch_size(batch_size)
1329 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001330 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001331 }
1332 }
1333#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1334
1335
1336#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001337 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001338 TEST_REQUIRES_ARM_NEON;
1339 VUnOpMicrokernelTester()
1340 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07001341 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001342 }
1343
Marat Dukhan4a24a582020-01-06 13:30:00 -08001344 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001345 TEST_REQUIRES_ARM_NEON;
1346 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
1347 VUnOpMicrokernelTester()
1348 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001349 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001350 }
1351 }
1352
Marat Dukhan4a24a582020-01-06 13:30:00 -08001353 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001354 TEST_REQUIRES_ARM_NEON;
1355 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
1356 VUnOpMicrokernelTester()
1357 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001358 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001359 }
1360 }
1361
Marat Dukhan4a24a582020-01-06 13:30:00 -08001362 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001363 TEST_REQUIRES_ARM_NEON;
1364 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
1365 VUnOpMicrokernelTester()
1366 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001367 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001368 }
1369 }
1370
Marat Dukhan4a24a582020-01-06 13:30:00 -08001371 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001372 TEST_REQUIRES_ARM_NEON;
1373 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
1374 VUnOpMicrokernelTester()
1375 .batch_size(batch_size)
1376 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001377 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001378 }
1379 }
1380#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1381
1382
1383#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001384 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001385 TEST_REQUIRES_ARM_NEON;
1386 VUnOpMicrokernelTester()
1387 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07001388 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001389 }
1390
Marat Dukhan4a24a582020-01-06 13:30:00 -08001391 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001392 TEST_REQUIRES_ARM_NEON;
1393 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
1394 VUnOpMicrokernelTester()
1395 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001396 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001397 }
1398 }
1399
Marat Dukhan4a24a582020-01-06 13:30:00 -08001400 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001401 TEST_REQUIRES_ARM_NEON;
1402 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
1403 VUnOpMicrokernelTester()
1404 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001405 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001406 }
1407 }
1408
Marat Dukhan4a24a582020-01-06 13:30:00 -08001409 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001410 TEST_REQUIRES_ARM_NEON;
1411 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
1412 VUnOpMicrokernelTester()
1413 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001414 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001415 }
1416 }
1417
Marat Dukhan4a24a582020-01-06 13:30:00 -08001418 TEST(F32_SIGMOID__NEON_RR2_P5_NR2RECPS_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001419 TEST_REQUIRES_ARM_NEON;
1420 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
1421 VUnOpMicrokernelTester()
1422 .batch_size(batch_size)
1423 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001424 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001425 }
1426 }
1427#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1428
1429
1430#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001431 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, batch_eq_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001432 TEST_REQUIRES_ARM_NEON_FMA;
1433 VUnOpMicrokernelTester()
1434 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07001435 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001436 }
1437
Marat Dukhan4a24a582020-01-06 13:30:00 -08001438 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, batch_div_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001439 TEST_REQUIRES_ARM_NEON_FMA;
1440 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1441 VUnOpMicrokernelTester()
1442 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001443 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001444 }
1445 }
1446
Marat Dukhan4a24a582020-01-06 13:30:00 -08001447 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, batch_lt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001448 TEST_REQUIRES_ARM_NEON_FMA;
1449 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1450 VUnOpMicrokernelTester()
1451 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001452 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001453 }
1454 }
1455
Marat Dukhan4a24a582020-01-06 13:30:00 -08001456 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, batch_gt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001457 TEST_REQUIRES_ARM_NEON_FMA;
1458 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1459 VUnOpMicrokernelTester()
1460 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001461 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001462 }
1463 }
1464
Marat Dukhan4a24a582020-01-06 13:30:00 -08001465 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001466 TEST_REQUIRES_ARM_NEON_FMA;
1467 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1468 VUnOpMicrokernelTester()
1469 .batch_size(batch_size)
1470 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001471 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001472 }
1473 }
1474#endif // XNN_ARCH_ARM64
1475
1476
1477#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001478 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, batch_eq_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001479 TEST_REQUIRES_ARM_NEON_FMA;
1480 VUnOpMicrokernelTester()
1481 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07001482 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001483 }
1484
Marat Dukhan4a24a582020-01-06 13:30:00 -08001485 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, batch_div_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001486 TEST_REQUIRES_ARM_NEON_FMA;
1487 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1488 VUnOpMicrokernelTester()
1489 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001490 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001491 }
1492 }
1493
Marat Dukhan4a24a582020-01-06 13:30:00 -08001494 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, batch_lt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001495 TEST_REQUIRES_ARM_NEON_FMA;
1496 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1497 VUnOpMicrokernelTester()
1498 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001499 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001500 }
1501 }
1502
Marat Dukhan4a24a582020-01-06 13:30:00 -08001503 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, batch_gt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001504 TEST_REQUIRES_ARM_NEON_FMA;
1505 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1506 VUnOpMicrokernelTester()
1507 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001508 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001509 }
1510 }
1511
Marat Dukhan4a24a582020-01-06 13:30:00 -08001512 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001513 TEST_REQUIRES_ARM_NEON_FMA;
1514 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1515 VUnOpMicrokernelTester()
1516 .batch_size(batch_size)
1517 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001518 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001519 }
1520 }
1521#endif // XNN_ARCH_ARM64
1522
1523
1524#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001525 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, batch_eq_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001526 TEST_REQUIRES_ARM_NEON_FMA;
1527 VUnOpMicrokernelTester()
1528 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07001529 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001530 }
1531
Marat Dukhan4a24a582020-01-06 13:30:00 -08001532 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, batch_div_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001533 TEST_REQUIRES_ARM_NEON_FMA;
1534 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
1535 VUnOpMicrokernelTester()
1536 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001537 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001538 }
1539 }
1540
Marat Dukhan4a24a582020-01-06 13:30:00 -08001541 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, batch_lt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001542 TEST_REQUIRES_ARM_NEON_FMA;
1543 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
1544 VUnOpMicrokernelTester()
1545 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001546 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001547 }
1548 }
1549
Marat Dukhan4a24a582020-01-06 13:30:00 -08001550 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, batch_gt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001551 TEST_REQUIRES_ARM_NEON_FMA;
1552 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
1553 VUnOpMicrokernelTester()
1554 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001555 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001556 }
1557 }
1558
Marat Dukhan4a24a582020-01-06 13:30:00 -08001559 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001560 TEST_REQUIRES_ARM_NEON_FMA;
1561 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
1562 VUnOpMicrokernelTester()
1563 .batch_size(batch_size)
1564 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001565 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001566 }
1567 }
1568#endif // XNN_ARCH_ARM64
1569
1570
1571#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001572 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, batch_eq_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001573 TEST_REQUIRES_ARM_NEON_FMA;
1574 VUnOpMicrokernelTester()
1575 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07001576 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001577 }
1578
Marat Dukhan4a24a582020-01-06 13:30:00 -08001579 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, batch_div_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001580 TEST_REQUIRES_ARM_NEON_FMA;
1581 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
1582 VUnOpMicrokernelTester()
1583 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001584 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001585 }
1586 }
1587
Marat Dukhan4a24a582020-01-06 13:30:00 -08001588 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, batch_lt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001589 TEST_REQUIRES_ARM_NEON_FMA;
1590 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
1591 VUnOpMicrokernelTester()
1592 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001593 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001594 }
1595 }
1596
Marat Dukhan4a24a582020-01-06 13:30:00 -08001597 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, batch_gt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001598 TEST_REQUIRES_ARM_NEON_FMA;
1599 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
1600 VUnOpMicrokernelTester()
1601 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001602 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001603 }
1604 }
1605
Marat Dukhan4a24a582020-01-06 13:30:00 -08001606 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001607 TEST_REQUIRES_ARM_NEON_FMA;
1608 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1609 VUnOpMicrokernelTester()
1610 .batch_size(batch_size)
1611 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001612 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001613 }
1614 }
1615#endif // XNN_ARCH_ARM64
1616
1617
1618#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001619 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, batch_eq_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001620 TEST_REQUIRES_ARM_NEON_FMA;
1621 VUnOpMicrokernelTester()
1622 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07001623 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001624 }
1625
Marat Dukhan4a24a582020-01-06 13:30:00 -08001626 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, batch_div_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001627 TEST_REQUIRES_ARM_NEON_FMA;
1628 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
1629 VUnOpMicrokernelTester()
1630 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001631 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001632 }
1633 }
1634
Marat Dukhan4a24a582020-01-06 13:30:00 -08001635 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, batch_lt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001636 TEST_REQUIRES_ARM_NEON_FMA;
1637 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
1638 VUnOpMicrokernelTester()
1639 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001640 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001641 }
1642 }
1643
Marat Dukhan4a24a582020-01-06 13:30:00 -08001644 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, batch_gt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001645 TEST_REQUIRES_ARM_NEON_FMA;
1646 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
1647 VUnOpMicrokernelTester()
1648 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001649 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001650 }
1651 }
1652
Marat Dukhan4a24a582020-01-06 13:30:00 -08001653 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001654 TEST_REQUIRES_ARM_NEON_FMA;
1655 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
1656 VUnOpMicrokernelTester()
1657 .batch_size(batch_size)
1658 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001659 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001660 }
1661 }
1662#endif // XNN_ARCH_ARM64
1663
1664
1665#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001666 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, batch_eq_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001667 TEST_REQUIRES_ARM_NEON_FMA;
1668 VUnOpMicrokernelTester()
1669 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07001670 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001671 }
1672
Marat Dukhan4a24a582020-01-06 13:30:00 -08001673 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, batch_div_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001674 TEST_REQUIRES_ARM_NEON_FMA;
1675 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
1676 VUnOpMicrokernelTester()
1677 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001678 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001679 }
1680 }
1681
Marat Dukhan4a24a582020-01-06 13:30:00 -08001682 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, batch_lt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001683 TEST_REQUIRES_ARM_NEON_FMA;
1684 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
1685 VUnOpMicrokernelTester()
1686 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001687 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001688 }
1689 }
1690
Marat Dukhan4a24a582020-01-06 13:30:00 -08001691 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, batch_gt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001692 TEST_REQUIRES_ARM_NEON_FMA;
1693 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
1694 VUnOpMicrokernelTester()
1695 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001696 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001697 }
1698 }
1699
Marat Dukhan4a24a582020-01-06 13:30:00 -08001700 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001701 TEST_REQUIRES_ARM_NEON_FMA;
1702 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
1703 VUnOpMicrokernelTester()
1704 .batch_size(batch_size)
1705 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001706 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001707 }
1708 }
1709#endif // XNN_ARCH_ARM64
1710
1711
1712#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001713 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, batch_eq_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001714 TEST_REQUIRES_ARM_NEON_FMA;
1715 VUnOpMicrokernelTester()
1716 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07001717 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001718 }
1719
Marat Dukhan4a24a582020-01-06 13:30:00 -08001720 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, batch_div_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001721 TEST_REQUIRES_ARM_NEON_FMA;
1722 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
1723 VUnOpMicrokernelTester()
1724 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001725 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001726 }
1727 }
1728
Marat Dukhan4a24a582020-01-06 13:30:00 -08001729 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, batch_lt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001730 TEST_REQUIRES_ARM_NEON_FMA;
1731 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
1732 VUnOpMicrokernelTester()
1733 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001734 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001735 }
1736 }
1737
Marat Dukhan4a24a582020-01-06 13:30:00 -08001738 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, batch_gt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001739 TEST_REQUIRES_ARM_NEON_FMA;
1740 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
1741 VUnOpMicrokernelTester()
1742 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001743 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001744 }
1745 }
1746
Marat Dukhan4a24a582020-01-06 13:30:00 -08001747 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001748 TEST_REQUIRES_ARM_NEON_FMA;
1749 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
1750 VUnOpMicrokernelTester()
1751 .batch_size(batch_size)
1752 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001753 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001754 }
1755 }
1756#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1757
1758
1759#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001760 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, batch_eq_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001761 TEST_REQUIRES_ARM_NEON_FMA;
1762 VUnOpMicrokernelTester()
1763 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07001764 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001765 }
1766
Marat Dukhan4a24a582020-01-06 13:30:00 -08001767 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, batch_div_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001768 TEST_REQUIRES_ARM_NEON_FMA;
1769 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
1770 VUnOpMicrokernelTester()
1771 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001772 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001773 }
1774 }
1775
Marat Dukhan4a24a582020-01-06 13:30:00 -08001776 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, batch_lt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001777 TEST_REQUIRES_ARM_NEON_FMA;
1778 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
1779 VUnOpMicrokernelTester()
1780 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001781 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001782 }
1783 }
1784
Marat Dukhan4a24a582020-01-06 13:30:00 -08001785 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, batch_gt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001786 TEST_REQUIRES_ARM_NEON_FMA;
1787 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
1788 VUnOpMicrokernelTester()
1789 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001790 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001791 }
1792 }
1793
Marat Dukhan4a24a582020-01-06 13:30:00 -08001794 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001795 TEST_REQUIRES_ARM_NEON_FMA;
1796 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
1797 VUnOpMicrokernelTester()
1798 .batch_size(batch_size)
1799 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001800 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001801 }
1802 }
1803#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1804
1805
1806#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001807 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, batch_eq_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001808 TEST_REQUIRES_ARM_NEON_FMA;
1809 VUnOpMicrokernelTester()
1810 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07001811 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001812 }
1813
Marat Dukhan4a24a582020-01-06 13:30:00 -08001814 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, batch_div_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001815 TEST_REQUIRES_ARM_NEON_FMA;
1816 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
1817 VUnOpMicrokernelTester()
1818 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001819 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001820 }
1821 }
1822
Marat Dukhan4a24a582020-01-06 13:30:00 -08001823 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, batch_lt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001824 TEST_REQUIRES_ARM_NEON_FMA;
1825 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
1826 VUnOpMicrokernelTester()
1827 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001828 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001829 }
1830 }
1831
Marat Dukhan4a24a582020-01-06 13:30:00 -08001832 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, batch_gt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001833 TEST_REQUIRES_ARM_NEON_FMA;
1834 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
1835 VUnOpMicrokernelTester()
1836 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001837 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001838 }
1839 }
1840
Marat Dukhan4a24a582020-01-06 13:30:00 -08001841 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001842 TEST_REQUIRES_ARM_NEON_FMA;
1843 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
1844 VUnOpMicrokernelTester()
1845 .batch_size(batch_size)
1846 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001847 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001848 }
1849 }
1850#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1851
1852
1853#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001854 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, batch_eq_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001855 TEST_REQUIRES_ARM_NEON_FMA;
1856 VUnOpMicrokernelTester()
1857 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07001858 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001859 }
1860
Marat Dukhan4a24a582020-01-06 13:30:00 -08001861 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, batch_div_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001862 TEST_REQUIRES_ARM_NEON_FMA;
1863 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
1864 VUnOpMicrokernelTester()
1865 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001866 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001867 }
1868 }
1869
Marat Dukhan4a24a582020-01-06 13:30:00 -08001870 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, batch_lt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001871 TEST_REQUIRES_ARM_NEON_FMA;
1872 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
1873 VUnOpMicrokernelTester()
1874 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001875 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001876 }
1877 }
1878
Marat Dukhan4a24a582020-01-06 13:30:00 -08001879 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, batch_gt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001880 TEST_REQUIRES_ARM_NEON_FMA;
1881 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
1882 VUnOpMicrokernelTester()
1883 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001884 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001885 }
1886 }
1887
Marat Dukhan4a24a582020-01-06 13:30:00 -08001888 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001889 TEST_REQUIRES_ARM_NEON_FMA;
1890 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
1891 VUnOpMicrokernelTester()
1892 .batch_size(batch_size)
1893 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001894 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001895 }
1896 }
1897#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1898
1899
1900#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001901 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, batch_eq_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001902 TEST_REQUIRES_ARM_NEON_FMA;
1903 VUnOpMicrokernelTester()
1904 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07001905 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001906 }
1907
Marat Dukhan4a24a582020-01-06 13:30:00 -08001908 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, batch_div_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001909 TEST_REQUIRES_ARM_NEON_FMA;
1910 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
1911 VUnOpMicrokernelTester()
1912 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001913 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001914 }
1915 }
1916
Marat Dukhan4a24a582020-01-06 13:30:00 -08001917 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, batch_lt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001918 TEST_REQUIRES_ARM_NEON_FMA;
1919 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
1920 VUnOpMicrokernelTester()
1921 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001922 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001923 }
1924 }
1925
Marat Dukhan4a24a582020-01-06 13:30:00 -08001926 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, batch_gt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001927 TEST_REQUIRES_ARM_NEON_FMA;
1928 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
1929 VUnOpMicrokernelTester()
1930 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001931 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001932 }
1933 }
1934
Marat Dukhan4a24a582020-01-06 13:30:00 -08001935 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001936 TEST_REQUIRES_ARM_NEON_FMA;
1937 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
1938 VUnOpMicrokernelTester()
1939 .batch_size(batch_size)
1940 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001941 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001942 }
1943 }
1944#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1945
1946
1947#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001948 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, batch_eq_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001949 TEST_REQUIRES_ARM_NEON_FMA;
1950 VUnOpMicrokernelTester()
1951 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07001952 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001953 }
1954
Marat Dukhan4a24a582020-01-06 13:30:00 -08001955 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, batch_div_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001956 TEST_REQUIRES_ARM_NEON_FMA;
1957 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
1958 VUnOpMicrokernelTester()
1959 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001960 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001961 }
1962 }
1963
Marat Dukhan4a24a582020-01-06 13:30:00 -08001964 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, batch_lt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001965 TEST_REQUIRES_ARM_NEON_FMA;
1966 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
1967 VUnOpMicrokernelTester()
1968 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001969 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001970 }
1971 }
1972
Marat Dukhan4a24a582020-01-06 13:30:00 -08001973 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, batch_gt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001974 TEST_REQUIRES_ARM_NEON_FMA;
1975 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
1976 VUnOpMicrokernelTester()
1977 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07001978 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001979 }
1980 }
1981
Marat Dukhan4a24a582020-01-06 13:30:00 -08001982 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001983 TEST_REQUIRES_ARM_NEON_FMA;
1984 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
1985 VUnOpMicrokernelTester()
1986 .batch_size(batch_size)
1987 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07001988 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08001989 }
1990 }
1991#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1992
1993
1994#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08001995 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, batch_eq_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08001996 TEST_REQUIRES_ARM_NEON_FMA;
1997 VUnOpMicrokernelTester()
1998 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07001999 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002000 }
2001
Marat Dukhan4a24a582020-01-06 13:30:00 -08002002 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, batch_div_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002003 TEST_REQUIRES_ARM_NEON_FMA;
2004 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
2005 VUnOpMicrokernelTester()
2006 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002007 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002008 }
2009 }
2010
Marat Dukhan4a24a582020-01-06 13:30:00 -08002011 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, batch_lt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002012 TEST_REQUIRES_ARM_NEON_FMA;
2013 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
2014 VUnOpMicrokernelTester()
2015 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002016 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002017 }
2018 }
2019
Marat Dukhan4a24a582020-01-06 13:30:00 -08002020 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, batch_gt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002021 TEST_REQUIRES_ARM_NEON_FMA;
2022 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
2023 VUnOpMicrokernelTester()
2024 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002025 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002026 }
2027 }
2028
Marat Dukhan4a24a582020-01-06 13:30:00 -08002029 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002030 TEST_REQUIRES_ARM_NEON_FMA;
2031 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
2032 VUnOpMicrokernelTester()
2033 .batch_size(batch_size)
2034 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002035 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002036 }
2037 }
2038#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2039
2040
2041#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002042 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, batch_eq_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002043 TEST_REQUIRES_ARM_NEON_FMA;
2044 VUnOpMicrokernelTester()
2045 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07002046 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002047 }
2048
Marat Dukhan4a24a582020-01-06 13:30:00 -08002049 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, batch_div_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002050 TEST_REQUIRES_ARM_NEON_FMA;
2051 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
2052 VUnOpMicrokernelTester()
2053 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002054 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002055 }
2056 }
2057
Marat Dukhan4a24a582020-01-06 13:30:00 -08002058 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, batch_lt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002059 TEST_REQUIRES_ARM_NEON_FMA;
2060 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
2061 VUnOpMicrokernelTester()
2062 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002063 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002064 }
2065 }
2066
Marat Dukhan4a24a582020-01-06 13:30:00 -08002067 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, batch_gt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002068 TEST_REQUIRES_ARM_NEON_FMA;
2069 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
2070 VUnOpMicrokernelTester()
2071 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002072 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002073 }
2074 }
2075
Marat Dukhan4a24a582020-01-06 13:30:00 -08002076 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002077 TEST_REQUIRES_ARM_NEON_FMA;
2078 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
2079 VUnOpMicrokernelTester()
2080 .batch_size(batch_size)
2081 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002082 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002083 }
2084 }
2085#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2086
2087
2088#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002089 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, batch_eq_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002090 TEST_REQUIRES_ARM_NEON_FMA;
2091 VUnOpMicrokernelTester()
2092 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07002093 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002094 }
2095
Marat Dukhan4a24a582020-01-06 13:30:00 -08002096 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, batch_div_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002097 TEST_REQUIRES_ARM_NEON_FMA;
2098 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
2099 VUnOpMicrokernelTester()
2100 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002101 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002102 }
2103 }
2104
Marat Dukhan4a24a582020-01-06 13:30:00 -08002105 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, batch_lt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002106 TEST_REQUIRES_ARM_NEON_FMA;
2107 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
2108 VUnOpMicrokernelTester()
2109 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002110 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002111 }
2112 }
2113
Marat Dukhan4a24a582020-01-06 13:30:00 -08002114 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, batch_gt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002115 TEST_REQUIRES_ARM_NEON_FMA;
2116 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
2117 VUnOpMicrokernelTester()
2118 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002119 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002120 }
2121 }
2122
Marat Dukhan4a24a582020-01-06 13:30:00 -08002123 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002124 TEST_REQUIRES_ARM_NEON_FMA;
2125 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
2126 VUnOpMicrokernelTester()
2127 .batch_size(batch_size)
2128 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002129 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002130 }
2131 }
2132#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2133
2134
2135#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002136 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, batch_eq_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002137 TEST_REQUIRES_ARM_NEON_FMA;
2138 VUnOpMicrokernelTester()
2139 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07002140 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002141 }
2142
Marat Dukhan4a24a582020-01-06 13:30:00 -08002143 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, batch_div_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002144 TEST_REQUIRES_ARM_NEON_FMA;
2145 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
2146 VUnOpMicrokernelTester()
2147 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002148 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002149 }
2150 }
2151
Marat Dukhan4a24a582020-01-06 13:30:00 -08002152 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, batch_lt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002153 TEST_REQUIRES_ARM_NEON_FMA;
2154 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
2155 VUnOpMicrokernelTester()
2156 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002157 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002158 }
2159 }
2160
Marat Dukhan4a24a582020-01-06 13:30:00 -08002161 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, batch_gt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002162 TEST_REQUIRES_ARM_NEON_FMA;
2163 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
2164 VUnOpMicrokernelTester()
2165 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002166 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002167 }
2168 }
2169
Marat Dukhan4a24a582020-01-06 13:30:00 -08002170 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002171 TEST_REQUIRES_ARM_NEON_FMA;
2172 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
2173 VUnOpMicrokernelTester()
2174 .batch_size(batch_size)
2175 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002176 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002177 }
2178 }
2179#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2180
2181
2182#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002183 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, batch_eq_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002184 TEST_REQUIRES_ARM_NEON_FMA;
2185 VUnOpMicrokernelTester()
2186 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07002187 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002188 }
2189
Marat Dukhan4a24a582020-01-06 13:30:00 -08002190 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, batch_div_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002191 TEST_REQUIRES_ARM_NEON_FMA;
2192 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
2193 VUnOpMicrokernelTester()
2194 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002195 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002196 }
2197 }
2198
Marat Dukhan4a24a582020-01-06 13:30:00 -08002199 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, batch_lt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002200 TEST_REQUIRES_ARM_NEON_FMA;
2201 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
2202 VUnOpMicrokernelTester()
2203 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002204 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002205 }
2206 }
2207
Marat Dukhan4a24a582020-01-06 13:30:00 -08002208 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, batch_gt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002209 TEST_REQUIRES_ARM_NEON_FMA;
2210 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
2211 VUnOpMicrokernelTester()
2212 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002213 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002214 }
2215 }
2216
Marat Dukhan4a24a582020-01-06 13:30:00 -08002217 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002218 TEST_REQUIRES_ARM_NEON_FMA;
2219 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
2220 VUnOpMicrokernelTester()
2221 .batch_size(batch_size)
2222 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002223 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002224 }
2225 }
2226#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2227
2228
2229#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002230 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, batch_eq_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002231 TEST_REQUIRES_ARM_NEON_FMA;
2232 VUnOpMicrokernelTester()
2233 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07002234 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002235 }
2236
Marat Dukhan4a24a582020-01-06 13:30:00 -08002237 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, batch_div_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002238 TEST_REQUIRES_ARM_NEON_FMA;
2239 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
2240 VUnOpMicrokernelTester()
2241 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002242 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002243 }
2244 }
2245
Marat Dukhan4a24a582020-01-06 13:30:00 -08002246 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, batch_lt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002247 TEST_REQUIRES_ARM_NEON_FMA;
2248 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
2249 VUnOpMicrokernelTester()
2250 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002251 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002252 }
2253 }
2254
Marat Dukhan4a24a582020-01-06 13:30:00 -08002255 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, batch_gt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002256 TEST_REQUIRES_ARM_NEON_FMA;
2257 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
2258 VUnOpMicrokernelTester()
2259 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002260 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002261 }
2262 }
2263
Marat Dukhan4a24a582020-01-06 13:30:00 -08002264 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002265 TEST_REQUIRES_ARM_NEON_FMA;
2266 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
2267 VUnOpMicrokernelTester()
2268 .batch_size(batch_size)
2269 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002270 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002271 }
2272 }
2273#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2274
2275
2276#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002277 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, batch_eq_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002278 TEST_REQUIRES_ARM_NEON_FMA;
2279 VUnOpMicrokernelTester()
2280 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07002281 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002282 }
2283
Marat Dukhan4a24a582020-01-06 13:30:00 -08002284 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, batch_div_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002285 TEST_REQUIRES_ARM_NEON_FMA;
2286 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
2287 VUnOpMicrokernelTester()
2288 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002289 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002290 }
2291 }
2292
Marat Dukhan4a24a582020-01-06 13:30:00 -08002293 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, batch_lt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002294 TEST_REQUIRES_ARM_NEON_FMA;
2295 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
2296 VUnOpMicrokernelTester()
2297 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002298 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002299 }
2300 }
2301
Marat Dukhan4a24a582020-01-06 13:30:00 -08002302 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, batch_gt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002303 TEST_REQUIRES_ARM_NEON_FMA;
2304 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
2305 VUnOpMicrokernelTester()
2306 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002307 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002308 }
2309 }
2310
Marat Dukhan4a24a582020-01-06 13:30:00 -08002311 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002312 TEST_REQUIRES_ARM_NEON_FMA;
2313 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
2314 VUnOpMicrokernelTester()
2315 .batch_size(batch_size)
2316 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002317 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002318 }
2319 }
2320#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2321
2322
2323#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002324 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, batch_eq_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002325 TEST_REQUIRES_ARM_NEON_FMA;
2326 VUnOpMicrokernelTester()
2327 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07002328 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002329 }
2330
Marat Dukhan4a24a582020-01-06 13:30:00 -08002331 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, batch_div_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002332 TEST_REQUIRES_ARM_NEON_FMA;
2333 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
2334 VUnOpMicrokernelTester()
2335 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002336 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002337 }
2338 }
2339
Marat Dukhan4a24a582020-01-06 13:30:00 -08002340 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, batch_lt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002341 TEST_REQUIRES_ARM_NEON_FMA;
2342 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
2343 VUnOpMicrokernelTester()
2344 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002345 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002346 }
2347 }
2348
Marat Dukhan4a24a582020-01-06 13:30:00 -08002349 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, batch_gt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002350 TEST_REQUIRES_ARM_NEON_FMA;
2351 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
2352 VUnOpMicrokernelTester()
2353 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002354 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002355 }
2356 }
2357
Marat Dukhan4a24a582020-01-06 13:30:00 -08002358 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002359 TEST_REQUIRES_ARM_NEON_FMA;
2360 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
2361 VUnOpMicrokernelTester()
2362 .batch_size(batch_size)
2363 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002364 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002365 }
2366 }
2367#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2368
2369
2370#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002371 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, batch_eq_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002372 TEST_REQUIRES_ARM_NEON_FMA;
2373 VUnOpMicrokernelTester()
2374 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07002375 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002376 }
2377
Marat Dukhan4a24a582020-01-06 13:30:00 -08002378 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, batch_div_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002379 TEST_REQUIRES_ARM_NEON_FMA;
2380 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
2381 VUnOpMicrokernelTester()
2382 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002383 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002384 }
2385 }
2386
Marat Dukhan4a24a582020-01-06 13:30:00 -08002387 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, batch_lt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002388 TEST_REQUIRES_ARM_NEON_FMA;
2389 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
2390 VUnOpMicrokernelTester()
2391 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002392 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002393 }
2394 }
2395
Marat Dukhan4a24a582020-01-06 13:30:00 -08002396 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, batch_gt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002397 TEST_REQUIRES_ARM_NEON_FMA;
2398 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
2399 VUnOpMicrokernelTester()
2400 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002401 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002402 }
2403 }
2404
Marat Dukhan4a24a582020-01-06 13:30:00 -08002405 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002406 TEST_REQUIRES_ARM_NEON_FMA;
2407 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
2408 VUnOpMicrokernelTester()
2409 .batch_size(batch_size)
2410 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002411 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002412 }
2413 }
2414#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2415
2416
2417#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002418 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, batch_eq_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002419 TEST_REQUIRES_ARM_NEON_FMA;
2420 VUnOpMicrokernelTester()
2421 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07002422 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002423 }
2424
Marat Dukhan4a24a582020-01-06 13:30:00 -08002425 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, batch_div_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002426 TEST_REQUIRES_ARM_NEON_FMA;
2427 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
2428 VUnOpMicrokernelTester()
2429 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002430 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002431 }
2432 }
2433
Marat Dukhan4a24a582020-01-06 13:30:00 -08002434 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, batch_lt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002435 TEST_REQUIRES_ARM_NEON_FMA;
2436 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
2437 VUnOpMicrokernelTester()
2438 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002439 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002440 }
2441 }
2442
Marat Dukhan4a24a582020-01-06 13:30:00 -08002443 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, batch_gt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002444 TEST_REQUIRES_ARM_NEON_FMA;
2445 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
2446 VUnOpMicrokernelTester()
2447 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002448 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002449 }
2450 }
2451
Marat Dukhan4a24a582020-01-06 13:30:00 -08002452 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002453 TEST_REQUIRES_ARM_NEON_FMA;
2454 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
2455 VUnOpMicrokernelTester()
2456 .batch_size(batch_size)
2457 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002458 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002459 }
2460 }
2461#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2462
2463
2464#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002465 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, batch_eq_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002466 TEST_REQUIRES_ARM_NEON_FMA;
2467 VUnOpMicrokernelTester()
2468 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07002469 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002470 }
2471
Marat Dukhan4a24a582020-01-06 13:30:00 -08002472 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, batch_div_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002473 TEST_REQUIRES_ARM_NEON_FMA;
2474 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
2475 VUnOpMicrokernelTester()
2476 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002477 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002478 }
2479 }
2480
Marat Dukhan4a24a582020-01-06 13:30:00 -08002481 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, batch_lt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002482 TEST_REQUIRES_ARM_NEON_FMA;
2483 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
2484 VUnOpMicrokernelTester()
2485 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002486 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002487 }
2488 }
2489
Marat Dukhan4a24a582020-01-06 13:30:00 -08002490 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, batch_gt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002491 TEST_REQUIRES_ARM_NEON_FMA;
2492 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
2493 VUnOpMicrokernelTester()
2494 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002495 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002496 }
2497 }
2498
Marat Dukhan4a24a582020-01-06 13:30:00 -08002499 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002500 TEST_REQUIRES_ARM_NEON_FMA;
2501 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
2502 VUnOpMicrokernelTester()
2503 .batch_size(batch_size)
2504 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002505 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002506 }
2507 }
2508#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2509
2510
2511#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002512 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, batch_eq_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002513 TEST_REQUIRES_ARM_NEON_FMA;
2514 VUnOpMicrokernelTester()
2515 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07002516 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002517 }
2518
Marat Dukhan4a24a582020-01-06 13:30:00 -08002519 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, batch_div_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002520 TEST_REQUIRES_ARM_NEON_FMA;
2521 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
2522 VUnOpMicrokernelTester()
2523 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002524 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002525 }
2526 }
2527
Marat Dukhan4a24a582020-01-06 13:30:00 -08002528 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, batch_lt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002529 TEST_REQUIRES_ARM_NEON_FMA;
2530 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
2531 VUnOpMicrokernelTester()
2532 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002533 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002534 }
2535 }
2536
Marat Dukhan4a24a582020-01-06 13:30:00 -08002537 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, batch_gt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002538 TEST_REQUIRES_ARM_NEON_FMA;
2539 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
2540 VUnOpMicrokernelTester()
2541 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002542 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002543 }
2544 }
2545
Marat Dukhan4a24a582020-01-06 13:30:00 -08002546 TEST(F32_SIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002547 TEST_REQUIRES_ARM_NEON_FMA;
2548 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
2549 VUnOpMicrokernelTester()
2550 .batch_size(batch_size)
2551 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002552 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002553 }
2554 }
2555#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2556
2557
2558#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002559 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, batch_eq_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002560 TEST_REQUIRES_ARM_NEON;
2561 VUnOpMicrokernelTester()
2562 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07002563 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002564 }
2565
Marat Dukhan4a24a582020-01-06 13:30:00 -08002566 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, batch_div_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002567 TEST_REQUIRES_ARM_NEON;
2568 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
2569 VUnOpMicrokernelTester()
2570 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002571 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002572 }
2573 }
2574
Marat Dukhan4a24a582020-01-06 13:30:00 -08002575 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, batch_lt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002576 TEST_REQUIRES_ARM_NEON;
2577 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
2578 VUnOpMicrokernelTester()
2579 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002580 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002581 }
2582 }
2583
Marat Dukhan4a24a582020-01-06 13:30:00 -08002584 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, batch_gt_4) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002585 TEST_REQUIRES_ARM_NEON;
2586 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
2587 VUnOpMicrokernelTester()
2588 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002589 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002590 }
2591 }
2592
Marat Dukhan4a24a582020-01-06 13:30:00 -08002593 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002594 TEST_REQUIRES_ARM_NEON;
2595 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
2596 VUnOpMicrokernelTester()
2597 .batch_size(batch_size)
2598 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002599 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002600 }
2601 }
2602#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2603
2604
2605#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002606 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, batch_eq_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002607 TEST_REQUIRES_ARM_NEON;
2608 VUnOpMicrokernelTester()
2609 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07002610 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002611 }
2612
Marat Dukhan4a24a582020-01-06 13:30:00 -08002613 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, batch_div_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002614 TEST_REQUIRES_ARM_NEON;
2615 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
2616 VUnOpMicrokernelTester()
2617 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002618 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002619 }
2620 }
2621
Marat Dukhan4a24a582020-01-06 13:30:00 -08002622 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, batch_lt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002623 TEST_REQUIRES_ARM_NEON;
2624 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
2625 VUnOpMicrokernelTester()
2626 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002627 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002628 }
2629 }
2630
Marat Dukhan4a24a582020-01-06 13:30:00 -08002631 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, batch_gt_8) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002632 TEST_REQUIRES_ARM_NEON;
2633 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
2634 VUnOpMicrokernelTester()
2635 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002636 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002637 }
2638 }
2639
Marat Dukhan4a24a582020-01-06 13:30:00 -08002640 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002641 TEST_REQUIRES_ARM_NEON;
2642 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
2643 VUnOpMicrokernelTester()
2644 .batch_size(batch_size)
2645 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002646 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002647 }
2648 }
2649#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2650
2651
2652#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002653 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, batch_eq_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002654 TEST_REQUIRES_ARM_NEON;
2655 VUnOpMicrokernelTester()
2656 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07002657 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002658 }
2659
Marat Dukhan4a24a582020-01-06 13:30:00 -08002660 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, batch_div_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002661 TEST_REQUIRES_ARM_NEON;
2662 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
2663 VUnOpMicrokernelTester()
2664 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002665 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002666 }
2667 }
2668
Marat Dukhan4a24a582020-01-06 13:30:00 -08002669 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, batch_lt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002670 TEST_REQUIRES_ARM_NEON;
2671 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
2672 VUnOpMicrokernelTester()
2673 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002674 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002675 }
2676 }
2677
Marat Dukhan4a24a582020-01-06 13:30:00 -08002678 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, batch_gt_12) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002679 TEST_REQUIRES_ARM_NEON;
2680 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
2681 VUnOpMicrokernelTester()
2682 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002683 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002684 }
2685 }
2686
Marat Dukhan4a24a582020-01-06 13:30:00 -08002687 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002688 TEST_REQUIRES_ARM_NEON;
2689 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
2690 VUnOpMicrokernelTester()
2691 .batch_size(batch_size)
2692 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002693 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002694 }
2695 }
2696#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2697
2698
2699#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002700 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, batch_eq_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002701 TEST_REQUIRES_ARM_NEON;
2702 VUnOpMicrokernelTester()
2703 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07002704 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002705 }
2706
Marat Dukhan4a24a582020-01-06 13:30:00 -08002707 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, batch_div_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002708 TEST_REQUIRES_ARM_NEON;
2709 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
2710 VUnOpMicrokernelTester()
2711 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002712 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002713 }
2714 }
2715
Marat Dukhan4a24a582020-01-06 13:30:00 -08002716 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, batch_lt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002717 TEST_REQUIRES_ARM_NEON;
2718 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
2719 VUnOpMicrokernelTester()
2720 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002721 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002722 }
2723 }
2724
Marat Dukhan4a24a582020-01-06 13:30:00 -08002725 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, batch_gt_16) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002726 TEST_REQUIRES_ARM_NEON;
2727 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
2728 VUnOpMicrokernelTester()
2729 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002730 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002731 }
2732 }
2733
Marat Dukhan4a24a582020-01-06 13:30:00 -08002734 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002735 TEST_REQUIRES_ARM_NEON;
2736 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
2737 VUnOpMicrokernelTester()
2738 .batch_size(batch_size)
2739 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002740 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002741 }
2742 }
2743#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2744
2745
2746#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002747 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, batch_eq_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002748 TEST_REQUIRES_ARM_NEON;
2749 VUnOpMicrokernelTester()
2750 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07002751 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002752 }
2753
Marat Dukhan4a24a582020-01-06 13:30:00 -08002754 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, batch_div_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002755 TEST_REQUIRES_ARM_NEON;
2756 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
2757 VUnOpMicrokernelTester()
2758 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002759 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002760 }
2761 }
2762
Marat Dukhan4a24a582020-01-06 13:30:00 -08002763 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, batch_lt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002764 TEST_REQUIRES_ARM_NEON;
2765 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
2766 VUnOpMicrokernelTester()
2767 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002768 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002769 }
2770 }
2771
Marat Dukhan4a24a582020-01-06 13:30:00 -08002772 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, batch_gt_20) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002773 TEST_REQUIRES_ARM_NEON;
2774 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
2775 VUnOpMicrokernelTester()
2776 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002777 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002778 }
2779 }
2780
Marat Dukhan4a24a582020-01-06 13:30:00 -08002781 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002782 TEST_REQUIRES_ARM_NEON;
2783 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
2784 VUnOpMicrokernelTester()
2785 .batch_size(batch_size)
2786 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002787 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002788 }
2789 }
2790#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2791
2792
2793#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002794 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, batch_eq_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002795 TEST_REQUIRES_ARM_NEON;
2796 VUnOpMicrokernelTester()
2797 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07002798 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002799 }
2800
Marat Dukhan4a24a582020-01-06 13:30:00 -08002801 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, batch_div_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002802 TEST_REQUIRES_ARM_NEON;
2803 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
2804 VUnOpMicrokernelTester()
2805 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002806 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002807 }
2808 }
2809
Marat Dukhan4a24a582020-01-06 13:30:00 -08002810 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, batch_lt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002811 TEST_REQUIRES_ARM_NEON;
2812 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
2813 VUnOpMicrokernelTester()
2814 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002815 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002816 }
2817 }
2818
Marat Dukhan4a24a582020-01-06 13:30:00 -08002819 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, batch_gt_24) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002820 TEST_REQUIRES_ARM_NEON;
2821 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
2822 VUnOpMicrokernelTester()
2823 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002824 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002825 }
2826 }
2827
Marat Dukhan4a24a582020-01-06 13:30:00 -08002828 TEST(F32_SIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, inplace) {
Marat Dukhan68b3b452020-01-02 10:11:15 -08002829 TEST_REQUIRES_ARM_NEON;
2830 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
2831 VUnOpMicrokernelTester()
2832 .batch_size(batch_size)
2833 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002834 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan68b3b452020-01-02 10:11:15 -08002835 }
2836 }
2837#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
2838
2839
2840#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002841 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002842 TEST_REQUIRES_ARM_NEON_FMA;
2843 VUnOpMicrokernelTester()
2844 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07002845 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002846 }
2847
Marat Dukhan4a24a582020-01-06 13:30:00 -08002848 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002849 TEST_REQUIRES_ARM_NEON_FMA;
2850 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
2851 VUnOpMicrokernelTester()
2852 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002853 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002854 }
2855 }
2856
Marat Dukhan4a24a582020-01-06 13:30:00 -08002857 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002858 TEST_REQUIRES_ARM_NEON_FMA;
2859 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
2860 VUnOpMicrokernelTester()
2861 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002862 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002863 }
2864 }
2865
Marat Dukhan4a24a582020-01-06 13:30:00 -08002866 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002867 TEST_REQUIRES_ARM_NEON_FMA;
2868 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
2869 VUnOpMicrokernelTester()
2870 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002871 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002872 }
2873 }
2874
Marat Dukhan4a24a582020-01-06 13:30:00 -08002875 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002876 TEST_REQUIRES_ARM_NEON_FMA;
2877 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
2878 VUnOpMicrokernelTester()
2879 .batch_size(batch_size)
2880 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002881 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002882 }
2883 }
2884#endif // XNN_ARCH_ARM64
2885
2886
2887#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002888 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002889 TEST_REQUIRES_ARM_NEON_FMA;
2890 VUnOpMicrokernelTester()
2891 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07002892 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002893 }
2894
Marat Dukhan4a24a582020-01-06 13:30:00 -08002895 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002896 TEST_REQUIRES_ARM_NEON_FMA;
2897 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
2898 VUnOpMicrokernelTester()
2899 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002900 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002901 }
2902 }
2903
Marat Dukhan4a24a582020-01-06 13:30:00 -08002904 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002905 TEST_REQUIRES_ARM_NEON_FMA;
2906 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
2907 VUnOpMicrokernelTester()
2908 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002909 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002910 }
2911 }
2912
Marat Dukhan4a24a582020-01-06 13:30:00 -08002913 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002914 TEST_REQUIRES_ARM_NEON_FMA;
2915 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
2916 VUnOpMicrokernelTester()
2917 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002918 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002919 }
2920 }
2921
Marat Dukhan4a24a582020-01-06 13:30:00 -08002922 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002923 TEST_REQUIRES_ARM_NEON_FMA;
2924 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
2925 VUnOpMicrokernelTester()
2926 .batch_size(batch_size)
2927 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002928 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002929 }
2930 }
2931#endif // XNN_ARCH_ARM64
2932
2933
2934#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002935 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002936 TEST_REQUIRES_ARM_NEON_FMA;
2937 VUnOpMicrokernelTester()
2938 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07002939 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002940 }
2941
Marat Dukhan4a24a582020-01-06 13:30:00 -08002942 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002943 TEST_REQUIRES_ARM_NEON_FMA;
2944 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
2945 VUnOpMicrokernelTester()
2946 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002947 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002948 }
2949 }
2950
Marat Dukhan4a24a582020-01-06 13:30:00 -08002951 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002952 TEST_REQUIRES_ARM_NEON_FMA;
2953 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
2954 VUnOpMicrokernelTester()
2955 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002956 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002957 }
2958 }
2959
Marat Dukhan4a24a582020-01-06 13:30:00 -08002960 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002961 TEST_REQUIRES_ARM_NEON_FMA;
2962 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
2963 VUnOpMicrokernelTester()
2964 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002965 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002966 }
2967 }
2968
Marat Dukhan4a24a582020-01-06 13:30:00 -08002969 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002970 TEST_REQUIRES_ARM_NEON_FMA;
2971 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
2972 VUnOpMicrokernelTester()
2973 .batch_size(batch_size)
2974 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07002975 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002976 }
2977 }
2978#endif // XNN_ARCH_ARM64
2979
2980
2981#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08002982 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002983 TEST_REQUIRES_ARM_NEON_FMA;
2984 VUnOpMicrokernelTester()
2985 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07002986 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002987 }
2988
Marat Dukhan4a24a582020-01-06 13:30:00 -08002989 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002990 TEST_REQUIRES_ARM_NEON_FMA;
2991 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
2992 VUnOpMicrokernelTester()
2993 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07002994 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002995 }
2996 }
2997
Marat Dukhan4a24a582020-01-06 13:30:00 -08002998 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002999 TEST_REQUIRES_ARM_NEON_FMA;
3000 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
3001 VUnOpMicrokernelTester()
3002 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003003 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003004 }
3005 }
3006
Marat Dukhan4a24a582020-01-06 13:30:00 -08003007 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003008 TEST_REQUIRES_ARM_NEON_FMA;
3009 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
3010 VUnOpMicrokernelTester()
3011 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003012 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003013 }
3014 }
3015
Marat Dukhan4a24a582020-01-06 13:30:00 -08003016 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003017 TEST_REQUIRES_ARM_NEON_FMA;
3018 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
3019 VUnOpMicrokernelTester()
3020 .batch_size(batch_size)
3021 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003022 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003023 }
3024 }
3025#endif // XNN_ARCH_ARM64
3026
3027
3028#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003029 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003030 TEST_REQUIRES_ARM_NEON_FMA;
3031 VUnOpMicrokernelTester()
3032 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07003033 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003034 }
3035
Marat Dukhan4a24a582020-01-06 13:30:00 -08003036 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003037 TEST_REQUIRES_ARM_NEON_FMA;
3038 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
3039 VUnOpMicrokernelTester()
3040 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003041 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003042 }
3043 }
3044
Marat Dukhan4a24a582020-01-06 13:30:00 -08003045 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003046 TEST_REQUIRES_ARM_NEON_FMA;
3047 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
3048 VUnOpMicrokernelTester()
3049 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003050 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003051 }
3052 }
3053
Marat Dukhan4a24a582020-01-06 13:30:00 -08003054 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003055 TEST_REQUIRES_ARM_NEON_FMA;
3056 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
3057 VUnOpMicrokernelTester()
3058 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003059 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003060 }
3061 }
3062
Marat Dukhan4a24a582020-01-06 13:30:00 -08003063 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003064 TEST_REQUIRES_ARM_NEON_FMA;
3065 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
3066 VUnOpMicrokernelTester()
3067 .batch_size(batch_size)
3068 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003069 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003070 }
3071 }
3072#endif // XNN_ARCH_ARM64
3073
3074
3075#if XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003076 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003077 TEST_REQUIRES_ARM_NEON_FMA;
3078 VUnOpMicrokernelTester()
3079 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07003080 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003081 }
3082
Marat Dukhan4a24a582020-01-06 13:30:00 -08003083 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003084 TEST_REQUIRES_ARM_NEON_FMA;
3085 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
3086 VUnOpMicrokernelTester()
3087 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003088 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003089 }
3090 }
3091
Marat Dukhan4a24a582020-01-06 13:30:00 -08003092 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003093 TEST_REQUIRES_ARM_NEON_FMA;
3094 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
3095 VUnOpMicrokernelTester()
3096 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003097 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003098 }
3099 }
3100
Marat Dukhan4a24a582020-01-06 13:30:00 -08003101 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003102 TEST_REQUIRES_ARM_NEON_FMA;
3103 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
3104 VUnOpMicrokernelTester()
3105 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003106 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003107 }
3108 }
3109
Marat Dukhan4a24a582020-01-06 13:30:00 -08003110 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003111 TEST_REQUIRES_ARM_NEON_FMA;
3112 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
3113 VUnOpMicrokernelTester()
3114 .batch_size(batch_size)
3115 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003116 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003117 }
3118 }
3119#endif // XNN_ARCH_ARM64
3120
3121
3122#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003123 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003124 TEST_REQUIRES_ARM_NEON_FMA;
3125 VUnOpMicrokernelTester()
3126 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07003127 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003128 }
3129
Marat Dukhan4a24a582020-01-06 13:30:00 -08003130 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003131 TEST_REQUIRES_ARM_NEON_FMA;
3132 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
3133 VUnOpMicrokernelTester()
3134 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003135 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003136 }
3137 }
3138
Marat Dukhan4a24a582020-01-06 13:30:00 -08003139 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003140 TEST_REQUIRES_ARM_NEON_FMA;
3141 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
3142 VUnOpMicrokernelTester()
3143 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003144 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003145 }
3146 }
3147
Marat Dukhan4a24a582020-01-06 13:30:00 -08003148 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003149 TEST_REQUIRES_ARM_NEON_FMA;
3150 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
3151 VUnOpMicrokernelTester()
3152 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003153 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003154 }
3155 }
3156
Marat Dukhan4a24a582020-01-06 13:30:00 -08003157 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003158 TEST_REQUIRES_ARM_NEON_FMA;
3159 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
3160 VUnOpMicrokernelTester()
3161 .batch_size(batch_size)
3162 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003163 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003164 }
3165 }
3166#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3167
3168
3169#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003170 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003171 TEST_REQUIRES_ARM_NEON_FMA;
3172 VUnOpMicrokernelTester()
3173 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07003174 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003175 }
3176
Marat Dukhan4a24a582020-01-06 13:30:00 -08003177 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003178 TEST_REQUIRES_ARM_NEON_FMA;
3179 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
3180 VUnOpMicrokernelTester()
3181 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003182 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003183 }
3184 }
3185
Marat Dukhan4a24a582020-01-06 13:30:00 -08003186 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003187 TEST_REQUIRES_ARM_NEON_FMA;
3188 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
3189 VUnOpMicrokernelTester()
3190 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003191 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003192 }
3193 }
3194
Marat Dukhan4a24a582020-01-06 13:30:00 -08003195 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003196 TEST_REQUIRES_ARM_NEON_FMA;
3197 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
3198 VUnOpMicrokernelTester()
3199 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003200 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003201 }
3202 }
3203
Marat Dukhan4a24a582020-01-06 13:30:00 -08003204 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003205 TEST_REQUIRES_ARM_NEON_FMA;
3206 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
3207 VUnOpMicrokernelTester()
3208 .batch_size(batch_size)
3209 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003210 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003211 }
3212 }
3213#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3214
3215
3216#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003217 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003218 TEST_REQUIRES_ARM_NEON_FMA;
3219 VUnOpMicrokernelTester()
3220 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07003221 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003222 }
3223
Marat Dukhan4a24a582020-01-06 13:30:00 -08003224 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003225 TEST_REQUIRES_ARM_NEON_FMA;
3226 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
3227 VUnOpMicrokernelTester()
3228 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003229 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003230 }
3231 }
3232
Marat Dukhan4a24a582020-01-06 13:30:00 -08003233 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003234 TEST_REQUIRES_ARM_NEON_FMA;
3235 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
3236 VUnOpMicrokernelTester()
3237 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003238 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003239 }
3240 }
3241
Marat Dukhan4a24a582020-01-06 13:30:00 -08003242 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003243 TEST_REQUIRES_ARM_NEON_FMA;
3244 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
3245 VUnOpMicrokernelTester()
3246 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003247 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003248 }
3249 }
3250
Marat Dukhan4a24a582020-01-06 13:30:00 -08003251 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003252 TEST_REQUIRES_ARM_NEON_FMA;
3253 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
3254 VUnOpMicrokernelTester()
3255 .batch_size(batch_size)
3256 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003257 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003258 }
3259 }
3260#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3261
3262
3263#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003264 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003265 TEST_REQUIRES_ARM_NEON_FMA;
3266 VUnOpMicrokernelTester()
3267 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07003268 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003269 }
3270
Marat Dukhan4a24a582020-01-06 13:30:00 -08003271 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003272 TEST_REQUIRES_ARM_NEON_FMA;
3273 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
3274 VUnOpMicrokernelTester()
3275 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003276 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003277 }
3278 }
3279
Marat Dukhan4a24a582020-01-06 13:30:00 -08003280 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003281 TEST_REQUIRES_ARM_NEON_FMA;
3282 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
3283 VUnOpMicrokernelTester()
3284 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003285 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003286 }
3287 }
3288
Marat Dukhan4a24a582020-01-06 13:30:00 -08003289 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003290 TEST_REQUIRES_ARM_NEON_FMA;
3291 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
3292 VUnOpMicrokernelTester()
3293 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003294 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003295 }
3296 }
3297
Marat Dukhan4a24a582020-01-06 13:30:00 -08003298 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003299 TEST_REQUIRES_ARM_NEON_FMA;
3300 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
3301 VUnOpMicrokernelTester()
3302 .batch_size(batch_size)
3303 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003304 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003305 }
3306 }
3307#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3308
3309
3310#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003311 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003312 TEST_REQUIRES_ARM_NEON_FMA;
3313 VUnOpMicrokernelTester()
3314 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07003315 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003316 }
3317
Marat Dukhan4a24a582020-01-06 13:30:00 -08003318 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003319 TEST_REQUIRES_ARM_NEON_FMA;
3320 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
3321 VUnOpMicrokernelTester()
3322 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003323 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003324 }
3325 }
3326
Marat Dukhan4a24a582020-01-06 13:30:00 -08003327 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003328 TEST_REQUIRES_ARM_NEON_FMA;
3329 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
3330 VUnOpMicrokernelTester()
3331 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003332 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003333 }
3334 }
3335
Marat Dukhan4a24a582020-01-06 13:30:00 -08003336 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003337 TEST_REQUIRES_ARM_NEON_FMA;
3338 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
3339 VUnOpMicrokernelTester()
3340 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003341 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003342 }
3343 }
3344
Marat Dukhan4a24a582020-01-06 13:30:00 -08003345 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003346 TEST_REQUIRES_ARM_NEON_FMA;
3347 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
3348 VUnOpMicrokernelTester()
3349 .batch_size(batch_size)
3350 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003351 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003352 }
3353 }
3354#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3355
3356
3357#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003358 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003359 TEST_REQUIRES_ARM_NEON_FMA;
3360 VUnOpMicrokernelTester()
3361 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07003362 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003363 }
3364
Marat Dukhan4a24a582020-01-06 13:30:00 -08003365 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003366 TEST_REQUIRES_ARM_NEON_FMA;
3367 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
3368 VUnOpMicrokernelTester()
3369 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003370 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003371 }
3372 }
3373
Marat Dukhan4a24a582020-01-06 13:30:00 -08003374 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003375 TEST_REQUIRES_ARM_NEON_FMA;
3376 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
3377 VUnOpMicrokernelTester()
3378 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003379 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003380 }
3381 }
3382
Marat Dukhan4a24a582020-01-06 13:30:00 -08003383 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003384 TEST_REQUIRES_ARM_NEON_FMA;
3385 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
3386 VUnOpMicrokernelTester()
3387 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003388 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003389 }
3390 }
3391
Marat Dukhan4a24a582020-01-06 13:30:00 -08003392 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003393 TEST_REQUIRES_ARM_NEON_FMA;
3394 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
3395 VUnOpMicrokernelTester()
3396 .batch_size(batch_size)
3397 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003398 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003399 }
3400 }
3401#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3402
3403
3404#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003405 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003406 TEST_REQUIRES_ARM_NEON_FMA;
3407 VUnOpMicrokernelTester()
3408 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07003409 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003410 }
3411
Marat Dukhan4a24a582020-01-06 13:30:00 -08003412 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003413 TEST_REQUIRES_ARM_NEON_FMA;
3414 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
3415 VUnOpMicrokernelTester()
3416 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003417 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003418 }
3419 }
3420
Marat Dukhan4a24a582020-01-06 13:30:00 -08003421 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003422 TEST_REQUIRES_ARM_NEON_FMA;
3423 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
3424 VUnOpMicrokernelTester()
3425 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003426 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003427 }
3428 }
3429
Marat Dukhan4a24a582020-01-06 13:30:00 -08003430 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003431 TEST_REQUIRES_ARM_NEON_FMA;
3432 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
3433 VUnOpMicrokernelTester()
3434 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003435 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003436 }
3437 }
3438
Marat Dukhan4a24a582020-01-06 13:30:00 -08003439 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003440 TEST_REQUIRES_ARM_NEON_FMA;
3441 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
3442 VUnOpMicrokernelTester()
3443 .batch_size(batch_size)
3444 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003445 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003446 }
3447 }
3448#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3449
3450
3451#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003452 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003453 TEST_REQUIRES_ARM_NEON_FMA;
3454 VUnOpMicrokernelTester()
3455 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07003456 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003457 }
3458
Marat Dukhan4a24a582020-01-06 13:30:00 -08003459 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003460 TEST_REQUIRES_ARM_NEON_FMA;
3461 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
3462 VUnOpMicrokernelTester()
3463 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003464 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003465 }
3466 }
3467
Marat Dukhan4a24a582020-01-06 13:30:00 -08003468 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003469 TEST_REQUIRES_ARM_NEON_FMA;
3470 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
3471 VUnOpMicrokernelTester()
3472 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003473 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003474 }
3475 }
3476
Marat Dukhan4a24a582020-01-06 13:30:00 -08003477 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003478 TEST_REQUIRES_ARM_NEON_FMA;
3479 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
3480 VUnOpMicrokernelTester()
3481 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003482 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003483 }
3484 }
3485
Marat Dukhan4a24a582020-01-06 13:30:00 -08003486 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003487 TEST_REQUIRES_ARM_NEON_FMA;
3488 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
3489 VUnOpMicrokernelTester()
3490 .batch_size(batch_size)
3491 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003492 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003493 }
3494 }
3495#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3496
3497
3498#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003499 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003500 TEST_REQUIRES_ARM_NEON_FMA;
3501 VUnOpMicrokernelTester()
3502 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07003503 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003504 }
3505
Marat Dukhan4a24a582020-01-06 13:30:00 -08003506 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003507 TEST_REQUIRES_ARM_NEON_FMA;
3508 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
3509 VUnOpMicrokernelTester()
3510 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003511 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003512 }
3513 }
3514
Marat Dukhan4a24a582020-01-06 13:30:00 -08003515 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003516 TEST_REQUIRES_ARM_NEON_FMA;
3517 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
3518 VUnOpMicrokernelTester()
3519 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003520 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003521 }
3522 }
3523
Marat Dukhan4a24a582020-01-06 13:30:00 -08003524 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003525 TEST_REQUIRES_ARM_NEON_FMA;
3526 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
3527 VUnOpMicrokernelTester()
3528 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003529 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003530 }
3531 }
3532
Marat Dukhan4a24a582020-01-06 13:30:00 -08003533 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003534 TEST_REQUIRES_ARM_NEON_FMA;
3535 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
3536 VUnOpMicrokernelTester()
3537 .batch_size(batch_size)
3538 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003539 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003540 }
3541 }
3542#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3543
3544
3545#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003546 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003547 TEST_REQUIRES_ARM_NEON_FMA;
3548 VUnOpMicrokernelTester()
3549 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07003550 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003551 }
3552
Marat Dukhan4a24a582020-01-06 13:30:00 -08003553 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003554 TEST_REQUIRES_ARM_NEON_FMA;
3555 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
3556 VUnOpMicrokernelTester()
3557 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003558 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003559 }
3560 }
3561
Marat Dukhan4a24a582020-01-06 13:30:00 -08003562 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003563 TEST_REQUIRES_ARM_NEON_FMA;
3564 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
3565 VUnOpMicrokernelTester()
3566 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003567 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003568 }
3569 }
3570
Marat Dukhan4a24a582020-01-06 13:30:00 -08003571 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003572 TEST_REQUIRES_ARM_NEON_FMA;
3573 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
3574 VUnOpMicrokernelTester()
3575 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003576 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003577 }
3578 }
3579
Marat Dukhan4a24a582020-01-06 13:30:00 -08003580 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003581 TEST_REQUIRES_ARM_NEON_FMA;
3582 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
3583 VUnOpMicrokernelTester()
3584 .batch_size(batch_size)
3585 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003586 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003587 }
3588 }
3589#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3590
3591
3592#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003593 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003594 TEST_REQUIRES_ARM_NEON_FMA;
3595 VUnOpMicrokernelTester()
3596 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07003597 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003598 }
3599
Marat Dukhan4a24a582020-01-06 13:30:00 -08003600 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003601 TEST_REQUIRES_ARM_NEON_FMA;
3602 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
3603 VUnOpMicrokernelTester()
3604 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003605 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003606 }
3607 }
3608
Marat Dukhan4a24a582020-01-06 13:30:00 -08003609 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003610 TEST_REQUIRES_ARM_NEON_FMA;
3611 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
3612 VUnOpMicrokernelTester()
3613 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003614 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003615 }
3616 }
3617
Marat Dukhan4a24a582020-01-06 13:30:00 -08003618 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003619 TEST_REQUIRES_ARM_NEON_FMA;
3620 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
3621 VUnOpMicrokernelTester()
3622 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003623 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003624 }
3625 }
3626
Marat Dukhan4a24a582020-01-06 13:30:00 -08003627 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003628 TEST_REQUIRES_ARM_NEON_FMA;
3629 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
3630 VUnOpMicrokernelTester()
3631 .batch_size(batch_size)
3632 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003633 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003634 }
3635 }
3636#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3637
3638
3639#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003640 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003641 TEST_REQUIRES_ARM_NEON_FMA;
3642 VUnOpMicrokernelTester()
3643 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07003644 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003645 }
3646
Marat Dukhan4a24a582020-01-06 13:30:00 -08003647 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003648 TEST_REQUIRES_ARM_NEON_FMA;
3649 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
3650 VUnOpMicrokernelTester()
3651 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003652 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003653 }
3654 }
3655
Marat Dukhan4a24a582020-01-06 13:30:00 -08003656 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003657 TEST_REQUIRES_ARM_NEON_FMA;
3658 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
3659 VUnOpMicrokernelTester()
3660 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003661 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003662 }
3663 }
3664
Marat Dukhan4a24a582020-01-06 13:30:00 -08003665 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003666 TEST_REQUIRES_ARM_NEON_FMA;
3667 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
3668 VUnOpMicrokernelTester()
3669 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003670 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003671 }
3672 }
3673
Marat Dukhan4a24a582020-01-06 13:30:00 -08003674 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003675 TEST_REQUIRES_ARM_NEON_FMA;
3676 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
3677 VUnOpMicrokernelTester()
3678 .batch_size(batch_size)
3679 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003680 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003681 }
3682 }
3683#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3684
3685
3686#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003687 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003688 TEST_REQUIRES_ARM_NEON_FMA;
3689 VUnOpMicrokernelTester()
3690 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07003691 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003692 }
3693
Marat Dukhan4a24a582020-01-06 13:30:00 -08003694 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003695 TEST_REQUIRES_ARM_NEON_FMA;
3696 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
3697 VUnOpMicrokernelTester()
3698 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003699 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003700 }
3701 }
3702
Marat Dukhan4a24a582020-01-06 13:30:00 -08003703 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003704 TEST_REQUIRES_ARM_NEON_FMA;
3705 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
3706 VUnOpMicrokernelTester()
3707 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003708 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003709 }
3710 }
3711
Marat Dukhan4a24a582020-01-06 13:30:00 -08003712 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003713 TEST_REQUIRES_ARM_NEON_FMA;
3714 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
3715 VUnOpMicrokernelTester()
3716 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003717 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003718 }
3719 }
3720
Marat Dukhan4a24a582020-01-06 13:30:00 -08003721 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003722 TEST_REQUIRES_ARM_NEON_FMA;
3723 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
3724 VUnOpMicrokernelTester()
3725 .batch_size(batch_size)
3726 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003727 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003728 }
3729 }
3730#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3731
3732
3733#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003734 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003735 TEST_REQUIRES_ARM_NEON_FMA;
3736 VUnOpMicrokernelTester()
3737 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07003738 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003739 }
3740
Marat Dukhan4a24a582020-01-06 13:30:00 -08003741 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003742 TEST_REQUIRES_ARM_NEON_FMA;
3743 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
3744 VUnOpMicrokernelTester()
3745 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003746 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003747 }
3748 }
3749
Marat Dukhan4a24a582020-01-06 13:30:00 -08003750 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003751 TEST_REQUIRES_ARM_NEON_FMA;
3752 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
3753 VUnOpMicrokernelTester()
3754 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003755 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003756 }
3757 }
3758
Marat Dukhan4a24a582020-01-06 13:30:00 -08003759 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003760 TEST_REQUIRES_ARM_NEON_FMA;
3761 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
3762 VUnOpMicrokernelTester()
3763 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003764 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003765 }
3766 }
3767
Marat Dukhan4a24a582020-01-06 13:30:00 -08003768 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003769 TEST_REQUIRES_ARM_NEON_FMA;
3770 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
3771 VUnOpMicrokernelTester()
3772 .batch_size(batch_size)
3773 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003774 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003775 }
3776 }
3777#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3778
3779
3780#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003781 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003782 TEST_REQUIRES_ARM_NEON_FMA;
3783 VUnOpMicrokernelTester()
3784 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07003785 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003786 }
3787
Marat Dukhan4a24a582020-01-06 13:30:00 -08003788 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003789 TEST_REQUIRES_ARM_NEON_FMA;
3790 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
3791 VUnOpMicrokernelTester()
3792 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003793 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003794 }
3795 }
3796
Marat Dukhan4a24a582020-01-06 13:30:00 -08003797 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003798 TEST_REQUIRES_ARM_NEON_FMA;
3799 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
3800 VUnOpMicrokernelTester()
3801 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003802 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003803 }
3804 }
3805
Marat Dukhan4a24a582020-01-06 13:30:00 -08003806 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003807 TEST_REQUIRES_ARM_NEON_FMA;
3808 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
3809 VUnOpMicrokernelTester()
3810 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003811 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003812 }
3813 }
3814
Marat Dukhan4a24a582020-01-06 13:30:00 -08003815 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003816 TEST_REQUIRES_ARM_NEON_FMA;
3817 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
3818 VUnOpMicrokernelTester()
3819 .batch_size(batch_size)
3820 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003821 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003822 }
3823 }
3824#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3825
3826
3827#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003828 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003829 TEST_REQUIRES_ARM_NEON_FMA;
3830 VUnOpMicrokernelTester()
3831 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07003832 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003833 }
3834
Marat Dukhan4a24a582020-01-06 13:30:00 -08003835 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003836 TEST_REQUIRES_ARM_NEON_FMA;
3837 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
3838 VUnOpMicrokernelTester()
3839 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003840 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003841 }
3842 }
3843
Marat Dukhan4a24a582020-01-06 13:30:00 -08003844 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003845 TEST_REQUIRES_ARM_NEON_FMA;
3846 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
3847 VUnOpMicrokernelTester()
3848 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003849 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003850 }
3851 }
3852
Marat Dukhan4a24a582020-01-06 13:30:00 -08003853 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003854 TEST_REQUIRES_ARM_NEON_FMA;
3855 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
3856 VUnOpMicrokernelTester()
3857 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003858 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003859 }
3860 }
3861
Marat Dukhan4a24a582020-01-06 13:30:00 -08003862 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003863 TEST_REQUIRES_ARM_NEON_FMA;
3864 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
3865 VUnOpMicrokernelTester()
3866 .batch_size(batch_size)
3867 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003868 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003869 }
3870 }
3871#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3872
3873
3874#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003875 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003876 TEST_REQUIRES_ARM_NEON_FMA;
3877 VUnOpMicrokernelTester()
3878 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07003879 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003880 }
3881
Marat Dukhan4a24a582020-01-06 13:30:00 -08003882 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003883 TEST_REQUIRES_ARM_NEON_FMA;
3884 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
3885 VUnOpMicrokernelTester()
3886 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003887 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003888 }
3889 }
3890
Marat Dukhan4a24a582020-01-06 13:30:00 -08003891 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003892 TEST_REQUIRES_ARM_NEON_FMA;
3893 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
3894 VUnOpMicrokernelTester()
3895 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003896 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003897 }
3898 }
3899
Marat Dukhan4a24a582020-01-06 13:30:00 -08003900 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003901 TEST_REQUIRES_ARM_NEON_FMA;
3902 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
3903 VUnOpMicrokernelTester()
3904 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003905 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003906 }
3907 }
3908
Marat Dukhan4a24a582020-01-06 13:30:00 -08003909 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003910 TEST_REQUIRES_ARM_NEON_FMA;
3911 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
3912 VUnOpMicrokernelTester()
3913 .batch_size(batch_size)
3914 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003915 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003916 }
3917 }
3918#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3919
3920
3921#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003922 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003923 TEST_REQUIRES_ARM_NEON_FMA;
3924 VUnOpMicrokernelTester()
3925 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07003926 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003927 }
3928
Marat Dukhan4a24a582020-01-06 13:30:00 -08003929 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003930 TEST_REQUIRES_ARM_NEON_FMA;
3931 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
3932 VUnOpMicrokernelTester()
3933 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003934 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003935 }
3936 }
3937
Marat Dukhan4a24a582020-01-06 13:30:00 -08003938 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003939 TEST_REQUIRES_ARM_NEON_FMA;
3940 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
3941 VUnOpMicrokernelTester()
3942 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003943 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003944 }
3945 }
3946
Marat Dukhan4a24a582020-01-06 13:30:00 -08003947 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003948 TEST_REQUIRES_ARM_NEON_FMA;
3949 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
3950 VUnOpMicrokernelTester()
3951 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003952 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003953 }
3954 }
3955
Marat Dukhan4a24a582020-01-06 13:30:00 -08003956 TEST(F32_SIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003957 TEST_REQUIRES_ARM_NEON_FMA;
3958 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
3959 VUnOpMicrokernelTester()
3960 .batch_size(batch_size)
3961 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07003962 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003963 }
3964 }
3965#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
3966
3967
3968#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08003969 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, batch_eq_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003970 TEST_REQUIRES_ARM_NEON;
3971 VUnOpMicrokernelTester()
3972 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07003973 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003974 }
3975
Marat Dukhan4a24a582020-01-06 13:30:00 -08003976 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, batch_div_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003977 TEST_REQUIRES_ARM_NEON;
3978 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
3979 VUnOpMicrokernelTester()
3980 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003981 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003982 }
3983 }
3984
Marat Dukhan4a24a582020-01-06 13:30:00 -08003985 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, batch_lt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003986 TEST_REQUIRES_ARM_NEON;
3987 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
3988 VUnOpMicrokernelTester()
3989 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003990 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003991 }
3992 }
3993
Marat Dukhan4a24a582020-01-06 13:30:00 -08003994 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, batch_gt_4) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08003995 TEST_REQUIRES_ARM_NEON;
3996 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
3997 VUnOpMicrokernelTester()
3998 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07003999 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004000 }
4001 }
4002
Marat Dukhan4a24a582020-01-06 13:30:00 -08004003 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004004 TEST_REQUIRES_ARM_NEON;
4005 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
4006 VUnOpMicrokernelTester()
4007 .batch_size(batch_size)
4008 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004009 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004010 }
4011 }
4012#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
4013
4014
4015#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08004016 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, batch_eq_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004017 TEST_REQUIRES_ARM_NEON;
4018 VUnOpMicrokernelTester()
4019 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07004020 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004021 }
4022
Marat Dukhan4a24a582020-01-06 13:30:00 -08004023 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, batch_div_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004024 TEST_REQUIRES_ARM_NEON;
4025 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
4026 VUnOpMicrokernelTester()
4027 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004028 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004029 }
4030 }
4031
Marat Dukhan4a24a582020-01-06 13:30:00 -08004032 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, batch_lt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004033 TEST_REQUIRES_ARM_NEON;
4034 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
4035 VUnOpMicrokernelTester()
4036 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004037 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004038 }
4039 }
4040
Marat Dukhan4a24a582020-01-06 13:30:00 -08004041 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, batch_gt_8) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004042 TEST_REQUIRES_ARM_NEON;
4043 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
4044 VUnOpMicrokernelTester()
4045 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004046 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004047 }
4048 }
4049
Marat Dukhan4a24a582020-01-06 13:30:00 -08004050 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004051 TEST_REQUIRES_ARM_NEON;
4052 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
4053 VUnOpMicrokernelTester()
4054 .batch_size(batch_size)
4055 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004056 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004057 }
4058 }
4059#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
4060
4061
4062#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08004063 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, batch_eq_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004064 TEST_REQUIRES_ARM_NEON;
4065 VUnOpMicrokernelTester()
4066 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07004067 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004068 }
4069
Marat Dukhan4a24a582020-01-06 13:30:00 -08004070 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, batch_div_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004071 TEST_REQUIRES_ARM_NEON;
4072 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
4073 VUnOpMicrokernelTester()
4074 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004075 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004076 }
4077 }
4078
Marat Dukhan4a24a582020-01-06 13:30:00 -08004079 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, batch_lt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004080 TEST_REQUIRES_ARM_NEON;
4081 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
4082 VUnOpMicrokernelTester()
4083 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004084 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004085 }
4086 }
4087
Marat Dukhan4a24a582020-01-06 13:30:00 -08004088 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, batch_gt_12) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004089 TEST_REQUIRES_ARM_NEON;
4090 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
4091 VUnOpMicrokernelTester()
4092 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004093 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004094 }
4095 }
4096
Marat Dukhan4a24a582020-01-06 13:30:00 -08004097 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004098 TEST_REQUIRES_ARM_NEON;
4099 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
4100 VUnOpMicrokernelTester()
4101 .batch_size(batch_size)
4102 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004103 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004104 }
4105 }
4106#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
4107
4108
4109#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08004110 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, batch_eq_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004111 TEST_REQUIRES_ARM_NEON;
4112 VUnOpMicrokernelTester()
4113 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07004114 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004115 }
4116
Marat Dukhan4a24a582020-01-06 13:30:00 -08004117 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, batch_div_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004118 TEST_REQUIRES_ARM_NEON;
4119 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
4120 VUnOpMicrokernelTester()
4121 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004122 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004123 }
4124 }
4125
Marat Dukhan4a24a582020-01-06 13:30:00 -08004126 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, batch_lt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004127 TEST_REQUIRES_ARM_NEON;
4128 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
4129 VUnOpMicrokernelTester()
4130 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004131 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004132 }
4133 }
4134
Marat Dukhan4a24a582020-01-06 13:30:00 -08004135 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, batch_gt_16) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004136 TEST_REQUIRES_ARM_NEON;
4137 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
4138 VUnOpMicrokernelTester()
4139 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004140 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004141 }
4142 }
4143
Marat Dukhan4a24a582020-01-06 13:30:00 -08004144 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004145 TEST_REQUIRES_ARM_NEON;
4146 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
4147 VUnOpMicrokernelTester()
4148 .batch_size(batch_size)
4149 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004150 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004151 }
4152 }
4153#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
4154
4155
4156#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08004157 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, batch_eq_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004158 TEST_REQUIRES_ARM_NEON;
4159 VUnOpMicrokernelTester()
4160 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07004161 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004162 }
4163
Marat Dukhan4a24a582020-01-06 13:30:00 -08004164 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, batch_div_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004165 TEST_REQUIRES_ARM_NEON;
4166 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
4167 VUnOpMicrokernelTester()
4168 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004169 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004170 }
4171 }
4172
Marat Dukhan4a24a582020-01-06 13:30:00 -08004173 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, batch_lt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004174 TEST_REQUIRES_ARM_NEON;
4175 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
4176 VUnOpMicrokernelTester()
4177 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004178 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004179 }
4180 }
4181
Marat Dukhan4a24a582020-01-06 13:30:00 -08004182 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, batch_gt_20) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004183 TEST_REQUIRES_ARM_NEON;
4184 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
4185 VUnOpMicrokernelTester()
4186 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004187 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004188 }
4189 }
4190
Marat Dukhan4a24a582020-01-06 13:30:00 -08004191 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004192 TEST_REQUIRES_ARM_NEON;
4193 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
4194 VUnOpMicrokernelTester()
4195 .batch_size(batch_size)
4196 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004197 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004198 }
4199 }
4200#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
4201
4202
4203#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan4a24a582020-01-06 13:30:00 -08004204 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, batch_eq_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004205 TEST_REQUIRES_ARM_NEON;
4206 VUnOpMicrokernelTester()
4207 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07004208 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004209 }
4210
Marat Dukhan4a24a582020-01-06 13:30:00 -08004211 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, batch_div_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004212 TEST_REQUIRES_ARM_NEON;
4213 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
4214 VUnOpMicrokernelTester()
4215 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004216 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004217 }
4218 }
4219
Marat Dukhan4a24a582020-01-06 13:30:00 -08004220 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, batch_lt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004221 TEST_REQUIRES_ARM_NEON;
4222 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
4223 VUnOpMicrokernelTester()
4224 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004225 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004226 }
4227 }
4228
Marat Dukhan4a24a582020-01-06 13:30:00 -08004229 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, batch_gt_24) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004230 TEST_REQUIRES_ARM_NEON;
4231 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
4232 VUnOpMicrokernelTester()
4233 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004234 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004235 }
4236 }
4237
Marat Dukhan4a24a582020-01-06 13:30:00 -08004238 TEST(F32_SIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, inplace) {
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004239 TEST_REQUIRES_ARM_NEON;
4240 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
4241 VUnOpMicrokernelTester()
4242 .batch_size(batch_size)
4243 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004244 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004245 }
4246 }
4247#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
4248
4249
Marat Dukhan7bee7512019-11-18 15:15:48 -08004250#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004251 TEST(F32_SIGMOID__SSE2_P5_DIV_X4, batch_eq_4) {
4252 TEST_REQUIRES_X86_SSE2;
4253 VUnOpMicrokernelTester()
4254 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07004255 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004256 }
4257
4258 TEST(F32_SIGMOID__SSE2_P5_DIV_X4, batch_div_4) {
4259 TEST_REQUIRES_X86_SSE2;
4260 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
4261 VUnOpMicrokernelTester()
4262 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004263 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004264 }
4265 }
4266
4267 TEST(F32_SIGMOID__SSE2_P5_DIV_X4, batch_lt_4) {
4268 TEST_REQUIRES_X86_SSE2;
4269 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
4270 VUnOpMicrokernelTester()
4271 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004272 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004273 }
4274 }
4275
4276 TEST(F32_SIGMOID__SSE2_P5_DIV_X4, batch_gt_4) {
4277 TEST_REQUIRES_X86_SSE2;
4278 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
4279 VUnOpMicrokernelTester()
4280 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004281 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004282 }
4283 }
4284
4285 TEST(F32_SIGMOID__SSE2_P5_DIV_X4, inplace) {
4286 TEST_REQUIRES_X86_SSE2;
4287 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
4288 VUnOpMicrokernelTester()
4289 .batch_size(batch_size)
4290 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004291 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004292 }
4293 }
4294#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4295
4296
4297#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan7bee7512019-11-18 15:15:48 -08004298 TEST(F32_SIGMOID__SSE2_P5_DIV_X8, batch_eq_8) {
4299 TEST_REQUIRES_X86_SSE2;
4300 VUnOpMicrokernelTester()
4301 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07004302 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004303 }
4304
4305 TEST(F32_SIGMOID__SSE2_P5_DIV_X8, batch_div_8) {
4306 TEST_REQUIRES_X86_SSE2;
4307 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
4308 VUnOpMicrokernelTester()
4309 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004310 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004311 }
4312 }
4313
4314 TEST(F32_SIGMOID__SSE2_P5_DIV_X8, batch_lt_8) {
4315 TEST_REQUIRES_X86_SSE2;
4316 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
4317 VUnOpMicrokernelTester()
4318 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004319 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004320 }
4321 }
4322
4323 TEST(F32_SIGMOID__SSE2_P5_DIV_X8, batch_gt_8) {
4324 TEST_REQUIRES_X86_SSE2;
4325 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
4326 VUnOpMicrokernelTester()
4327 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004328 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004329 }
4330 }
4331
4332 TEST(F32_SIGMOID__SSE2_P5_DIV_X8, inplace) {
4333 TEST_REQUIRES_X86_SSE2;
4334 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
4335 VUnOpMicrokernelTester()
4336 .batch_size(batch_size)
4337 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004338 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004339 }
4340 }
4341#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4342
4343
4344#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004345 TEST(F32_SIGMOID__SSE2_P5_DIV_X12, batch_eq_12) {
4346 TEST_REQUIRES_X86_SSE2;
4347 VUnOpMicrokernelTester()
4348 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07004349 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004350 }
4351
4352 TEST(F32_SIGMOID__SSE2_P5_DIV_X12, batch_div_12) {
4353 TEST_REQUIRES_X86_SSE2;
4354 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
4355 VUnOpMicrokernelTester()
4356 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004357 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004358 }
4359 }
4360
4361 TEST(F32_SIGMOID__SSE2_P5_DIV_X12, batch_lt_12) {
4362 TEST_REQUIRES_X86_SSE2;
4363 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
4364 VUnOpMicrokernelTester()
4365 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004366 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004367 }
4368 }
4369
4370 TEST(F32_SIGMOID__SSE2_P5_DIV_X12, batch_gt_12) {
4371 TEST_REQUIRES_X86_SSE2;
4372 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
4373 VUnOpMicrokernelTester()
4374 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004375 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004376 }
4377 }
4378
4379 TEST(F32_SIGMOID__SSE2_P5_DIV_X12, inplace) {
4380 TEST_REQUIRES_X86_SSE2;
4381 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
4382 VUnOpMicrokernelTester()
4383 .batch_size(batch_size)
4384 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004385 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004386 }
4387 }
4388#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4389
4390
4391#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan7bee7512019-11-18 15:15:48 -08004392 TEST(F32_SIGMOID__SSE2_P5_DIV_X16, batch_eq_16) {
4393 TEST_REQUIRES_X86_SSE2;
4394 VUnOpMicrokernelTester()
4395 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07004396 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004397 }
4398
4399 TEST(F32_SIGMOID__SSE2_P5_DIV_X16, batch_div_16) {
4400 TEST_REQUIRES_X86_SSE2;
4401 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
4402 VUnOpMicrokernelTester()
4403 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004404 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004405 }
4406 }
4407
4408 TEST(F32_SIGMOID__SSE2_P5_DIV_X16, batch_lt_16) {
4409 TEST_REQUIRES_X86_SSE2;
4410 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
4411 VUnOpMicrokernelTester()
4412 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004413 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004414 }
4415 }
4416
4417 TEST(F32_SIGMOID__SSE2_P5_DIV_X16, batch_gt_16) {
4418 TEST_REQUIRES_X86_SSE2;
4419 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
4420 VUnOpMicrokernelTester()
4421 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004422 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004423 }
4424 }
4425
4426 TEST(F32_SIGMOID__SSE2_P5_DIV_X16, inplace) {
4427 TEST_REQUIRES_X86_SSE2;
4428 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
4429 VUnOpMicrokernelTester()
4430 .batch_size(batch_size)
4431 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004432 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan7bee7512019-11-18 15:15:48 -08004433 }
4434 }
4435#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan3a77ea72019-12-23 12:10:24 -08004436
4437
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004438#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4439 TEST(F32_SIGMOID__SSE2_P5_DIV_X20, batch_eq_20) {
4440 TEST_REQUIRES_X86_SSE2;
4441 VUnOpMicrokernelTester()
4442 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07004443 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004444 }
4445
4446 TEST(F32_SIGMOID__SSE2_P5_DIV_X20, batch_div_20) {
4447 TEST_REQUIRES_X86_SSE2;
4448 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
4449 VUnOpMicrokernelTester()
4450 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004451 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004452 }
4453 }
4454
4455 TEST(F32_SIGMOID__SSE2_P5_DIV_X20, batch_lt_20) {
4456 TEST_REQUIRES_X86_SSE2;
4457 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
4458 VUnOpMicrokernelTester()
4459 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004460 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004461 }
4462 }
4463
4464 TEST(F32_SIGMOID__SSE2_P5_DIV_X20, batch_gt_20) {
4465 TEST_REQUIRES_X86_SSE2;
4466 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
4467 VUnOpMicrokernelTester()
4468 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004469 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004470 }
4471 }
4472
4473 TEST(F32_SIGMOID__SSE2_P5_DIV_X20, inplace) {
4474 TEST_REQUIRES_X86_SSE2;
4475 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
4476 VUnOpMicrokernelTester()
4477 .batch_size(batch_size)
4478 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004479 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004480 }
4481 }
4482#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4483
4484
4485#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4486 TEST(F32_SIGMOID__SSE2_P5_DIV_X24, batch_eq_24) {
4487 TEST_REQUIRES_X86_SSE2;
4488 VUnOpMicrokernelTester()
4489 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07004490 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004491 }
4492
4493 TEST(F32_SIGMOID__SSE2_P5_DIV_X24, batch_div_24) {
4494 TEST_REQUIRES_X86_SSE2;
4495 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
4496 VUnOpMicrokernelTester()
4497 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004498 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004499 }
4500 }
4501
4502 TEST(F32_SIGMOID__SSE2_P5_DIV_X24, batch_lt_24) {
4503 TEST_REQUIRES_X86_SSE2;
4504 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
4505 VUnOpMicrokernelTester()
4506 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004507 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004508 }
4509 }
4510
4511 TEST(F32_SIGMOID__SSE2_P5_DIV_X24, batch_gt_24) {
4512 TEST_REQUIRES_X86_SSE2;
4513 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
4514 VUnOpMicrokernelTester()
4515 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004516 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004517 }
4518 }
4519
4520 TEST(F32_SIGMOID__SSE2_P5_DIV_X24, inplace) {
4521 TEST_REQUIRES_X86_SSE2;
4522 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
4523 VUnOpMicrokernelTester()
4524 .batch_size(batch_size)
4525 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004526 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004527 }
4528 }
4529#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4530
4531
4532#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4533 TEST(F32_SIGMOID__SSE41_P5_DIV_X4, batch_eq_4) {
4534 TEST_REQUIRES_X86_SSE41;
4535 VUnOpMicrokernelTester()
4536 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -07004537 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004538 }
4539
4540 TEST(F32_SIGMOID__SSE41_P5_DIV_X4, batch_div_4) {
4541 TEST_REQUIRES_X86_SSE41;
4542 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
4543 VUnOpMicrokernelTester()
4544 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004545 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004546 }
4547 }
4548
4549 TEST(F32_SIGMOID__SSE41_P5_DIV_X4, batch_lt_4) {
4550 TEST_REQUIRES_X86_SSE41;
4551 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
4552 VUnOpMicrokernelTester()
4553 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004554 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004555 }
4556 }
4557
4558 TEST(F32_SIGMOID__SSE41_P5_DIV_X4, batch_gt_4) {
4559 TEST_REQUIRES_X86_SSE41;
4560 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
4561 VUnOpMicrokernelTester()
4562 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004563 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004564 }
4565 }
4566
4567 TEST(F32_SIGMOID__SSE41_P5_DIV_X4, inplace) {
4568 TEST_REQUIRES_X86_SSE41;
4569 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
4570 VUnOpMicrokernelTester()
4571 .batch_size(batch_size)
4572 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004573 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004574 }
4575 }
4576#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4577
4578
4579#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4580 TEST(F32_SIGMOID__SSE41_P5_DIV_X8, batch_eq_8) {
4581 TEST_REQUIRES_X86_SSE41;
4582 VUnOpMicrokernelTester()
4583 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07004584 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004585 }
4586
4587 TEST(F32_SIGMOID__SSE41_P5_DIV_X8, batch_div_8) {
4588 TEST_REQUIRES_X86_SSE41;
4589 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
4590 VUnOpMicrokernelTester()
4591 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004592 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004593 }
4594 }
4595
4596 TEST(F32_SIGMOID__SSE41_P5_DIV_X8, batch_lt_8) {
4597 TEST_REQUIRES_X86_SSE41;
4598 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
4599 VUnOpMicrokernelTester()
4600 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004601 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004602 }
4603 }
4604
4605 TEST(F32_SIGMOID__SSE41_P5_DIV_X8, batch_gt_8) {
4606 TEST_REQUIRES_X86_SSE41;
4607 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
4608 VUnOpMicrokernelTester()
4609 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004610 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004611 }
4612 }
4613
4614 TEST(F32_SIGMOID__SSE41_P5_DIV_X8, inplace) {
4615 TEST_REQUIRES_X86_SSE41;
4616 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
4617 VUnOpMicrokernelTester()
4618 .batch_size(batch_size)
4619 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004620 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004621 }
4622 }
4623#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4624
4625
4626#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4627 TEST(F32_SIGMOID__SSE41_P5_DIV_X12, batch_eq_12) {
4628 TEST_REQUIRES_X86_SSE41;
4629 VUnOpMicrokernelTester()
4630 .batch_size(12)
Frank Barchard361e44a2020-06-08 18:18:25 -07004631 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004632 }
4633
4634 TEST(F32_SIGMOID__SSE41_P5_DIV_X12, batch_div_12) {
4635 TEST_REQUIRES_X86_SSE41;
4636 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
4637 VUnOpMicrokernelTester()
4638 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004639 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004640 }
4641 }
4642
4643 TEST(F32_SIGMOID__SSE41_P5_DIV_X12, batch_lt_12) {
4644 TEST_REQUIRES_X86_SSE41;
4645 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
4646 VUnOpMicrokernelTester()
4647 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004648 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004649 }
4650 }
4651
4652 TEST(F32_SIGMOID__SSE41_P5_DIV_X12, batch_gt_12) {
4653 TEST_REQUIRES_X86_SSE41;
4654 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
4655 VUnOpMicrokernelTester()
4656 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004657 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004658 }
4659 }
4660
4661 TEST(F32_SIGMOID__SSE41_P5_DIV_X12, inplace) {
4662 TEST_REQUIRES_X86_SSE41;
4663 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
4664 VUnOpMicrokernelTester()
4665 .batch_size(batch_size)
4666 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004667 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004668 }
4669 }
4670#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4671
4672
4673#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4674 TEST(F32_SIGMOID__SSE41_P5_DIV_X16, batch_eq_16) {
4675 TEST_REQUIRES_X86_SSE41;
4676 VUnOpMicrokernelTester()
4677 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07004678 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004679 }
4680
4681 TEST(F32_SIGMOID__SSE41_P5_DIV_X16, batch_div_16) {
4682 TEST_REQUIRES_X86_SSE41;
4683 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
4684 VUnOpMicrokernelTester()
4685 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004686 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004687 }
4688 }
4689
4690 TEST(F32_SIGMOID__SSE41_P5_DIV_X16, batch_lt_16) {
4691 TEST_REQUIRES_X86_SSE41;
4692 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
4693 VUnOpMicrokernelTester()
4694 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004695 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004696 }
4697 }
4698
4699 TEST(F32_SIGMOID__SSE41_P5_DIV_X16, batch_gt_16) {
4700 TEST_REQUIRES_X86_SSE41;
4701 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
4702 VUnOpMicrokernelTester()
4703 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004704 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004705 }
4706 }
4707
4708 TEST(F32_SIGMOID__SSE41_P5_DIV_X16, inplace) {
4709 TEST_REQUIRES_X86_SSE41;
4710 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
4711 VUnOpMicrokernelTester()
4712 .batch_size(batch_size)
4713 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004714 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004715 }
4716 }
4717#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4718
4719
4720#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4721 TEST(F32_SIGMOID__SSE41_P5_DIV_X20, batch_eq_20) {
4722 TEST_REQUIRES_X86_SSE41;
4723 VUnOpMicrokernelTester()
4724 .batch_size(20)
Frank Barchard361e44a2020-06-08 18:18:25 -07004725 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004726 }
4727
4728 TEST(F32_SIGMOID__SSE41_P5_DIV_X20, batch_div_20) {
4729 TEST_REQUIRES_X86_SSE41;
4730 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
4731 VUnOpMicrokernelTester()
4732 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004733 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004734 }
4735 }
4736
4737 TEST(F32_SIGMOID__SSE41_P5_DIV_X20, batch_lt_20) {
4738 TEST_REQUIRES_X86_SSE41;
4739 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
4740 VUnOpMicrokernelTester()
4741 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004742 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004743 }
4744 }
4745
4746 TEST(F32_SIGMOID__SSE41_P5_DIV_X20, batch_gt_20) {
4747 TEST_REQUIRES_X86_SSE41;
4748 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
4749 VUnOpMicrokernelTester()
4750 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004751 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004752 }
4753 }
4754
4755 TEST(F32_SIGMOID__SSE41_P5_DIV_X20, inplace) {
4756 TEST_REQUIRES_X86_SSE41;
4757 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
4758 VUnOpMicrokernelTester()
4759 .batch_size(batch_size)
4760 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004761 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004762 }
4763 }
4764#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4765
4766
4767#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4768 TEST(F32_SIGMOID__SSE41_P5_DIV_X24, batch_eq_24) {
4769 TEST_REQUIRES_X86_SSE41;
4770 VUnOpMicrokernelTester()
4771 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07004772 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004773 }
4774
4775 TEST(F32_SIGMOID__SSE41_P5_DIV_X24, batch_div_24) {
4776 TEST_REQUIRES_X86_SSE41;
4777 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
4778 VUnOpMicrokernelTester()
4779 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004780 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004781 }
4782 }
4783
4784 TEST(F32_SIGMOID__SSE41_P5_DIV_X24, batch_lt_24) {
4785 TEST_REQUIRES_X86_SSE41;
4786 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
4787 VUnOpMicrokernelTester()
4788 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004789 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004790 }
4791 }
4792
4793 TEST(F32_SIGMOID__SSE41_P5_DIV_X24, batch_gt_24) {
4794 TEST_REQUIRES_X86_SSE41;
4795 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
4796 VUnOpMicrokernelTester()
4797 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07004798 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004799 }
4800 }
4801
4802 TEST(F32_SIGMOID__SSE41_P5_DIV_X24, inplace) {
4803 TEST_REQUIRES_X86_SSE41;
4804 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
4805 VUnOpMicrokernelTester()
4806 .batch_size(batch_size)
4807 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07004808 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08004809 }
4810 }
4811#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4812
4813
Marat Dukhanfa0a4322020-01-06 16:14:29 -08004814#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhand243c1a2020-09-17 18:48:10 -07004815 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X4, batch_eq_4) {
4816 TEST_REQUIRES_X86_SSE2;
4817 VUnOpMicrokernelTester()
4818 .batch_size(4)
4819 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
4820 }
4821
4822 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X4, batch_div_4) {
4823 TEST_REQUIRES_X86_SSE2;
4824 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
4825 VUnOpMicrokernelTester()
4826 .batch_size(batch_size)
4827 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
4828 }
4829 }
4830
4831 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X4, batch_lt_4) {
4832 TEST_REQUIRES_X86_SSE2;
4833 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
4834 VUnOpMicrokernelTester()
4835 .batch_size(batch_size)
4836 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
4837 }
4838 }
4839
4840 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X4, batch_gt_4) {
4841 TEST_REQUIRES_X86_SSE2;
4842 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
4843 VUnOpMicrokernelTester()
4844 .batch_size(batch_size)
4845 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
4846 }
4847 }
4848
4849 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X4, inplace) {
4850 TEST_REQUIRES_X86_SSE2;
4851 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
4852 VUnOpMicrokernelTester()
4853 .batch_size(batch_size)
4854 .inplace(true)
4855 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
4856 }
4857 }
4858#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4859
4860
4861#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4862 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X8, batch_eq_8) {
4863 TEST_REQUIRES_X86_SSE2;
4864 VUnOpMicrokernelTester()
4865 .batch_size(8)
4866 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
4867 }
4868
4869 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X8, batch_div_8) {
4870 TEST_REQUIRES_X86_SSE2;
4871 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
4872 VUnOpMicrokernelTester()
4873 .batch_size(batch_size)
4874 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
4875 }
4876 }
4877
4878 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X8, batch_lt_8) {
4879 TEST_REQUIRES_X86_SSE2;
4880 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
4881 VUnOpMicrokernelTester()
4882 .batch_size(batch_size)
4883 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
4884 }
4885 }
4886
4887 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X8, batch_gt_8) {
4888 TEST_REQUIRES_X86_SSE2;
4889 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
4890 VUnOpMicrokernelTester()
4891 .batch_size(batch_size)
4892 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
4893 }
4894 }
4895
4896 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X8, inplace) {
4897 TEST_REQUIRES_X86_SSE2;
4898 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
4899 VUnOpMicrokernelTester()
4900 .batch_size(batch_size)
4901 .inplace(true)
4902 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
4903 }
4904 }
4905#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4906
4907
4908#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4909 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X12, batch_eq_12) {
4910 TEST_REQUIRES_X86_SSE2;
4911 VUnOpMicrokernelTester()
4912 .batch_size(12)
4913 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
4914 }
4915
4916 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X12, batch_div_12) {
4917 TEST_REQUIRES_X86_SSE2;
4918 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
4919 VUnOpMicrokernelTester()
4920 .batch_size(batch_size)
4921 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
4922 }
4923 }
4924
4925 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X12, batch_lt_12) {
4926 TEST_REQUIRES_X86_SSE2;
4927 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
4928 VUnOpMicrokernelTester()
4929 .batch_size(batch_size)
4930 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
4931 }
4932 }
4933
4934 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X12, batch_gt_12) {
4935 TEST_REQUIRES_X86_SSE2;
4936 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
4937 VUnOpMicrokernelTester()
4938 .batch_size(batch_size)
4939 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
4940 }
4941 }
4942
4943 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X12, inplace) {
4944 TEST_REQUIRES_X86_SSE2;
4945 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
4946 VUnOpMicrokernelTester()
4947 .batch_size(batch_size)
4948 .inplace(true)
4949 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
4950 }
4951 }
4952#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
4953
4954
4955#if XNN_ARCH_X86 || XNN_ARCH_X86_64
4956 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X16, batch_eq_16) {
4957 TEST_REQUIRES_X86_SSE2;
4958 VUnOpMicrokernelTester()
4959 .batch_size(16)
4960 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
4961 }
4962
4963 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X16, batch_div_16) {
4964 TEST_REQUIRES_X86_SSE2;
4965 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
4966 VUnOpMicrokernelTester()
4967 .batch_size(batch_size)
4968 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
4969 }
4970 }
4971
4972 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X16, batch_lt_16) {
4973 TEST_REQUIRES_X86_SSE2;
4974 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
4975 VUnOpMicrokernelTester()
4976 .batch_size(batch_size)
4977 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
4978 }
4979 }
4980
4981 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X16, batch_gt_16) {
4982 TEST_REQUIRES_X86_SSE2;
4983 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
4984 VUnOpMicrokernelTester()
4985 .batch_size(batch_size)
4986 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
4987 }
4988 }
4989
4990 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X16, inplace) {
4991 TEST_REQUIRES_X86_SSE2;
4992 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
4993 VUnOpMicrokernelTester()
4994 .batch_size(batch_size)
4995 .inplace(true)
4996 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
4997 }
4998 }
4999#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5000
5001
5002#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5003 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X20, batch_eq_20) {
5004 TEST_REQUIRES_X86_SSE2;
5005 VUnOpMicrokernelTester()
5006 .batch_size(20)
5007 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5008 }
5009
5010 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X20, batch_div_20) {
5011 TEST_REQUIRES_X86_SSE2;
5012 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
5013 VUnOpMicrokernelTester()
5014 .batch_size(batch_size)
5015 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5016 }
5017 }
5018
5019 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X20, batch_lt_20) {
5020 TEST_REQUIRES_X86_SSE2;
5021 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
5022 VUnOpMicrokernelTester()
5023 .batch_size(batch_size)
5024 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5025 }
5026 }
5027
5028 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X20, batch_gt_20) {
5029 TEST_REQUIRES_X86_SSE2;
5030 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
5031 VUnOpMicrokernelTester()
5032 .batch_size(batch_size)
5033 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5034 }
5035 }
5036
5037 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X20, inplace) {
5038 TEST_REQUIRES_X86_SSE2;
5039 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
5040 VUnOpMicrokernelTester()
5041 .batch_size(batch_size)
5042 .inplace(true)
5043 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5044 }
5045 }
5046#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5047
5048
5049#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5050 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X24, batch_eq_24) {
5051 TEST_REQUIRES_X86_SSE2;
5052 VUnOpMicrokernelTester()
5053 .batch_size(24)
5054 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5055 }
5056
5057 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X24, batch_div_24) {
5058 TEST_REQUIRES_X86_SSE2;
5059 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
5060 VUnOpMicrokernelTester()
5061 .batch_size(batch_size)
5062 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5063 }
5064 }
5065
5066 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X24, batch_lt_24) {
5067 TEST_REQUIRES_X86_SSE2;
5068 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
5069 VUnOpMicrokernelTester()
5070 .batch_size(batch_size)
5071 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5072 }
5073 }
5074
5075 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X24, batch_gt_24) {
5076 TEST_REQUIRES_X86_SSE2;
5077 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
5078 VUnOpMicrokernelTester()
5079 .batch_size(batch_size)
5080 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5081 }
5082 }
5083
5084 TEST(F32_SIGMOID__SSE2_LUT64_P2_DIV_X24, inplace) {
5085 TEST_REQUIRES_X86_SSE2;
5086 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
5087 VUnOpMicrokernelTester()
5088 .batch_size(batch_size)
5089 .inplace(true)
5090 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5091 }
5092 }
5093#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5094
5095
5096#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5097 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X4, batch_eq_4) {
5098 TEST_REQUIRES_X86_SSE41;
5099 VUnOpMicrokernelTester()
5100 .batch_size(4)
5101 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
5102 }
5103
5104 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X4, batch_div_4) {
5105 TEST_REQUIRES_X86_SSE41;
5106 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
5107 VUnOpMicrokernelTester()
5108 .batch_size(batch_size)
5109 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
5110 }
5111 }
5112
5113 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X4, batch_lt_4) {
5114 TEST_REQUIRES_X86_SSE41;
5115 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
5116 VUnOpMicrokernelTester()
5117 .batch_size(batch_size)
5118 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
5119 }
5120 }
5121
5122 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X4, batch_gt_4) {
5123 TEST_REQUIRES_X86_SSE41;
5124 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
5125 VUnOpMicrokernelTester()
5126 .batch_size(batch_size)
5127 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
5128 }
5129 }
5130
5131 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X4, inplace) {
5132 TEST_REQUIRES_X86_SSE41;
5133 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
5134 VUnOpMicrokernelTester()
5135 .batch_size(batch_size)
5136 .inplace(true)
5137 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
5138 }
5139 }
5140#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5141
5142
5143#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5144 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X8, batch_eq_8) {
5145 TEST_REQUIRES_X86_SSE41;
5146 VUnOpMicrokernelTester()
5147 .batch_size(8)
5148 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5149 }
5150
5151 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X8, batch_div_8) {
5152 TEST_REQUIRES_X86_SSE41;
5153 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
5154 VUnOpMicrokernelTester()
5155 .batch_size(batch_size)
5156 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5157 }
5158 }
5159
5160 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X8, batch_lt_8) {
5161 TEST_REQUIRES_X86_SSE41;
5162 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
5163 VUnOpMicrokernelTester()
5164 .batch_size(batch_size)
5165 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5166 }
5167 }
5168
5169 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X8, batch_gt_8) {
5170 TEST_REQUIRES_X86_SSE41;
5171 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
5172 VUnOpMicrokernelTester()
5173 .batch_size(batch_size)
5174 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5175 }
5176 }
5177
5178 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X8, inplace) {
5179 TEST_REQUIRES_X86_SSE41;
5180 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
5181 VUnOpMicrokernelTester()
5182 .batch_size(batch_size)
5183 .inplace(true)
5184 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5185 }
5186 }
5187#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5188
5189
5190#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5191 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X12, batch_eq_12) {
5192 TEST_REQUIRES_X86_SSE41;
5193 VUnOpMicrokernelTester()
5194 .batch_size(12)
5195 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
5196 }
5197
5198 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X12, batch_div_12) {
5199 TEST_REQUIRES_X86_SSE41;
5200 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
5201 VUnOpMicrokernelTester()
5202 .batch_size(batch_size)
5203 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
5204 }
5205 }
5206
5207 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X12, batch_lt_12) {
5208 TEST_REQUIRES_X86_SSE41;
5209 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
5210 VUnOpMicrokernelTester()
5211 .batch_size(batch_size)
5212 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
5213 }
5214 }
5215
5216 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X12, batch_gt_12) {
5217 TEST_REQUIRES_X86_SSE41;
5218 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
5219 VUnOpMicrokernelTester()
5220 .batch_size(batch_size)
5221 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
5222 }
5223 }
5224
5225 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X12, inplace) {
5226 TEST_REQUIRES_X86_SSE41;
5227 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
5228 VUnOpMicrokernelTester()
5229 .batch_size(batch_size)
5230 .inplace(true)
5231 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
5232 }
5233 }
5234#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5235
5236
5237#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5238 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X16, batch_eq_16) {
5239 TEST_REQUIRES_X86_SSE41;
5240 VUnOpMicrokernelTester()
5241 .batch_size(16)
5242 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5243 }
5244
5245 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X16, batch_div_16) {
5246 TEST_REQUIRES_X86_SSE41;
5247 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
5248 VUnOpMicrokernelTester()
5249 .batch_size(batch_size)
5250 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5251 }
5252 }
5253
5254 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X16, batch_lt_16) {
5255 TEST_REQUIRES_X86_SSE41;
5256 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
5257 VUnOpMicrokernelTester()
5258 .batch_size(batch_size)
5259 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5260 }
5261 }
5262
5263 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X16, batch_gt_16) {
5264 TEST_REQUIRES_X86_SSE41;
5265 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
5266 VUnOpMicrokernelTester()
5267 .batch_size(batch_size)
5268 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5269 }
5270 }
5271
5272 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X16, inplace) {
5273 TEST_REQUIRES_X86_SSE41;
5274 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
5275 VUnOpMicrokernelTester()
5276 .batch_size(batch_size)
5277 .inplace(true)
5278 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5279 }
5280 }
5281#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5282
5283
5284#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5285 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X20, batch_eq_20) {
5286 TEST_REQUIRES_X86_SSE41;
5287 VUnOpMicrokernelTester()
5288 .batch_size(20)
5289 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5290 }
5291
5292 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X20, batch_div_20) {
5293 TEST_REQUIRES_X86_SSE41;
5294 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
5295 VUnOpMicrokernelTester()
5296 .batch_size(batch_size)
5297 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5298 }
5299 }
5300
5301 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X20, batch_lt_20) {
5302 TEST_REQUIRES_X86_SSE41;
5303 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
5304 VUnOpMicrokernelTester()
5305 .batch_size(batch_size)
5306 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5307 }
5308 }
5309
5310 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X20, batch_gt_20) {
5311 TEST_REQUIRES_X86_SSE41;
5312 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
5313 VUnOpMicrokernelTester()
5314 .batch_size(batch_size)
5315 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5316 }
5317 }
5318
5319 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X20, inplace) {
5320 TEST_REQUIRES_X86_SSE41;
5321 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
5322 VUnOpMicrokernelTester()
5323 .batch_size(batch_size)
5324 .inplace(true)
5325 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
5326 }
5327 }
5328#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5329
5330
5331#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5332 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X24, batch_eq_24) {
5333 TEST_REQUIRES_X86_SSE41;
5334 VUnOpMicrokernelTester()
5335 .batch_size(24)
5336 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5337 }
5338
5339 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X24, batch_div_24) {
5340 TEST_REQUIRES_X86_SSE41;
5341 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
5342 VUnOpMicrokernelTester()
5343 .batch_size(batch_size)
5344 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5345 }
5346 }
5347
5348 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X24, batch_lt_24) {
5349 TEST_REQUIRES_X86_SSE41;
5350 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
5351 VUnOpMicrokernelTester()
5352 .batch_size(batch_size)
5353 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5354 }
5355 }
5356
5357 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X24, batch_gt_24) {
5358 TEST_REQUIRES_X86_SSE41;
5359 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
5360 VUnOpMicrokernelTester()
5361 .batch_size(batch_size)
5362 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5363 }
5364 }
5365
5366 TEST(F32_SIGMOID__SSE41_LUT64_P2_DIV_X24, inplace) {
5367 TEST_REQUIRES_X86_SSE41;
5368 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
5369 VUnOpMicrokernelTester()
5370 .batch_size(batch_size)
5371 .inplace(true)
5372 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5373 }
5374 }
5375#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5376
5377
5378#if XNN_ARCH_X86 || XNN_ARCH_X86_64
T.J. Alumbaughdc2b29c2020-10-14 13:56:08 -07005379 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X8, batch_eq_8) {
5380 TEST_REQUIRES_X86_AVX;
5381 VUnOpMicrokernelTester()
5382 .batch_size(8)
5383 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5384 }
5385
5386 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X8, batch_div_8) {
5387 TEST_REQUIRES_X86_AVX;
5388 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
5389 VUnOpMicrokernelTester()
5390 .batch_size(batch_size)
5391 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5392 }
5393 }
5394
5395 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X8, batch_lt_8) {
5396 TEST_REQUIRES_X86_AVX;
5397 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
5398 VUnOpMicrokernelTester()
5399 .batch_size(batch_size)
5400 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5401 }
5402 }
5403
5404 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X8, batch_gt_8) {
5405 TEST_REQUIRES_X86_AVX;
5406 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
5407 VUnOpMicrokernelTester()
5408 .batch_size(batch_size)
5409 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5410 }
5411 }
5412
5413 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X8, inplace) {
5414 TEST_REQUIRES_X86_AVX;
5415 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
5416 VUnOpMicrokernelTester()
5417 .batch_size(batch_size)
5418 .inplace(true)
5419 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5420 }
5421 }
5422#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5423
5424
5425#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5426 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X16, batch_eq_16) {
5427 TEST_REQUIRES_X86_AVX;
5428 VUnOpMicrokernelTester()
5429 .batch_size(16)
5430 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5431 }
5432
5433 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X16, batch_div_16) {
5434 TEST_REQUIRES_X86_AVX;
5435 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
5436 VUnOpMicrokernelTester()
5437 .batch_size(batch_size)
5438 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5439 }
5440 }
5441
5442 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X16, batch_lt_16) {
5443 TEST_REQUIRES_X86_AVX;
5444 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
5445 VUnOpMicrokernelTester()
5446 .batch_size(batch_size)
5447 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5448 }
5449 }
5450
5451 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X16, batch_gt_16) {
5452 TEST_REQUIRES_X86_AVX;
5453 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
5454 VUnOpMicrokernelTester()
5455 .batch_size(batch_size)
5456 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5457 }
5458 }
5459
5460 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X16, inplace) {
5461 TEST_REQUIRES_X86_AVX;
5462 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
5463 VUnOpMicrokernelTester()
5464 .batch_size(batch_size)
5465 .inplace(true)
5466 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5467 }
5468 }
5469#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5470
5471
5472#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5473 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X24, batch_eq_24) {
5474 TEST_REQUIRES_X86_AVX;
5475 VUnOpMicrokernelTester()
5476 .batch_size(24)
5477 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5478 }
5479
5480 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X24, batch_div_24) {
5481 TEST_REQUIRES_X86_AVX;
5482 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
5483 VUnOpMicrokernelTester()
5484 .batch_size(batch_size)
5485 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5486 }
5487 }
5488
5489 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X24, batch_lt_24) {
5490 TEST_REQUIRES_X86_AVX;
5491 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
5492 VUnOpMicrokernelTester()
5493 .batch_size(batch_size)
5494 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5495 }
5496 }
5497
5498 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X24, batch_gt_24) {
5499 TEST_REQUIRES_X86_AVX;
5500 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
5501 VUnOpMicrokernelTester()
5502 .batch_size(batch_size)
5503 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5504 }
5505 }
5506
5507 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X24, inplace) {
5508 TEST_REQUIRES_X86_AVX;
5509 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
5510 VUnOpMicrokernelTester()
5511 .batch_size(batch_size)
5512 .inplace(true)
5513 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5514 }
5515 }
5516#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5517
5518
5519#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5520 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X32, batch_eq_32) {
5521 TEST_REQUIRES_X86_AVX;
5522 VUnOpMicrokernelTester()
5523 .batch_size(32)
5524 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
5525 }
5526
5527 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X32, batch_div_32) {
5528 TEST_REQUIRES_X86_AVX;
5529 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
5530 VUnOpMicrokernelTester()
5531 .batch_size(batch_size)
5532 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
5533 }
5534 }
5535
5536 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X32, batch_lt_32) {
5537 TEST_REQUIRES_X86_AVX;
5538 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
5539 VUnOpMicrokernelTester()
5540 .batch_size(batch_size)
5541 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
5542 }
5543 }
5544
5545 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X32, batch_gt_32) {
5546 TEST_REQUIRES_X86_AVX;
5547 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
5548 VUnOpMicrokernelTester()
5549 .batch_size(batch_size)
5550 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
5551 }
5552 }
5553
5554 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X32, inplace) {
5555 TEST_REQUIRES_X86_AVX;
5556 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
5557 VUnOpMicrokernelTester()
5558 .batch_size(batch_size)
5559 .inplace(true)
5560 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
5561 }
5562 }
5563#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5564
5565
5566#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5567 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X40, batch_eq_40) {
5568 TEST_REQUIRES_X86_AVX;
5569 VUnOpMicrokernelTester()
5570 .batch_size(40)
5571 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
5572 }
5573
5574 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X40, batch_div_40) {
5575 TEST_REQUIRES_X86_AVX;
5576 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
5577 VUnOpMicrokernelTester()
5578 .batch_size(batch_size)
5579 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
5580 }
5581 }
5582
5583 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X40, batch_lt_40) {
5584 TEST_REQUIRES_X86_AVX;
5585 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
5586 VUnOpMicrokernelTester()
5587 .batch_size(batch_size)
5588 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
5589 }
5590 }
5591
5592 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X40, batch_gt_40) {
5593 TEST_REQUIRES_X86_AVX;
5594 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
5595 VUnOpMicrokernelTester()
5596 .batch_size(batch_size)
5597 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
5598 }
5599 }
5600
5601 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X40, inplace) {
5602 TEST_REQUIRES_X86_AVX;
5603 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
5604 VUnOpMicrokernelTester()
5605 .batch_size(batch_size)
5606 .inplace(true)
5607 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
5608 }
5609 }
5610#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5611
5612
5613#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5614 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X48, batch_eq_48) {
5615 TEST_REQUIRES_X86_AVX;
5616 VUnOpMicrokernelTester()
5617 .batch_size(48)
5618 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
5619 }
5620
5621 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X48, batch_div_48) {
5622 TEST_REQUIRES_X86_AVX;
5623 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
5624 VUnOpMicrokernelTester()
5625 .batch_size(batch_size)
5626 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
5627 }
5628 }
5629
5630 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X48, batch_lt_48) {
5631 TEST_REQUIRES_X86_AVX;
5632 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
5633 VUnOpMicrokernelTester()
5634 .batch_size(batch_size)
5635 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
5636 }
5637 }
5638
5639 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X48, batch_gt_48) {
5640 TEST_REQUIRES_X86_AVX;
5641 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
5642 VUnOpMicrokernelTester()
5643 .batch_size(batch_size)
5644 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
5645 }
5646 }
5647
5648 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X48, inplace) {
5649 TEST_REQUIRES_X86_AVX;
5650 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
5651 VUnOpMicrokernelTester()
5652 .batch_size(batch_size)
5653 .inplace(true)
5654 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
5655 }
5656 }
5657#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5658
5659
5660#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5661 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X56, batch_eq_56) {
5662 TEST_REQUIRES_X86_AVX;
5663 VUnOpMicrokernelTester()
5664 .batch_size(56)
5665 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
5666 }
5667
5668 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X56, batch_div_56) {
5669 TEST_REQUIRES_X86_AVX;
5670 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
5671 VUnOpMicrokernelTester()
5672 .batch_size(batch_size)
5673 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
5674 }
5675 }
5676
5677 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X56, batch_lt_56) {
5678 TEST_REQUIRES_X86_AVX;
5679 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
5680 VUnOpMicrokernelTester()
5681 .batch_size(batch_size)
5682 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
5683 }
5684 }
5685
5686 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X56, batch_gt_56) {
5687 TEST_REQUIRES_X86_AVX;
5688 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
5689 VUnOpMicrokernelTester()
5690 .batch_size(batch_size)
5691 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
5692 }
5693 }
5694
5695 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X56, inplace) {
5696 TEST_REQUIRES_X86_AVX;
5697 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
5698 VUnOpMicrokernelTester()
5699 .batch_size(batch_size)
5700 .inplace(true)
5701 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
5702 }
5703 }
5704#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5705
5706
5707#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5708 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X64, batch_eq_64) {
5709 TEST_REQUIRES_X86_AVX;
5710 VUnOpMicrokernelTester()
5711 .batch_size(64)
5712 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
5713 }
5714
5715 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X64, batch_div_64) {
5716 TEST_REQUIRES_X86_AVX;
5717 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
5718 VUnOpMicrokernelTester()
5719 .batch_size(batch_size)
5720 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
5721 }
5722 }
5723
5724 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X64, batch_lt_64) {
5725 TEST_REQUIRES_X86_AVX;
5726 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
5727 VUnOpMicrokernelTester()
5728 .batch_size(batch_size)
5729 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
5730 }
5731 }
5732
5733 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X64, batch_gt_64) {
5734 TEST_REQUIRES_X86_AVX;
5735 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
5736 VUnOpMicrokernelTester()
5737 .batch_size(batch_size)
5738 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
5739 }
5740 }
5741
5742 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X64, inplace) {
5743 TEST_REQUIRES_X86_AVX;
5744 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
5745 VUnOpMicrokernelTester()
5746 .batch_size(batch_size)
5747 .inplace(true)
5748 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
5749 }
5750 }
5751#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5752
5753
5754#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5755 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X72, batch_eq_72) {
5756 TEST_REQUIRES_X86_AVX;
5757 VUnOpMicrokernelTester()
5758 .batch_size(72)
5759 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
5760 }
5761
5762 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X72, batch_div_72) {
5763 TEST_REQUIRES_X86_AVX;
5764 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
5765 VUnOpMicrokernelTester()
5766 .batch_size(batch_size)
5767 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
5768 }
5769 }
5770
5771 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X72, batch_lt_72) {
5772 TEST_REQUIRES_X86_AVX;
5773 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
5774 VUnOpMicrokernelTester()
5775 .batch_size(batch_size)
5776 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
5777 }
5778 }
5779
5780 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X72, batch_gt_72) {
5781 TEST_REQUIRES_X86_AVX;
5782 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
5783 VUnOpMicrokernelTester()
5784 .batch_size(batch_size)
5785 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
5786 }
5787 }
5788
5789 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X72, inplace) {
5790 TEST_REQUIRES_X86_AVX;
5791 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
5792 VUnOpMicrokernelTester()
5793 .batch_size(batch_size)
5794 .inplace(true)
5795 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
5796 }
5797 }
5798#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5799
5800
5801#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5802 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X80, batch_eq_80) {
5803 TEST_REQUIRES_X86_AVX;
5804 VUnOpMicrokernelTester()
5805 .batch_size(80)
5806 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
5807 }
5808
5809 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X80, batch_div_80) {
5810 TEST_REQUIRES_X86_AVX;
5811 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
5812 VUnOpMicrokernelTester()
5813 .batch_size(batch_size)
5814 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
5815 }
5816 }
5817
5818 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X80, batch_lt_80) {
5819 TEST_REQUIRES_X86_AVX;
5820 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
5821 VUnOpMicrokernelTester()
5822 .batch_size(batch_size)
5823 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
5824 }
5825 }
5826
5827 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X80, batch_gt_80) {
5828 TEST_REQUIRES_X86_AVX;
5829 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
5830 VUnOpMicrokernelTester()
5831 .batch_size(batch_size)
5832 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
5833 }
5834 }
5835
5836 TEST(F32_SIGMOID__AVX_RR2_P5_DIV_X80, inplace) {
5837 TEST_REQUIRES_X86_AVX;
5838 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
5839 VUnOpMicrokernelTester()
5840 .batch_size(batch_size)
5841 .inplace(true)
5842 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
5843 }
5844 }
5845#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5846
5847
5848#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5849 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X8, batch_eq_8) {
5850 TEST_REQUIRES_X86_AVX;
5851 VUnOpMicrokernelTester()
5852 .batch_size(8)
5853 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5854 }
5855
5856 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X8, batch_div_8) {
5857 TEST_REQUIRES_X86_AVX;
5858 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
5859 VUnOpMicrokernelTester()
5860 .batch_size(batch_size)
5861 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5862 }
5863 }
5864
5865 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X8, batch_lt_8) {
5866 TEST_REQUIRES_X86_AVX;
5867 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
5868 VUnOpMicrokernelTester()
5869 .batch_size(batch_size)
5870 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5871 }
5872 }
5873
5874 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X8, batch_gt_8) {
5875 TEST_REQUIRES_X86_AVX;
5876 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
5877 VUnOpMicrokernelTester()
5878 .batch_size(batch_size)
5879 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5880 }
5881 }
5882
5883 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X8, inplace) {
5884 TEST_REQUIRES_X86_AVX;
5885 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
5886 VUnOpMicrokernelTester()
5887 .batch_size(batch_size)
5888 .inplace(true)
5889 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
5890 }
5891 }
5892#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5893
5894
5895#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5896 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X16, batch_eq_16) {
5897 TEST_REQUIRES_X86_AVX;
5898 VUnOpMicrokernelTester()
5899 .batch_size(16)
5900 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5901 }
5902
5903 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X16, batch_div_16) {
5904 TEST_REQUIRES_X86_AVX;
5905 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
5906 VUnOpMicrokernelTester()
5907 .batch_size(batch_size)
5908 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5909 }
5910 }
5911
5912 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X16, batch_lt_16) {
5913 TEST_REQUIRES_X86_AVX;
5914 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
5915 VUnOpMicrokernelTester()
5916 .batch_size(batch_size)
5917 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5918 }
5919 }
5920
5921 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X16, batch_gt_16) {
5922 TEST_REQUIRES_X86_AVX;
5923 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
5924 VUnOpMicrokernelTester()
5925 .batch_size(batch_size)
5926 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5927 }
5928 }
5929
5930 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X16, inplace) {
5931 TEST_REQUIRES_X86_AVX;
5932 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
5933 VUnOpMicrokernelTester()
5934 .batch_size(batch_size)
5935 .inplace(true)
5936 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
5937 }
5938 }
5939#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5940
5941
5942#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5943 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X24, batch_eq_24) {
5944 TEST_REQUIRES_X86_AVX;
5945 VUnOpMicrokernelTester()
5946 .batch_size(24)
5947 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5948 }
5949
5950 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X24, batch_div_24) {
5951 TEST_REQUIRES_X86_AVX;
5952 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
5953 VUnOpMicrokernelTester()
5954 .batch_size(batch_size)
5955 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5956 }
5957 }
5958
5959 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X24, batch_lt_24) {
5960 TEST_REQUIRES_X86_AVX;
5961 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
5962 VUnOpMicrokernelTester()
5963 .batch_size(batch_size)
5964 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5965 }
5966 }
5967
5968 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X24, batch_gt_24) {
5969 TEST_REQUIRES_X86_AVX;
5970 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
5971 VUnOpMicrokernelTester()
5972 .batch_size(batch_size)
5973 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5974 }
5975 }
5976
5977 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X24, inplace) {
5978 TEST_REQUIRES_X86_AVX;
5979 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
5980 VUnOpMicrokernelTester()
5981 .batch_size(batch_size)
5982 .inplace(true)
5983 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
5984 }
5985 }
5986#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
5987
5988
5989#if XNN_ARCH_X86 || XNN_ARCH_X86_64
5990 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X32, batch_eq_32) {
5991 TEST_REQUIRES_X86_AVX;
5992 VUnOpMicrokernelTester()
5993 .batch_size(32)
5994 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
5995 }
5996
5997 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X32, batch_div_32) {
5998 TEST_REQUIRES_X86_AVX;
5999 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
6000 VUnOpMicrokernelTester()
6001 .batch_size(batch_size)
6002 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
6003 }
6004 }
6005
6006 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X32, batch_lt_32) {
6007 TEST_REQUIRES_X86_AVX;
6008 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
6009 VUnOpMicrokernelTester()
6010 .batch_size(batch_size)
6011 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
6012 }
6013 }
6014
6015 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X32, batch_gt_32) {
6016 TEST_REQUIRES_X86_AVX;
6017 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
6018 VUnOpMicrokernelTester()
6019 .batch_size(batch_size)
6020 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
6021 }
6022 }
6023
6024 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X32, inplace) {
6025 TEST_REQUIRES_X86_AVX;
6026 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
6027 VUnOpMicrokernelTester()
6028 .batch_size(batch_size)
6029 .inplace(true)
6030 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
6031 }
6032 }
6033#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6034
6035
6036#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6037 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X40, batch_eq_40) {
6038 TEST_REQUIRES_X86_AVX;
6039 VUnOpMicrokernelTester()
6040 .batch_size(40)
6041 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
6042 }
6043
6044 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X40, batch_div_40) {
6045 TEST_REQUIRES_X86_AVX;
6046 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
6047 VUnOpMicrokernelTester()
6048 .batch_size(batch_size)
6049 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
6050 }
6051 }
6052
6053 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X40, batch_lt_40) {
6054 TEST_REQUIRES_X86_AVX;
6055 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
6056 VUnOpMicrokernelTester()
6057 .batch_size(batch_size)
6058 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
6059 }
6060 }
6061
6062 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X40, batch_gt_40) {
6063 TEST_REQUIRES_X86_AVX;
6064 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
6065 VUnOpMicrokernelTester()
6066 .batch_size(batch_size)
6067 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
6068 }
6069 }
6070
6071 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X40, inplace) {
6072 TEST_REQUIRES_X86_AVX;
6073 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
6074 VUnOpMicrokernelTester()
6075 .batch_size(batch_size)
6076 .inplace(true)
6077 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
6078 }
6079 }
6080#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6081
6082
6083#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6084 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X48, batch_eq_48) {
6085 TEST_REQUIRES_X86_AVX;
6086 VUnOpMicrokernelTester()
6087 .batch_size(48)
6088 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
6089 }
6090
6091 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X48, batch_div_48) {
6092 TEST_REQUIRES_X86_AVX;
6093 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
6094 VUnOpMicrokernelTester()
6095 .batch_size(batch_size)
6096 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
6097 }
6098 }
6099
6100 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X48, batch_lt_48) {
6101 TEST_REQUIRES_X86_AVX;
6102 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
6103 VUnOpMicrokernelTester()
6104 .batch_size(batch_size)
6105 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
6106 }
6107 }
6108
6109 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X48, batch_gt_48) {
6110 TEST_REQUIRES_X86_AVX;
6111 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
6112 VUnOpMicrokernelTester()
6113 .batch_size(batch_size)
6114 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
6115 }
6116 }
6117
6118 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X48, inplace) {
6119 TEST_REQUIRES_X86_AVX;
6120 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
6121 VUnOpMicrokernelTester()
6122 .batch_size(batch_size)
6123 .inplace(true)
6124 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
6125 }
6126 }
6127#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6128
6129
6130#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6131 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X56, batch_eq_56) {
6132 TEST_REQUIRES_X86_AVX;
6133 VUnOpMicrokernelTester()
6134 .batch_size(56)
6135 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
6136 }
6137
6138 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X56, batch_div_56) {
6139 TEST_REQUIRES_X86_AVX;
6140 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
6141 VUnOpMicrokernelTester()
6142 .batch_size(batch_size)
6143 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
6144 }
6145 }
6146
6147 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X56, batch_lt_56) {
6148 TEST_REQUIRES_X86_AVX;
6149 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
6150 VUnOpMicrokernelTester()
6151 .batch_size(batch_size)
6152 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
6153 }
6154 }
6155
6156 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X56, batch_gt_56) {
6157 TEST_REQUIRES_X86_AVX;
6158 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
6159 VUnOpMicrokernelTester()
6160 .batch_size(batch_size)
6161 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
6162 }
6163 }
6164
6165 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X56, inplace) {
6166 TEST_REQUIRES_X86_AVX;
6167 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
6168 VUnOpMicrokernelTester()
6169 .batch_size(batch_size)
6170 .inplace(true)
6171 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
6172 }
6173 }
6174#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6175
6176
6177#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6178 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X64, batch_eq_64) {
6179 TEST_REQUIRES_X86_AVX;
6180 VUnOpMicrokernelTester()
6181 .batch_size(64)
6182 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
6183 }
6184
6185 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X64, batch_div_64) {
6186 TEST_REQUIRES_X86_AVX;
6187 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
6188 VUnOpMicrokernelTester()
6189 .batch_size(batch_size)
6190 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
6191 }
6192 }
6193
6194 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X64, batch_lt_64) {
6195 TEST_REQUIRES_X86_AVX;
6196 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
6197 VUnOpMicrokernelTester()
6198 .batch_size(batch_size)
6199 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
6200 }
6201 }
6202
6203 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X64, batch_gt_64) {
6204 TEST_REQUIRES_X86_AVX;
6205 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
6206 VUnOpMicrokernelTester()
6207 .batch_size(batch_size)
6208 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
6209 }
6210 }
6211
6212 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X64, inplace) {
6213 TEST_REQUIRES_X86_AVX;
6214 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
6215 VUnOpMicrokernelTester()
6216 .batch_size(batch_size)
6217 .inplace(true)
6218 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
6219 }
6220 }
6221#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6222
6223
6224#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6225 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X72, batch_eq_72) {
6226 TEST_REQUIRES_X86_AVX;
6227 VUnOpMicrokernelTester()
6228 .batch_size(72)
6229 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
6230 }
6231
6232 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X72, batch_div_72) {
6233 TEST_REQUIRES_X86_AVX;
6234 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
6235 VUnOpMicrokernelTester()
6236 .batch_size(batch_size)
6237 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
6238 }
6239 }
6240
6241 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X72, batch_lt_72) {
6242 TEST_REQUIRES_X86_AVX;
6243 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
6244 VUnOpMicrokernelTester()
6245 .batch_size(batch_size)
6246 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
6247 }
6248 }
6249
6250 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X72, batch_gt_72) {
6251 TEST_REQUIRES_X86_AVX;
6252 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
6253 VUnOpMicrokernelTester()
6254 .batch_size(batch_size)
6255 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
6256 }
6257 }
6258
6259 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X72, inplace) {
6260 TEST_REQUIRES_X86_AVX;
6261 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
6262 VUnOpMicrokernelTester()
6263 .batch_size(batch_size)
6264 .inplace(true)
6265 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
6266 }
6267 }
6268#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6269
6270
6271#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6272 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X80, batch_eq_80) {
6273 TEST_REQUIRES_X86_AVX;
6274 VUnOpMicrokernelTester()
6275 .batch_size(80)
6276 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
6277 }
6278
6279 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X80, batch_div_80) {
6280 TEST_REQUIRES_X86_AVX;
6281 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
6282 VUnOpMicrokernelTester()
6283 .batch_size(batch_size)
6284 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
6285 }
6286 }
6287
6288 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X80, batch_lt_80) {
6289 TEST_REQUIRES_X86_AVX;
6290 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
6291 VUnOpMicrokernelTester()
6292 .batch_size(batch_size)
6293 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
6294 }
6295 }
6296
6297 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X80, batch_gt_80) {
6298 TEST_REQUIRES_X86_AVX;
6299 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
6300 VUnOpMicrokernelTester()
6301 .batch_size(batch_size)
6302 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
6303 }
6304 }
6305
6306 TEST(F32_SIGMOID__AVX_RR2_P5_NR2_X80, inplace) {
6307 TEST_REQUIRES_X86_AVX;
6308 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
6309 VUnOpMicrokernelTester()
6310 .batch_size(batch_size)
6311 .inplace(true)
6312 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
6313 }
6314 }
6315#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6316
6317
6318#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006319 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X8, batch_eq_8) {
6320 TEST_REQUIRES_X86_AVX2;
6321 VUnOpMicrokernelTester()
6322 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07006323 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006324 }
6325
6326 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X8, batch_div_8) {
6327 TEST_REQUIRES_X86_AVX2;
6328 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
6329 VUnOpMicrokernelTester()
6330 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006331 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006332 }
6333 }
6334
6335 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X8, batch_lt_8) {
6336 TEST_REQUIRES_X86_AVX2;
6337 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
6338 VUnOpMicrokernelTester()
6339 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006340 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006341 }
6342 }
6343
6344 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X8, batch_gt_8) {
6345 TEST_REQUIRES_X86_AVX2;
6346 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
6347 VUnOpMicrokernelTester()
6348 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006349 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006350 }
6351 }
6352
6353 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X8, inplace) {
6354 TEST_REQUIRES_X86_AVX2;
6355 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
6356 VUnOpMicrokernelTester()
6357 .batch_size(batch_size)
6358 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006359 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006360 }
6361 }
6362#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6363
6364
6365#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6366 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X16, batch_eq_16) {
6367 TEST_REQUIRES_X86_AVX2;
6368 VUnOpMicrokernelTester()
6369 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07006370 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006371 }
6372
6373 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X16, batch_div_16) {
6374 TEST_REQUIRES_X86_AVX2;
6375 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
6376 VUnOpMicrokernelTester()
6377 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006378 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006379 }
6380 }
6381
6382 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X16, batch_lt_16) {
6383 TEST_REQUIRES_X86_AVX2;
6384 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
6385 VUnOpMicrokernelTester()
6386 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006387 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006388 }
6389 }
6390
6391 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X16, batch_gt_16) {
6392 TEST_REQUIRES_X86_AVX2;
6393 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
6394 VUnOpMicrokernelTester()
6395 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006396 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006397 }
6398 }
6399
6400 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X16, inplace) {
6401 TEST_REQUIRES_X86_AVX2;
6402 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
6403 VUnOpMicrokernelTester()
6404 .batch_size(batch_size)
6405 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006406 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006407 }
6408 }
6409#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6410
6411
6412#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6413 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X24, batch_eq_24) {
6414 TEST_REQUIRES_X86_AVX2;
6415 VUnOpMicrokernelTester()
6416 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07006417 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006418 }
6419
6420 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X24, batch_div_24) {
6421 TEST_REQUIRES_X86_AVX2;
6422 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
6423 VUnOpMicrokernelTester()
6424 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006425 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006426 }
6427 }
6428
6429 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X24, batch_lt_24) {
6430 TEST_REQUIRES_X86_AVX2;
6431 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
6432 VUnOpMicrokernelTester()
6433 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006434 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006435 }
6436 }
6437
6438 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X24, batch_gt_24) {
6439 TEST_REQUIRES_X86_AVX2;
6440 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
6441 VUnOpMicrokernelTester()
6442 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006443 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006444 }
6445 }
6446
6447 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X24, inplace) {
6448 TEST_REQUIRES_X86_AVX2;
6449 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
6450 VUnOpMicrokernelTester()
6451 .batch_size(batch_size)
6452 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006453 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006454 }
6455 }
6456#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6457
6458
6459#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6460 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X32, batch_eq_32) {
6461 TEST_REQUIRES_X86_AVX2;
6462 VUnOpMicrokernelTester()
6463 .batch_size(32)
Frank Barchard361e44a2020-06-08 18:18:25 -07006464 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006465 }
6466
6467 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X32, batch_div_32) {
6468 TEST_REQUIRES_X86_AVX2;
6469 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
6470 VUnOpMicrokernelTester()
6471 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006472 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006473 }
6474 }
6475
6476 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X32, batch_lt_32) {
6477 TEST_REQUIRES_X86_AVX2;
6478 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
6479 VUnOpMicrokernelTester()
6480 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006481 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006482 }
6483 }
6484
6485 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X32, batch_gt_32) {
6486 TEST_REQUIRES_X86_AVX2;
6487 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
6488 VUnOpMicrokernelTester()
6489 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006490 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006491 }
6492 }
6493
6494 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X32, inplace) {
6495 TEST_REQUIRES_X86_AVX2;
6496 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
6497 VUnOpMicrokernelTester()
6498 .batch_size(batch_size)
6499 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006500 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006501 }
6502 }
6503#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6504
6505
6506#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6507 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X40, batch_eq_40) {
6508 TEST_REQUIRES_X86_AVX2;
6509 VUnOpMicrokernelTester()
6510 .batch_size(40)
Frank Barchard361e44a2020-06-08 18:18:25 -07006511 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006512 }
6513
6514 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X40, batch_div_40) {
6515 TEST_REQUIRES_X86_AVX2;
6516 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
6517 VUnOpMicrokernelTester()
6518 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006519 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006520 }
6521 }
6522
6523 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X40, batch_lt_40) {
6524 TEST_REQUIRES_X86_AVX2;
6525 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
6526 VUnOpMicrokernelTester()
6527 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006528 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006529 }
6530 }
6531
6532 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X40, batch_gt_40) {
6533 TEST_REQUIRES_X86_AVX2;
6534 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
6535 VUnOpMicrokernelTester()
6536 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006537 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006538 }
6539 }
6540
6541 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X40, inplace) {
6542 TEST_REQUIRES_X86_AVX2;
6543 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
6544 VUnOpMicrokernelTester()
6545 .batch_size(batch_size)
6546 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006547 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006548 }
6549 }
6550#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6551
6552
6553#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6554 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X48, batch_eq_48) {
6555 TEST_REQUIRES_X86_AVX2;
6556 VUnOpMicrokernelTester()
6557 .batch_size(48)
Frank Barchard361e44a2020-06-08 18:18:25 -07006558 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006559 }
6560
6561 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X48, batch_div_48) {
6562 TEST_REQUIRES_X86_AVX2;
6563 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
6564 VUnOpMicrokernelTester()
6565 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006566 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006567 }
6568 }
6569
6570 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X48, batch_lt_48) {
6571 TEST_REQUIRES_X86_AVX2;
6572 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
6573 VUnOpMicrokernelTester()
6574 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006575 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006576 }
6577 }
6578
6579 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X48, batch_gt_48) {
6580 TEST_REQUIRES_X86_AVX2;
6581 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
6582 VUnOpMicrokernelTester()
6583 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006584 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006585 }
6586 }
6587
6588 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X48, inplace) {
6589 TEST_REQUIRES_X86_AVX2;
6590 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
6591 VUnOpMicrokernelTester()
6592 .batch_size(batch_size)
6593 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006594 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006595 }
6596 }
6597#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6598
6599
6600#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6601 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X56, batch_eq_56) {
6602 TEST_REQUIRES_X86_AVX2;
6603 VUnOpMicrokernelTester()
6604 .batch_size(56)
Frank Barchard361e44a2020-06-08 18:18:25 -07006605 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006606 }
6607
6608 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X56, batch_div_56) {
6609 TEST_REQUIRES_X86_AVX2;
6610 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
6611 VUnOpMicrokernelTester()
6612 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006613 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006614 }
6615 }
6616
6617 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X56, batch_lt_56) {
6618 TEST_REQUIRES_X86_AVX2;
6619 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
6620 VUnOpMicrokernelTester()
6621 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006622 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006623 }
6624 }
6625
6626 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X56, batch_gt_56) {
6627 TEST_REQUIRES_X86_AVX2;
6628 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
6629 VUnOpMicrokernelTester()
6630 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006631 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006632 }
6633 }
6634
6635 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X56, inplace) {
6636 TEST_REQUIRES_X86_AVX2;
6637 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
6638 VUnOpMicrokernelTester()
6639 .batch_size(batch_size)
6640 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006641 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006642 }
6643 }
6644#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6645
6646
6647#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6648 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X64, batch_eq_64) {
6649 TEST_REQUIRES_X86_AVX2;
6650 VUnOpMicrokernelTester()
6651 .batch_size(64)
Frank Barchard361e44a2020-06-08 18:18:25 -07006652 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006653 }
6654
6655 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X64, batch_div_64) {
6656 TEST_REQUIRES_X86_AVX2;
6657 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
6658 VUnOpMicrokernelTester()
6659 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006660 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006661 }
6662 }
6663
6664 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X64, batch_lt_64) {
6665 TEST_REQUIRES_X86_AVX2;
6666 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
6667 VUnOpMicrokernelTester()
6668 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006669 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006670 }
6671 }
6672
6673 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X64, batch_gt_64) {
6674 TEST_REQUIRES_X86_AVX2;
6675 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
6676 VUnOpMicrokernelTester()
6677 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006678 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006679 }
6680 }
6681
6682 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X64, inplace) {
6683 TEST_REQUIRES_X86_AVX2;
6684 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
6685 VUnOpMicrokernelTester()
6686 .batch_size(batch_size)
6687 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006688 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006689 }
6690 }
6691#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6692
6693
6694#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6695 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X72, batch_eq_72) {
6696 TEST_REQUIRES_X86_AVX2;
6697 VUnOpMicrokernelTester()
6698 .batch_size(72)
Frank Barchard361e44a2020-06-08 18:18:25 -07006699 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006700 }
6701
6702 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X72, batch_div_72) {
6703 TEST_REQUIRES_X86_AVX2;
6704 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
6705 VUnOpMicrokernelTester()
6706 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006707 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006708 }
6709 }
6710
6711 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X72, batch_lt_72) {
6712 TEST_REQUIRES_X86_AVX2;
6713 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
6714 VUnOpMicrokernelTester()
6715 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006716 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006717 }
6718 }
6719
6720 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X72, batch_gt_72) {
6721 TEST_REQUIRES_X86_AVX2;
6722 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
6723 VUnOpMicrokernelTester()
6724 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006725 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006726 }
6727 }
6728
6729 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X72, inplace) {
6730 TEST_REQUIRES_X86_AVX2;
6731 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
6732 VUnOpMicrokernelTester()
6733 .batch_size(batch_size)
6734 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006735 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006736 }
6737 }
6738#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6739
6740
6741#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6742 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X80, batch_eq_80) {
6743 TEST_REQUIRES_X86_AVX2;
6744 VUnOpMicrokernelTester()
6745 .batch_size(80)
Frank Barchard361e44a2020-06-08 18:18:25 -07006746 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006747 }
6748
6749 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X80, batch_div_80) {
6750 TEST_REQUIRES_X86_AVX2;
6751 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
6752 VUnOpMicrokernelTester()
6753 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006754 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006755 }
6756 }
6757
6758 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X80, batch_lt_80) {
6759 TEST_REQUIRES_X86_AVX2;
6760 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
6761 VUnOpMicrokernelTester()
6762 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006763 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006764 }
6765 }
6766
6767 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X80, batch_gt_80) {
6768 TEST_REQUIRES_X86_AVX2;
6769 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
6770 VUnOpMicrokernelTester()
6771 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006772 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006773 }
6774 }
6775
6776 TEST(F32_SIGMOID__AVX2_RR1_P5_DIV_X80, inplace) {
6777 TEST_REQUIRES_X86_AVX2;
6778 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
6779 VUnOpMicrokernelTester()
6780 .batch_size(batch_size)
6781 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006782 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006783 }
6784 }
6785#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6786
6787
6788#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6789 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X8, batch_eq_8) {
6790 TEST_REQUIRES_X86_AVX2;
6791 VUnOpMicrokernelTester()
6792 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07006793 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006794 }
6795
6796 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X8, batch_div_8) {
6797 TEST_REQUIRES_X86_AVX2;
6798 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
6799 VUnOpMicrokernelTester()
6800 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006801 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006802 }
6803 }
6804
6805 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X8, batch_lt_8) {
6806 TEST_REQUIRES_X86_AVX2;
6807 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
6808 VUnOpMicrokernelTester()
6809 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006810 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006811 }
6812 }
6813
6814 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X8, batch_gt_8) {
6815 TEST_REQUIRES_X86_AVX2;
6816 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
6817 VUnOpMicrokernelTester()
6818 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006819 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006820 }
6821 }
6822
6823 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X8, inplace) {
6824 TEST_REQUIRES_X86_AVX2;
6825 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
6826 VUnOpMicrokernelTester()
6827 .batch_size(batch_size)
6828 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006829 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006830 }
6831 }
6832#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6833
6834
6835#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6836 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X16, batch_eq_16) {
6837 TEST_REQUIRES_X86_AVX2;
6838 VUnOpMicrokernelTester()
6839 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07006840 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006841 }
6842
6843 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X16, batch_div_16) {
6844 TEST_REQUIRES_X86_AVX2;
6845 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
6846 VUnOpMicrokernelTester()
6847 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006848 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006849 }
6850 }
6851
6852 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X16, batch_lt_16) {
6853 TEST_REQUIRES_X86_AVX2;
6854 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
6855 VUnOpMicrokernelTester()
6856 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006857 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006858 }
6859 }
6860
6861 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X16, batch_gt_16) {
6862 TEST_REQUIRES_X86_AVX2;
6863 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
6864 VUnOpMicrokernelTester()
6865 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006866 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006867 }
6868 }
6869
6870 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X16, inplace) {
6871 TEST_REQUIRES_X86_AVX2;
6872 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
6873 VUnOpMicrokernelTester()
6874 .batch_size(batch_size)
6875 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006876 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006877 }
6878 }
6879#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6880
6881
6882#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6883 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X24, batch_eq_24) {
6884 TEST_REQUIRES_X86_AVX2;
6885 VUnOpMicrokernelTester()
6886 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07006887 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006888 }
6889
6890 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X24, batch_div_24) {
6891 TEST_REQUIRES_X86_AVX2;
6892 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
6893 VUnOpMicrokernelTester()
6894 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006895 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006896 }
6897 }
6898
6899 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X24, batch_lt_24) {
6900 TEST_REQUIRES_X86_AVX2;
6901 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
6902 VUnOpMicrokernelTester()
6903 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006904 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006905 }
6906 }
6907
6908 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X24, batch_gt_24) {
6909 TEST_REQUIRES_X86_AVX2;
6910 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
6911 VUnOpMicrokernelTester()
6912 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006913 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006914 }
6915 }
6916
6917 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X24, inplace) {
6918 TEST_REQUIRES_X86_AVX2;
6919 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
6920 VUnOpMicrokernelTester()
6921 .batch_size(batch_size)
6922 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006923 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006924 }
6925 }
6926#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6927
6928
6929#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6930 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X32, batch_eq_32) {
6931 TEST_REQUIRES_X86_AVX2;
6932 VUnOpMicrokernelTester()
6933 .batch_size(32)
Frank Barchard361e44a2020-06-08 18:18:25 -07006934 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006935 }
6936
6937 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X32, batch_div_32) {
6938 TEST_REQUIRES_X86_AVX2;
6939 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
6940 VUnOpMicrokernelTester()
6941 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006942 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006943 }
6944 }
6945
6946 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X32, batch_lt_32) {
6947 TEST_REQUIRES_X86_AVX2;
6948 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
6949 VUnOpMicrokernelTester()
6950 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006951 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006952 }
6953 }
6954
6955 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X32, batch_gt_32) {
6956 TEST_REQUIRES_X86_AVX2;
6957 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
6958 VUnOpMicrokernelTester()
6959 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006960 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006961 }
6962 }
6963
6964 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X32, inplace) {
6965 TEST_REQUIRES_X86_AVX2;
6966 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
6967 VUnOpMicrokernelTester()
6968 .batch_size(batch_size)
6969 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07006970 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006971 }
6972 }
6973#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
6974
6975
6976#if XNN_ARCH_X86 || XNN_ARCH_X86_64
6977 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X40, batch_eq_40) {
6978 TEST_REQUIRES_X86_AVX2;
6979 VUnOpMicrokernelTester()
6980 .batch_size(40)
Frank Barchard361e44a2020-06-08 18:18:25 -07006981 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006982 }
6983
6984 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X40, batch_div_40) {
6985 TEST_REQUIRES_X86_AVX2;
6986 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
6987 VUnOpMicrokernelTester()
6988 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006989 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006990 }
6991 }
6992
6993 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X40, batch_lt_40) {
6994 TEST_REQUIRES_X86_AVX2;
6995 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
6996 VUnOpMicrokernelTester()
6997 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07006998 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08006999 }
7000 }
7001
7002 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X40, batch_gt_40) {
7003 TEST_REQUIRES_X86_AVX2;
7004 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
7005 VUnOpMicrokernelTester()
7006 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007007 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007008 }
7009 }
7010
7011 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X40, inplace) {
7012 TEST_REQUIRES_X86_AVX2;
7013 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
7014 VUnOpMicrokernelTester()
7015 .batch_size(batch_size)
7016 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007017 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007018 }
7019 }
7020#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7021
7022
7023#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7024 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X48, batch_eq_48) {
7025 TEST_REQUIRES_X86_AVX2;
7026 VUnOpMicrokernelTester()
7027 .batch_size(48)
Frank Barchard361e44a2020-06-08 18:18:25 -07007028 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007029 }
7030
7031 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X48, batch_div_48) {
7032 TEST_REQUIRES_X86_AVX2;
7033 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
7034 VUnOpMicrokernelTester()
7035 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007036 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007037 }
7038 }
7039
7040 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X48, batch_lt_48) {
7041 TEST_REQUIRES_X86_AVX2;
7042 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
7043 VUnOpMicrokernelTester()
7044 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007045 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007046 }
7047 }
7048
7049 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X48, batch_gt_48) {
7050 TEST_REQUIRES_X86_AVX2;
7051 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
7052 VUnOpMicrokernelTester()
7053 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007054 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007055 }
7056 }
7057
7058 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X48, inplace) {
7059 TEST_REQUIRES_X86_AVX2;
7060 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
7061 VUnOpMicrokernelTester()
7062 .batch_size(batch_size)
7063 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007064 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007065 }
7066 }
7067#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7068
7069
7070#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7071 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X56, batch_eq_56) {
7072 TEST_REQUIRES_X86_AVX2;
7073 VUnOpMicrokernelTester()
7074 .batch_size(56)
Frank Barchard361e44a2020-06-08 18:18:25 -07007075 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007076 }
7077
7078 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X56, batch_div_56) {
7079 TEST_REQUIRES_X86_AVX2;
7080 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
7081 VUnOpMicrokernelTester()
7082 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007083 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007084 }
7085 }
7086
7087 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X56, batch_lt_56) {
7088 TEST_REQUIRES_X86_AVX2;
7089 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
7090 VUnOpMicrokernelTester()
7091 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007092 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007093 }
7094 }
7095
7096 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X56, batch_gt_56) {
7097 TEST_REQUIRES_X86_AVX2;
7098 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
7099 VUnOpMicrokernelTester()
7100 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007101 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007102 }
7103 }
7104
7105 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X56, inplace) {
7106 TEST_REQUIRES_X86_AVX2;
7107 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
7108 VUnOpMicrokernelTester()
7109 .batch_size(batch_size)
7110 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007111 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007112 }
7113 }
7114#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7115
7116
7117#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7118 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X64, batch_eq_64) {
7119 TEST_REQUIRES_X86_AVX2;
7120 VUnOpMicrokernelTester()
7121 .batch_size(64)
Frank Barchard361e44a2020-06-08 18:18:25 -07007122 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007123 }
7124
7125 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X64, batch_div_64) {
7126 TEST_REQUIRES_X86_AVX2;
7127 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
7128 VUnOpMicrokernelTester()
7129 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007130 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007131 }
7132 }
7133
7134 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X64, batch_lt_64) {
7135 TEST_REQUIRES_X86_AVX2;
7136 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
7137 VUnOpMicrokernelTester()
7138 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007139 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007140 }
7141 }
7142
7143 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X64, batch_gt_64) {
7144 TEST_REQUIRES_X86_AVX2;
7145 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
7146 VUnOpMicrokernelTester()
7147 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007148 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007149 }
7150 }
7151
7152 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X64, inplace) {
7153 TEST_REQUIRES_X86_AVX2;
7154 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
7155 VUnOpMicrokernelTester()
7156 .batch_size(batch_size)
7157 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007158 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007159 }
7160 }
7161#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7162
7163
7164#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7165 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X72, batch_eq_72) {
7166 TEST_REQUIRES_X86_AVX2;
7167 VUnOpMicrokernelTester()
7168 .batch_size(72)
Frank Barchard361e44a2020-06-08 18:18:25 -07007169 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007170 }
7171
7172 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X72, batch_div_72) {
7173 TEST_REQUIRES_X86_AVX2;
7174 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
7175 VUnOpMicrokernelTester()
7176 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007177 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007178 }
7179 }
7180
7181 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X72, batch_lt_72) {
7182 TEST_REQUIRES_X86_AVX2;
7183 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
7184 VUnOpMicrokernelTester()
7185 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007186 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007187 }
7188 }
7189
7190 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X72, batch_gt_72) {
7191 TEST_REQUIRES_X86_AVX2;
7192 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
7193 VUnOpMicrokernelTester()
7194 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007195 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007196 }
7197 }
7198
7199 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X72, inplace) {
7200 TEST_REQUIRES_X86_AVX2;
7201 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
7202 VUnOpMicrokernelTester()
7203 .batch_size(batch_size)
7204 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007205 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007206 }
7207 }
7208#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7209
7210
7211#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7212 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X80, batch_eq_80) {
7213 TEST_REQUIRES_X86_AVX2;
7214 VUnOpMicrokernelTester()
7215 .batch_size(80)
Frank Barchard361e44a2020-06-08 18:18:25 -07007216 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007217 }
7218
7219 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X80, batch_div_80) {
7220 TEST_REQUIRES_X86_AVX2;
7221 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
7222 VUnOpMicrokernelTester()
7223 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007224 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007225 }
7226 }
7227
7228 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X80, batch_lt_80) {
7229 TEST_REQUIRES_X86_AVX2;
7230 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
7231 VUnOpMicrokernelTester()
7232 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007233 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007234 }
7235 }
7236
7237 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X80, batch_gt_80) {
7238 TEST_REQUIRES_X86_AVX2;
7239 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
7240 VUnOpMicrokernelTester()
7241 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007242 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007243 }
7244 }
7245
7246 TEST(F32_SIGMOID__AVX2_RR1_P5_NR1FMA_X80, inplace) {
7247 TEST_REQUIRES_X86_AVX2;
7248 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
7249 VUnOpMicrokernelTester()
7250 .batch_size(batch_size)
7251 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007252 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007253 }
7254 }
7255#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7256
7257
7258#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7259 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X8, batch_eq_8) {
7260 TEST_REQUIRES_X86_AVX2;
7261 VUnOpMicrokernelTester()
7262 .batch_size(8)
Frank Barchard361e44a2020-06-08 18:18:25 -07007263 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007264 }
7265
7266 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X8, batch_div_8) {
7267 TEST_REQUIRES_X86_AVX2;
7268 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
7269 VUnOpMicrokernelTester()
7270 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007271 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007272 }
7273 }
7274
7275 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X8, batch_lt_8) {
7276 TEST_REQUIRES_X86_AVX2;
7277 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
7278 VUnOpMicrokernelTester()
7279 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007280 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007281 }
7282 }
7283
7284 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X8, batch_gt_8) {
7285 TEST_REQUIRES_X86_AVX2;
7286 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
7287 VUnOpMicrokernelTester()
7288 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007289 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007290 }
7291 }
7292
7293 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X8, inplace) {
7294 TEST_REQUIRES_X86_AVX2;
7295 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
7296 VUnOpMicrokernelTester()
7297 .batch_size(batch_size)
7298 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007299 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007300 }
7301 }
7302#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7303
7304
7305#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7306 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X16, batch_eq_16) {
7307 TEST_REQUIRES_X86_AVX2;
7308 VUnOpMicrokernelTester()
7309 .batch_size(16)
Frank Barchard361e44a2020-06-08 18:18:25 -07007310 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007311 }
7312
7313 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X16, batch_div_16) {
7314 TEST_REQUIRES_X86_AVX2;
7315 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
7316 VUnOpMicrokernelTester()
7317 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007318 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007319 }
7320 }
7321
7322 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X16, batch_lt_16) {
7323 TEST_REQUIRES_X86_AVX2;
7324 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
7325 VUnOpMicrokernelTester()
7326 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007327 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007328 }
7329 }
7330
7331 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X16, batch_gt_16) {
7332 TEST_REQUIRES_X86_AVX2;
7333 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
7334 VUnOpMicrokernelTester()
7335 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007336 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007337 }
7338 }
7339
7340 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X16, inplace) {
7341 TEST_REQUIRES_X86_AVX2;
7342 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
7343 VUnOpMicrokernelTester()
7344 .batch_size(batch_size)
7345 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007346 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007347 }
7348 }
7349#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7350
7351
7352#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7353 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X24, batch_eq_24) {
7354 TEST_REQUIRES_X86_AVX2;
7355 VUnOpMicrokernelTester()
7356 .batch_size(24)
Frank Barchard361e44a2020-06-08 18:18:25 -07007357 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007358 }
7359
7360 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X24, batch_div_24) {
7361 TEST_REQUIRES_X86_AVX2;
7362 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
7363 VUnOpMicrokernelTester()
7364 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007365 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007366 }
7367 }
7368
7369 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X24, batch_lt_24) {
7370 TEST_REQUIRES_X86_AVX2;
7371 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
7372 VUnOpMicrokernelTester()
7373 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007374 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007375 }
7376 }
7377
7378 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X24, batch_gt_24) {
7379 TEST_REQUIRES_X86_AVX2;
7380 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
7381 VUnOpMicrokernelTester()
7382 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007383 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007384 }
7385 }
7386
7387 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X24, inplace) {
7388 TEST_REQUIRES_X86_AVX2;
7389 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
7390 VUnOpMicrokernelTester()
7391 .batch_size(batch_size)
7392 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007393 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007394 }
7395 }
7396#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7397
7398
7399#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7400 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X32, batch_eq_32) {
7401 TEST_REQUIRES_X86_AVX2;
7402 VUnOpMicrokernelTester()
7403 .batch_size(32)
Frank Barchard361e44a2020-06-08 18:18:25 -07007404 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007405 }
7406
7407 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X32, batch_div_32) {
7408 TEST_REQUIRES_X86_AVX2;
7409 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
7410 VUnOpMicrokernelTester()
7411 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007412 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007413 }
7414 }
7415
7416 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X32, batch_lt_32) {
7417 TEST_REQUIRES_X86_AVX2;
7418 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
7419 VUnOpMicrokernelTester()
7420 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007421 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007422 }
7423 }
7424
7425 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X32, batch_gt_32) {
7426 TEST_REQUIRES_X86_AVX2;
7427 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
7428 VUnOpMicrokernelTester()
7429 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007430 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007431 }
7432 }
7433
7434 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X32, inplace) {
7435 TEST_REQUIRES_X86_AVX2;
7436 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
7437 VUnOpMicrokernelTester()
7438 .batch_size(batch_size)
7439 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007440 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007441 }
7442 }
7443#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7444
7445
7446#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7447 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X40, batch_eq_40) {
7448 TEST_REQUIRES_X86_AVX2;
7449 VUnOpMicrokernelTester()
7450 .batch_size(40)
Frank Barchard361e44a2020-06-08 18:18:25 -07007451 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007452 }
7453
7454 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X40, batch_div_40) {
7455 TEST_REQUIRES_X86_AVX2;
7456 for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
7457 VUnOpMicrokernelTester()
7458 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007459 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007460 }
7461 }
7462
7463 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X40, batch_lt_40) {
7464 TEST_REQUIRES_X86_AVX2;
7465 for (size_t batch_size = 1; batch_size < 40; batch_size++) {
7466 VUnOpMicrokernelTester()
7467 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007468 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007469 }
7470 }
7471
7472 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X40, batch_gt_40) {
7473 TEST_REQUIRES_X86_AVX2;
7474 for (size_t batch_size = 41; batch_size < 80; batch_size++) {
7475 VUnOpMicrokernelTester()
7476 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007477 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007478 }
7479 }
7480
7481 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X40, inplace) {
7482 TEST_REQUIRES_X86_AVX2;
7483 for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
7484 VUnOpMicrokernelTester()
7485 .batch_size(batch_size)
7486 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007487 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007488 }
7489 }
7490#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7491
7492
7493#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7494 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X48, batch_eq_48) {
7495 TEST_REQUIRES_X86_AVX2;
7496 VUnOpMicrokernelTester()
7497 .batch_size(48)
Frank Barchard361e44a2020-06-08 18:18:25 -07007498 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007499 }
7500
7501 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X48, batch_div_48) {
7502 TEST_REQUIRES_X86_AVX2;
7503 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
7504 VUnOpMicrokernelTester()
7505 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007506 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007507 }
7508 }
7509
7510 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X48, batch_lt_48) {
7511 TEST_REQUIRES_X86_AVX2;
7512 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
7513 VUnOpMicrokernelTester()
7514 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007515 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007516 }
7517 }
7518
7519 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X48, batch_gt_48) {
7520 TEST_REQUIRES_X86_AVX2;
7521 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
7522 VUnOpMicrokernelTester()
7523 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007524 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007525 }
7526 }
7527
7528 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X48, inplace) {
7529 TEST_REQUIRES_X86_AVX2;
7530 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
7531 VUnOpMicrokernelTester()
7532 .batch_size(batch_size)
7533 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007534 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007535 }
7536 }
7537#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7538
7539
7540#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7541 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X56, batch_eq_56) {
7542 TEST_REQUIRES_X86_AVX2;
7543 VUnOpMicrokernelTester()
7544 .batch_size(56)
Frank Barchard361e44a2020-06-08 18:18:25 -07007545 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007546 }
7547
7548 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X56, batch_div_56) {
7549 TEST_REQUIRES_X86_AVX2;
7550 for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
7551 VUnOpMicrokernelTester()
7552 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007553 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007554 }
7555 }
7556
7557 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X56, batch_lt_56) {
7558 TEST_REQUIRES_X86_AVX2;
7559 for (size_t batch_size = 1; batch_size < 56; batch_size++) {
7560 VUnOpMicrokernelTester()
7561 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007562 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007563 }
7564 }
7565
7566 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X56, batch_gt_56) {
7567 TEST_REQUIRES_X86_AVX2;
7568 for (size_t batch_size = 57; batch_size < 112; batch_size++) {
7569 VUnOpMicrokernelTester()
7570 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007571 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007572 }
7573 }
7574
7575 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X56, inplace) {
7576 TEST_REQUIRES_X86_AVX2;
7577 for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
7578 VUnOpMicrokernelTester()
7579 .batch_size(batch_size)
7580 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007581 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007582 }
7583 }
7584#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7585
7586
7587#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7588 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X64, batch_eq_64) {
7589 TEST_REQUIRES_X86_AVX2;
7590 VUnOpMicrokernelTester()
7591 .batch_size(64)
Frank Barchard361e44a2020-06-08 18:18:25 -07007592 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007593 }
7594
7595 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X64, batch_div_64) {
7596 TEST_REQUIRES_X86_AVX2;
7597 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
7598 VUnOpMicrokernelTester()
7599 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007600 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007601 }
7602 }
7603
7604 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X64, batch_lt_64) {
7605 TEST_REQUIRES_X86_AVX2;
7606 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
7607 VUnOpMicrokernelTester()
7608 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007609 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007610 }
7611 }
7612
7613 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X64, batch_gt_64) {
7614 TEST_REQUIRES_X86_AVX2;
7615 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
7616 VUnOpMicrokernelTester()
7617 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007618 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007619 }
7620 }
7621
7622 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X64, inplace) {
7623 TEST_REQUIRES_X86_AVX2;
7624 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
7625 VUnOpMicrokernelTester()
7626 .batch_size(batch_size)
7627 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007628 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007629 }
7630 }
7631#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7632
7633
7634#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7635 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X72, batch_eq_72) {
7636 TEST_REQUIRES_X86_AVX2;
7637 VUnOpMicrokernelTester()
7638 .batch_size(72)
Frank Barchard361e44a2020-06-08 18:18:25 -07007639 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007640 }
7641
7642 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X72, batch_div_72) {
7643 TEST_REQUIRES_X86_AVX2;
7644 for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
7645 VUnOpMicrokernelTester()
7646 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007647 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007648 }
7649 }
7650
7651 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X72, batch_lt_72) {
7652 TEST_REQUIRES_X86_AVX2;
7653 for (size_t batch_size = 1; batch_size < 72; batch_size++) {
7654 VUnOpMicrokernelTester()
7655 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007656 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007657 }
7658 }
7659
7660 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X72, batch_gt_72) {
7661 TEST_REQUIRES_X86_AVX2;
7662 for (size_t batch_size = 73; batch_size < 144; batch_size++) {
7663 VUnOpMicrokernelTester()
7664 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007665 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007666 }
7667 }
7668
7669 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X72, inplace) {
7670 TEST_REQUIRES_X86_AVX2;
7671 for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
7672 VUnOpMicrokernelTester()
7673 .batch_size(batch_size)
7674 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007675 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007676 }
7677 }
7678#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7679
7680
7681#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7682 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X80, batch_eq_80) {
7683 TEST_REQUIRES_X86_AVX2;
7684 VUnOpMicrokernelTester()
7685 .batch_size(80)
Frank Barchard361e44a2020-06-08 18:18:25 -07007686 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007687 }
7688
7689 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X80, batch_div_80) {
7690 TEST_REQUIRES_X86_AVX2;
7691 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
7692 VUnOpMicrokernelTester()
7693 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007694 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007695 }
7696 }
7697
7698 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X80, batch_lt_80) {
7699 TEST_REQUIRES_X86_AVX2;
7700 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
7701 VUnOpMicrokernelTester()
7702 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007703 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007704 }
7705 }
7706
7707 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X80, batch_gt_80) {
7708 TEST_REQUIRES_X86_AVX2;
7709 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
7710 VUnOpMicrokernelTester()
7711 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -07007712 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007713 }
7714 }
7715
7716 TEST(F32_SIGMOID__AVX2_RR1_P5_NR2FMA_X80, inplace) {
7717 TEST_REQUIRES_X86_AVX2;
7718 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
7719 VUnOpMicrokernelTester()
7720 .batch_size(batch_size)
7721 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -07007722 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
Marat Dukhanfa0a4322020-01-06 16:14:29 -08007723 }
7724 }
7725#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7726
7727
Marat Dukhand9ca7e62020-09-23 23:45:29 -07007728#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7729 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, batch_eq_16) {
7730 TEST_REQUIRES_X86_AVX512F;
7731 VUnOpMicrokernelTester()
7732 .batch_size(16)
7733 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
7734 }
7735
7736 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, batch_div_16) {
7737 TEST_REQUIRES_X86_AVX512F;
7738 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
7739 VUnOpMicrokernelTester()
7740 .batch_size(batch_size)
7741 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
7742 }
7743 }
7744
7745 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, batch_lt_16) {
7746 TEST_REQUIRES_X86_AVX512F;
7747 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
7748 VUnOpMicrokernelTester()
7749 .batch_size(batch_size)
7750 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
7751 }
7752 }
7753
7754 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, batch_gt_16) {
7755 TEST_REQUIRES_X86_AVX512F;
7756 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
7757 VUnOpMicrokernelTester()
7758 .batch_size(batch_size)
7759 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
7760 }
7761 }
7762
7763 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, inplace) {
7764 TEST_REQUIRES_X86_AVX512F;
7765 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
7766 VUnOpMicrokernelTester()
7767 .batch_size(batch_size)
7768 .inplace(true)
7769 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
7770 }
7771 }
7772#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7773
7774
7775#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7776 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, batch_eq_32) {
7777 TEST_REQUIRES_X86_AVX512F;
7778 VUnOpMicrokernelTester()
7779 .batch_size(32)
7780 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
7781 }
7782
7783 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, batch_div_32) {
7784 TEST_REQUIRES_X86_AVX512F;
7785 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
7786 VUnOpMicrokernelTester()
7787 .batch_size(batch_size)
7788 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
7789 }
7790 }
7791
7792 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, batch_lt_32) {
7793 TEST_REQUIRES_X86_AVX512F;
7794 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
7795 VUnOpMicrokernelTester()
7796 .batch_size(batch_size)
7797 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
7798 }
7799 }
7800
7801 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, batch_gt_32) {
7802 TEST_REQUIRES_X86_AVX512F;
7803 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
7804 VUnOpMicrokernelTester()
7805 .batch_size(batch_size)
7806 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
7807 }
7808 }
7809
7810 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, inplace) {
7811 TEST_REQUIRES_X86_AVX512F;
7812 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
7813 VUnOpMicrokernelTester()
7814 .batch_size(batch_size)
7815 .inplace(true)
7816 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
7817 }
7818 }
7819#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7820
7821
7822#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7823 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, batch_eq_48) {
7824 TEST_REQUIRES_X86_AVX512F;
7825 VUnOpMicrokernelTester()
7826 .batch_size(48)
7827 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
7828 }
7829
7830 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, batch_div_48) {
7831 TEST_REQUIRES_X86_AVX512F;
7832 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
7833 VUnOpMicrokernelTester()
7834 .batch_size(batch_size)
7835 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
7836 }
7837 }
7838
7839 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, batch_lt_48) {
7840 TEST_REQUIRES_X86_AVX512F;
7841 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
7842 VUnOpMicrokernelTester()
7843 .batch_size(batch_size)
7844 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
7845 }
7846 }
7847
7848 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, batch_gt_48) {
7849 TEST_REQUIRES_X86_AVX512F;
7850 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
7851 VUnOpMicrokernelTester()
7852 .batch_size(batch_size)
7853 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
7854 }
7855 }
7856
7857 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, inplace) {
7858 TEST_REQUIRES_X86_AVX512F;
7859 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
7860 VUnOpMicrokernelTester()
7861 .batch_size(batch_size)
7862 .inplace(true)
7863 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
7864 }
7865 }
7866#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7867
7868
7869#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7870 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, batch_eq_64) {
7871 TEST_REQUIRES_X86_AVX512F;
7872 VUnOpMicrokernelTester()
7873 .batch_size(64)
7874 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
7875 }
7876
7877 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, batch_div_64) {
7878 TEST_REQUIRES_X86_AVX512F;
7879 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
7880 VUnOpMicrokernelTester()
7881 .batch_size(batch_size)
7882 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
7883 }
7884 }
7885
7886 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, batch_lt_64) {
7887 TEST_REQUIRES_X86_AVX512F;
7888 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
7889 VUnOpMicrokernelTester()
7890 .batch_size(batch_size)
7891 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
7892 }
7893 }
7894
7895 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, batch_gt_64) {
7896 TEST_REQUIRES_X86_AVX512F;
7897 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
7898 VUnOpMicrokernelTester()
7899 .batch_size(batch_size)
7900 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
7901 }
7902 }
7903
7904 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, inplace) {
7905 TEST_REQUIRES_X86_AVX512F;
7906 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
7907 VUnOpMicrokernelTester()
7908 .batch_size(batch_size)
7909 .inplace(true)
7910 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
7911 }
7912 }
7913#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7914
7915
7916#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7917 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, batch_eq_80) {
7918 TEST_REQUIRES_X86_AVX512F;
7919 VUnOpMicrokernelTester()
7920 .batch_size(80)
7921 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
7922 }
7923
7924 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, batch_div_80) {
7925 TEST_REQUIRES_X86_AVX512F;
7926 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
7927 VUnOpMicrokernelTester()
7928 .batch_size(batch_size)
7929 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
7930 }
7931 }
7932
7933 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, batch_lt_80) {
7934 TEST_REQUIRES_X86_AVX512F;
7935 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
7936 VUnOpMicrokernelTester()
7937 .batch_size(batch_size)
7938 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
7939 }
7940 }
7941
7942 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, batch_gt_80) {
7943 TEST_REQUIRES_X86_AVX512F;
7944 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
7945 VUnOpMicrokernelTester()
7946 .batch_size(batch_size)
7947 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
7948 }
7949 }
7950
7951 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, inplace) {
7952 TEST_REQUIRES_X86_AVX512F;
7953 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
7954 VUnOpMicrokernelTester()
7955 .batch_size(batch_size)
7956 .inplace(true)
7957 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
7958 }
7959 }
7960#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
7961
7962
7963#if XNN_ARCH_X86 || XNN_ARCH_X86_64
7964 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, batch_eq_96) {
7965 TEST_REQUIRES_X86_AVX512F;
7966 VUnOpMicrokernelTester()
7967 .batch_size(96)
7968 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
7969 }
7970
7971 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, batch_div_96) {
7972 TEST_REQUIRES_X86_AVX512F;
7973 for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
7974 VUnOpMicrokernelTester()
7975 .batch_size(batch_size)
7976 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
7977 }
7978 }
7979
7980 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, batch_lt_96) {
7981 TEST_REQUIRES_X86_AVX512F;
7982 for (size_t batch_size = 1; batch_size < 96; batch_size++) {
7983 VUnOpMicrokernelTester()
7984 .batch_size(batch_size)
7985 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
7986 }
7987 }
7988
7989 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, batch_gt_96) {
7990 TEST_REQUIRES_X86_AVX512F;
7991 for (size_t batch_size = 97; batch_size < 192; batch_size++) {
7992 VUnOpMicrokernelTester()
7993 .batch_size(batch_size)
7994 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
7995 }
7996 }
7997
7998 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, inplace) {
7999 TEST_REQUIRES_X86_AVX512F;
8000 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
8001 VUnOpMicrokernelTester()
8002 .batch_size(batch_size)
8003 .inplace(true)
8004 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8005 }
8006 }
8007#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8008
8009
8010#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8011 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, batch_eq_112) {
8012 TEST_REQUIRES_X86_AVX512F;
8013 VUnOpMicrokernelTester()
8014 .batch_size(112)
8015 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8016 }
8017
8018 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, batch_div_112) {
8019 TEST_REQUIRES_X86_AVX512F;
8020 for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
8021 VUnOpMicrokernelTester()
8022 .batch_size(batch_size)
8023 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8024 }
8025 }
8026
8027 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, batch_lt_112) {
8028 TEST_REQUIRES_X86_AVX512F;
8029 for (size_t batch_size = 1; batch_size < 112; batch_size++) {
8030 VUnOpMicrokernelTester()
8031 .batch_size(batch_size)
8032 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8033 }
8034 }
8035
8036 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, batch_gt_112) {
8037 TEST_REQUIRES_X86_AVX512F;
8038 for (size_t batch_size = 113; batch_size < 224; batch_size++) {
8039 VUnOpMicrokernelTester()
8040 .batch_size(batch_size)
8041 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8042 }
8043 }
8044
8045 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, inplace) {
8046 TEST_REQUIRES_X86_AVX512F;
8047 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
8048 VUnOpMicrokernelTester()
8049 .batch_size(batch_size)
8050 .inplace(true)
8051 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8052 }
8053 }
8054#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8055
8056
8057#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8058 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, batch_eq_128) {
8059 TEST_REQUIRES_X86_AVX512F;
8060 VUnOpMicrokernelTester()
8061 .batch_size(128)
8062 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8063 }
8064
8065 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, batch_div_128) {
8066 TEST_REQUIRES_X86_AVX512F;
8067 for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
8068 VUnOpMicrokernelTester()
8069 .batch_size(batch_size)
8070 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8071 }
8072 }
8073
8074 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, batch_lt_128) {
8075 TEST_REQUIRES_X86_AVX512F;
8076 for (size_t batch_size = 1; batch_size < 128; batch_size++) {
8077 VUnOpMicrokernelTester()
8078 .batch_size(batch_size)
8079 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8080 }
8081 }
8082
8083 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, batch_gt_128) {
8084 TEST_REQUIRES_X86_AVX512F;
8085 for (size_t batch_size = 129; batch_size < 256; batch_size++) {
8086 VUnOpMicrokernelTester()
8087 .batch_size(batch_size)
8088 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8089 }
8090 }
8091
8092 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, inplace) {
8093 TEST_REQUIRES_X86_AVX512F;
8094 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
8095 VUnOpMicrokernelTester()
8096 .batch_size(batch_size)
8097 .inplace(true)
8098 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8099 }
8100 }
8101#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8102
8103
8104#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8105 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, batch_eq_16) {
8106 TEST_REQUIRES_X86_AVX512F;
8107 VUnOpMicrokernelTester()
8108 .batch_size(16)
8109 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8110 }
8111
8112 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, batch_div_16) {
8113 TEST_REQUIRES_X86_AVX512F;
8114 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
8115 VUnOpMicrokernelTester()
8116 .batch_size(batch_size)
8117 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8118 }
8119 }
8120
8121 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, batch_lt_16) {
8122 TEST_REQUIRES_X86_AVX512F;
8123 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
8124 VUnOpMicrokernelTester()
8125 .batch_size(batch_size)
8126 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8127 }
8128 }
8129
8130 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, batch_gt_16) {
8131 TEST_REQUIRES_X86_AVX512F;
8132 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
8133 VUnOpMicrokernelTester()
8134 .batch_size(batch_size)
8135 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8136 }
8137 }
8138
8139 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, inplace) {
8140 TEST_REQUIRES_X86_AVX512F;
8141 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
8142 VUnOpMicrokernelTester()
8143 .batch_size(batch_size)
8144 .inplace(true)
8145 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8146 }
8147 }
8148#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8149
8150
8151#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8152 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, batch_eq_32) {
8153 TEST_REQUIRES_X86_AVX512F;
8154 VUnOpMicrokernelTester()
8155 .batch_size(32)
8156 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8157 }
8158
8159 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, batch_div_32) {
8160 TEST_REQUIRES_X86_AVX512F;
8161 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
8162 VUnOpMicrokernelTester()
8163 .batch_size(batch_size)
8164 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8165 }
8166 }
8167
8168 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, batch_lt_32) {
8169 TEST_REQUIRES_X86_AVX512F;
8170 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
8171 VUnOpMicrokernelTester()
8172 .batch_size(batch_size)
8173 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8174 }
8175 }
8176
8177 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, batch_gt_32) {
8178 TEST_REQUIRES_X86_AVX512F;
8179 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
8180 VUnOpMicrokernelTester()
8181 .batch_size(batch_size)
8182 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8183 }
8184 }
8185
8186 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, inplace) {
8187 TEST_REQUIRES_X86_AVX512F;
8188 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
8189 VUnOpMicrokernelTester()
8190 .batch_size(batch_size)
8191 .inplace(true)
8192 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8193 }
8194 }
8195#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8196
8197
8198#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8199 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, batch_eq_48) {
8200 TEST_REQUIRES_X86_AVX512F;
8201 VUnOpMicrokernelTester()
8202 .batch_size(48)
8203 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8204 }
8205
8206 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, batch_div_48) {
8207 TEST_REQUIRES_X86_AVX512F;
8208 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
8209 VUnOpMicrokernelTester()
8210 .batch_size(batch_size)
8211 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8212 }
8213 }
8214
8215 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, batch_lt_48) {
8216 TEST_REQUIRES_X86_AVX512F;
8217 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
8218 VUnOpMicrokernelTester()
8219 .batch_size(batch_size)
8220 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8221 }
8222 }
8223
8224 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, batch_gt_48) {
8225 TEST_REQUIRES_X86_AVX512F;
8226 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
8227 VUnOpMicrokernelTester()
8228 .batch_size(batch_size)
8229 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8230 }
8231 }
8232
8233 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, inplace) {
8234 TEST_REQUIRES_X86_AVX512F;
8235 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
8236 VUnOpMicrokernelTester()
8237 .batch_size(batch_size)
8238 .inplace(true)
8239 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8240 }
8241 }
8242#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8243
8244
8245#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8246 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, batch_eq_64) {
8247 TEST_REQUIRES_X86_AVX512F;
8248 VUnOpMicrokernelTester()
8249 .batch_size(64)
8250 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8251 }
8252
8253 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, batch_div_64) {
8254 TEST_REQUIRES_X86_AVX512F;
8255 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
8256 VUnOpMicrokernelTester()
8257 .batch_size(batch_size)
8258 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8259 }
8260 }
8261
8262 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, batch_lt_64) {
8263 TEST_REQUIRES_X86_AVX512F;
8264 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
8265 VUnOpMicrokernelTester()
8266 .batch_size(batch_size)
8267 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8268 }
8269 }
8270
8271 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, batch_gt_64) {
8272 TEST_REQUIRES_X86_AVX512F;
8273 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
8274 VUnOpMicrokernelTester()
8275 .batch_size(batch_size)
8276 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8277 }
8278 }
8279
8280 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, inplace) {
8281 TEST_REQUIRES_X86_AVX512F;
8282 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
8283 VUnOpMicrokernelTester()
8284 .batch_size(batch_size)
8285 .inplace(true)
8286 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8287 }
8288 }
8289#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8290
8291
8292#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8293 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, batch_eq_80) {
8294 TEST_REQUIRES_X86_AVX512F;
8295 VUnOpMicrokernelTester()
8296 .batch_size(80)
8297 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8298 }
8299
8300 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, batch_div_80) {
8301 TEST_REQUIRES_X86_AVX512F;
8302 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
8303 VUnOpMicrokernelTester()
8304 .batch_size(batch_size)
8305 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8306 }
8307 }
8308
8309 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, batch_lt_80) {
8310 TEST_REQUIRES_X86_AVX512F;
8311 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
8312 VUnOpMicrokernelTester()
8313 .batch_size(batch_size)
8314 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8315 }
8316 }
8317
8318 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, batch_gt_80) {
8319 TEST_REQUIRES_X86_AVX512F;
8320 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
8321 VUnOpMicrokernelTester()
8322 .batch_size(batch_size)
8323 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8324 }
8325 }
8326
8327 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, inplace) {
8328 TEST_REQUIRES_X86_AVX512F;
8329 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
8330 VUnOpMicrokernelTester()
8331 .batch_size(batch_size)
8332 .inplace(true)
8333 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8334 }
8335 }
8336#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8337
8338
8339#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8340 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, batch_eq_96) {
8341 TEST_REQUIRES_X86_AVX512F;
8342 VUnOpMicrokernelTester()
8343 .batch_size(96)
8344 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8345 }
8346
8347 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, batch_div_96) {
8348 TEST_REQUIRES_X86_AVX512F;
8349 for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
8350 VUnOpMicrokernelTester()
8351 .batch_size(batch_size)
8352 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8353 }
8354 }
8355
8356 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, batch_lt_96) {
8357 TEST_REQUIRES_X86_AVX512F;
8358 for (size_t batch_size = 1; batch_size < 96; batch_size++) {
8359 VUnOpMicrokernelTester()
8360 .batch_size(batch_size)
8361 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8362 }
8363 }
8364
8365 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, batch_gt_96) {
8366 TEST_REQUIRES_X86_AVX512F;
8367 for (size_t batch_size = 97; batch_size < 192; batch_size++) {
8368 VUnOpMicrokernelTester()
8369 .batch_size(batch_size)
8370 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8371 }
8372 }
8373
8374 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, inplace) {
8375 TEST_REQUIRES_X86_AVX512F;
8376 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
8377 VUnOpMicrokernelTester()
8378 .batch_size(batch_size)
8379 .inplace(true)
8380 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8381 }
8382 }
8383#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8384
8385
8386#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8387 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, batch_eq_112) {
8388 TEST_REQUIRES_X86_AVX512F;
8389 VUnOpMicrokernelTester()
8390 .batch_size(112)
8391 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8392 }
8393
8394 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, batch_div_112) {
8395 TEST_REQUIRES_X86_AVX512F;
8396 for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
8397 VUnOpMicrokernelTester()
8398 .batch_size(batch_size)
8399 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8400 }
8401 }
8402
8403 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, batch_lt_112) {
8404 TEST_REQUIRES_X86_AVX512F;
8405 for (size_t batch_size = 1; batch_size < 112; batch_size++) {
8406 VUnOpMicrokernelTester()
8407 .batch_size(batch_size)
8408 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8409 }
8410 }
8411
8412 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, batch_gt_112) {
8413 TEST_REQUIRES_X86_AVX512F;
8414 for (size_t batch_size = 113; batch_size < 224; batch_size++) {
8415 VUnOpMicrokernelTester()
8416 .batch_size(batch_size)
8417 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8418 }
8419 }
8420
8421 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, inplace) {
8422 TEST_REQUIRES_X86_AVX512F;
8423 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
8424 VUnOpMicrokernelTester()
8425 .batch_size(batch_size)
8426 .inplace(true)
8427 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8428 }
8429 }
8430#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8431
8432
8433#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8434 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, batch_eq_128) {
8435 TEST_REQUIRES_X86_AVX512F;
8436 VUnOpMicrokernelTester()
8437 .batch_size(128)
8438 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8439 }
8440
8441 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, batch_div_128) {
8442 TEST_REQUIRES_X86_AVX512F;
8443 for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
8444 VUnOpMicrokernelTester()
8445 .batch_size(batch_size)
8446 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8447 }
8448 }
8449
8450 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, batch_lt_128) {
8451 TEST_REQUIRES_X86_AVX512F;
8452 for (size_t batch_size = 1; batch_size < 128; batch_size++) {
8453 VUnOpMicrokernelTester()
8454 .batch_size(batch_size)
8455 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8456 }
8457 }
8458
8459 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, batch_gt_128) {
8460 TEST_REQUIRES_X86_AVX512F;
8461 for (size_t batch_size = 129; batch_size < 256; batch_size++) {
8462 VUnOpMicrokernelTester()
8463 .batch_size(batch_size)
8464 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8465 }
8466 }
8467
8468 TEST(F32_SIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, inplace) {
8469 TEST_REQUIRES_X86_AVX512F;
8470 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
8471 VUnOpMicrokernelTester()
8472 .batch_size(batch_size)
8473 .inplace(true)
8474 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8475 }
8476 }
8477#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8478
8479
8480#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8481 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, batch_eq_16) {
8482 TEST_REQUIRES_X86_AVX512F;
8483 VUnOpMicrokernelTester()
8484 .batch_size(16)
8485 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8486 }
8487
8488 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, batch_div_16) {
8489 TEST_REQUIRES_X86_AVX512F;
8490 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
8491 VUnOpMicrokernelTester()
8492 .batch_size(batch_size)
8493 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8494 }
8495 }
8496
8497 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, batch_lt_16) {
8498 TEST_REQUIRES_X86_AVX512F;
8499 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
8500 VUnOpMicrokernelTester()
8501 .batch_size(batch_size)
8502 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8503 }
8504 }
8505
8506 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, batch_gt_16) {
8507 TEST_REQUIRES_X86_AVX512F;
8508 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
8509 VUnOpMicrokernelTester()
8510 .batch_size(batch_size)
8511 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8512 }
8513 }
8514
8515 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, inplace) {
8516 TEST_REQUIRES_X86_AVX512F;
8517 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
8518 VUnOpMicrokernelTester()
8519 .batch_size(batch_size)
8520 .inplace(true)
8521 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8522 }
8523 }
8524#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8525
8526
8527#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8528 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, batch_eq_32) {
8529 TEST_REQUIRES_X86_AVX512F;
8530 VUnOpMicrokernelTester()
8531 .batch_size(32)
8532 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8533 }
8534
8535 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, batch_div_32) {
8536 TEST_REQUIRES_X86_AVX512F;
8537 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
8538 VUnOpMicrokernelTester()
8539 .batch_size(batch_size)
8540 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8541 }
8542 }
8543
8544 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, batch_lt_32) {
8545 TEST_REQUIRES_X86_AVX512F;
8546 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
8547 VUnOpMicrokernelTester()
8548 .batch_size(batch_size)
8549 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8550 }
8551 }
8552
8553 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, batch_gt_32) {
8554 TEST_REQUIRES_X86_AVX512F;
8555 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
8556 VUnOpMicrokernelTester()
8557 .batch_size(batch_size)
8558 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8559 }
8560 }
8561
8562 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, inplace) {
8563 TEST_REQUIRES_X86_AVX512F;
8564 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
8565 VUnOpMicrokernelTester()
8566 .batch_size(batch_size)
8567 .inplace(true)
8568 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8569 }
8570 }
8571#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8572
8573
8574#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8575 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, batch_eq_48) {
8576 TEST_REQUIRES_X86_AVX512F;
8577 VUnOpMicrokernelTester()
8578 .batch_size(48)
8579 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8580 }
8581
8582 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, batch_div_48) {
8583 TEST_REQUIRES_X86_AVX512F;
8584 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
8585 VUnOpMicrokernelTester()
8586 .batch_size(batch_size)
8587 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8588 }
8589 }
8590
8591 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, batch_lt_48) {
8592 TEST_REQUIRES_X86_AVX512F;
8593 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
8594 VUnOpMicrokernelTester()
8595 .batch_size(batch_size)
8596 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8597 }
8598 }
8599
8600 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, batch_gt_48) {
8601 TEST_REQUIRES_X86_AVX512F;
8602 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
8603 VUnOpMicrokernelTester()
8604 .batch_size(batch_size)
8605 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8606 }
8607 }
8608
8609 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, inplace) {
8610 TEST_REQUIRES_X86_AVX512F;
8611 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
8612 VUnOpMicrokernelTester()
8613 .batch_size(batch_size)
8614 .inplace(true)
8615 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8616 }
8617 }
8618#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8619
8620
8621#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8622 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, batch_eq_64) {
8623 TEST_REQUIRES_X86_AVX512F;
8624 VUnOpMicrokernelTester()
8625 .batch_size(64)
8626 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8627 }
8628
8629 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, batch_div_64) {
8630 TEST_REQUIRES_X86_AVX512F;
8631 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
8632 VUnOpMicrokernelTester()
8633 .batch_size(batch_size)
8634 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8635 }
8636 }
8637
8638 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, batch_lt_64) {
8639 TEST_REQUIRES_X86_AVX512F;
8640 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
8641 VUnOpMicrokernelTester()
8642 .batch_size(batch_size)
8643 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8644 }
8645 }
8646
8647 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, batch_gt_64) {
8648 TEST_REQUIRES_X86_AVX512F;
8649 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
8650 VUnOpMicrokernelTester()
8651 .batch_size(batch_size)
8652 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8653 }
8654 }
8655
8656 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, inplace) {
8657 TEST_REQUIRES_X86_AVX512F;
8658 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
8659 VUnOpMicrokernelTester()
8660 .batch_size(batch_size)
8661 .inplace(true)
8662 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
8663 }
8664 }
8665#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8666
8667
8668#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8669 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, batch_eq_80) {
8670 TEST_REQUIRES_X86_AVX512F;
8671 VUnOpMicrokernelTester()
8672 .batch_size(80)
8673 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8674 }
8675
8676 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, batch_div_80) {
8677 TEST_REQUIRES_X86_AVX512F;
8678 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
8679 VUnOpMicrokernelTester()
8680 .batch_size(batch_size)
8681 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8682 }
8683 }
8684
8685 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, batch_lt_80) {
8686 TEST_REQUIRES_X86_AVX512F;
8687 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
8688 VUnOpMicrokernelTester()
8689 .batch_size(batch_size)
8690 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8691 }
8692 }
8693
8694 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, batch_gt_80) {
8695 TEST_REQUIRES_X86_AVX512F;
8696 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
8697 VUnOpMicrokernelTester()
8698 .batch_size(batch_size)
8699 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8700 }
8701 }
8702
8703 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, inplace) {
8704 TEST_REQUIRES_X86_AVX512F;
8705 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
8706 VUnOpMicrokernelTester()
8707 .batch_size(batch_size)
8708 .inplace(true)
8709 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
8710 }
8711 }
8712#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8713
8714
8715#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8716 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, batch_eq_96) {
8717 TEST_REQUIRES_X86_AVX512F;
8718 VUnOpMicrokernelTester()
8719 .batch_size(96)
8720 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8721 }
8722
8723 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, batch_div_96) {
8724 TEST_REQUIRES_X86_AVX512F;
8725 for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
8726 VUnOpMicrokernelTester()
8727 .batch_size(batch_size)
8728 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8729 }
8730 }
8731
8732 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, batch_lt_96) {
8733 TEST_REQUIRES_X86_AVX512F;
8734 for (size_t batch_size = 1; batch_size < 96; batch_size++) {
8735 VUnOpMicrokernelTester()
8736 .batch_size(batch_size)
8737 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8738 }
8739 }
8740
8741 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, batch_gt_96) {
8742 TEST_REQUIRES_X86_AVX512F;
8743 for (size_t batch_size = 97; batch_size < 192; batch_size++) {
8744 VUnOpMicrokernelTester()
8745 .batch_size(batch_size)
8746 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8747 }
8748 }
8749
8750 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, inplace) {
8751 TEST_REQUIRES_X86_AVX512F;
8752 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
8753 VUnOpMicrokernelTester()
8754 .batch_size(batch_size)
8755 .inplace(true)
8756 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
8757 }
8758 }
8759#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8760
8761
8762#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8763 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, batch_eq_112) {
8764 TEST_REQUIRES_X86_AVX512F;
8765 VUnOpMicrokernelTester()
8766 .batch_size(112)
8767 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8768 }
8769
8770 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, batch_div_112) {
8771 TEST_REQUIRES_X86_AVX512F;
8772 for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
8773 VUnOpMicrokernelTester()
8774 .batch_size(batch_size)
8775 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8776 }
8777 }
8778
8779 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, batch_lt_112) {
8780 TEST_REQUIRES_X86_AVX512F;
8781 for (size_t batch_size = 1; batch_size < 112; batch_size++) {
8782 VUnOpMicrokernelTester()
8783 .batch_size(batch_size)
8784 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8785 }
8786 }
8787
8788 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, batch_gt_112) {
8789 TEST_REQUIRES_X86_AVX512F;
8790 for (size_t batch_size = 113; batch_size < 224; batch_size++) {
8791 VUnOpMicrokernelTester()
8792 .batch_size(batch_size)
8793 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8794 }
8795 }
8796
8797 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, inplace) {
8798 TEST_REQUIRES_X86_AVX512F;
8799 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
8800 VUnOpMicrokernelTester()
8801 .batch_size(batch_size)
8802 .inplace(true)
8803 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
8804 }
8805 }
8806#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8807
8808
8809#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8810 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, batch_eq_128) {
8811 TEST_REQUIRES_X86_AVX512F;
8812 VUnOpMicrokernelTester()
8813 .batch_size(128)
8814 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8815 }
8816
8817 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, batch_div_128) {
8818 TEST_REQUIRES_X86_AVX512F;
8819 for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
8820 VUnOpMicrokernelTester()
8821 .batch_size(batch_size)
8822 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8823 }
8824 }
8825
8826 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, batch_lt_128) {
8827 TEST_REQUIRES_X86_AVX512F;
8828 for (size_t batch_size = 1; batch_size < 128; batch_size++) {
8829 VUnOpMicrokernelTester()
8830 .batch_size(batch_size)
8831 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8832 }
8833 }
8834
8835 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, batch_gt_128) {
8836 TEST_REQUIRES_X86_AVX512F;
8837 for (size_t batch_size = 129; batch_size < 256; batch_size++) {
8838 VUnOpMicrokernelTester()
8839 .batch_size(batch_size)
8840 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8841 }
8842 }
8843
8844 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, inplace) {
8845 TEST_REQUIRES_X86_AVX512F;
8846 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
8847 VUnOpMicrokernelTester()
8848 .batch_size(batch_size)
8849 .inplace(true)
8850 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
8851 }
8852 }
8853#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8854
8855
8856#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8857 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, batch_eq_16) {
8858 TEST_REQUIRES_X86_AVX512F;
8859 VUnOpMicrokernelTester()
8860 .batch_size(16)
8861 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8862 }
8863
8864 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, batch_div_16) {
8865 TEST_REQUIRES_X86_AVX512F;
8866 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
8867 VUnOpMicrokernelTester()
8868 .batch_size(batch_size)
8869 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8870 }
8871 }
8872
8873 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, batch_lt_16) {
8874 TEST_REQUIRES_X86_AVX512F;
8875 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
8876 VUnOpMicrokernelTester()
8877 .batch_size(batch_size)
8878 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8879 }
8880 }
8881
8882 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, batch_gt_16) {
8883 TEST_REQUIRES_X86_AVX512F;
8884 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
8885 VUnOpMicrokernelTester()
8886 .batch_size(batch_size)
8887 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8888 }
8889 }
8890
8891 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, inplace) {
8892 TEST_REQUIRES_X86_AVX512F;
8893 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
8894 VUnOpMicrokernelTester()
8895 .batch_size(batch_size)
8896 .inplace(true)
8897 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
8898 }
8899 }
8900#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8901
8902
8903#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8904 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, batch_eq_32) {
8905 TEST_REQUIRES_X86_AVX512F;
8906 VUnOpMicrokernelTester()
8907 .batch_size(32)
8908 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8909 }
8910
8911 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, batch_div_32) {
8912 TEST_REQUIRES_X86_AVX512F;
8913 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
8914 VUnOpMicrokernelTester()
8915 .batch_size(batch_size)
8916 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8917 }
8918 }
8919
8920 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, batch_lt_32) {
8921 TEST_REQUIRES_X86_AVX512F;
8922 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
8923 VUnOpMicrokernelTester()
8924 .batch_size(batch_size)
8925 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8926 }
8927 }
8928
8929 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, batch_gt_32) {
8930 TEST_REQUIRES_X86_AVX512F;
8931 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
8932 VUnOpMicrokernelTester()
8933 .batch_size(batch_size)
8934 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8935 }
8936 }
8937
8938 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, inplace) {
8939 TEST_REQUIRES_X86_AVX512F;
8940 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
8941 VUnOpMicrokernelTester()
8942 .batch_size(batch_size)
8943 .inplace(true)
8944 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
8945 }
8946 }
8947#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8948
8949
8950#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8951 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, batch_eq_48) {
8952 TEST_REQUIRES_X86_AVX512F;
8953 VUnOpMicrokernelTester()
8954 .batch_size(48)
8955 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8956 }
8957
8958 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, batch_div_48) {
8959 TEST_REQUIRES_X86_AVX512F;
8960 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
8961 VUnOpMicrokernelTester()
8962 .batch_size(batch_size)
8963 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8964 }
8965 }
8966
8967 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, batch_lt_48) {
8968 TEST_REQUIRES_X86_AVX512F;
8969 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
8970 VUnOpMicrokernelTester()
8971 .batch_size(batch_size)
8972 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8973 }
8974 }
8975
8976 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, batch_gt_48) {
8977 TEST_REQUIRES_X86_AVX512F;
8978 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
8979 VUnOpMicrokernelTester()
8980 .batch_size(batch_size)
8981 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8982 }
8983 }
8984
8985 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, inplace) {
8986 TEST_REQUIRES_X86_AVX512F;
8987 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
8988 VUnOpMicrokernelTester()
8989 .batch_size(batch_size)
8990 .inplace(true)
8991 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
8992 }
8993 }
8994#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
8995
8996
8997#if XNN_ARCH_X86 || XNN_ARCH_X86_64
8998 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, batch_eq_64) {
8999 TEST_REQUIRES_X86_AVX512F;
9000 VUnOpMicrokernelTester()
9001 .batch_size(64)
9002 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9003 }
9004
9005 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, batch_div_64) {
9006 TEST_REQUIRES_X86_AVX512F;
9007 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
9008 VUnOpMicrokernelTester()
9009 .batch_size(batch_size)
9010 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9011 }
9012 }
9013
9014 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, batch_lt_64) {
9015 TEST_REQUIRES_X86_AVX512F;
9016 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
9017 VUnOpMicrokernelTester()
9018 .batch_size(batch_size)
9019 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9020 }
9021 }
9022
9023 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, batch_gt_64) {
9024 TEST_REQUIRES_X86_AVX512F;
9025 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
9026 VUnOpMicrokernelTester()
9027 .batch_size(batch_size)
9028 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9029 }
9030 }
9031
9032 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, inplace) {
9033 TEST_REQUIRES_X86_AVX512F;
9034 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
9035 VUnOpMicrokernelTester()
9036 .batch_size(batch_size)
9037 .inplace(true)
9038 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9039 }
9040 }
9041#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9042
9043
9044#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9045 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, batch_eq_80) {
9046 TEST_REQUIRES_X86_AVX512F;
9047 VUnOpMicrokernelTester()
9048 .batch_size(80)
9049 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9050 }
9051
9052 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, batch_div_80) {
9053 TEST_REQUIRES_X86_AVX512F;
9054 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
9055 VUnOpMicrokernelTester()
9056 .batch_size(batch_size)
9057 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9058 }
9059 }
9060
9061 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, batch_lt_80) {
9062 TEST_REQUIRES_X86_AVX512F;
9063 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
9064 VUnOpMicrokernelTester()
9065 .batch_size(batch_size)
9066 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9067 }
9068 }
9069
9070 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, batch_gt_80) {
9071 TEST_REQUIRES_X86_AVX512F;
9072 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
9073 VUnOpMicrokernelTester()
9074 .batch_size(batch_size)
9075 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9076 }
9077 }
9078
9079 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, inplace) {
9080 TEST_REQUIRES_X86_AVX512F;
9081 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
9082 VUnOpMicrokernelTester()
9083 .batch_size(batch_size)
9084 .inplace(true)
9085 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9086 }
9087 }
9088#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9089
9090
9091#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9092 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, batch_eq_96) {
9093 TEST_REQUIRES_X86_AVX512F;
9094 VUnOpMicrokernelTester()
9095 .batch_size(96)
9096 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9097 }
9098
9099 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, batch_div_96) {
9100 TEST_REQUIRES_X86_AVX512F;
9101 for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
9102 VUnOpMicrokernelTester()
9103 .batch_size(batch_size)
9104 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9105 }
9106 }
9107
9108 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, batch_lt_96) {
9109 TEST_REQUIRES_X86_AVX512F;
9110 for (size_t batch_size = 1; batch_size < 96; batch_size++) {
9111 VUnOpMicrokernelTester()
9112 .batch_size(batch_size)
9113 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9114 }
9115 }
9116
9117 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, batch_gt_96) {
9118 TEST_REQUIRES_X86_AVX512F;
9119 for (size_t batch_size = 97; batch_size < 192; batch_size++) {
9120 VUnOpMicrokernelTester()
9121 .batch_size(batch_size)
9122 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9123 }
9124 }
9125
9126 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, inplace) {
9127 TEST_REQUIRES_X86_AVX512F;
9128 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
9129 VUnOpMicrokernelTester()
9130 .batch_size(batch_size)
9131 .inplace(true)
9132 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9133 }
9134 }
9135#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9136
9137
9138#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9139 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, batch_eq_112) {
9140 TEST_REQUIRES_X86_AVX512F;
9141 VUnOpMicrokernelTester()
9142 .batch_size(112)
9143 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9144 }
9145
9146 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, batch_div_112) {
9147 TEST_REQUIRES_X86_AVX512F;
9148 for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
9149 VUnOpMicrokernelTester()
9150 .batch_size(batch_size)
9151 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9152 }
9153 }
9154
9155 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, batch_lt_112) {
9156 TEST_REQUIRES_X86_AVX512F;
9157 for (size_t batch_size = 1; batch_size < 112; batch_size++) {
9158 VUnOpMicrokernelTester()
9159 .batch_size(batch_size)
9160 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9161 }
9162 }
9163
9164 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, batch_gt_112) {
9165 TEST_REQUIRES_X86_AVX512F;
9166 for (size_t batch_size = 113; batch_size < 224; batch_size++) {
9167 VUnOpMicrokernelTester()
9168 .batch_size(batch_size)
9169 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9170 }
9171 }
9172
9173 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, inplace) {
9174 TEST_REQUIRES_X86_AVX512F;
9175 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
9176 VUnOpMicrokernelTester()
9177 .batch_size(batch_size)
9178 .inplace(true)
9179 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9180 }
9181 }
9182#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9183
9184
9185#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9186 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, batch_eq_128) {
9187 TEST_REQUIRES_X86_AVX512F;
9188 VUnOpMicrokernelTester()
9189 .batch_size(128)
9190 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9191 }
9192
9193 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, batch_div_128) {
9194 TEST_REQUIRES_X86_AVX512F;
9195 for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
9196 VUnOpMicrokernelTester()
9197 .batch_size(batch_size)
9198 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9199 }
9200 }
9201
9202 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, batch_lt_128) {
9203 TEST_REQUIRES_X86_AVX512F;
9204 for (size_t batch_size = 1; batch_size < 128; batch_size++) {
9205 VUnOpMicrokernelTester()
9206 .batch_size(batch_size)
9207 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9208 }
9209 }
9210
9211 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, batch_gt_128) {
9212 TEST_REQUIRES_X86_AVX512F;
9213 for (size_t batch_size = 129; batch_size < 256; batch_size++) {
9214 VUnOpMicrokernelTester()
9215 .batch_size(batch_size)
9216 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9217 }
9218 }
9219
9220 TEST(F32_SIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, inplace) {
9221 TEST_REQUIRES_X86_AVX512F;
9222 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
9223 VUnOpMicrokernelTester()
9224 .batch_size(batch_size)
9225 .inplace(true)
9226 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9227 }
9228 }
9229#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9230
9231
9232#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9233 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, batch_eq_16) {
9234 TEST_REQUIRES_X86_AVX512F;
9235 VUnOpMicrokernelTester()
9236 .batch_size(16)
9237 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9238 }
9239
9240 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, batch_div_16) {
9241 TEST_REQUIRES_X86_AVX512F;
9242 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
9243 VUnOpMicrokernelTester()
9244 .batch_size(batch_size)
9245 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9246 }
9247 }
9248
9249 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, batch_lt_16) {
9250 TEST_REQUIRES_X86_AVX512F;
9251 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
9252 VUnOpMicrokernelTester()
9253 .batch_size(batch_size)
9254 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9255 }
9256 }
9257
9258 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, batch_gt_16) {
9259 TEST_REQUIRES_X86_AVX512F;
9260 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
9261 VUnOpMicrokernelTester()
9262 .batch_size(batch_size)
9263 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9264 }
9265 }
9266
9267 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, inplace) {
9268 TEST_REQUIRES_X86_AVX512F;
9269 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
9270 VUnOpMicrokernelTester()
9271 .batch_size(batch_size)
9272 .inplace(true)
9273 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9274 }
9275 }
9276#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9277
9278
9279#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9280 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, batch_eq_32) {
9281 TEST_REQUIRES_X86_AVX512F;
9282 VUnOpMicrokernelTester()
9283 .batch_size(32)
9284 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9285 }
9286
9287 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, batch_div_32) {
9288 TEST_REQUIRES_X86_AVX512F;
9289 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
9290 VUnOpMicrokernelTester()
9291 .batch_size(batch_size)
9292 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9293 }
9294 }
9295
9296 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, batch_lt_32) {
9297 TEST_REQUIRES_X86_AVX512F;
9298 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
9299 VUnOpMicrokernelTester()
9300 .batch_size(batch_size)
9301 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9302 }
9303 }
9304
9305 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, batch_gt_32) {
9306 TEST_REQUIRES_X86_AVX512F;
9307 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
9308 VUnOpMicrokernelTester()
9309 .batch_size(batch_size)
9310 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9311 }
9312 }
9313
9314 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, inplace) {
9315 TEST_REQUIRES_X86_AVX512F;
9316 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
9317 VUnOpMicrokernelTester()
9318 .batch_size(batch_size)
9319 .inplace(true)
9320 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9321 }
9322 }
9323#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9324
9325
9326#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9327 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, batch_eq_48) {
9328 TEST_REQUIRES_X86_AVX512F;
9329 VUnOpMicrokernelTester()
9330 .batch_size(48)
9331 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9332 }
9333
9334 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, batch_div_48) {
9335 TEST_REQUIRES_X86_AVX512F;
9336 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
9337 VUnOpMicrokernelTester()
9338 .batch_size(batch_size)
9339 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9340 }
9341 }
9342
9343 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, batch_lt_48) {
9344 TEST_REQUIRES_X86_AVX512F;
9345 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
9346 VUnOpMicrokernelTester()
9347 .batch_size(batch_size)
9348 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9349 }
9350 }
9351
9352 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, batch_gt_48) {
9353 TEST_REQUIRES_X86_AVX512F;
9354 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
9355 VUnOpMicrokernelTester()
9356 .batch_size(batch_size)
9357 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9358 }
9359 }
9360
9361 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, inplace) {
9362 TEST_REQUIRES_X86_AVX512F;
9363 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
9364 VUnOpMicrokernelTester()
9365 .batch_size(batch_size)
9366 .inplace(true)
9367 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9368 }
9369 }
9370#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9371
9372
9373#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9374 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, batch_eq_64) {
9375 TEST_REQUIRES_X86_AVX512F;
9376 VUnOpMicrokernelTester()
9377 .batch_size(64)
9378 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9379 }
9380
9381 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, batch_div_64) {
9382 TEST_REQUIRES_X86_AVX512F;
9383 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
9384 VUnOpMicrokernelTester()
9385 .batch_size(batch_size)
9386 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9387 }
9388 }
9389
9390 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, batch_lt_64) {
9391 TEST_REQUIRES_X86_AVX512F;
9392 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
9393 VUnOpMicrokernelTester()
9394 .batch_size(batch_size)
9395 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9396 }
9397 }
9398
9399 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, batch_gt_64) {
9400 TEST_REQUIRES_X86_AVX512F;
9401 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
9402 VUnOpMicrokernelTester()
9403 .batch_size(batch_size)
9404 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9405 }
9406 }
9407
9408 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, inplace) {
9409 TEST_REQUIRES_X86_AVX512F;
9410 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
9411 VUnOpMicrokernelTester()
9412 .batch_size(batch_size)
9413 .inplace(true)
9414 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9415 }
9416 }
9417#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9418
9419
9420#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9421 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, batch_eq_80) {
9422 TEST_REQUIRES_X86_AVX512F;
9423 VUnOpMicrokernelTester()
9424 .batch_size(80)
9425 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9426 }
9427
9428 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, batch_div_80) {
9429 TEST_REQUIRES_X86_AVX512F;
9430 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
9431 VUnOpMicrokernelTester()
9432 .batch_size(batch_size)
9433 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9434 }
9435 }
9436
9437 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, batch_lt_80) {
9438 TEST_REQUIRES_X86_AVX512F;
9439 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
9440 VUnOpMicrokernelTester()
9441 .batch_size(batch_size)
9442 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9443 }
9444 }
9445
9446 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, batch_gt_80) {
9447 TEST_REQUIRES_X86_AVX512F;
9448 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
9449 VUnOpMicrokernelTester()
9450 .batch_size(batch_size)
9451 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9452 }
9453 }
9454
9455 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, inplace) {
9456 TEST_REQUIRES_X86_AVX512F;
9457 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
9458 VUnOpMicrokernelTester()
9459 .batch_size(batch_size)
9460 .inplace(true)
9461 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9462 }
9463 }
9464#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9465
9466
9467#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9468 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, batch_eq_96) {
9469 TEST_REQUIRES_X86_AVX512F;
9470 VUnOpMicrokernelTester()
9471 .batch_size(96)
9472 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9473 }
9474
9475 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, batch_div_96) {
9476 TEST_REQUIRES_X86_AVX512F;
9477 for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
9478 VUnOpMicrokernelTester()
9479 .batch_size(batch_size)
9480 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9481 }
9482 }
9483
9484 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, batch_lt_96) {
9485 TEST_REQUIRES_X86_AVX512F;
9486 for (size_t batch_size = 1; batch_size < 96; batch_size++) {
9487 VUnOpMicrokernelTester()
9488 .batch_size(batch_size)
9489 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9490 }
9491 }
9492
9493 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, batch_gt_96) {
9494 TEST_REQUIRES_X86_AVX512F;
9495 for (size_t batch_size = 97; batch_size < 192; batch_size++) {
9496 VUnOpMicrokernelTester()
9497 .batch_size(batch_size)
9498 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9499 }
9500 }
9501
9502 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, inplace) {
9503 TEST_REQUIRES_X86_AVX512F;
9504 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
9505 VUnOpMicrokernelTester()
9506 .batch_size(batch_size)
9507 .inplace(true)
9508 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9509 }
9510 }
9511#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9512
9513
9514#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9515 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, batch_eq_112) {
9516 TEST_REQUIRES_X86_AVX512F;
9517 VUnOpMicrokernelTester()
9518 .batch_size(112)
9519 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9520 }
9521
9522 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, batch_div_112) {
9523 TEST_REQUIRES_X86_AVX512F;
9524 for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
9525 VUnOpMicrokernelTester()
9526 .batch_size(batch_size)
9527 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9528 }
9529 }
9530
9531 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, batch_lt_112) {
9532 TEST_REQUIRES_X86_AVX512F;
9533 for (size_t batch_size = 1; batch_size < 112; batch_size++) {
9534 VUnOpMicrokernelTester()
9535 .batch_size(batch_size)
9536 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9537 }
9538 }
9539
9540 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, batch_gt_112) {
9541 TEST_REQUIRES_X86_AVX512F;
9542 for (size_t batch_size = 113; batch_size < 224; batch_size++) {
9543 VUnOpMicrokernelTester()
9544 .batch_size(batch_size)
9545 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9546 }
9547 }
9548
9549 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, inplace) {
9550 TEST_REQUIRES_X86_AVX512F;
9551 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
9552 VUnOpMicrokernelTester()
9553 .batch_size(batch_size)
9554 .inplace(true)
9555 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9556 }
9557 }
9558#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9559
9560
9561#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9562 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, batch_eq_128) {
9563 TEST_REQUIRES_X86_AVX512F;
9564 VUnOpMicrokernelTester()
9565 .batch_size(128)
9566 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9567 }
9568
9569 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, batch_div_128) {
9570 TEST_REQUIRES_X86_AVX512F;
9571 for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
9572 VUnOpMicrokernelTester()
9573 .batch_size(batch_size)
9574 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9575 }
9576 }
9577
9578 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, batch_lt_128) {
9579 TEST_REQUIRES_X86_AVX512F;
9580 for (size_t batch_size = 1; batch_size < 128; batch_size++) {
9581 VUnOpMicrokernelTester()
9582 .batch_size(batch_size)
9583 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9584 }
9585 }
9586
9587 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, batch_gt_128) {
9588 TEST_REQUIRES_X86_AVX512F;
9589 for (size_t batch_size = 129; batch_size < 256; batch_size++) {
9590 VUnOpMicrokernelTester()
9591 .batch_size(batch_size)
9592 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9593 }
9594 }
9595
9596 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, inplace) {
9597 TEST_REQUIRES_X86_AVX512F;
9598 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
9599 VUnOpMicrokernelTester()
9600 .batch_size(batch_size)
9601 .inplace(true)
9602 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9603 }
9604 }
9605#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9606
9607
9608#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9609 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, batch_eq_16) {
9610 TEST_REQUIRES_X86_AVX512F;
9611 VUnOpMicrokernelTester()
9612 .batch_size(16)
9613 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9614 }
9615
9616 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, batch_div_16) {
9617 TEST_REQUIRES_X86_AVX512F;
9618 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
9619 VUnOpMicrokernelTester()
9620 .batch_size(batch_size)
9621 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9622 }
9623 }
9624
9625 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, batch_lt_16) {
9626 TEST_REQUIRES_X86_AVX512F;
9627 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
9628 VUnOpMicrokernelTester()
9629 .batch_size(batch_size)
9630 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9631 }
9632 }
9633
9634 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, batch_gt_16) {
9635 TEST_REQUIRES_X86_AVX512F;
9636 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
9637 VUnOpMicrokernelTester()
9638 .batch_size(batch_size)
9639 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9640 }
9641 }
9642
9643 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, inplace) {
9644 TEST_REQUIRES_X86_AVX512F;
9645 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
9646 VUnOpMicrokernelTester()
9647 .batch_size(batch_size)
9648 .inplace(true)
9649 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
9650 }
9651 }
9652#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9653
9654
9655#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9656 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, batch_eq_32) {
9657 TEST_REQUIRES_X86_AVX512F;
9658 VUnOpMicrokernelTester()
9659 .batch_size(32)
9660 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9661 }
9662
9663 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, batch_div_32) {
9664 TEST_REQUIRES_X86_AVX512F;
9665 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
9666 VUnOpMicrokernelTester()
9667 .batch_size(batch_size)
9668 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9669 }
9670 }
9671
9672 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, batch_lt_32) {
9673 TEST_REQUIRES_X86_AVX512F;
9674 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
9675 VUnOpMicrokernelTester()
9676 .batch_size(batch_size)
9677 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9678 }
9679 }
9680
9681 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, batch_gt_32) {
9682 TEST_REQUIRES_X86_AVX512F;
9683 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
9684 VUnOpMicrokernelTester()
9685 .batch_size(batch_size)
9686 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9687 }
9688 }
9689
9690 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, inplace) {
9691 TEST_REQUIRES_X86_AVX512F;
9692 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
9693 VUnOpMicrokernelTester()
9694 .batch_size(batch_size)
9695 .inplace(true)
9696 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
9697 }
9698 }
9699#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9700
9701
9702#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9703 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, batch_eq_48) {
9704 TEST_REQUIRES_X86_AVX512F;
9705 VUnOpMicrokernelTester()
9706 .batch_size(48)
9707 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9708 }
9709
9710 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, batch_div_48) {
9711 TEST_REQUIRES_X86_AVX512F;
9712 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
9713 VUnOpMicrokernelTester()
9714 .batch_size(batch_size)
9715 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9716 }
9717 }
9718
9719 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, batch_lt_48) {
9720 TEST_REQUIRES_X86_AVX512F;
9721 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
9722 VUnOpMicrokernelTester()
9723 .batch_size(batch_size)
9724 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9725 }
9726 }
9727
9728 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, batch_gt_48) {
9729 TEST_REQUIRES_X86_AVX512F;
9730 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
9731 VUnOpMicrokernelTester()
9732 .batch_size(batch_size)
9733 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9734 }
9735 }
9736
9737 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, inplace) {
9738 TEST_REQUIRES_X86_AVX512F;
9739 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
9740 VUnOpMicrokernelTester()
9741 .batch_size(batch_size)
9742 .inplace(true)
9743 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
9744 }
9745 }
9746#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9747
9748
9749#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9750 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, batch_eq_64) {
9751 TEST_REQUIRES_X86_AVX512F;
9752 VUnOpMicrokernelTester()
9753 .batch_size(64)
9754 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9755 }
9756
9757 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, batch_div_64) {
9758 TEST_REQUIRES_X86_AVX512F;
9759 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
9760 VUnOpMicrokernelTester()
9761 .batch_size(batch_size)
9762 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9763 }
9764 }
9765
9766 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, batch_lt_64) {
9767 TEST_REQUIRES_X86_AVX512F;
9768 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
9769 VUnOpMicrokernelTester()
9770 .batch_size(batch_size)
9771 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9772 }
9773 }
9774
9775 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, batch_gt_64) {
9776 TEST_REQUIRES_X86_AVX512F;
9777 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
9778 VUnOpMicrokernelTester()
9779 .batch_size(batch_size)
9780 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9781 }
9782 }
9783
9784 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, inplace) {
9785 TEST_REQUIRES_X86_AVX512F;
9786 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
9787 VUnOpMicrokernelTester()
9788 .batch_size(batch_size)
9789 .inplace(true)
9790 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
9791 }
9792 }
9793#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9794
9795
9796#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9797 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, batch_eq_80) {
9798 TEST_REQUIRES_X86_AVX512F;
9799 VUnOpMicrokernelTester()
9800 .batch_size(80)
9801 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9802 }
9803
9804 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, batch_div_80) {
9805 TEST_REQUIRES_X86_AVX512F;
9806 for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
9807 VUnOpMicrokernelTester()
9808 .batch_size(batch_size)
9809 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9810 }
9811 }
9812
9813 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, batch_lt_80) {
9814 TEST_REQUIRES_X86_AVX512F;
9815 for (size_t batch_size = 1; batch_size < 80; batch_size++) {
9816 VUnOpMicrokernelTester()
9817 .batch_size(batch_size)
9818 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9819 }
9820 }
9821
9822 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, batch_gt_80) {
9823 TEST_REQUIRES_X86_AVX512F;
9824 for (size_t batch_size = 81; batch_size < 160; batch_size++) {
9825 VUnOpMicrokernelTester()
9826 .batch_size(batch_size)
9827 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9828 }
9829 }
9830
9831 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, inplace) {
9832 TEST_REQUIRES_X86_AVX512F;
9833 for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
9834 VUnOpMicrokernelTester()
9835 .batch_size(batch_size)
9836 .inplace(true)
9837 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
9838 }
9839 }
9840#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9841
9842
9843#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9844 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, batch_eq_96) {
9845 TEST_REQUIRES_X86_AVX512F;
9846 VUnOpMicrokernelTester()
9847 .batch_size(96)
9848 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9849 }
9850
9851 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, batch_div_96) {
9852 TEST_REQUIRES_X86_AVX512F;
9853 for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
9854 VUnOpMicrokernelTester()
9855 .batch_size(batch_size)
9856 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9857 }
9858 }
9859
9860 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, batch_lt_96) {
9861 TEST_REQUIRES_X86_AVX512F;
9862 for (size_t batch_size = 1; batch_size < 96; batch_size++) {
9863 VUnOpMicrokernelTester()
9864 .batch_size(batch_size)
9865 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9866 }
9867 }
9868
9869 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, batch_gt_96) {
9870 TEST_REQUIRES_X86_AVX512F;
9871 for (size_t batch_size = 97; batch_size < 192; batch_size++) {
9872 VUnOpMicrokernelTester()
9873 .batch_size(batch_size)
9874 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9875 }
9876 }
9877
9878 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, inplace) {
9879 TEST_REQUIRES_X86_AVX512F;
9880 for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
9881 VUnOpMicrokernelTester()
9882 .batch_size(batch_size)
9883 .inplace(true)
9884 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
9885 }
9886 }
9887#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9888
9889
9890#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9891 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, batch_eq_112) {
9892 TEST_REQUIRES_X86_AVX512F;
9893 VUnOpMicrokernelTester()
9894 .batch_size(112)
9895 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9896 }
9897
9898 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, batch_div_112) {
9899 TEST_REQUIRES_X86_AVX512F;
9900 for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
9901 VUnOpMicrokernelTester()
9902 .batch_size(batch_size)
9903 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9904 }
9905 }
9906
9907 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, batch_lt_112) {
9908 TEST_REQUIRES_X86_AVX512F;
9909 for (size_t batch_size = 1; batch_size < 112; batch_size++) {
9910 VUnOpMicrokernelTester()
9911 .batch_size(batch_size)
9912 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9913 }
9914 }
9915
9916 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, batch_gt_112) {
9917 TEST_REQUIRES_X86_AVX512F;
9918 for (size_t batch_size = 113; batch_size < 224; batch_size++) {
9919 VUnOpMicrokernelTester()
9920 .batch_size(batch_size)
9921 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9922 }
9923 }
9924
9925 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, inplace) {
9926 TEST_REQUIRES_X86_AVX512F;
9927 for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
9928 VUnOpMicrokernelTester()
9929 .batch_size(batch_size)
9930 .inplace(true)
9931 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
9932 }
9933 }
9934#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9935
9936
9937#if XNN_ARCH_X86 || XNN_ARCH_X86_64
9938 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, batch_eq_128) {
9939 TEST_REQUIRES_X86_AVX512F;
9940 VUnOpMicrokernelTester()
9941 .batch_size(128)
9942 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9943 }
9944
9945 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, batch_div_128) {
9946 TEST_REQUIRES_X86_AVX512F;
9947 for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
9948 VUnOpMicrokernelTester()
9949 .batch_size(batch_size)
9950 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9951 }
9952 }
9953
9954 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, batch_lt_128) {
9955 TEST_REQUIRES_X86_AVX512F;
9956 for (size_t batch_size = 1; batch_size < 128; batch_size++) {
9957 VUnOpMicrokernelTester()
9958 .batch_size(batch_size)
9959 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9960 }
9961 }
9962
9963 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, batch_gt_128) {
9964 TEST_REQUIRES_X86_AVX512F;
9965 for (size_t batch_size = 129; batch_size < 256; batch_size++) {
9966 VUnOpMicrokernelTester()
9967 .batch_size(batch_size)
9968 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9969 }
9970 }
9971
9972 TEST(F32_SIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, inplace) {
9973 TEST_REQUIRES_X86_AVX512F;
9974 for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
9975 VUnOpMicrokernelTester()
9976 .batch_size(batch_size)
9977 .inplace(true)
9978 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
9979 }
9980 }
9981#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
9982
9983
Marat Dukhanb3635ed2020-07-16 12:36:28 -07009984#if XNN_ARCH_WASMSIMD
9985 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X4, batch_eq_4) {
9986 VUnOpMicrokernelTester()
9987 .batch_size(4)
9988 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
9989 }
9990
9991 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X4, batch_div_4) {
9992 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
9993 VUnOpMicrokernelTester()
9994 .batch_size(batch_size)
9995 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
9996 }
9997 }
9998
9999 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X4, batch_lt_4) {
10000 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
10001 VUnOpMicrokernelTester()
10002 .batch_size(batch_size)
10003 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
10004 }
10005 }
10006
10007 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X4, batch_gt_4) {
10008 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
10009 VUnOpMicrokernelTester()
10010 .batch_size(batch_size)
10011 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
10012 }
10013 }
10014
10015 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X4, inplace) {
10016 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
10017 VUnOpMicrokernelTester()
10018 .batch_size(batch_size)
10019 .inplace(true)
10020 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
10021 }
10022 }
10023#endif // XNN_ARCH_WASMSIMD
10024
10025
10026#if XNN_ARCH_WASMSIMD
10027 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X8, batch_eq_8) {
10028 VUnOpMicrokernelTester()
10029 .batch_size(8)
10030 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10031 }
10032
10033 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X8, batch_div_8) {
10034 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
10035 VUnOpMicrokernelTester()
10036 .batch_size(batch_size)
10037 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10038 }
10039 }
10040
10041 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X8, batch_lt_8) {
10042 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
10043 VUnOpMicrokernelTester()
10044 .batch_size(batch_size)
10045 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10046 }
10047 }
10048
10049 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X8, batch_gt_8) {
10050 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
10051 VUnOpMicrokernelTester()
10052 .batch_size(batch_size)
10053 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10054 }
10055 }
10056
10057 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X8, inplace) {
10058 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
10059 VUnOpMicrokernelTester()
10060 .batch_size(batch_size)
10061 .inplace(true)
10062 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10063 }
10064 }
10065#endif // XNN_ARCH_WASMSIMD
10066
10067
10068#if XNN_ARCH_WASMSIMD
10069 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X12, batch_eq_12) {
10070 VUnOpMicrokernelTester()
10071 .batch_size(12)
10072 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10073 }
10074
10075 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X12, batch_div_12) {
10076 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
10077 VUnOpMicrokernelTester()
10078 .batch_size(batch_size)
10079 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10080 }
10081 }
10082
10083 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X12, batch_lt_12) {
10084 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
10085 VUnOpMicrokernelTester()
10086 .batch_size(batch_size)
10087 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10088 }
10089 }
10090
10091 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X12, batch_gt_12) {
10092 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
10093 VUnOpMicrokernelTester()
10094 .batch_size(batch_size)
10095 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10096 }
10097 }
10098
10099 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X12, inplace) {
10100 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
10101 VUnOpMicrokernelTester()
10102 .batch_size(batch_size)
10103 .inplace(true)
10104 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10105 }
10106 }
10107#endif // XNN_ARCH_WASMSIMD
10108
10109
10110#if XNN_ARCH_WASMSIMD
10111 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X16, batch_eq_16) {
10112 VUnOpMicrokernelTester()
10113 .batch_size(16)
10114 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10115 }
10116
10117 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X16, batch_div_16) {
10118 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
10119 VUnOpMicrokernelTester()
10120 .batch_size(batch_size)
10121 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10122 }
10123 }
10124
10125 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X16, batch_lt_16) {
10126 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
10127 VUnOpMicrokernelTester()
10128 .batch_size(batch_size)
10129 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10130 }
10131 }
10132
10133 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X16, batch_gt_16) {
10134 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
10135 VUnOpMicrokernelTester()
10136 .batch_size(batch_size)
10137 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10138 }
10139 }
10140
10141 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X16, inplace) {
10142 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
10143 VUnOpMicrokernelTester()
10144 .batch_size(batch_size)
10145 .inplace(true)
10146 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10147 }
10148 }
10149#endif // XNN_ARCH_WASMSIMD
10150
10151
10152#if XNN_ARCH_WASMSIMD
10153 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X20, batch_eq_20) {
10154 VUnOpMicrokernelTester()
10155 .batch_size(20)
10156 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10157 }
10158
10159 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X20, batch_div_20) {
10160 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
10161 VUnOpMicrokernelTester()
10162 .batch_size(batch_size)
10163 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10164 }
10165 }
10166
10167 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X20, batch_lt_20) {
10168 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
10169 VUnOpMicrokernelTester()
10170 .batch_size(batch_size)
10171 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10172 }
10173 }
10174
10175 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X20, batch_gt_20) {
10176 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
10177 VUnOpMicrokernelTester()
10178 .batch_size(batch_size)
10179 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10180 }
10181 }
10182
10183 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X20, inplace) {
10184 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
10185 VUnOpMicrokernelTester()
10186 .batch_size(batch_size)
10187 .inplace(true)
10188 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10189 }
10190 }
10191#endif // XNN_ARCH_WASMSIMD
10192
10193
10194#if XNN_ARCH_WASMSIMD
10195 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X24, batch_eq_24) {
10196 VUnOpMicrokernelTester()
10197 .batch_size(24)
10198 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10199 }
10200
10201 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X24, batch_div_24) {
10202 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
10203 VUnOpMicrokernelTester()
10204 .batch_size(batch_size)
10205 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10206 }
10207 }
10208
10209 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X24, batch_lt_24) {
10210 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
10211 VUnOpMicrokernelTester()
10212 .batch_size(batch_size)
10213 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10214 }
10215 }
10216
10217 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X24, batch_gt_24) {
10218 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
10219 VUnOpMicrokernelTester()
10220 .batch_size(batch_size)
10221 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10222 }
10223 }
10224
10225 TEST(F32_SIGMOID__WASMSIMD_P5_DIV_X24, inplace) {
10226 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
10227 VUnOpMicrokernelTester()
10228 .batch_size(batch_size)
10229 .inplace(true)
10230 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10231 }
10232 }
10233#endif // XNN_ARCH_WASMSIMD
10234
10235
Marat Dukhand187a5b2020-07-20 01:07:17 -070010236#if XNN_ARCH_WASMSIMD
10237 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X4, batch_eq_4) {
10238 VUnOpMicrokernelTester()
10239 .batch_size(4)
10240 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
10241 }
10242
10243 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X4, batch_div_4) {
10244 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
10245 VUnOpMicrokernelTester()
10246 .batch_size(batch_size)
10247 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
10248 }
10249 }
10250
10251 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X4, batch_lt_4) {
10252 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
10253 VUnOpMicrokernelTester()
10254 .batch_size(batch_size)
10255 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
10256 }
10257 }
10258
10259 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X4, batch_gt_4) {
10260 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
10261 VUnOpMicrokernelTester()
10262 .batch_size(batch_size)
10263 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
10264 }
10265 }
10266
10267 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X4, inplace) {
10268 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
10269 VUnOpMicrokernelTester()
10270 .batch_size(batch_size)
10271 .inplace(true)
10272 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
10273 }
10274 }
10275#endif // XNN_ARCH_WASMSIMD
10276
10277
10278#if XNN_ARCH_WASMSIMD
10279 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X8, batch_eq_8) {
10280 VUnOpMicrokernelTester()
10281 .batch_size(8)
10282 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10283 }
10284
10285 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X8, batch_div_8) {
10286 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
10287 VUnOpMicrokernelTester()
10288 .batch_size(batch_size)
10289 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10290 }
10291 }
10292
10293 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X8, batch_lt_8) {
10294 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
10295 VUnOpMicrokernelTester()
10296 .batch_size(batch_size)
10297 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10298 }
10299 }
10300
10301 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X8, batch_gt_8) {
10302 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
10303 VUnOpMicrokernelTester()
10304 .batch_size(batch_size)
10305 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10306 }
10307 }
10308
10309 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X8, inplace) {
10310 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
10311 VUnOpMicrokernelTester()
10312 .batch_size(batch_size)
10313 .inplace(true)
10314 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
10315 }
10316 }
10317#endif // XNN_ARCH_WASMSIMD
10318
10319
10320#if XNN_ARCH_WASMSIMD
10321 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X12, batch_eq_12) {
10322 VUnOpMicrokernelTester()
10323 .batch_size(12)
10324 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10325 }
10326
10327 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X12, batch_div_12) {
10328 for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
10329 VUnOpMicrokernelTester()
10330 .batch_size(batch_size)
10331 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10332 }
10333 }
10334
10335 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X12, batch_lt_12) {
10336 for (size_t batch_size = 1; batch_size < 12; batch_size++) {
10337 VUnOpMicrokernelTester()
10338 .batch_size(batch_size)
10339 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10340 }
10341 }
10342
10343 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X12, batch_gt_12) {
10344 for (size_t batch_size = 13; batch_size < 24; batch_size++) {
10345 VUnOpMicrokernelTester()
10346 .batch_size(batch_size)
10347 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10348 }
10349 }
10350
10351 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X12, inplace) {
10352 for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
10353 VUnOpMicrokernelTester()
10354 .batch_size(batch_size)
10355 .inplace(true)
10356 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
10357 }
10358 }
10359#endif // XNN_ARCH_WASMSIMD
10360
10361
10362#if XNN_ARCH_WASMSIMD
10363 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X16, batch_eq_16) {
10364 VUnOpMicrokernelTester()
10365 .batch_size(16)
10366 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10367 }
10368
10369 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X16, batch_div_16) {
10370 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
10371 VUnOpMicrokernelTester()
10372 .batch_size(batch_size)
10373 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10374 }
10375 }
10376
10377 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X16, batch_lt_16) {
10378 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
10379 VUnOpMicrokernelTester()
10380 .batch_size(batch_size)
10381 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10382 }
10383 }
10384
10385 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X16, batch_gt_16) {
10386 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
10387 VUnOpMicrokernelTester()
10388 .batch_size(batch_size)
10389 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10390 }
10391 }
10392
10393 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X16, inplace) {
10394 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
10395 VUnOpMicrokernelTester()
10396 .batch_size(batch_size)
10397 .inplace(true)
10398 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
10399 }
10400 }
10401#endif // XNN_ARCH_WASMSIMD
10402
10403
10404#if XNN_ARCH_WASMSIMD
10405 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X20, batch_eq_20) {
10406 VUnOpMicrokernelTester()
10407 .batch_size(20)
10408 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10409 }
10410
10411 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X20, batch_div_20) {
10412 for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
10413 VUnOpMicrokernelTester()
10414 .batch_size(batch_size)
10415 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10416 }
10417 }
10418
10419 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X20, batch_lt_20) {
10420 for (size_t batch_size = 1; batch_size < 20; batch_size++) {
10421 VUnOpMicrokernelTester()
10422 .batch_size(batch_size)
10423 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10424 }
10425 }
10426
10427 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X20, batch_gt_20) {
10428 for (size_t batch_size = 21; batch_size < 40; batch_size++) {
10429 VUnOpMicrokernelTester()
10430 .batch_size(batch_size)
10431 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10432 }
10433 }
10434
10435 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X20, inplace) {
10436 for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
10437 VUnOpMicrokernelTester()
10438 .batch_size(batch_size)
10439 .inplace(true)
10440 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
10441 }
10442 }
10443#endif // XNN_ARCH_WASMSIMD
10444
10445
10446#if XNN_ARCH_WASMSIMD
10447 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X24, batch_eq_24) {
10448 VUnOpMicrokernelTester()
10449 .batch_size(24)
10450 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10451 }
10452
10453 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X24, batch_div_24) {
10454 for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
10455 VUnOpMicrokernelTester()
10456 .batch_size(batch_size)
10457 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10458 }
10459 }
10460
10461 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X24, batch_lt_24) {
10462 for (size_t batch_size = 1; batch_size < 24; batch_size++) {
10463 VUnOpMicrokernelTester()
10464 .batch_size(batch_size)
10465 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10466 }
10467 }
10468
10469 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X24, batch_gt_24) {
10470 for (size_t batch_size = 25; batch_size < 48; batch_size++) {
10471 VUnOpMicrokernelTester()
10472 .batch_size(batch_size)
10473 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10474 }
10475 }
10476
10477 TEST(F32_SIGMOID__WASMSIMD_LUT64_P2_DIV_X24, inplace) {
10478 for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
10479 VUnOpMicrokernelTester()
10480 .batch_size(batch_size)
10481 .inplace(true)
10482 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
10483 }
10484 }
10485#endif // XNN_ARCH_WASMSIMD
10486
10487
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010488TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X1, batch_eq_1) {
10489 VUnOpMicrokernelTester()
10490 .batch_size(1)
Frank Barchard361e44a2020-06-08 18:18:25 -070010491 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010492}
10493
10494TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X1, batch_gt_1) {
10495 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
10496 VUnOpMicrokernelTester()
10497 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010498 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010499 }
10500}
10501
10502TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X1, inplace) {
10503 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
10504 VUnOpMicrokernelTester()
10505 .batch_size(batch_size)
10506 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010507 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010508 }
10509}
10510
Frank Barchard177fe2d2020-06-11 11:09:33 -070010511
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010512TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X2, batch_eq_2) {
10513 VUnOpMicrokernelTester()
10514 .batch_size(2)
Frank Barchard361e44a2020-06-08 18:18:25 -070010515 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010516}
10517
10518TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X2, batch_div_2) {
10519 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
10520 VUnOpMicrokernelTester()
10521 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010522 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010523 }
10524}
10525
10526TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X2, batch_lt_2) {
10527 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
10528 VUnOpMicrokernelTester()
10529 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010530 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010531 }
10532}
10533
10534TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X2, batch_gt_2) {
10535 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
10536 VUnOpMicrokernelTester()
10537 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010538 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010539 }
10540}
10541
10542TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X2, inplace) {
10543 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
10544 VUnOpMicrokernelTester()
10545 .batch_size(batch_size)
10546 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010547 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010548 }
10549}
10550
Frank Barchard177fe2d2020-06-11 11:09:33 -070010551
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010552TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X4, batch_eq_4) {
10553 VUnOpMicrokernelTester()
10554 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -070010555 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010556}
10557
10558TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X4, batch_div_4) {
10559 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
10560 VUnOpMicrokernelTester()
10561 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010562 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010563 }
10564}
10565
10566TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X4, batch_lt_4) {
10567 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
10568 VUnOpMicrokernelTester()
10569 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010570 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010571 }
10572}
10573
10574TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X4, batch_gt_4) {
10575 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
10576 VUnOpMicrokernelTester()
10577 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010578 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010579 }
10580}
10581
10582TEST(F32_SIGMOID__SCALAR_LUT2048_P1_DIV_X4, inplace) {
10583 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
10584 VUnOpMicrokernelTester()
10585 .batch_size(batch_size)
10586 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010587 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010588 }
10589}
10590
Frank Barchard177fe2d2020-06-11 11:09:33 -070010591
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010592TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X1, batch_eq_1) {
10593 VUnOpMicrokernelTester()
10594 .batch_size(1)
Frank Barchard361e44a2020-06-08 18:18:25 -070010595 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010596}
10597
10598TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X1, batch_gt_1) {
10599 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
10600 VUnOpMicrokernelTester()
10601 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010602 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010603 }
10604}
10605
10606TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X1, inplace) {
10607 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
10608 VUnOpMicrokernelTester()
10609 .batch_size(batch_size)
10610 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010611 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010612 }
10613}
10614
Frank Barchard177fe2d2020-06-11 11:09:33 -070010615
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010616TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X2, batch_eq_2) {
10617 VUnOpMicrokernelTester()
10618 .batch_size(2)
Frank Barchard361e44a2020-06-08 18:18:25 -070010619 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010620}
10621
10622TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X2, batch_div_2) {
10623 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
10624 VUnOpMicrokernelTester()
10625 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010626 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010627 }
10628}
10629
10630TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X2, batch_lt_2) {
10631 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
10632 VUnOpMicrokernelTester()
10633 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010634 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010635 }
10636}
10637
10638TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X2, batch_gt_2) {
10639 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
10640 VUnOpMicrokernelTester()
10641 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010642 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010643 }
10644}
10645
10646TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X2, inplace) {
10647 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
10648 VUnOpMicrokernelTester()
10649 .batch_size(batch_size)
10650 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010651 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010652 }
10653}
10654
Frank Barchard177fe2d2020-06-11 11:09:33 -070010655
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010656TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X4, batch_eq_4) {
10657 VUnOpMicrokernelTester()
10658 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -070010659 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010660}
10661
10662TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X4, batch_div_4) {
10663 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
10664 VUnOpMicrokernelTester()
10665 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010666 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010667 }
10668}
10669
10670TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X4, batch_lt_4) {
10671 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
10672 VUnOpMicrokernelTester()
10673 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010674 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010675 }
10676}
10677
10678TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X4, batch_gt_4) {
10679 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
10680 VUnOpMicrokernelTester()
10681 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010682 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010683 }
10684}
10685
10686TEST(F32_SIGMOID__SCALAR_LUT64_P2_DIV_X4, inplace) {
10687 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
10688 VUnOpMicrokernelTester()
10689 .batch_size(batch_size)
10690 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010691 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010692 }
10693}
10694
Frank Barchard177fe2d2020-06-11 11:09:33 -070010695
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010696TEST(F32_SIGMOID__SCALAR_P5_DIV_X1, batch_eq_1) {
10697 VUnOpMicrokernelTester()
10698 .batch_size(1)
Frank Barchard361e44a2020-06-08 18:18:25 -070010699 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010700}
10701
10702TEST(F32_SIGMOID__SCALAR_P5_DIV_X1, batch_gt_1) {
10703 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
10704 VUnOpMicrokernelTester()
10705 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010706 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010707 }
10708}
10709
10710TEST(F32_SIGMOID__SCALAR_P5_DIV_X1, inplace) {
10711 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
10712 VUnOpMicrokernelTester()
10713 .batch_size(batch_size)
10714 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010715 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010716 }
10717}
10718
Frank Barchard177fe2d2020-06-11 11:09:33 -070010719
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010720TEST(F32_SIGMOID__SCALAR_P5_DIV_X2, batch_eq_2) {
10721 VUnOpMicrokernelTester()
10722 .batch_size(2)
Frank Barchard361e44a2020-06-08 18:18:25 -070010723 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010724}
10725
10726TEST(F32_SIGMOID__SCALAR_P5_DIV_X2, batch_div_2) {
10727 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
10728 VUnOpMicrokernelTester()
10729 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010730 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010731 }
10732}
10733
10734TEST(F32_SIGMOID__SCALAR_P5_DIV_X2, batch_lt_2) {
10735 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
10736 VUnOpMicrokernelTester()
10737 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010738 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010739 }
10740}
10741
10742TEST(F32_SIGMOID__SCALAR_P5_DIV_X2, batch_gt_2) {
10743 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
10744 VUnOpMicrokernelTester()
10745 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010746 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010747 }
10748}
10749
10750TEST(F32_SIGMOID__SCALAR_P5_DIV_X2, inplace) {
10751 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
10752 VUnOpMicrokernelTester()
10753 .batch_size(batch_size)
10754 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010755 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010756 }
10757}
10758
Frank Barchard177fe2d2020-06-11 11:09:33 -070010759
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010760TEST(F32_SIGMOID__SCALAR_P5_DIV_X4, batch_eq_4) {
10761 VUnOpMicrokernelTester()
10762 .batch_size(4)
Frank Barchard361e44a2020-06-08 18:18:25 -070010763 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010764}
10765
10766TEST(F32_SIGMOID__SCALAR_P5_DIV_X4, batch_div_4) {
10767 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
10768 VUnOpMicrokernelTester()
10769 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010770 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010771 }
10772}
10773
10774TEST(F32_SIGMOID__SCALAR_P5_DIV_X4, batch_lt_4) {
10775 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
10776 VUnOpMicrokernelTester()
10777 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010778 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010779 }
10780}
10781
10782TEST(F32_SIGMOID__SCALAR_P5_DIV_X4, batch_gt_4) {
10783 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
10784 VUnOpMicrokernelTester()
10785 .batch_size(batch_size)
Frank Barchard361e44a2020-06-08 18:18:25 -070010786 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010787 }
10788}
10789
10790TEST(F32_SIGMOID__SCALAR_P5_DIV_X4, inplace) {
10791 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
10792 VUnOpMicrokernelTester()
10793 .batch_size(batch_size)
10794 .inplace(true)
Frank Barchard361e44a2020-06-08 18:18:25 -070010795 .Test(xnn_f32_vunary_ukernel_function(xnn_f32_sigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
Marat Dukhan3a77ea72019-12-23 12:10:24 -080010796 }
Frank Barchard177fe2d2020-06-11 11:09:33 -070010797}