mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-22 00:32:35 +08:00
31 lines
1.1 KiB
Diff
31 lines
1.1 KiB
Diff
|
diff --git a/Eigen/src/Core/arch/CUDA/Half.h b/Eigen/src/Core/arch/CUDA/Half.h
|
||
|
index 755e620..85e445b 100644
|
||
|
--- a/Eigen/src/Core/arch/CUDA/Half.h
|
||
|
+++ b/Eigen/src/Core/arch/CUDA/Half.h
|
||
|
@@ -209,7 +209,11 @@ namespace half_impl {
|
||
|
// conversion steps back and forth.
|
||
|
|
||
|
EIGEN_STRONG_INLINE __device__ half operator + (const half& a, const half& b) {
|
||
|
+#if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
|
||
|
+ return __hadd(::__half(a), ::__half(b));
|
||
|
+#else
|
||
|
return __hadd(a, b);
|
||
|
+#endif
|
||
|
}
|
||
|
EIGEN_STRONG_INLINE __device__ half operator * (const half& a, const half& b) {
|
||
|
return __hmul(a, b);
|
||
|
@@ -218,9 +222,13 @@ EIGEN_STRONG_INLINE __device__ half operator - (const half& a, const half& b) {
|
||
|
return __hsub(a, b);
|
||
|
}
|
||
|
EIGEN_STRONG_INLINE __device__ half operator / (const half& a, const half& b) {
|
||
|
+#if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
|
||
|
+ return __hdiv(a, b);
|
||
|
+#else
|
||
|
float num = __half2float(a);
|
||
|
float denom = __half2float(b);
|
||
|
return __float2half(num / denom);
|
||
|
+#endif
|
||
|
}
|
||
|
EIGEN_STRONG_INLINE __device__ half operator - (const half& a) {
|
||
|
return __hneg(a);
|