xref: /aosp_15_r20/external/arm-optimized-routines/pl/math/test/mathbench_funcs.h (revision 412f47f9e737e10ed5cc46ec6a8d7fa2264f8a14)
1*412f47f9SXin Li // clang-format off
2*412f47f9SXin Li /*
3*412f47f9SXin Li  * Function entries for mathbench.
4*412f47f9SXin Li  *
5*412f47f9SXin Li  * Copyright (c) 2022-2023, Arm Limited.
6*412f47f9SXin Li  * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
7*412f47f9SXin Li  */
8*412f47f9SXin Li 
9*412f47f9SXin Li #define _ZSF1(fun, a, b) F(fun##f, a, b)
10*412f47f9SXin Li #define _ZSD1(f, a, b) D(f, a, b)
11*412f47f9SXin Li 
12*412f47f9SXin Li #if defined(__vpcs) && __aarch64__
13*412f47f9SXin Li 
14*412f47f9SXin Li #define _ZVF1(fun, a, b) VNF(_ZGVnN4v_##fun##f, a, b)
15*412f47f9SXin Li #define _ZVD1(f, a, b) VND(_ZGVnN2v_##f, a, b)
16*412f47f9SXin Li 
17*412f47f9SXin Li #else
18*412f47f9SXin Li 
19*412f47f9SXin Li #define _ZVF1(f, a, b)
20*412f47f9SXin Li #define _ZVD1(f, a, b)
21*412f47f9SXin Li 
22*412f47f9SXin Li #endif
23*412f47f9SXin Li 
24*412f47f9SXin Li #if WANT_SVE_MATH
25*412f47f9SXin Li 
26*412f47f9SXin Li #define _ZSVF1(fun, a, b) SVF(_ZGVsMxv_##fun##f, a, b)
27*412f47f9SXin Li #define _ZSVD1(f, a, b) SVD(_ZGVsMxv_##f, a, b)
28*412f47f9SXin Li 
29*412f47f9SXin Li #else
30*412f47f9SXin Li 
31*412f47f9SXin Li #define _ZSVF1(f, a, b)
32*412f47f9SXin Li #define _ZSVD1(f, a, b)
33*412f47f9SXin Li 
34*412f47f9SXin Li #endif
35*412f47f9SXin Li 
36*412f47f9SXin Li /* No auto-generated wrappers for binary functions - they have be
37*412f47f9SXin Li    manually defined in mathbench_wrappers.h. We have to define silent
38*412f47f9SXin Li    macros for them anyway as they will be emitted by PL_SIG.  */
39*412f47f9SXin Li #define _ZSF2(...)
40*412f47f9SXin Li #define _ZSD2(...)
41*412f47f9SXin Li #define _ZVF2(...)
42*412f47f9SXin Li #define _ZVD2(...)
43*412f47f9SXin Li #define _ZSVF2(...)
44*412f47f9SXin Li #define _ZSVD2(...)
45*412f47f9SXin Li 
46*412f47f9SXin Li #include "mathbench_funcs_gen.h"
47*412f47f9SXin Li 
48*412f47f9SXin Li /* PL_SIG only emits entries for unary functions, since if a function
49*412f47f9SXin Li    needs to be wrapped in mathbench there is no way for it to know the
50*412f47f9SXin Li    same of the wrapper. Add entries for binary functions, or any other
51*412f47f9SXin Li    exotic signatures that need wrapping, below.  */
52*412f47f9SXin Li 
53*412f47f9SXin Li {"atan2f", 'f', 0, -10.0, 10.0, {.f = atan2f_wrap}},
54*412f47f9SXin Li {"atan2",  'd', 0, -10.0, 10.0, {.d = atan2_wrap}},
55*412f47f9SXin Li {"powi",   'd', 0,  0.01, 11.1, {.d = powi_wrap}},
56*412f47f9SXin Li 
57*412f47f9SXin Li {"_ZGVnN4vv_atan2f", 'f', 'n', -10.0, 10.0, {.vnf = _Z_atan2f_wrap}},
58*412f47f9SXin Li {"_ZGVnN2vv_atan2",  'd', 'n', -10.0, 10.0, {.vnd = _Z_atan2_wrap}},
59*412f47f9SXin Li {"_ZGVnN4vv_hypotf", 'f', 'n', -10.0, 10.0, {.vnf = _Z_hypotf_wrap}},
60*412f47f9SXin Li {"_ZGVnN2vv_hypot",  'd', 'n', -10.0, 10.0, {.vnd = _Z_hypot_wrap}},
61*412f47f9SXin Li {"_ZGVnN2vv_pow",    'd', 'n', -10.0, 10.0, {.vnd = xy_Z_pow}},
62*412f47f9SXin Li {"x_ZGVnN2vv_pow",   'd', 'n', -10.0, 10.0, {.vnd = x_Z_pow}},
63*412f47f9SXin Li {"y_ZGVnN2vv_pow",   'd', 'n', -10.0, 10.0, {.vnd = y_Z_pow}},
64*412f47f9SXin Li {"_ZGVnN4vl4l4_sincosf", 'f', 'n', -3.1, 3.1, {.vnf = _Z_sincosf_wrap}},
65*412f47f9SXin Li {"_ZGVnN2vl8l8_sincos", 'd', 'n', -3.1, 3.1, {.vnd = _Z_sincos_wrap}},
66*412f47f9SXin Li {"_ZGVnN4v_cexpif", 'f', 'n', -3.1, 3.1, {.vnf = _Z_cexpif_wrap}},
67*412f47f9SXin Li {"_ZGVnN2v_cexpi", 'd', 'n', -3.1, 3.1, {.vnd = _Z_cexpi_wrap}},
68*412f47f9SXin Li 
69*412f47f9SXin Li #if WANT_SVE_MATH
70*412f47f9SXin Li {"_ZGVsMxvv_atan2f", 'f', 's', -10.0, 10.0, {.svf = _Z_sv_atan2f_wrap}},
71*412f47f9SXin Li {"_ZGVsMxvv_atan2",  'd', 's', -10.0, 10.0, {.svd = _Z_sv_atan2_wrap}},
72*412f47f9SXin Li {"_ZGVsMxvv_hypotf", 'f', 's', -10.0, 10.0, {.svf = _Z_sv_hypotf_wrap}},
73*412f47f9SXin Li {"_ZGVsMxvv_hypot",  'd', 's', -10.0, 10.0, {.svd = _Z_sv_hypot_wrap}},
74*412f47f9SXin Li {"_ZGVsMxvv_powi",   'f', 's', -10.0, 10.0, {.svf = _Z_sv_powi_wrap}},
75*412f47f9SXin Li {"_ZGVsMxvv_powk",   'd', 's', -10.0, 10.0, {.svd = _Z_sv_powk_wrap}},
76*412f47f9SXin Li {"_ZGVsMxvv_powf",   'f', 's', -10.0, 10.0, {.svf = xy_Z_sv_powf}},
77*412f47f9SXin Li {"x_ZGVsMxvv_powf",  'f', 's', -10.0, 10.0, {.svf = x_Z_sv_powf}},
78*412f47f9SXin Li {"y_ZGVsMxvv_powf",  'f', 's', -10.0, 10.0, {.svf = y_Z_sv_powf}},
79*412f47f9SXin Li {"_ZGVsMxvv_pow",    'd', 's', -10.0, 10.0, {.svd = xy_Z_sv_pow}},
80*412f47f9SXin Li {"x_ZGVsMxvv_pow",   'd', 's', -10.0, 10.0, {.svd = x_Z_sv_pow}},
81*412f47f9SXin Li {"y_ZGVsMxvv_pow",   'd', 's', -10.0, 10.0, {.svd = y_Z_sv_pow}},
82*412f47f9SXin Li {"_ZGVsMxvl4l4_sincosf", 'f', 's', -3.1, 3.1, {.svf = _Z_sv_sincosf_wrap}},
83*412f47f9SXin Li {"_ZGVsMxvl8l8_sincos", 'd', 's', -3.1, 3.1, {.svd = _Z_sv_sincos_wrap}},
84*412f47f9SXin Li {"_ZGVsMxv_cexpif", 'f', 's', -3.1, 3.1, {.svf = _Z_sv_cexpif_wrap}},
85*412f47f9SXin Li {"_ZGVsMxv_cexpi", 'd', 's', -3.1, 3.1, {.svd = _Z_sv_cexpi_wrap}},
86*412f47f9SXin Li #endif
87*412f47f9SXin Li     // clang-format on
88