Skip to content

[SYCL][libdevice] Solve inline attr conflict when building libdevice #6007

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 56 additions & 56 deletions libdevice/cmath_wrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,31 @@

#ifdef __SPIR__

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
int abs(int x) { return __devicelib_abs(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
long int labs(long int x) { return __devicelib_labs(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
long long int llabs(long long int x) { return __devicelib_llabs(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
div_t div(int x, int y) { return __devicelib_div(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
ldiv_t ldiv(long x, long y) { return __devicelib_ldiv(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
lldiv_t lldiv(long long x, long long y) { return __devicelib_lldiv(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float scalbnf(float x, int n) { return __devicelib_scalbnf(x, n); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float logf(float x) { return __devicelib_logf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float expf(float x) { return __devicelib_expf(x); }
// On Windows, the math.h includes wrapper definition for functions:
// frexpf, ldexpf, hypotf, so we can't provide these 3 functions in
Expand All @@ -44,121 +44,121 @@ float expf(float x) { return __devicelib_expf(x); }
// frexp and ldexp. frexpf and ldexpf can only be used on platforms
// with fp64 support currently.
#ifndef _WIN32
DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float frexpf(float x, int *exp) { return __devicelib_frexpf(x, exp); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float ldexpf(float x, int exp) { return __devicelib_ldexpf(x, exp); }
#endif

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float log10f(float x) { return __devicelib_log10f(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float modff(float x, float *intpart) { return __devicelib_modff(x, intpart); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float exp2f(float x) { return __devicelib_exp2f(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float expm1f(float x) { return __devicelib_expm1f(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
int ilogbf(float x) { return __devicelib_ilogbf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float log1pf(float x) { return __devicelib_log1pf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float log2f(float x) { return __devicelib_log2f(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float logbf(float x) { return __devicelib_logbf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float sqrtf(float x) { return __devicelib_sqrtf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float cbrtf(float x) { return __devicelib_cbrtf(x); }

#ifndef _WIN32
DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float hypotf(float x, float y) { return __devicelib_hypotf(x, y); }
#else
DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float _hypotf(float x, float y) { return __devicelib_hypotf(x, y); }
#endif

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float erff(float x) { return __devicelib_erff(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float erfcf(float x) { return __devicelib_erfcf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float tgammaf(float x) { return __devicelib_tgammaf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float lgammaf(float x) { return __devicelib_lgammaf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float fmodf(float x, float y) { return __devicelib_fmodf(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float remainderf(float x, float y) { return __devicelib_remainderf(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float remquof(float x, float y, int *q) { return __devicelib_remquof(x, y, q); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float nextafterf(float x, float y) { return __devicelib_nextafterf(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float fdimf(float x, float y) { return __devicelib_fdimf(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float fmaf(float x, float y, float z) { return __devicelib_fmaf(x, y, z); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float sinf(float x) { return __devicelib_sinf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float cosf(float x) { return __devicelib_cosf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float tanf(float x) { return __devicelib_tanf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float powf(float x, float y) { return __devicelib_powf(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float acosf(float x) { return __devicelib_acosf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float asinf(float x) { return __devicelib_asinf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float atanf(float x) { return __devicelib_atanf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float atan2f(float x, float y) { return __devicelib_atan2f(x, y); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float coshf(float x) { return __devicelib_coshf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float sinhf(float x) { return __devicelib_sinhf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float tanhf(float x) { return __devicelib_tanhf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float acoshf(float x) { return __devicelib_acoshf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float asinhf(float x) { return __devicelib_asinhf(x); }

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float atanhf(float x) { return __devicelib_atanhf(x); }

#if defined(_WIN32)
Expand Down Expand Up @@ -186,7 +186,7 @@ union _Dconst { // pun float types as integer array
{ 0, w0 }

#define _FXbig (float)((NBITS + 1) * 347L / 1000)
DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
short _FDtest(float *px) { // categorize *px
_Fval *ps = (_Fval *)(char *)px;
short ret = 0;
Expand All @@ -201,7 +201,7 @@ short _FDtest(float *px) { // categorize *px

// Returns _FP_LT, _FP_GT or _FP_EQ based on the ordering
// relationship between x and y. '0' means unordered.
DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
int _fdpcomp(float x, float y) {
int res = 0;
if (_FDtest(&x) == _NANCODE || _FDtest(&y) == _NANCODE) {
Expand All @@ -220,11 +220,11 @@ int _fdpcomp(float x, float y) {
}

// Returns 0, if the sign bit is not set, and non-zero otherwise.
DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
int _fdsign(float x) { return FSIGN(x); }

// fpclassify() equivalent with a pointer argument.
DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
short _fdtest(float *px) {
switch (_FDtest(px)) {
case _DENORM:
Expand All @@ -240,7 +240,7 @@ short _fdtest(float *px) {
return FP_ZERO;
}

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
short _FDnorm(_Fval *ps) { // normalize float fraction
short xchar;
unsigned short sign = (unsigned short)(ps->_Sh[_F0] & _FSIGN);
Expand All @@ -267,7 +267,7 @@ short _FDnorm(_Fval *ps) { // normalize float fraction
return xchar;
}

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
short _FDscale(float *px, long lexp) { // scale *px by 2^xexp with checking
_Dconst _FInf = {INIT(_FMAX << _FOFF)};
_Fval *ps = (_Fval *)(char *)px;
Expand Down Expand Up @@ -327,7 +327,7 @@ short _FDscale(float *px, long lexp) { // scale *px by 2^xexp with checking
return ret;
}

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
short _FExp(float *px, float y,
short eoff) { // compute y * e^(*px), (*px) finite, |y| not huge
static const float hugexp = FHUGE_EXP;
Expand Down Expand Up @@ -364,7 +364,7 @@ short _FExp(float *px, float y,
return ret;
}

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float _FCosh(float x, float y) { // compute y * cosh(x), |y| <= 1
switch (_FDtest(&x)) { // test for special codes
case _NANCODE:
Expand All @@ -388,7 +388,7 @@ float _FCosh(float x, float y) { // compute y * cosh(x), |y| <= 1
}
}

DEVICE_EXTERN_C
DEVICE_EXTERN_C_INLINE
float _FSinh(float x, float y) { // compute y * sinh(x), |y| <= 1
_Dconst _FRteps = {INIT((_FBIAS - NBITS / 2) << _FOFF)};
static const float p[] = {0.00020400F, 0.00832983F, 0.16666737F, 0.99999998F};
Expand Down
Loading