xref: /freebsd-src/contrib/arm-optimized-routines/math/test/mathbench_funcs.h (revision f3087bef11543b42e0d69b708f367097a4118d24)
1072a4ba8SAndrew Turner /*
2072a4ba8SAndrew Turner  * Function entries for mathbench.
3072a4ba8SAndrew Turner  *
4*f3087befSAndrew Turner  * Copyright (c) 2022-2024, Arm Limited.
5072a4ba8SAndrew Turner  * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
6072a4ba8SAndrew Turner  */
75a02ffc3SAndrew Turner /* clang-format off */
8072a4ba8SAndrew Turner {"pow", 'd', 0, 0.01, 11.1, {.d = xypow}},
9072a4ba8SAndrew Turner D (xpow, 0.01, 11.1)
10072a4ba8SAndrew Turner D (ypow, -9.9, 9.9)
11072a4ba8SAndrew Turner {"powf", 'f', 0, 0.01, 11.1, {.f = xypowf}},
12072a4ba8SAndrew Turner F (xpowf, 0.01, 11.1)
13072a4ba8SAndrew Turner F (ypowf, -9.9, 9.9)
14072a4ba8SAndrew Turner {"sincosf", 'f', 0, 0.1, 0.7, {.f = sincosf_wrap}},
15072a4ba8SAndrew Turner {"sincosf", 'f', 0, 0.8, 3.1, {.f = sincosf_wrap}},
16072a4ba8SAndrew Turner {"sincosf", 'f', 0, -3.1, 3.1, {.f = sincosf_wrap}},
17072a4ba8SAndrew Turner {"sincosf", 'f', 0, 3.3, 33.3, {.f = sincosf_wrap}},
18072a4ba8SAndrew Turner {"sincosf", 'f', 0, 100, 1000, {.f = sincosf_wrap}},
19072a4ba8SAndrew Turner {"sincosf", 'f', 0, 1e6, 1e32, {.f = sincosf_wrap}},
20*f3087befSAndrew Turner #if WANT_TRIGPI_TESTS
21*f3087befSAndrew Turner F (arm_math_cospif, -0.9, 0.9)
22*f3087befSAndrew Turner D (arm_math_cospi, -0.9, 0.9)
23*f3087befSAndrew Turner F (arm_math_sinpif, -0.9, 0.9)
24*f3087befSAndrew Turner D (arm_math_sinpi, -0.9, 0.9)
25*f3087befSAndrew Turner F (arm_math_tanpif, -0.9, 0.9)
26*f3087befSAndrew Turner D (arm_math_tanpi, -0.9, 0.9)
27*f3087befSAndrew Turner {"sincospif", 'f', 0, -0.9, 0.9, {.f = sincospif_wrap}},
28*f3087befSAndrew Turner {"sincospi", 'd', 0, -0.9, 0.9, {.d = sincospi_wrap}},
29*f3087befSAndrew Turner #endif
30*f3087befSAndrew Turner #if WANT_EXPERIMENTAL_MATH
31*f3087befSAndrew Turner D (arm_math_erf, -6.0, 6.0)
32*f3087befSAndrew Turner F (arm_math_erff, -4.0, 4.0)
33*f3087befSAndrew Turner {"atan2f", 'f', 0, -10.0, 10.0, {.f = atan2f_wrap}},
34*f3087befSAndrew Turner {"atan2",  'd', 0, -10.0, 10.0, {.d = atan2_wrap}},
35*f3087befSAndrew Turner {"powi",   'd', 0,  0.01, 11.1, {.d = powi_wrap}},
36*f3087befSAndrew Turner #endif
37*f3087befSAndrew Turner #if __aarch64__ && __linux__
38*f3087befSAndrew Turner {"_ZGVnN4vv_atan2f", 'f', 'n', -10.0, 10.0, {.vnf = _Z_atan2f_wrap}},
39*f3087befSAndrew Turner {"_ZGVnN2vv_atan2",  'd', 'n', -10.0, 10.0, {.vnd = _Z_atan2_wrap}},
40*f3087befSAndrew Turner {"_ZGVnN4vv_hypotf", 'f', 'n', -10.0, 10.0, {.vnf = _Z_hypotf_wrap}},
41*f3087befSAndrew Turner {"_ZGVnN2vv_hypot",  'd', 'n', -10.0, 10.0, {.vnd = _Z_hypot_wrap}},
42*f3087befSAndrew Turner {"_ZGVnN2vv_pow",    'd', 'n', -10.0, 10.0, {.vnd = xy_Z_pow}},
43*f3087befSAndrew Turner {"x_ZGVnN2vv_pow",   'd', 'n', -10.0, 10.0, {.vnd = x_Z_pow}},
44*f3087befSAndrew Turner {"y_ZGVnN2vv_pow",   'd', 'n', -10.0, 10.0, {.vnd = y_Z_pow}},
45072a4ba8SAndrew Turner {"_ZGVnN4vv_powf",  'f', 'n',   0.01, 11.1, {.vnf = xy_Z_powf}},
46*f3087befSAndrew Turner {"x_ZGVnN4vv_powf", 'f', 'n',   0.01, 11.1, {.vnf = x_Z_powf}},
47*f3087befSAndrew Turner {"y_ZGVnN4vv_powf", 'f', 'n', -10.0,  10.0, {.vnf = y_Z_powf}},
48*f3087befSAndrew Turner {"_ZGVnN4vl4_modff", 'f', 'n', -10.0, 10.0, {.vnf = _Z_modff_wrap}},
49*f3087befSAndrew Turner {"_ZGVnN2vl8_modf",  'd', 'n', -10.0, 10.0, {.vnd = _Z_modf_wrap}},
50*f3087befSAndrew Turner {"_ZGVnN4vl4l4_sincosf", 'f', 'n', -3.1, 3.1, {.vnf = _Z_sincosf_wrap}},
51*f3087befSAndrew Turner {"_ZGVnN2vl8l8_sincos", 'd', 'n', -3.1, 3.1, {.vnd = _Z_sincos_wrap}},
52*f3087befSAndrew Turner {"_ZGVnN4v_cexpif", 'f', 'n', -3.1, 3.1, {.vnf = _Z_cexpif_wrap}},
53*f3087befSAndrew Turner {"_ZGVnN2v_cexpi", 'd', 'n', -3.1, 3.1, {.vnd = _Z_cexpi_wrap}},
54*f3087befSAndrew Turner VNF (_ZGVnN4v_expf_1u, -9.9, 9.9)
55*f3087befSAndrew Turner VNF (_ZGVnN4v_exp2f_1u, -9.9, 9.9)
56*f3087befSAndrew Turner # if WANT_TRIGPI_TESTS
57*f3087befSAndrew Turner VNF (_ZGVnN4v_cospif, -0.9, 0.9)
58*f3087befSAndrew Turner VND (_ZGVnN2v_cospi, -0.9, 0.9)
59*f3087befSAndrew Turner VNF (_ZGVnN4v_sinpif, -0.9, 0.9)
60*f3087befSAndrew Turner VND (_ZGVnN2v_sinpi, -0.9, 0.9)
61*f3087befSAndrew Turner VNF (_ZGVnN4v_tanpif, -0.9, 0.9)
62*f3087befSAndrew Turner VND (_ZGVnN2v_tanpi, -0.9, 0.9)
63*f3087befSAndrew Turner {"_ZGVnN4vl4l4_sincospif", 'f', 'n', -0.9, 0.9, {.vnf = _Z_sincospif_wrap}},
64*f3087befSAndrew Turner {"_ZGVnN2vl8l8_sincospi", 'd', 'n', -0.9, 0.9, {.vnd = _Z_sincospi_wrap}},
65*f3087befSAndrew Turner # endif
66*f3087befSAndrew Turner #endif
67*f3087befSAndrew Turner 
68*f3087befSAndrew Turner #if WANT_SVE_TESTS
69*f3087befSAndrew Turner { "_ZGVsMxvv_atan2f", 'f', 's', -10.0, 10.0, { .svf = _Z_sv_atan2f_wrap } },
70*f3087befSAndrew Turner { "_ZGVsMxvv_atan2", 'd', 's', -10.0, 10.0, { .svd = _Z_sv_atan2_wrap } },
71*f3087befSAndrew Turner { "_ZGVsMxvv_hypotf", 'f', 's', -10.0, 10.0, { .svf = _Z_sv_hypotf_wrap } },
72*f3087befSAndrew Turner { "_ZGVsMxvv_hypot", 'd', 's', -10.0, 10.0, { .svd = _Z_sv_hypot_wrap } },
73*f3087befSAndrew Turner {"_ZGVsMxvv_powf",   'f', 's', -10.0, 10.0, {.svf = xy_Z_sv_powf}},
74*f3087befSAndrew Turner {"x_ZGVsMxvv_powf",  'f', 's', -10.0, 10.0, {.svf = x_Z_sv_powf}},
75*f3087befSAndrew Turner {"y_ZGVsMxvv_powf",  'f', 's', -10.0, 10.0, {.svf = y_Z_sv_powf}},
76*f3087befSAndrew Turner {"_ZGVsMxvv_pow",    'd', 's', -10.0, 10.0, {.svd = xy_Z_sv_pow}},
77*f3087befSAndrew Turner {"x_ZGVsMxvv_pow",   'd', 's', -10.0, 10.0, {.svd = x_Z_sv_pow}},
78*f3087befSAndrew Turner {"y_ZGVsMxvv_pow",   'd', 's', -10.0, 10.0, {.svd = y_Z_sv_pow}},
79*f3087befSAndrew Turner {"_ZGVsMxvl4_modff", 'f', 's', -10.0, 10.0, {.svf = _Z_sv_modff_wrap}},
80*f3087befSAndrew Turner {"_ZGVsMxvl8_modf",  'd', 's', -10.0, 10.0, {.svd = _Z_sv_modf_wrap}},
81*f3087befSAndrew Turner {"_ZGVsMxvl4l4_sincosf", 'f', 's', -3.1, 3.1, {.svf = _Z_sv_sincosf_wrap}},
82*f3087befSAndrew Turner {"_ZGVsMxvl8l8_sincos", 'd', 's', -3.1, 3.1, {.svd = _Z_sv_sincos_wrap}},
83*f3087befSAndrew Turner {"_ZGVsMxv_cexpif", 'f', 's', -3.1, 3.1, {.svf = _Z_sv_cexpif_wrap}},
84*f3087befSAndrew Turner {"_ZGVsMxv_cexpi", 'd', 's', -3.1, 3.1, {.svd = _Z_sv_cexpi_wrap}},
85*f3087befSAndrew Turner # if WANT_TRIGPI_TESTS
86*f3087befSAndrew Turner SVF (_ZGVsMxv_cospif, -0.9, 0.9)
87*f3087befSAndrew Turner SVD (_ZGVsMxv_cospi, -0.9, 0.9)
88*f3087befSAndrew Turner SVF (_ZGVsMxv_sinpif, -0.9, 0.9)
89*f3087befSAndrew Turner SVD (_ZGVsMxv_sinpi, -0.9, 0.9)
90*f3087befSAndrew Turner SVF (_ZGVsMxv_tanpif, -0.9, 0.9)
91*f3087befSAndrew Turner SVD (_ZGVsMxv_tanpi, -0.9, 0.9)
92*f3087befSAndrew Turner {"_ZGVsMxvl4l4_sincospif", 'f', 's', -0.9, 0.9, {.svf = _Z_sv_sincospif_wrap}},
93*f3087befSAndrew Turner {"_ZGVsMxvl8l8_sincospi", 'd', 's', -0.9, 0.9, {.svd = _Z_sv_sincospi_wrap}},
94*f3087befSAndrew Turner # endif
95*f3087befSAndrew Turner # if WANT_EXPERIMENTAL_MATH
96*f3087befSAndrew Turner {"_ZGVsMxvv_powi",   'f', 's', -10.0, 10.0, {.svf = _Z_sv_powi_wrap}},
97*f3087befSAndrew Turner {"_ZGVsMxvv_powk",   'd', 's', -10.0, 10.0, {.svd = _Z_sv_powk_wrap}},
98*f3087befSAndrew Turner # endif
99072a4ba8SAndrew Turner #endif
1005a02ffc3SAndrew Turner     /* clang-format on */
101*f3087befSAndrew Turner 
102*f3087befSAndrew Turner #define _ZSF1(fun, a, b) F (fun##f, a, b)
103*f3087befSAndrew Turner #define _ZSD1(f, a, b) D (f, a, b)
104*f3087befSAndrew Turner 
105*f3087befSAndrew Turner #define _ZVF1(fun, a, b) VNF (_ZGVnN4v_##fun##f, a, b)
106*f3087befSAndrew Turner #define _ZVD1(f, a, b) VND (_ZGVnN2v_##f, a, b)
107*f3087befSAndrew Turner 
108*f3087befSAndrew Turner #define _ZSVF1(fun, a, b) SVF (_ZGVsMxv_##fun##f, a, b)
109*f3087befSAndrew Turner #define _ZSVD1(f, a, b) SVD (_ZGVsMxv_##f, a, b)
110*f3087befSAndrew Turner 
111*f3087befSAndrew Turner /* No auto-generated wrappers for binary functions - they have be
112*f3087befSAndrew Turner    manually defined in mathbench_wrappers.h. We have to define silent
113*f3087befSAndrew Turner    macros for them anyway as they will be emitted by TEST_SIG.  */
114*f3087befSAndrew Turner #define _ZSF2(...)
115*f3087befSAndrew Turner #define _ZSD2(...)
116*f3087befSAndrew Turner #define _ZVF2(...)
117*f3087befSAndrew Turner #define _ZVD2(...)
118*f3087befSAndrew Turner #define _ZSVF2(...)
119*f3087befSAndrew Turner #define _ZSVD2(...)
120*f3087befSAndrew Turner 
121*f3087befSAndrew Turner #include "test/mathbench_funcs_gen.h"
122