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