xref: /aosp_15_r20/external/XNNPACK/test/f16-velu.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC
2*4bdc9457SAndroid Build Coastguard Worker //
3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the
4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree.
5*4bdc9457SAndroid Build Coastguard Worker //
6*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit!
7*4bdc9457SAndroid Build Coastguard Worker //   Specification: test/f16-velu.yaml
8*4bdc9457SAndroid Build Coastguard Worker //   Generator: tools/generate-vunary-test.py
9*4bdc9457SAndroid Build Coastguard Worker 
10*4bdc9457SAndroid Build Coastguard Worker 
11*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h>
12*4bdc9457SAndroid Build Coastguard Worker 
13*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h>
14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h>
15*4bdc9457SAndroid Build Coastguard Worker 
16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/vunary.h>
17*4bdc9457SAndroid Build Coastguard Worker #include "vunary-microkernel-tester.h"
18*4bdc9457SAndroid Build Coastguard Worker 
19*4bdc9457SAndroid Build Coastguard Worker 
20*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_eq_8)21*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_eq_8) {
22*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
23*4bdc9457SAndroid Build Coastguard Worker     VUnaryMicrokernelTester()
24*4bdc9457SAndroid Build Coastguard Worker       .batch_size(8)
25*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
26*4bdc9457SAndroid Build Coastguard Worker   }
27*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_div_8)28*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_div_8) {
29*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
30*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
31*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
32*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
33*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
34*4bdc9457SAndroid Build Coastguard Worker     }
35*4bdc9457SAndroid Build Coastguard Worker   }
36*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_lt_8)37*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_lt_8) {
38*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
39*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
40*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
41*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
42*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
43*4bdc9457SAndroid Build Coastguard Worker     }
44*4bdc9457SAndroid Build Coastguard Worker   }
45*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_gt_8)46*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_gt_8) {
47*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
48*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
49*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
50*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
51*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
52*4bdc9457SAndroid Build Coastguard Worker     }
53*4bdc9457SAndroid Build Coastguard Worker   }
54*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,inplace)55*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, inplace) {
56*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
57*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
58*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
59*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
60*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
61*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
62*4bdc9457SAndroid Build Coastguard Worker     }
63*4bdc9457SAndroid Build Coastguard Worker   }
64*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,prescale)65*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, prescale) {
66*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
67*4bdc9457SAndroid Build Coastguard Worker     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
68*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
69*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
70*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
71*4bdc9457SAndroid Build Coastguard Worker           .prescale(prescale)
72*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
73*4bdc9457SAndroid Build Coastguard Worker       }
74*4bdc9457SAndroid Build Coastguard Worker     }
75*4bdc9457SAndroid Build Coastguard Worker   }
76*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,alpha)77*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, alpha) {
78*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
79*4bdc9457SAndroid Build Coastguard Worker     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
80*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
81*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
82*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
83*4bdc9457SAndroid Build Coastguard Worker           .alpha(alpha)
84*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
85*4bdc9457SAndroid Build Coastguard Worker       }
86*4bdc9457SAndroid Build Coastguard Worker     }
87*4bdc9457SAndroid Build Coastguard Worker   }
88*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,beta)89*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, beta) {
90*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
91*4bdc9457SAndroid Build Coastguard Worker     for (float beta : std::vector<float>({0.3f, 3.0f})) {
92*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
93*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
94*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
95*4bdc9457SAndroid Build Coastguard Worker           .beta(beta)
96*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
97*4bdc9457SAndroid Build Coastguard Worker       }
98*4bdc9457SAndroid Build Coastguard Worker     }
99*4bdc9457SAndroid Build Coastguard Worker   }
100*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
101*4bdc9457SAndroid Build Coastguard Worker 
102*4bdc9457SAndroid Build Coastguard Worker 
103*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_eq_16)104*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_eq_16) {
105*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
106*4bdc9457SAndroid Build Coastguard Worker     VUnaryMicrokernelTester()
107*4bdc9457SAndroid Build Coastguard Worker       .batch_size(16)
108*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
109*4bdc9457SAndroid Build Coastguard Worker   }
110*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_div_16)111*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_div_16) {
112*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
113*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
114*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
115*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
116*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
117*4bdc9457SAndroid Build Coastguard Worker     }
118*4bdc9457SAndroid Build Coastguard Worker   }
119*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_lt_16)120*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_lt_16) {
121*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
122*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
123*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
124*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
125*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
126*4bdc9457SAndroid Build Coastguard Worker     }
127*4bdc9457SAndroid Build Coastguard Worker   }
128*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_gt_16)129*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_gt_16) {
130*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
131*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
132*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
133*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
134*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
135*4bdc9457SAndroid Build Coastguard Worker     }
136*4bdc9457SAndroid Build Coastguard Worker   }
137*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,inplace)138*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, inplace) {
139*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
140*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
141*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
142*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
143*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
144*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
145*4bdc9457SAndroid Build Coastguard Worker     }
146*4bdc9457SAndroid Build Coastguard Worker   }
147*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,prescale)148*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, prescale) {
149*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
150*4bdc9457SAndroid Build Coastguard Worker     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
151*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
152*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
153*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
154*4bdc9457SAndroid Build Coastguard Worker           .prescale(prescale)
155*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
156*4bdc9457SAndroid Build Coastguard Worker       }
157*4bdc9457SAndroid Build Coastguard Worker     }
158*4bdc9457SAndroid Build Coastguard Worker   }
159*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,alpha)160*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, alpha) {
161*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
162*4bdc9457SAndroid Build Coastguard Worker     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
163*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
164*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
165*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
166*4bdc9457SAndroid Build Coastguard Worker           .alpha(alpha)
167*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
168*4bdc9457SAndroid Build Coastguard Worker       }
169*4bdc9457SAndroid Build Coastguard Worker     }
170*4bdc9457SAndroid Build Coastguard Worker   }
171*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,beta)172*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, beta) {
173*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
174*4bdc9457SAndroid Build Coastguard Worker     for (float beta : std::vector<float>({0.3f, 3.0f})) {
175*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
176*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
177*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
178*4bdc9457SAndroid Build Coastguard Worker           .beta(beta)
179*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params);
180*4bdc9457SAndroid Build Coastguard Worker       }
181*4bdc9457SAndroid Build Coastguard Worker     }
182*4bdc9457SAndroid Build Coastguard Worker   }
183*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
184*4bdc9457SAndroid Build Coastguard Worker 
185*4bdc9457SAndroid Build Coastguard Worker 
186*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VELU__AVX2_RR1_P3_X8,batch_eq_8)187*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X8, batch_eq_8) {
188*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
189*4bdc9457SAndroid Build Coastguard Worker     VUnaryMicrokernelTester()
190*4bdc9457SAndroid Build Coastguard Worker       .batch_size(8)
191*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
192*4bdc9457SAndroid Build Coastguard Worker   }
193*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X8,batch_div_8)194*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X8, batch_div_8) {
195*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
196*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
197*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
198*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
199*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
200*4bdc9457SAndroid Build Coastguard Worker     }
201*4bdc9457SAndroid Build Coastguard Worker   }
202*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X8,batch_lt_8)203*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X8, batch_lt_8) {
204*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
205*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
206*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
207*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
208*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
209*4bdc9457SAndroid Build Coastguard Worker     }
210*4bdc9457SAndroid Build Coastguard Worker   }
211*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X8,batch_gt_8)212*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X8, batch_gt_8) {
213*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
214*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
215*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
216*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
217*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
218*4bdc9457SAndroid Build Coastguard Worker     }
219*4bdc9457SAndroid Build Coastguard Worker   }
220*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X8,inplace)221*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X8, inplace) {
222*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
223*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
224*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
225*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
226*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
227*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
228*4bdc9457SAndroid Build Coastguard Worker     }
229*4bdc9457SAndroid Build Coastguard Worker   }
230*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X8,prescale)231*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X8, prescale) {
232*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
233*4bdc9457SAndroid Build Coastguard Worker     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
234*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
235*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
236*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
237*4bdc9457SAndroid Build Coastguard Worker           .prescale(prescale)
238*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
239*4bdc9457SAndroid Build Coastguard Worker       }
240*4bdc9457SAndroid Build Coastguard Worker     }
241*4bdc9457SAndroid Build Coastguard Worker   }
242*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X8,alpha)243*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X8, alpha) {
244*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
245*4bdc9457SAndroid Build Coastguard Worker     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
246*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
247*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
248*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
249*4bdc9457SAndroid Build Coastguard Worker           .alpha(alpha)
250*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
251*4bdc9457SAndroid Build Coastguard Worker       }
252*4bdc9457SAndroid Build Coastguard Worker     }
253*4bdc9457SAndroid Build Coastguard Worker   }
254*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X8,beta)255*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X8, beta) {
256*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
257*4bdc9457SAndroid Build Coastguard Worker     for (float beta : std::vector<float>({0.3f, 3.0f})) {
258*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
259*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
260*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
261*4bdc9457SAndroid Build Coastguard Worker           .beta(beta)
262*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params);
263*4bdc9457SAndroid Build Coastguard Worker       }
264*4bdc9457SAndroid Build Coastguard Worker     }
265*4bdc9457SAndroid Build Coastguard Worker   }
266*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
267*4bdc9457SAndroid Build Coastguard Worker 
268*4bdc9457SAndroid Build Coastguard Worker 
269*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VELU__AVX2_RR1_P3_X16,batch_eq_16)270*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X16, batch_eq_16) {
271*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
272*4bdc9457SAndroid Build Coastguard Worker     VUnaryMicrokernelTester()
273*4bdc9457SAndroid Build Coastguard Worker       .batch_size(16)
274*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
275*4bdc9457SAndroid Build Coastguard Worker   }
276*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X16,batch_div_16)277*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X16, batch_div_16) {
278*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
279*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
280*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
281*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
282*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
283*4bdc9457SAndroid Build Coastguard Worker     }
284*4bdc9457SAndroid Build Coastguard Worker   }
285*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X16,batch_lt_16)286*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X16, batch_lt_16) {
287*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
288*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
289*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
290*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
291*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
292*4bdc9457SAndroid Build Coastguard Worker     }
293*4bdc9457SAndroid Build Coastguard Worker   }
294*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X16,batch_gt_16)295*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X16, batch_gt_16) {
296*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
297*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
298*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
299*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
300*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
301*4bdc9457SAndroid Build Coastguard Worker     }
302*4bdc9457SAndroid Build Coastguard Worker   }
303*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X16,inplace)304*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X16, inplace) {
305*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
306*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
307*4bdc9457SAndroid Build Coastguard Worker       VUnaryMicrokernelTester()
308*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
309*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
310*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
311*4bdc9457SAndroid Build Coastguard Worker     }
312*4bdc9457SAndroid Build Coastguard Worker   }
313*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X16,prescale)314*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X16, prescale) {
315*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
316*4bdc9457SAndroid Build Coastguard Worker     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
317*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
318*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
319*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
320*4bdc9457SAndroid Build Coastguard Worker           .prescale(prescale)
321*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
322*4bdc9457SAndroid Build Coastguard Worker       }
323*4bdc9457SAndroid Build Coastguard Worker     }
324*4bdc9457SAndroid Build Coastguard Worker   }
325*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X16,alpha)326*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X16, alpha) {
327*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
328*4bdc9457SAndroid Build Coastguard Worker     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
329*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
330*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
331*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
332*4bdc9457SAndroid Build Coastguard Worker           .alpha(alpha)
333*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
334*4bdc9457SAndroid Build Coastguard Worker       }
335*4bdc9457SAndroid Build Coastguard Worker     }
336*4bdc9457SAndroid Build Coastguard Worker   }
337*4bdc9457SAndroid Build Coastguard Worker 
TEST(F16_VELU__AVX2_RR1_P3_X16,beta)338*4bdc9457SAndroid Build Coastguard Worker   TEST(F16_VELU__AVX2_RR1_P3_X16, beta) {
339*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_X86_AVX2;
340*4bdc9457SAndroid Build Coastguard Worker     for (float beta : std::vector<float>({0.3f, 3.0f})) {
341*4bdc9457SAndroid Build Coastguard Worker       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
342*4bdc9457SAndroid Build Coastguard Worker         VUnaryMicrokernelTester()
343*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
344*4bdc9457SAndroid Build Coastguard Worker           .beta(beta)
345*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params);
346*4bdc9457SAndroid Build Coastguard Worker       }
347*4bdc9457SAndroid Build Coastguard Worker     }
348*4bdc9457SAndroid Build Coastguard Worker   }
349*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
350