10
10
11
11
#ifdef __SPIR__
12
12
13
- DEVICE_EXTERN_C
13
+ DEVICE_EXTERN_C_INLINE
14
14
int abs (int x) { return __devicelib_abs (x); }
15
15
16
- DEVICE_EXTERN_C
16
+ DEVICE_EXTERN_C_INLINE
17
17
long int labs (long int x) { return __devicelib_labs (x); }
18
18
19
- DEVICE_EXTERN_C
19
+ DEVICE_EXTERN_C_INLINE
20
20
long long int llabs (long long int x) { return __devicelib_llabs (x); }
21
21
22
- DEVICE_EXTERN_C
22
+ DEVICE_EXTERN_C_INLINE
23
23
div_t div (int x, int y) { return __devicelib_div (x, y); }
24
24
25
- DEVICE_EXTERN_C
25
+ DEVICE_EXTERN_C_INLINE
26
26
ldiv_t ldiv (long x, long y) { return __devicelib_ldiv (x, y); }
27
27
28
- DEVICE_EXTERN_C
28
+ DEVICE_EXTERN_C_INLINE
29
29
lldiv_t lldiv (long long x, long long y) { return __devicelib_lldiv (x, y); }
30
30
31
- DEVICE_EXTERN_C
31
+ DEVICE_EXTERN_C_INLINE
32
32
float scalbnf (float x, int n) { return __devicelib_scalbnf (x, n); }
33
33
34
- DEVICE_EXTERN_C
34
+ DEVICE_EXTERN_C_INLINE
35
35
float logf (float x) { return __devicelib_logf (x); }
36
36
37
- DEVICE_EXTERN_C
37
+ DEVICE_EXTERN_C_INLINE
38
38
float expf (float x) { return __devicelib_expf (x); }
39
39
// On Windows, the math.h includes wrapper definition for functions:
40
40
// frexpf, ldexpf, hypotf, so we can't provide these 3 functions in
@@ -44,121 +44,121 @@ float expf(float x) { return __devicelib_expf(x); }
44
44
// frexp and ldexp. frexpf and ldexpf can only be used on platforms
45
45
// with fp64 support currently.
46
46
#ifndef _WIN32
47
- DEVICE_EXTERN_C
47
+ DEVICE_EXTERN_C_INLINE
48
48
float frexpf (float x, int *exp) { return __devicelib_frexpf (x, exp); }
49
49
50
- DEVICE_EXTERN_C
50
+ DEVICE_EXTERN_C_INLINE
51
51
float ldexpf (float x, int exp) { return __devicelib_ldexpf (x, exp); }
52
52
#endif
53
53
54
- DEVICE_EXTERN_C
54
+ DEVICE_EXTERN_C_INLINE
55
55
float log10f (float x) { return __devicelib_log10f (x); }
56
56
57
- DEVICE_EXTERN_C
57
+ DEVICE_EXTERN_C_INLINE
58
58
float modff (float x, float *intpart) { return __devicelib_modff (x, intpart); }
59
59
60
- DEVICE_EXTERN_C
60
+ DEVICE_EXTERN_C_INLINE
61
61
float exp2f (float x) { return __devicelib_exp2f (x); }
62
62
63
- DEVICE_EXTERN_C
63
+ DEVICE_EXTERN_C_INLINE
64
64
float expm1f (float x) { return __devicelib_expm1f (x); }
65
65
66
- DEVICE_EXTERN_C
66
+ DEVICE_EXTERN_C_INLINE
67
67
int ilogbf (float x) { return __devicelib_ilogbf (x); }
68
68
69
- DEVICE_EXTERN_C
69
+ DEVICE_EXTERN_C_INLINE
70
70
float log1pf (float x) { return __devicelib_log1pf (x); }
71
71
72
- DEVICE_EXTERN_C
72
+ DEVICE_EXTERN_C_INLINE
73
73
float log2f (float x) { return __devicelib_log2f (x); }
74
74
75
- DEVICE_EXTERN_C
75
+ DEVICE_EXTERN_C_INLINE
76
76
float logbf (float x) { return __devicelib_logbf (x); }
77
77
78
- DEVICE_EXTERN_C
78
+ DEVICE_EXTERN_C_INLINE
79
79
float sqrtf (float x) { return __devicelib_sqrtf (x); }
80
80
81
- DEVICE_EXTERN_C
81
+ DEVICE_EXTERN_C_INLINE
82
82
float cbrtf (float x) { return __devicelib_cbrtf (x); }
83
83
84
84
#ifndef _WIN32
85
- DEVICE_EXTERN_C
85
+ DEVICE_EXTERN_C_INLINE
86
86
float hypotf (float x, float y) { return __devicelib_hypotf (x, y); }
87
87
#else
88
- DEVICE_EXTERN_C
88
+ DEVICE_EXTERN_C_INLINE
89
89
float _hypotf (float x, float y) { return __devicelib_hypotf (x, y); }
90
90
#endif
91
91
92
- DEVICE_EXTERN_C
92
+ DEVICE_EXTERN_C_INLINE
93
93
float erff (float x) { return __devicelib_erff (x); }
94
94
95
- DEVICE_EXTERN_C
95
+ DEVICE_EXTERN_C_INLINE
96
96
float erfcf (float x) { return __devicelib_erfcf (x); }
97
97
98
- DEVICE_EXTERN_C
98
+ DEVICE_EXTERN_C_INLINE
99
99
float tgammaf (float x) { return __devicelib_tgammaf (x); }
100
100
101
- DEVICE_EXTERN_C
101
+ DEVICE_EXTERN_C_INLINE
102
102
float lgammaf (float x) { return __devicelib_lgammaf (x); }
103
103
104
- DEVICE_EXTERN_C
104
+ DEVICE_EXTERN_C_INLINE
105
105
float fmodf (float x, float y) { return __devicelib_fmodf (x, y); }
106
106
107
- DEVICE_EXTERN_C
107
+ DEVICE_EXTERN_C_INLINE
108
108
float remainderf (float x, float y) { return __devicelib_remainderf (x, y); }
109
109
110
- DEVICE_EXTERN_C
110
+ DEVICE_EXTERN_C_INLINE
111
111
float remquof (float x, float y, int *q) { return __devicelib_remquof (x, y, q); }
112
112
113
- DEVICE_EXTERN_C
113
+ DEVICE_EXTERN_C_INLINE
114
114
float nextafterf (float x, float y) { return __devicelib_nextafterf (x, y); }
115
115
116
- DEVICE_EXTERN_C
116
+ DEVICE_EXTERN_C_INLINE
117
117
float fdimf (float x, float y) { return __devicelib_fdimf (x, y); }
118
118
119
- DEVICE_EXTERN_C
119
+ DEVICE_EXTERN_C_INLINE
120
120
float fmaf (float x, float y, float z) { return __devicelib_fmaf (x, y, z); }
121
121
122
- DEVICE_EXTERN_C
122
+ DEVICE_EXTERN_C_INLINE
123
123
float sinf (float x) { return __devicelib_sinf (x); }
124
124
125
- DEVICE_EXTERN_C
125
+ DEVICE_EXTERN_C_INLINE
126
126
float cosf (float x) { return __devicelib_cosf (x); }
127
127
128
- DEVICE_EXTERN_C
128
+ DEVICE_EXTERN_C_INLINE
129
129
float tanf (float x) { return __devicelib_tanf (x); }
130
130
131
- DEVICE_EXTERN_C
131
+ DEVICE_EXTERN_C_INLINE
132
132
float powf (float x, float y) { return __devicelib_powf (x, y); }
133
133
134
- DEVICE_EXTERN_C
134
+ DEVICE_EXTERN_C_INLINE
135
135
float acosf (float x) { return __devicelib_acosf (x); }
136
136
137
- DEVICE_EXTERN_C
137
+ DEVICE_EXTERN_C_INLINE
138
138
float asinf (float x) { return __devicelib_asinf (x); }
139
139
140
- DEVICE_EXTERN_C
140
+ DEVICE_EXTERN_C_INLINE
141
141
float atanf (float x) { return __devicelib_atanf (x); }
142
142
143
- DEVICE_EXTERN_C
143
+ DEVICE_EXTERN_C_INLINE
144
144
float atan2f (float x, float y) { return __devicelib_atan2f (x, y); }
145
145
146
- DEVICE_EXTERN_C
146
+ DEVICE_EXTERN_C_INLINE
147
147
float coshf (float x) { return __devicelib_coshf (x); }
148
148
149
- DEVICE_EXTERN_C
149
+ DEVICE_EXTERN_C_INLINE
150
150
float sinhf (float x) { return __devicelib_sinhf (x); }
151
151
152
- DEVICE_EXTERN_C
152
+ DEVICE_EXTERN_C_INLINE
153
153
float tanhf (float x) { return __devicelib_tanhf (x); }
154
154
155
- DEVICE_EXTERN_C
155
+ DEVICE_EXTERN_C_INLINE
156
156
float acoshf (float x) { return __devicelib_acoshf (x); }
157
157
158
- DEVICE_EXTERN_C
158
+ DEVICE_EXTERN_C_INLINE
159
159
float asinhf (float x) { return __devicelib_asinhf (x); }
160
160
161
- DEVICE_EXTERN_C
161
+ DEVICE_EXTERN_C_INLINE
162
162
float atanhf (float x) { return __devicelib_atanhf (x); }
163
163
164
164
#if defined(_WIN32)
@@ -186,7 +186,7 @@ union _Dconst { // pun float types as integer array
186
186
{ 0 , w0 }
187
187
188
188
#define _FXbig (float )((NBITS + 1 ) * 347L / 1000 )
189
- DEVICE_EXTERN_C
189
+ DEVICE_EXTERN_C_INLINE
190
190
short _FDtest (float *px) { // categorize *px
191
191
_Fval *ps = (_Fval *)(char *)px;
192
192
short ret = 0 ;
@@ -201,7 +201,7 @@ short _FDtest(float *px) { // categorize *px
201
201
202
202
// Returns _FP_LT, _FP_GT or _FP_EQ based on the ordering
203
203
// relationship between x and y. '0' means unordered.
204
- DEVICE_EXTERN_C
204
+ DEVICE_EXTERN_C_INLINE
205
205
int _fdpcomp (float x, float y) {
206
206
int res = 0 ;
207
207
if (_FDtest (&x) == _NANCODE || _FDtest (&y) == _NANCODE) {
@@ -220,11 +220,11 @@ int _fdpcomp(float x, float y) {
220
220
}
221
221
222
222
// Returns 0, if the sign bit is not set, and non-zero otherwise.
223
- DEVICE_EXTERN_C
223
+ DEVICE_EXTERN_C_INLINE
224
224
int _fdsign (float x) { return FSIGN (x); }
225
225
226
226
// fpclassify() equivalent with a pointer argument.
227
- DEVICE_EXTERN_C
227
+ DEVICE_EXTERN_C_INLINE
228
228
short _fdtest (float *px) {
229
229
switch (_FDtest (px)) {
230
230
case _DENORM:
@@ -240,7 +240,7 @@ short _fdtest(float *px) {
240
240
return FP_ZERO;
241
241
}
242
242
243
- DEVICE_EXTERN_C
243
+ DEVICE_EXTERN_C_INLINE
244
244
short _FDnorm (_Fval *ps) { // normalize float fraction
245
245
short xchar;
246
246
unsigned short sign = (unsigned short )(ps->_Sh [_F0] & _FSIGN);
@@ -267,7 +267,7 @@ short _FDnorm(_Fval *ps) { // normalize float fraction
267
267
return xchar;
268
268
}
269
269
270
- DEVICE_EXTERN_C
270
+ DEVICE_EXTERN_C_INLINE
271
271
short _FDscale (float *px, long lexp) { // scale *px by 2^xexp with checking
272
272
_Dconst _FInf = {INIT (_FMAX << _FOFF)};
273
273
_Fval *ps = (_Fval *)(char *)px;
@@ -327,7 +327,7 @@ short _FDscale(float *px, long lexp) { // scale *px by 2^xexp with checking
327
327
return ret;
328
328
}
329
329
330
- DEVICE_EXTERN_C
330
+ DEVICE_EXTERN_C_INLINE
331
331
short _FExp (float *px, float y,
332
332
short eoff) { // compute y * e^(*px), (*px) finite, |y| not huge
333
333
static const float hugexp = FHUGE_EXP;
@@ -364,7 +364,7 @@ short _FExp(float *px, float y,
364
364
return ret;
365
365
}
366
366
367
- DEVICE_EXTERN_C
367
+ DEVICE_EXTERN_C_INLINE
368
368
float _FCosh (float x, float y) { // compute y * cosh(x), |y| <= 1
369
369
switch (_FDtest (&x)) { // test for special codes
370
370
case _NANCODE:
@@ -388,7 +388,7 @@ float _FCosh(float x, float y) { // compute y * cosh(x), |y| <= 1
388
388
}
389
389
}
390
390
391
- DEVICE_EXTERN_C
391
+ DEVICE_EXTERN_C_INLINE
392
392
float _FSinh (float x, float y) { // compute y * sinh(x), |y| <= 1
393
393
_Dconst _FRteps = {INIT ((_FBIAS - NBITS / 2 ) << _FOFF)};
394
394
static const float p[] = {0 .00020400F , 0 .00832983F , 0 .16666737F , 0 .99999998F };
0 commit comments