xref: /freebsd-src/contrib/arm-optimized-routines/math/test/mathbench_wrappers.h (revision 072a4ba82a01476eaee33781ccd241033eefcf0b)
1*072a4ba8SAndrew Turner /*
2*072a4ba8SAndrew Turner  * Function wrappers for mathbench.
3*072a4ba8SAndrew Turner  *
4*072a4ba8SAndrew Turner  * Copyright (c) 2022, Arm Limited.
5*072a4ba8SAndrew Turner  * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
6*072a4ba8SAndrew Turner  */
7*072a4ba8SAndrew Turner #if WANT_VMATH
8*072a4ba8SAndrew Turner #if __aarch64__
9*072a4ba8SAndrew Turner 
10*072a4ba8SAndrew Turner #ifdef __vpcs
11*072a4ba8SAndrew Turner __vpcs static v_float
12*072a4ba8SAndrew Turner xy__vn_powf (v_float x)
13*072a4ba8SAndrew Turner {
14*072a4ba8SAndrew Turner   return __vn_powf (x, x);
15*072a4ba8SAndrew Turner }
16*072a4ba8SAndrew Turner 
17*072a4ba8SAndrew Turner __vpcs static v_float
18*072a4ba8SAndrew Turner xy_Z_powf (v_float x)
19*072a4ba8SAndrew Turner {
20*072a4ba8SAndrew Turner   return _ZGVnN4vv_powf (x, x);
21*072a4ba8SAndrew Turner }
22*072a4ba8SAndrew Turner 
23*072a4ba8SAndrew Turner __vpcs static v_double
24*072a4ba8SAndrew Turner xy__vn_pow (v_double x)
25*072a4ba8SAndrew Turner {
26*072a4ba8SAndrew Turner   return __vn_pow (x, x);
27*072a4ba8SAndrew Turner }
28*072a4ba8SAndrew Turner 
29*072a4ba8SAndrew Turner __vpcs static v_double
30*072a4ba8SAndrew Turner xy_Z_pow (v_double x)
31*072a4ba8SAndrew Turner {
32*072a4ba8SAndrew Turner   return _ZGVnN2vv_pow (x, x);
33*072a4ba8SAndrew Turner }
34*072a4ba8SAndrew Turner #endif // __vpcs
35*072a4ba8SAndrew Turner 
36*072a4ba8SAndrew Turner static v_float
37*072a4ba8SAndrew Turner xy__v_powf (v_float x)
38*072a4ba8SAndrew Turner {
39*072a4ba8SAndrew Turner   return __v_powf (x, x);
40*072a4ba8SAndrew Turner }
41*072a4ba8SAndrew Turner 
42*072a4ba8SAndrew Turner static v_double
43*072a4ba8SAndrew Turner xy__v_pow (v_double x)
44*072a4ba8SAndrew Turner {
45*072a4ba8SAndrew Turner   return __v_pow (x, x);
46*072a4ba8SAndrew Turner }
47*072a4ba8SAndrew Turner #endif // __aarch64__
48*072a4ba8SAndrew Turner 
49*072a4ba8SAndrew Turner static float
50*072a4ba8SAndrew Turner xy__s_powf (float x)
51*072a4ba8SAndrew Turner {
52*072a4ba8SAndrew Turner   return __s_powf (x, x);
53*072a4ba8SAndrew Turner }
54*072a4ba8SAndrew Turner 
55*072a4ba8SAndrew Turner static double
56*072a4ba8SAndrew Turner xy__s_pow (double x)
57*072a4ba8SAndrew Turner {
58*072a4ba8SAndrew Turner   return __s_pow (x, x);
59*072a4ba8SAndrew Turner }
60*072a4ba8SAndrew Turner #endif // WANT_VMATH
61*072a4ba8SAndrew Turner 
62*072a4ba8SAndrew Turner static double
63*072a4ba8SAndrew Turner xypow (double x)
64*072a4ba8SAndrew Turner {
65*072a4ba8SAndrew Turner   return pow (x, x);
66*072a4ba8SAndrew Turner }
67*072a4ba8SAndrew Turner 
68*072a4ba8SAndrew Turner static float
69*072a4ba8SAndrew Turner xypowf (float x)
70*072a4ba8SAndrew Turner {
71*072a4ba8SAndrew Turner   return powf (x, x);
72*072a4ba8SAndrew Turner }
73*072a4ba8SAndrew Turner 
74*072a4ba8SAndrew Turner static double
75*072a4ba8SAndrew Turner xpow (double x)
76*072a4ba8SAndrew Turner {
77*072a4ba8SAndrew Turner   return pow (x, 23.4);
78*072a4ba8SAndrew Turner }
79*072a4ba8SAndrew Turner 
80*072a4ba8SAndrew Turner static float
81*072a4ba8SAndrew Turner xpowf (float x)
82*072a4ba8SAndrew Turner {
83*072a4ba8SAndrew Turner   return powf (x, 23.4f);
84*072a4ba8SAndrew Turner }
85*072a4ba8SAndrew Turner 
86*072a4ba8SAndrew Turner static double
87*072a4ba8SAndrew Turner ypow (double x)
88*072a4ba8SAndrew Turner {
89*072a4ba8SAndrew Turner   return pow (2.34, x);
90*072a4ba8SAndrew Turner }
91*072a4ba8SAndrew Turner 
92*072a4ba8SAndrew Turner static float
93*072a4ba8SAndrew Turner ypowf (float x)
94*072a4ba8SAndrew Turner {
95*072a4ba8SAndrew Turner   return powf (2.34f, x);
96*072a4ba8SAndrew Turner }
97*072a4ba8SAndrew Turner 
98*072a4ba8SAndrew Turner static float
99*072a4ba8SAndrew Turner sincosf_wrap (float x)
100*072a4ba8SAndrew Turner {
101*072a4ba8SAndrew Turner   float s, c;
102*072a4ba8SAndrew Turner   sincosf (x, &s, &c);
103*072a4ba8SAndrew Turner   return s + c;
104*072a4ba8SAndrew Turner }
105