forked from OSchip/llvm-project
[OpenMP][bugfix] Add missing math functions variants for log and abs.
Summary: When including the random header in C++, some of the math functions it relies on are not present in the CUDA headers. We include this variants in this case. Reviewers: jdoerfert, hfinkel, tra, caomhin Reviewed By: tra Subscribers: efriedma, guansong, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D62046 llvm-svn: 361066
This commit is contained in:
parent
bbfd8d1885
commit
144291e14c
|
@ -51,6 +51,11 @@ __DEVICE__ long abs(long __n) { return ::labs(__n); }
|
|||
__DEVICE__ float abs(float __x) { return ::fabsf(__x); }
|
||||
__DEVICE__ double abs(double __x) { return ::fabs(__x); }
|
||||
#endif
|
||||
// TODO: remove once variat is supported.
|
||||
#if defined(_OPENMP) && defined(__cplusplus)
|
||||
__DEVICE__ const float abs(const float __x) { return ::fabsf((float)__x); }
|
||||
__DEVICE__ const double abs(const double __x) { return ::fabs((double)__x); }
|
||||
#endif
|
||||
__DEVICE__ float acos(float __x) { return ::acosf(__x); }
|
||||
__DEVICE__ float asin(float __x) { return ::asinf(__x); }
|
||||
__DEVICE__ float atan(float __x) { return ::atanf(__x); }
|
||||
|
|
|
@ -42,6 +42,14 @@ __DEVICE__ long long abs(long long);
|
|||
__DEVICE__ double abs(double);
|
||||
__DEVICE__ float abs(float);
|
||||
#endif
|
||||
// While providing the CUDA declarations and definitions for math functions,
|
||||
// we may manually define additional functions.
|
||||
// TODO: Once variant is supported the additional functions will have
|
||||
// to be removed.
|
||||
#if defined(_OPENMP) && defined(__cplusplus)
|
||||
__DEVICE__ const double abs(const double);
|
||||
__DEVICE__ const float abs(const float);
|
||||
#endif
|
||||
__DEVICE__ int abs(int) __NOEXCEPT;
|
||||
__DEVICE__ double acos(double);
|
||||
__DEVICE__ float acos(float);
|
||||
|
@ -144,6 +152,9 @@ __DEVICE__ double log2(double);
|
|||
__DEVICE__ float log2(float);
|
||||
__DEVICE__ double logb(double);
|
||||
__DEVICE__ float logb(float);
|
||||
#if defined(_OPENMP) && defined(__cplusplus)
|
||||
__DEVICE__ long double log(long double);
|
||||
#endif
|
||||
__DEVICE__ double log(double);
|
||||
__DEVICE__ float log(float);
|
||||
__DEVICE__ long lrint(double);
|
||||
|
|
Loading…
Reference in New Issue