xref: /freebsd-src/contrib/arm-optimized-routines/math/include/mathlib.h (revision f3087bef11543b42e0d69b708f367097a4118d24)
131914882SAlex Richardson /*
231914882SAlex Richardson  * Public API.
331914882SAlex Richardson  *
4*f3087befSAndrew Turner  * Copyright (c) 2015-2024, Arm Limited.
5072a4ba8SAndrew Turner  * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
631914882SAlex Richardson  */
731914882SAlex Richardson 
831914882SAlex Richardson #ifndef _MATHLIB_H
931914882SAlex Richardson #define _MATHLIB_H
1031914882SAlex Richardson 
1131914882SAlex Richardson #if __aarch64__
12*f3087befSAndrew Turner /* Low-accuracy scalar implementations of C23 routines.  */
13*f3087befSAndrew Turner float arm_math_cospif (float);
14*f3087befSAndrew Turner double arm_math_cospi (double);
15*f3087befSAndrew Turner float arm_math_sinpif (float);
16*f3087befSAndrew Turner double arm_math_sinpi (double);
17*f3087befSAndrew Turner float arm_math_tanpif (float);
18*f3087befSAndrew Turner double arm_math_tanpi (double);
19*f3087befSAndrew Turner void arm_math_sincospif (float, float *, float *);
20*f3087befSAndrew Turner void arm_math_sincospi (double, double *, double *);
2131914882SAlex Richardson #endif
2231914882SAlex Richardson 
23*f3087befSAndrew Turner /* SIMD declaration for autovectorisation with fast-math enabled. Only GCC is
24*f3087befSAndrew Turner    supported, and vector routines are only supported on Linux on AArch64.  */
25*f3087befSAndrew Turner #if defined __aarch64__ && __linux__ && defined(__GNUC__)                     \
26*f3087befSAndrew Turner     && !defined(__clang__) && defined(__FAST_MATH__)
27*f3087befSAndrew Turner #  define DECL_SIMD_aarch64 __attribute__ ((__simd__ ("notinbranch"), const))
28*f3087befSAndrew Turner #else
29*f3087befSAndrew Turner #  define DECL_SIMD_aarch64
30*f3087befSAndrew Turner #endif
31*f3087befSAndrew Turner 
32*f3087befSAndrew Turner #if WANT_EXPERIMENTAL_MATH
33*f3087befSAndrew Turner 
34*f3087befSAndrew Turner float arm_math_erff (float);
35*f3087befSAndrew Turner DECL_SIMD_aarch64 float cospif (float);
36*f3087befSAndrew Turner DECL_SIMD_aarch64 float erfinvf (float);
37*f3087befSAndrew Turner DECL_SIMD_aarch64 float sinpif (float);
38*f3087befSAndrew Turner DECL_SIMD_aarch64 float tanpif (float);
39*f3087befSAndrew Turner 
40*f3087befSAndrew Turner double arm_math_erf (double);
41*f3087befSAndrew Turner DECL_SIMD_aarch64 double cospi (double);
42*f3087befSAndrew Turner DECL_SIMD_aarch64 double erfinv (double);
43*f3087befSAndrew Turner DECL_SIMD_aarch64 double sinpi (double);
44*f3087befSAndrew Turner DECL_SIMD_aarch64 double tanpi (double);
45*f3087befSAndrew Turner 
46*f3087befSAndrew Turner long double erfinvl (long double);
47*f3087befSAndrew Turner 
48*f3087befSAndrew Turner #endif
49*f3087befSAndrew Turner 
50*f3087befSAndrew Turner /* Note these routines may not be provided by AOR (some are only available with
51*f3087befSAndrew Turner    WANT_EXPERIMENTAL_MATH, some are not provided at all. Redeclare them here to
52*f3087befSAndrew Turner    add vector annotations.  */
53*f3087befSAndrew Turner DECL_SIMD_aarch64 float acosf (float);
54*f3087befSAndrew Turner DECL_SIMD_aarch64 float acoshf (float);
55*f3087befSAndrew Turner DECL_SIMD_aarch64 float asinf (float);
56*f3087befSAndrew Turner DECL_SIMD_aarch64 float asinhf (float);
57*f3087befSAndrew Turner DECL_SIMD_aarch64 float atan2f (float, float);
58*f3087befSAndrew Turner DECL_SIMD_aarch64 float atanf (float);
59*f3087befSAndrew Turner DECL_SIMD_aarch64 float atanhf (float);
60*f3087befSAndrew Turner DECL_SIMD_aarch64 float cbrtf (float);
61*f3087befSAndrew Turner DECL_SIMD_aarch64 float cosf (float);
62*f3087befSAndrew Turner DECL_SIMD_aarch64 float coshf (float);
63*f3087befSAndrew Turner DECL_SIMD_aarch64 float erfcf (float);
64*f3087befSAndrew Turner DECL_SIMD_aarch64 float erff (float);
65*f3087befSAndrew Turner DECL_SIMD_aarch64 float exp10f (float);
66*f3087befSAndrew Turner DECL_SIMD_aarch64 float exp2f (float);
67*f3087befSAndrew Turner DECL_SIMD_aarch64 float expf (float);
68*f3087befSAndrew Turner DECL_SIMD_aarch64 float expm1f (float);
69*f3087befSAndrew Turner DECL_SIMD_aarch64 float hypotf (float, float);
70*f3087befSAndrew Turner DECL_SIMD_aarch64 float log10f (float);
71*f3087befSAndrew Turner DECL_SIMD_aarch64 float log1pf (float);
72*f3087befSAndrew Turner DECL_SIMD_aarch64 float log2f (float);
73*f3087befSAndrew Turner DECL_SIMD_aarch64 float logf (float);
74*f3087befSAndrew Turner DECL_SIMD_aarch64 float powf (float, float);
75*f3087befSAndrew Turner DECL_SIMD_aarch64 float sinf (float);
76*f3087befSAndrew Turner void sincosf (float, float *, float *);
77*f3087befSAndrew Turner DECL_SIMD_aarch64 float sinhf (float);
78*f3087befSAndrew Turner DECL_SIMD_aarch64 float tanf (float);
79*f3087befSAndrew Turner DECL_SIMD_aarch64 float tanhf (float);
80*f3087befSAndrew Turner 
81*f3087befSAndrew Turner DECL_SIMD_aarch64 double acos (double);
82*f3087befSAndrew Turner DECL_SIMD_aarch64 double acosh (double);
83*f3087befSAndrew Turner DECL_SIMD_aarch64 double asin (double);
84*f3087befSAndrew Turner DECL_SIMD_aarch64 double asinh (double);
85*f3087befSAndrew Turner DECL_SIMD_aarch64 double atan2 (double, double);
86*f3087befSAndrew Turner DECL_SIMD_aarch64 double atan (double);
87*f3087befSAndrew Turner DECL_SIMD_aarch64 double atanh (double);
88*f3087befSAndrew Turner DECL_SIMD_aarch64 double cbrt (double);
89*f3087befSAndrew Turner DECL_SIMD_aarch64 double cos (double);
90*f3087befSAndrew Turner DECL_SIMD_aarch64 double cosh (double);
91*f3087befSAndrew Turner DECL_SIMD_aarch64 double erfc (double);
92*f3087befSAndrew Turner DECL_SIMD_aarch64 double erf (double);
93*f3087befSAndrew Turner DECL_SIMD_aarch64 double exp10 (double);
94*f3087befSAndrew Turner DECL_SIMD_aarch64 double exp2 (double);
95*f3087befSAndrew Turner DECL_SIMD_aarch64 double exp (double);
96*f3087befSAndrew Turner DECL_SIMD_aarch64 double expm1 (double);
97*f3087befSAndrew Turner DECL_SIMD_aarch64 double hypot (double, double);
98*f3087befSAndrew Turner DECL_SIMD_aarch64 double log10 (double);
99*f3087befSAndrew Turner DECL_SIMD_aarch64 double log1p (double);
100*f3087befSAndrew Turner DECL_SIMD_aarch64 double log2 (double);
101*f3087befSAndrew Turner DECL_SIMD_aarch64 double log (double);
102*f3087befSAndrew Turner DECL_SIMD_aarch64 double pow (double, double);
103*f3087befSAndrew Turner DECL_SIMD_aarch64 double sin (double);
104*f3087befSAndrew Turner DECL_SIMD_aarch64 double sinh (double);
105*f3087befSAndrew Turner DECL_SIMD_aarch64 double tan (double);
106*f3087befSAndrew Turner DECL_SIMD_aarch64 double tanh (double);
107*f3087befSAndrew Turner 
108*f3087befSAndrew Turner #if __aarch64__ && __linux__
109*f3087befSAndrew Turner # include <arm_neon.h>
1105a02ffc3SAndrew Turner # undef __vpcs
11131914882SAlex Richardson # define __vpcs __attribute__((__aarch64_vector_pcs__))
11231914882SAlex Richardson 
11331914882SAlex Richardson /* Vector functions following the vector PCS using ABI names.  */
114*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_acosf (float32x4_t);
115*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_acoshf (float32x4_t);
116*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_asinf (float32x4_t);
117*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_asinhf (float32x4_t);
118*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_atanf (float32x4_t);
119*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_atanhf (float32x4_t);
120*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_cbrtf (float32x4_t);
121*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_cosf (float32x4_t);
122*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_coshf (float32x4_t);
123*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_cospif (float32x4_t);
124*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_erfcf (float32x4_t);
125*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_erff (float32x4_t);
126*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_exp10f (float32x4_t);
127*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_exp2f (float32x4_t);
128*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_exp2f_1u (float32x4_t);
129*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_expf (float32x4_t);
130*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_expf_1u (float32x4_t);
131*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_expm1f (float32x4_t);
132*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_log10f (float32x4_t);
133*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_log1pf (float32x4_t);
134*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_log2f (float32x4_t);
135*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_logf (float32x4_t);
136*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_sinf (float32x4_t);
137*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_sinhf (float32x4_t);
138*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_sinpif (float32x4_t);
139*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_tanf (float32x4_t);
140*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_tanhf (float32x4_t);
141*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_tanpif (float32x4_t);
142*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4vl4_modff (float32x4_t, float *);
143*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4vv_atan2f (float32x4_t, float32x4_t);
144*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4vv_hypotf (float32x4_t, float32x4_t);
145*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4vv_powf (float32x4_t, float32x4_t);
146*f3087befSAndrew Turner __vpcs float32x4x2_t _ZGVnN4v_cexpif (float32x4_t);
147*f3087befSAndrew Turner __vpcs void _ZGVnN4vl4l4_sincosf (float32x4_t, float *, float *);
148*f3087befSAndrew Turner __vpcs void _ZGVnN4vl4l4_sincospif (float32x4_t, float *, float *);
149*f3087befSAndrew Turner 
150*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_acos (float64x2_t);
151*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_acosh (float64x2_t);
152*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_asin (float64x2_t);
153*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_asinh (float64x2_t);
154*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_atan (float64x2_t);
155*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_atanh (float64x2_t);
156*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_cbrt (float64x2_t);
157*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_cos (float64x2_t);
158*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_cosh (float64x2_t);
159*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_cospi (float64x2_t);
160*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_erf (float64x2_t);
161*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_erfc (float64x2_t);
162*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_exp (float64x2_t);
163*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_exp10 (float64x2_t);
164*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_exp2 (float64x2_t);
165*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_expm1 (float64x2_t);
166*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_log (float64x2_t);
167*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_log10 (float64x2_t);
168*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_log1p (float64x2_t);
169*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_log2 (float64x2_t);
170*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_sin (float64x2_t);
171*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_sinh (float64x2_t);
172*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_sinpi (float64x2_t);
173*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_tan (float64x2_t);
174*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_tanh (float64x2_t);
175*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_tanpi (float64x2_t);
176*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2vl8_modf (float64x2_t, double *);
177*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2vv_atan2 (float64x2_t, float64x2_t);
178*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2vv_hypot (float64x2_t, float64x2_t);
179*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2vv_pow (float64x2_t, float64x2_t);
180*f3087befSAndrew Turner __vpcs float64x2x2_t _ZGVnN2v_cexpi (float64x2_t);
181*f3087befSAndrew Turner __vpcs void _ZGVnN2vl8l8_sincos (float64x2_t, double *, double *);
182*f3087befSAndrew Turner __vpcs void _ZGVnN2vl8l8_sincospi (float64x2_t, double *, double *);
183*f3087befSAndrew Turner 
184*f3087befSAndrew Turner # if WANT_EXPERIMENTAL_MATH
185*f3087befSAndrew Turner __vpcs float32x4_t _ZGVnN4v_erfinvf (float32x4_t);
186*f3087befSAndrew Turner __vpcs float64x2_t _ZGVnN2v_erfinv (float64x2_t);
187*f3087befSAndrew Turner # endif
188*f3087befSAndrew Turner 
189*f3087befSAndrew Turner #  include <arm_sve.h>
190*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_acosf (svfloat32_t, svbool_t);
191*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_acoshf (svfloat32_t, svbool_t);
192*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_asinf (svfloat32_t, svbool_t);
193*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_asinhf (svfloat32_t, svbool_t);
194*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_atanf (svfloat32_t, svbool_t);
195*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_atanhf (svfloat32_t, svbool_t);
196*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_cbrtf (svfloat32_t, svbool_t);
197*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_cosf (svfloat32_t, svbool_t);
198*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_coshf (svfloat32_t, svbool_t);
199*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_cospif (svfloat32_t, svbool_t);
200*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_erfcf (svfloat32_t, svbool_t);
201*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_erff (svfloat32_t, svbool_t);
202*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_exp10f (svfloat32_t, svbool_t);
203*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_exp2f (svfloat32_t, svbool_t);
204*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_expf (svfloat32_t, svbool_t);
205*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_expm1f (svfloat32_t, svbool_t);
206*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_log10f (svfloat32_t, svbool_t);
207*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_log1pf (svfloat32_t, svbool_t);
208*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_log2f (svfloat32_t, svbool_t);
209*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_logf (svfloat32_t, svbool_t);
210*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_sinf (svfloat32_t, svbool_t);
211*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_sinhf (svfloat32_t, svbool_t);
212*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_sinpif (svfloat32_t, svbool_t);
213*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_tanf (svfloat32_t, svbool_t);
214*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_tanhf (svfloat32_t, svbool_t);
215*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_tanpif (svfloat32_t, svbool_t);
216*f3087befSAndrew Turner svfloat32_t _ZGVsMxvl4_modff (svfloat32_t, float *, svbool_t);
217*f3087befSAndrew Turner svfloat32_t _ZGVsMxvv_atan2f (svfloat32_t, svfloat32_t, svbool_t);
218*f3087befSAndrew Turner svfloat32_t _ZGVsMxvv_hypotf (svfloat32_t, svfloat32_t, svbool_t);
219*f3087befSAndrew Turner svfloat32_t _ZGVsMxvv_powf (svfloat32_t, svfloat32_t, svbool_t);
220*f3087befSAndrew Turner svfloat32x2_t _ZGVsMxv_cexpif (svfloat32_t, svbool_t);
221*f3087befSAndrew Turner void _ZGVsMxvl4l4_sincosf (svfloat32_t, float *, float *, svbool_t);
222*f3087befSAndrew Turner void _ZGVsMxvl4l4_sincospif (svfloat32_t, float *, float *, svbool_t);
223*f3087befSAndrew Turner 
224*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_acos (svfloat64_t, svbool_t);
225*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_acosh (svfloat64_t, svbool_t);
226*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_asin (svfloat64_t, svbool_t);
227*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_asinh (svfloat64_t, svbool_t);
228*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_atan (svfloat64_t, svbool_t);
229*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_atanh (svfloat64_t, svbool_t);
230*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_cbrt (svfloat64_t, svbool_t);
231*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_cos (svfloat64_t, svbool_t);
232*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_cosh (svfloat64_t, svbool_t);
233*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_cospi (svfloat64_t, svbool_t);
234*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_erf (svfloat64_t, svbool_t);
235*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_erfc (svfloat64_t, svbool_t);
236*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_exp (svfloat64_t, svbool_t);
237*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_exp10 (svfloat64_t, svbool_t);
238*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_exp2 (svfloat64_t, svbool_t);
239*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_expm1 (svfloat64_t, svbool_t);
240*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_log (svfloat64_t, svbool_t);
241*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_log10 (svfloat64_t, svbool_t);
242*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_log1p (svfloat64_t, svbool_t);
243*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_log2 (svfloat64_t, svbool_t);
244*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_sin (svfloat64_t, svbool_t);
245*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_sinh (svfloat64_t, svbool_t);
246*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_sinpi (svfloat64_t, svbool_t);
247*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_tan (svfloat64_t, svbool_t);
248*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_tanh (svfloat64_t, svbool_t);
249*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_tanpi (svfloat64_t, svbool_t);
250*f3087befSAndrew Turner svfloat64_t _ZGVsMxvl8_modf (svfloat64_t, double *, svbool_t);
251*f3087befSAndrew Turner svfloat64_t _ZGVsMxvv_atan2 (svfloat64_t, svfloat64_t, svbool_t);
252*f3087befSAndrew Turner svfloat64_t _ZGVsMxvv_hypot (svfloat64_t, svfloat64_t, svbool_t);
253*f3087befSAndrew Turner svfloat64_t _ZGVsMxvv_pow (svfloat64_t, svfloat64_t, svbool_t);
254*f3087befSAndrew Turner svfloat64x2_t _ZGVsMxv_cexpi (svfloat64_t, svbool_t);
255*f3087befSAndrew Turner void _ZGVsMxvl8l8_sincos (svfloat64_t, double *, double *, svbool_t);
256*f3087befSAndrew Turner void _ZGVsMxvl8l8_sincospi (svfloat64_t, double *, double *, svbool_t);
257*f3087befSAndrew Turner 
258*f3087befSAndrew Turner #  if WANT_EXPERIMENTAL_MATH
259*f3087befSAndrew Turner 
260*f3087befSAndrew Turner svfloat32_t _ZGVsMxv_erfinvf (svfloat32_t, svbool_t);
261*f3087befSAndrew Turner svfloat32_t _ZGVsMxvv_powi (svfloat32_t, svint32_t, svbool_t);
262*f3087befSAndrew Turner 
263*f3087befSAndrew Turner svfloat64_t _ZGVsMxvv_powk (svfloat64_t, svint64_t, svbool_t);
264*f3087befSAndrew Turner svfloat64_t _ZGVsMxv_erfinv (svfloat64_t, svbool_t);
265*f3087befSAndrew Turner 
26631914882SAlex Richardson # endif
26731914882SAlex Richardson #endif
26831914882SAlex Richardson 
26931914882SAlex Richardson #endif
270