diff --git a/sycl/include/sycl/builtins.hpp b/sycl/include/sycl/builtins.hpp index 8969bfddebda3..45a2e12cf1aa5 100644 --- a/sycl/include/sycl/builtins.hpp +++ b/sycl/include/sycl/builtins.hpp @@ -15,13 +15,13 @@ #ifdef __SYCL_DEVICE_ONLY__ extern "C" { -extern __DPCPP_SYCL_EXTERNAL void *memcpy(void *dest, const void *src, - size_t n); -extern __DPCPP_SYCL_EXTERNAL void *memset(void *dest, int c, size_t n); -extern __DPCPP_SYCL_EXTERNAL int memcmp(const void *s1, const void *s2, - size_t n); -extern __DPCPP_SYCL_EXTERNAL int rand(); -extern __DPCPP_SYCL_EXTERNAL void srand(unsigned int seed); +extern __DPCPP_SYCL_EXTERNAL_LIBC void *memcpy(void *dest, const void *src, + size_t n); +extern __DPCPP_SYCL_EXTERNAL_LIBC void *memset(void *dest, int c, size_t n); +extern __DPCPP_SYCL_EXTERNAL_LIBC int memcmp(const void *s1, const void *s2, + size_t n); +extern __DPCPP_SYCL_EXTERNAL_LIBC int rand(); +extern __DPCPP_SYCL_EXTERNAL_LIBC void srand(unsigned int seed); extern __DPCPP_SYCL_EXTERNAL long long int __imf_llmax(long long int x, long long int y); extern __DPCPP_SYCL_EXTERNAL long long int __imf_llmin(long long int x, @@ -634,15 +634,15 @@ extern __DPCPP_SYCL_EXTERNAL int __imf_vimin_s32_relu(int x, int y); } #ifdef __GLIBC__ namespace std { -extern __DPCPP_SYCL_EXTERNAL void +extern __DPCPP_SYCL_EXTERNAL_LIBC void __glibcxx_assert_fail(const char *file, int line, const char *func, const char *cond) noexcept; } // namespace std extern "C" { -extern __DPCPP_SYCL_EXTERNAL void __assert_fail(const char *expr, - const char *file, - unsigned int line, - const char *func); +extern __DPCPP_SYCL_EXTERNAL_LIBC void __assert_fail(const char *expr, + const char *file, + unsigned int line, + const char *func); } #elif defined(_WIN32) extern "C" { @@ -652,8 +652,8 @@ extern "C" { // APIs used by STL, such as _Cosh, are undocumented, even though // they are open-sourced. Recognizing them as builtins is not // straightforward currently. -extern __DPCPP_SYCL_EXTERNAL void _wassert(const wchar_t *wexpr, - const wchar_t *wfile, unsigned line); +extern __DPCPP_SYCL_EXTERNAL_LIBC void +_wassert(const wchar_t *wexpr, const wchar_t *wfile, unsigned line); } #endif #endif // __SYCL_DEVICE_ONLY__ diff --git a/sycl/include/sycl/detail/defines_elementary.hpp b/sycl/include/sycl/detail/defines_elementary.hpp index 17107c9216b38..f64e21516d837 100644 --- a/sycl/include/sycl/detail/defines_elementary.hpp +++ b/sycl/include/sycl/detail/defines_elementary.hpp @@ -35,6 +35,10 @@ #endif #endif +#ifndef __DPCPP_SYCL_EXTERNAL_LIBC +#define __DPCPP_SYCL_EXTERNAL_LIBC __DPCPP_SYCL_EXTERNAL +#endif + // Helper for enabling empty-base optimizations on MSVC. // TODO: Remove this when MSVC has this optimization enabled by default. #ifdef _MSC_VER diff --git a/sycl/include/sycl/stl_wrappers/cmath b/sycl/include/sycl/stl_wrappers/cmath index c25eadf6394a1..0a2a576aa1aac 100644 --- a/sycl/include/sycl/stl_wrappers/cmath +++ b/sycl/include/sycl/stl_wrappers/cmath @@ -20,154 +20,171 @@ #ifdef __SYCL_DEVICE_ONLY__ extern "C" { -extern __DPCPP_SYCL_EXTERNAL int abs(int x); -extern __DPCPP_SYCL_EXTERNAL long int labs(long int x); -extern __DPCPP_SYCL_EXTERNAL long long int llabs(long long int x); +extern __DPCPP_SYCL_EXTERNAL_LIBC int abs(int x); +extern __DPCPP_SYCL_EXTERNAL_LIBC long int labs(long int x); +extern __DPCPP_SYCL_EXTERNAL_LIBC long long int llabs(long long int x); -extern __DPCPP_SYCL_EXTERNAL div_t div(int x, int y); -extern __DPCPP_SYCL_EXTERNAL ldiv_t ldiv(long int x, long int y); -extern __DPCPP_SYCL_EXTERNAL lldiv_t lldiv(long long int x, long long int y); -extern __DPCPP_SYCL_EXTERNAL float scalbnf(float x, int n); -extern __DPCPP_SYCL_EXTERNAL double scalbn(double x, int n); -extern __DPCPP_SYCL_EXTERNAL float logf(float x); -extern __DPCPP_SYCL_EXTERNAL double log(double x); -extern __DPCPP_SYCL_EXTERNAL float expf(float x); -extern __DPCPP_SYCL_EXTERNAL double exp(double x); -extern __DPCPP_SYCL_EXTERNAL float log10f(float x); -extern __DPCPP_SYCL_EXTERNAL double log10(double x); -extern __DPCPP_SYCL_EXTERNAL float modff(float x, float *intpart); -extern __DPCPP_SYCL_EXTERNAL double modf(double x, double *intpart); -extern __DPCPP_SYCL_EXTERNAL float exp2f(float x); -extern __DPCPP_SYCL_EXTERNAL double exp2(double x); -extern __DPCPP_SYCL_EXTERNAL float expm1f(float x); -extern __DPCPP_SYCL_EXTERNAL double expm1(double x); -extern __DPCPP_SYCL_EXTERNAL int ilogbf(float x); -extern __DPCPP_SYCL_EXTERNAL int ilogb(double x); -extern __DPCPP_SYCL_EXTERNAL float log1pf(float x); -extern __DPCPP_SYCL_EXTERNAL double log1p(double x); -extern __DPCPP_SYCL_EXTERNAL float log2f(float x); -extern __DPCPP_SYCL_EXTERNAL double log2(double x); -extern __DPCPP_SYCL_EXTERNAL float logbf(float x); -extern __DPCPP_SYCL_EXTERNAL double logb(double x); -extern __DPCPP_SYCL_EXTERNAL float sqrtf(float x); -extern __DPCPP_SYCL_EXTERNAL double sqrt(double x); -extern __DPCPP_SYCL_EXTERNAL float cbrtf(float x); -extern __DPCPP_SYCL_EXTERNAL double cbrt(double x); -extern __DPCPP_SYCL_EXTERNAL float erff(float x); -extern __DPCPP_SYCL_EXTERNAL double erf(double x); -extern __DPCPP_SYCL_EXTERNAL float erfcf(float x); -extern __DPCPP_SYCL_EXTERNAL double erfc(double x); -extern __DPCPP_SYCL_EXTERNAL float tgammaf(float x); -extern __DPCPP_SYCL_EXTERNAL double tgamma(double x); -extern __DPCPP_SYCL_EXTERNAL float lgammaf(float x); -extern __DPCPP_SYCL_EXTERNAL double lgamma(double x); -extern __DPCPP_SYCL_EXTERNAL float fmodf(float x, float y); -extern __DPCPP_SYCL_EXTERNAL double fmod(double x, double y); -extern __DPCPP_SYCL_EXTERNAL float remainderf(float x, float y); -extern __DPCPP_SYCL_EXTERNAL double remainder(double x, double y); -extern __DPCPP_SYCL_EXTERNAL float remquof(float x, float y, int *q); -extern __DPCPP_SYCL_EXTERNAL double remquo(double x, double y, int *q); -extern __DPCPP_SYCL_EXTERNAL float nextafterf(float x, float y); -extern __DPCPP_SYCL_EXTERNAL double nextafter(double x, double y); -extern __DPCPP_SYCL_EXTERNAL float fdimf(float x, float y); -extern __DPCPP_SYCL_EXTERNAL double fdim(double x, double y); -extern __DPCPP_SYCL_EXTERNAL float fmaf(float x, float y, float z); -extern __DPCPP_SYCL_EXTERNAL double fma(double x, double y, double z); -extern __DPCPP_SYCL_EXTERNAL float sinf(float x); -extern __DPCPP_SYCL_EXTERNAL double sin(double x); -extern __DPCPP_SYCL_EXTERNAL float cosf(float x); -extern __DPCPP_SYCL_EXTERNAL double cos(double x); -extern __DPCPP_SYCL_EXTERNAL float tanf(float x); -extern __DPCPP_SYCL_EXTERNAL double tan(double x); -extern __DPCPP_SYCL_EXTERNAL float asinf(float x); -extern __DPCPP_SYCL_EXTERNAL double asin(double x); -extern __DPCPP_SYCL_EXTERNAL float acosf(float x); -extern __DPCPP_SYCL_EXTERNAL double acos(double x); -extern __DPCPP_SYCL_EXTERNAL float atanf(float x); -extern __DPCPP_SYCL_EXTERNAL double atan(double x); -extern __DPCPP_SYCL_EXTERNAL float powf(float x, float y); -extern __DPCPP_SYCL_EXTERNAL double pow(double x, double y); -extern __DPCPP_SYCL_EXTERNAL float atan2f(float x, float y); -extern __DPCPP_SYCL_EXTERNAL double atan2(double x, double y); - -extern __DPCPP_SYCL_EXTERNAL float sinhf(float x); -extern __DPCPP_SYCL_EXTERNAL double sinh(double x); -extern __DPCPP_SYCL_EXTERNAL float coshf(float x); -extern __DPCPP_SYCL_EXTERNAL double cosh(double x); -extern __DPCPP_SYCL_EXTERNAL float tanhf(float x); -extern __DPCPP_SYCL_EXTERNAL double tanh(double x); -extern __DPCPP_SYCL_EXTERNAL float asinhf(float x); -extern __DPCPP_SYCL_EXTERNAL double asinh(double x); -extern __DPCPP_SYCL_EXTERNAL float acoshf(float x); -extern __DPCPP_SYCL_EXTERNAL double acosh(double x); -extern __DPCPP_SYCL_EXTERNAL float atanhf(float x); -extern __DPCPP_SYCL_EXTERNAL double atanh(double x); -extern __DPCPP_SYCL_EXTERNAL double frexp(double x, int *exp); -extern __DPCPP_SYCL_EXTERNAL double ldexp(double x, int exp); -extern __DPCPP_SYCL_EXTERNAL double hypot(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC div_t div(int x, int y); +extern __DPCPP_SYCL_EXTERNAL_LIBC ldiv_t ldiv(long int x, long int y); +extern __DPCPP_SYCL_EXTERNAL_LIBC lldiv_t lldiv(long long int x, + long long int y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float scalbnf(float x, int n); +extern __DPCPP_SYCL_EXTERNAL_LIBC double scalbn(double x, int n); +extern __DPCPP_SYCL_EXTERNAL_LIBC float logf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double log(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float expf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double exp(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float log10f(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double log10(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float modff(float x, float *intpart); +extern __DPCPP_SYCL_EXTERNAL_LIBC double modf(double x, double *intpart); +extern __DPCPP_SYCL_EXTERNAL_LIBC float exp2f(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double exp2(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float expm1f(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double expm1(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC int ilogbf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC int ilogb(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float log1pf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double log1p(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float log2f(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double log2(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float logbf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double logb(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float sqrtf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double sqrt(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float cbrtf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double cbrt(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float erff(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double erf(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float erfcf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double erfc(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float tgammaf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double tgamma(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float lgammaf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double lgamma(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float fmodf(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC double fmod(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float remainderf(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC double remainder(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float remquof(float x, float y, int *q); +extern __DPCPP_SYCL_EXTERNAL_LIBC double remquo(double x, double y, int *q); +extern __DPCPP_SYCL_EXTERNAL_LIBC float nextafterf(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC double nextafter(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float fdimf(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC double fdim(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float fmaf(float x, float y, float z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double fma(double x, double y, double z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float sinf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double sin(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float cosf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double cos(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float tanf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double tan(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float asinf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double asin(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float acosf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double acos(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float atanf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double atan(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float powf(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC double pow(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float atan2f(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC double atan2(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float sinhf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double sinh(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float coshf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double cosh(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float tanhf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double tanh(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float asinhf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double asinh(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float acoshf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double acosh(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC float atanhf(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double atanh(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC double frexp(double x, int *exp); +extern __DPCPP_SYCL_EXTERNAL_LIBC double ldexp(double x, int exp); +extern __DPCPP_SYCL_EXTERNAL_LIBC double hypot(double x, double y); } #ifdef __GLIBC__ extern "C" { -extern __DPCPP_SYCL_EXTERNAL float frexpf(float x, int *exp); -extern __DPCPP_SYCL_EXTERNAL float ldexpf(float x, int exp); -extern __DPCPP_SYCL_EXTERNAL float hypotf(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float frexpf(float x, int *exp); +extern __DPCPP_SYCL_EXTERNAL_LIBC float ldexpf(float x, int exp); +extern __DPCPP_SYCL_EXTERNAL_LIBC float hypotf(float x, float y); // MS UCRT supports most of the C standard library but is // an exception. -extern __DPCPP_SYCL_EXTERNAL float cimagf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double cimag(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float crealf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double creal(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float cargf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double carg(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float cabsf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double cabs(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ cprojf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ cproj(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ cexpf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ cexp(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ clogf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ clog(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ cpowf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ cpow(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ csqrtf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ csqrt(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ csinhf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ csinh(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ ccoshf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ ccosh(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ ctanhf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ ctanh(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ csinf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ csin(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ ccosf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ ccos(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ ctanf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ ctan(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ cacosf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ cacos(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ cacoshf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ cacosh(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ casinf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ casin(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ casinhf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ casinh(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ catanf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ catan(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ catanhf(float __complex__ z); -extern __DPCPP_SYCL_EXTERNAL double __complex__ catanh(double __complex__ z); -extern __DPCPP_SYCL_EXTERNAL float __complex__ cpolarf(float rho, float theta); -extern __DPCPP_SYCL_EXTERNAL double __complex__ cpolar(double rho, - double theta); -extern __DPCPP_SYCL_EXTERNAL float __complex__ __mulsc3(float a, float b, - float c, float d); -extern __DPCPP_SYCL_EXTERNAL double __complex__ __muldc3(double a, double b, - double c, double d); -extern __DPCPP_SYCL_EXTERNAL float __complex__ __divsc3(float a, float b, - float c, float d); -extern __DPCPP_SYCL_EXTERNAL double __complex__ __divdc3(float a, float b, - float c, float d); +extern __DPCPP_SYCL_EXTERNAL_LIBC float cimagf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double cimag(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float crealf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double creal(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float cargf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double carg(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float cabsf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double cabs(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ cprojf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ cproj( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ cexpf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ cexp(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ clogf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ clog(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ cpowf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ cpow(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ csqrtf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ csqrt( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ csinhf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ csinh( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ ccoshf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ ccosh( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ ctanhf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ ctanh( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ csinf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ csin(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ ccosf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ ccos(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ ctanf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ ctan(double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ cacosf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ cacos( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ cacoshf( + float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ cacosh( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ casinf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ casin( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ casinhf( + float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ casinh( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ catanf(float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ catan( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ catanhf( + float __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ catanh( + double __complex__ z); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ cpolarf(float rho, + float theta); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ cpolar(double rho, + double theta); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ __mulsc3(float a, float b, + float c, float d); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ __muldc3(double a, + double b, + double c, + double d); +extern __DPCPP_SYCL_EXTERNAL_LIBC float __complex__ __divsc3(float a, float b, + float c, float d); +extern __DPCPP_SYCL_EXTERNAL_LIBC double __complex__ __divdc3(float a, float b, + float c, float d); } #elif defined(_WIN32) extern "C" { @@ -177,21 +194,21 @@ extern "C" { // APIs used by STL, such as _Cosh, are undocumented, even though // they are open-sourced. Recognizing them as builtins is not // straightforward currently. -extern __DPCPP_SYCL_EXTERNAL double _Cosh(double x, double y); -extern __DPCPP_SYCL_EXTERNAL int _dpcomp(double x, double y); -extern __DPCPP_SYCL_EXTERNAL int _dsign(double x); -extern __DPCPP_SYCL_EXTERNAL short _Dtest(double *px); -extern __DPCPP_SYCL_EXTERNAL short _dtest(double *px); -extern __DPCPP_SYCL_EXTERNAL short _Exp(double *px, double y, short eoff); -extern __DPCPP_SYCL_EXTERNAL float _FCosh(float x, float y); -extern __DPCPP_SYCL_EXTERNAL int _fdpcomp(float x, float y); -extern __DPCPP_SYCL_EXTERNAL int _fdsign(float x); -extern __DPCPP_SYCL_EXTERNAL short _FDtest(float *px); -extern __DPCPP_SYCL_EXTERNAL short _fdtest(float *px); -extern __DPCPP_SYCL_EXTERNAL short _FExp(float *px, float y, short eoff); -extern __DPCPP_SYCL_EXTERNAL float _FSinh(float x, float y); -extern __DPCPP_SYCL_EXTERNAL double _Sinh(double x, double y); -extern __DPCPP_SYCL_EXTERNAL float _hypotf(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC double _Cosh(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC int _dpcomp(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC int _dsign(double x); +extern __DPCPP_SYCL_EXTERNAL_LIBC short _Dtest(double *px); +extern __DPCPP_SYCL_EXTERNAL_LIBC short _dtest(double *px); +extern __DPCPP_SYCL_EXTERNAL_LIBC short _Exp(double *px, double y, short eoff); +extern __DPCPP_SYCL_EXTERNAL_LIBC float _FCosh(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC int _fdpcomp(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC int _fdsign(float x); +extern __DPCPP_SYCL_EXTERNAL_LIBC short _FDtest(float *px); +extern __DPCPP_SYCL_EXTERNAL_LIBC short _fdtest(float *px); +extern __DPCPP_SYCL_EXTERNAL_LIBC short _FExp(float *px, float y, short eoff); +extern __DPCPP_SYCL_EXTERNAL_LIBC float _FSinh(float x, float y); +extern __DPCPP_SYCL_EXTERNAL_LIBC double _Sinh(double x, double y); +extern __DPCPP_SYCL_EXTERNAL_LIBC float _hypotf(float x, float y); } #endif #endif // __SYCL_DEVICE_ONLY__