Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/arm-optimized-routines/math/test/mathbench_funcs.h
48254 views
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
123