forked from intel/llvm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcmath_wrapper.cpp
203 lines (139 loc) · 5.81 KB
/
cmath_wrapper.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
//==--- cmath_wrapper.cpp - wrappers for C math library functions ----------==//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "device_math.h"
#if defined(__SPIR__) || defined(__SPIRV__) || defined(__NVPTX__) || \
defined(__AMDGCN__)
DEVICE_EXTERN_C_INLINE
int abs(int x) { return __devicelib_abs(x); }
DEVICE_EXTERN_C_INLINE
long int labs(long int x) { return __devicelib_labs(x); }
DEVICE_EXTERN_C_INLINE
long long int llabs(long long int x) { return __devicelib_llabs(x); }
DEVICE_EXTERN_C_INLINE
float fabsf(float x) { return __devicelib_fabsf(x); }
DEVICE_EXTERN_C_INLINE
float ceilf(float x) { return __devicelib_ceilf(x); }
DEVICE_EXTERN_C_INLINE
float copysignf(float x, float y) { return __devicelib_copysignf(x, y); }
DEVICE_EXTERN_C_INLINE
float cospif(float x) { return __devicelib_cospif(x); }
extern "C" SYCL_EXTERNAL float __devicelib_fmaxf(float, float);
DEVICE_EXTERN_C_INLINE
float fmaxf(float x, float y) { return __devicelib_fmaxf(x, y); }
extern "C" SYCL_EXTERNAL float __devicelib_fminf(float, float);
DEVICE_EXTERN_C_INLINE
float fminf(float x, float y) { return __devicelib_fminf(x, y); }
DEVICE_EXTERN_C_INLINE
float truncf(float x) { return __devicelib_truncf(x); }
DEVICE_EXTERN_C_INLINE
float sinpif(float x) { return __devicelib_sinpif(x); }
DEVICE_EXTERN_C_INLINE
float rsqrtf(float x) { return __devicelib_rsqrtf(x); }
DEVICE_EXTERN_C_INLINE
float exp10f(float x) { return __devicelib_exp10f(x); }
DEVICE_EXTERN_C_INLINE
div_t div(int x, int y) { return __devicelib_div(x, y); }
DEVICE_EXTERN_C_INLINE
ldiv_t ldiv(long x, long y) { return __devicelib_ldiv(x, y); }
DEVICE_EXTERN_C_INLINE
lldiv_t lldiv(long long x, long long y) { return __devicelib_lldiv(x, y); }
DEVICE_EXTERN_C_INLINE
float roundf(float x) { return __devicelib_roundf(x); }
DEVICE_EXTERN_C_INLINE
float floorf(float x) { return __devicelib_floorf(x); }
DEVICE_EXTERN_C_INLINE
float scalbnf(float x, int n) { return __devicelib_scalbnf(x, n); }
DEVICE_EXTERN_C_INLINE
float scalblnf(float x, long int n) { return __devicelib_scalblnf(x, n); }
DEVICE_EXTERN_C_INLINE
float logf(float x) { return __devicelib_logf(x); }
DEVICE_EXTERN_C_INLINE
float expf(float x) { return __devicelib_expf(x); }
DEVICE_EXTERN_C_INLINE
float frexpf(float x, int *exp) { return __devicelib_frexpf(x, exp); }
DEVICE_EXTERN_C_INLINE
float ldexpf(float x, int exp) { return __devicelib_ldexpf(x, exp); }
DEVICE_EXTERN_C_INLINE
float log10f(float x) { return __devicelib_log10f(x); }
DEVICE_EXTERN_C_INLINE
float modff(float x, float *intpart) { return __devicelib_modff(x, intpart); }
DEVICE_EXTERN_C_INLINE
float exp2f(float x) { return __devicelib_exp2f(x); }
DEVICE_EXTERN_C_INLINE
float expm1f(float x) { return __devicelib_expm1f(x); }
DEVICE_EXTERN_C_INLINE
int ilogbf(float x) { return __devicelib_ilogbf(x); }
DEVICE_EXTERN_C_INLINE
float log1pf(float x) { return __devicelib_log1pf(x); }
DEVICE_EXTERN_C_INLINE
float log2f(float x) { return __devicelib_log2f(x); }
DEVICE_EXTERN_C_INLINE
float logbf(float x) { return __devicelib_logbf(x); }
DEVICE_EXTERN_C_INLINE
float sqrtf(float x) { return __devicelib_sqrtf(x); }
DEVICE_EXTERN_C_INLINE
float cbrtf(float x) { return __devicelib_cbrtf(x); }
DEVICE_EXTERN_C_INLINE
float hypotf(float x, float y) { return __devicelib_hypotf(x, y); }
DEVICE_EXTERN_C_INLINE
float erff(float x) { return __devicelib_erff(x); }
DEVICE_EXTERN_C_INLINE
float erfcf(float x) { return __devicelib_erfcf(x); }
DEVICE_EXTERN_C_INLINE
float tgammaf(float x) { return __devicelib_tgammaf(x); }
DEVICE_EXTERN_C_INLINE
float lgammaf(float x) { return __devicelib_lgammaf(x); }
DEVICE_EXTERN_C_INLINE
float fmodf(float x, float y) { return __devicelib_fmodf(x, y); }
DEVICE_EXTERN_C_INLINE
float remainderf(float x, float y) { return __devicelib_remainderf(x, y); }
DEVICE_EXTERN_C_INLINE
float remquof(float x, float y, int *q) { return __devicelib_remquof(x, y, q); }
DEVICE_EXTERN_C_INLINE
float nextafterf(float x, float y) { return __devicelib_nextafterf(x, y); }
DEVICE_EXTERN_C_INLINE
float fdimf(float x, float y) { return __devicelib_fdimf(x, y); }
DEVICE_EXTERN_C_INLINE
float fmaf(float x, float y, float z) { return __devicelib_fmaf(x, y, z); }
DEVICE_EXTERN_C_INLINE
float sinf(float x) { return __devicelib_sinf(x); }
DEVICE_EXTERN_C_INLINE
float cosf(float x) { return __devicelib_cosf(x); }
DEVICE_EXTERN_C_INLINE
float tanf(float x) { return __devicelib_tanf(x); }
DEVICE_EXTERN_C_INLINE
float powf(float x, float y) { return __devicelib_powf(x, y); }
DEVICE_EXTERN_C_INLINE
float acosf(float x) { return __devicelib_acosf(x); }
DEVICE_EXTERN_C_INLINE
float asinf(float x) { return __devicelib_asinf(x); }
DEVICE_EXTERN_C_INLINE
float atanf(float x) { return __devicelib_atanf(x); }
DEVICE_EXTERN_C_INLINE
float atan2f(float x, float y) { return __devicelib_atan2f(x, y); }
DEVICE_EXTERN_C_INLINE
float coshf(float x) { return __devicelib_coshf(x); }
DEVICE_EXTERN_C_INLINE
float sinhf(float x) { return __devicelib_sinhf(x); }
DEVICE_EXTERN_C_INLINE
float tanhf(float x) { return __devicelib_tanhf(x); }
DEVICE_EXTERN_C_INLINE
float acoshf(float x) { return __devicelib_acoshf(x); }
DEVICE_EXTERN_C_INLINE
float asinhf(float x) { return __devicelib_asinhf(x); }
DEVICE_EXTERN_C_INLINE
float atanhf(float x) { return __devicelib_atanhf(x); }
#ifdef __NVPTX__
extern "C" SYCL_EXTERNAL float __nv_nearbyintf(float);
DEVICE_EXTERN_C_INLINE
float nearbyintf(float x) { return __nv_nearbyintf(x); }
extern "C" SYCL_EXTERNAL float __nv_rintf(float);
DEVICE_EXTERN_C_INLINE
float rintf(float x) { return __nv_rintf(x); }
#endif // __NVPTX__
#endif // __SPIR__ || __SPIRV__ || __NVPTX__ || __AMDGCN__