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