From f78d6af7319aa676a0f9f6cbb982f21c96e9aac5 Mon Sep 17 00:00:00 2001 From: Michael Liao Date: Thu, 7 Jan 2021 05:24:12 -0500 Subject: [PATCH] [hip] Enable HIP compilation with ` on MSVC. - MSVC has different `` implementation which calls into functions declared in ``. Provide their device-side implementation to enable `` compilation on HIP Windows. Differential Revision: https://reviews.llvm.org/D93638 --- clang/lib/Headers/__clang_hip_cmath.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/clang/lib/Headers/__clang_hip_cmath.h b/clang/lib/Headers/__clang_hip_cmath.h index 3a70258..128d64e 100644 --- a/clang/lib/Headers/__clang_hip_cmath.h +++ b/clang/lib/Headers/__clang_hip_cmath.h @@ -624,6 +624,34 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif +// Define device-side math functions from on MSVC. +#if defined(_MSC_VER) +#if defined(__cplusplus) +extern "C" { +#endif // defined(__cplusplus) +__DEVICE__ __attribute__((overloadable)) double _Cosh(double x, double y) { + return cosh(x) * y; +} +__DEVICE__ __attribute__((overloadable)) float _FCosh(float x, float y) { + return coshf(x) * y; +} +__DEVICE__ __attribute__((overloadable)) short _Dtest(double *p) { + return fpclassify(*p); +} +__DEVICE__ __attribute__((overloadable)) short _FDtest(float *p) { + return fpclassify(*p); +} +__DEVICE__ __attribute__((overloadable)) double _Sinh(double x, double y) { + return sinh(x) * y; +} +__DEVICE__ __attribute__((overloadable)) float _FSinh(float x, float y) { + return sinhf(x) * y; +} +#if defined(__cplusplus) +} +#endif // defined(__cplusplus) +#endif // defined(_MSC_VER) + #pragma pop_macro("__DEVICE__") #endif // __CLANG_HIP_CMATH_H__ -- 2.7.4