Use templates for min to prevent ambiguity

[ROCm/clr commit: 5f0838300e]
Tento commit je obsažen v:
Aaron Enye Shi
2018-09-11 17:55:28 +00:00
rodič 3f4348a81c
revize 17d6266150
2 změnil soubory, kde provedl 28 přidání a 10 odebrání
-10
Zobrazit soubor
@@ -199,16 +199,6 @@ __device__ int __hip_move_dpp(int src, int dpp_ctrl, int row_mask, int bank_mask
#endif //__HIP_ARCH_GFX803__ == 1
__device__ inline static int min(int arg1, int arg2) {
return (arg1 < arg2) ? arg1 : arg2;
}
__device__ inline static int max(int arg1, int arg2) {
return (arg1 > arg2) ? arg1 : arg2;
}
__host__ inline static int min(int arg1, int arg2) { return std::min(arg1, arg2); }
__host__ inline static int max(int arg1, int arg2) { return std::max(arg1, arg2); }
#endif // __HCC_OR_HIP_CLANG__
#if defined __HCC__
+28
Zobrazit soubor
@@ -1304,6 +1304,32 @@ float func(float x, int y) \
}
__DEF_FLOAT_FUN2I(scalbn)
#if __HCC__
template<class T>
__DEVICE__ __host__ inline static const T min(T arg1, T arg2) {
return std::min(arg1, arg2);
}
template<class T>
__DEVICE__ __host__ inline static const T max(T arg1, T arg2) {
return std::max(arg1, arg2);
}
#else
__device__ inline static int min(int arg1, int arg2) {
return (arg1 < arg2) ? arg1 : arg2;
}
__device__ inline static int max(int arg1, int arg2) {
return (arg1 > arg2) ? arg1 : arg2;
}
__host__ inline static int min(int arg1, int arg2) {
return std::min(arg1, arg2);
}
__host__ inline static int max(int arg1, int arg2) {
return std::max(arg1, arg2);
}
__DEVICE__
inline
float max(float x, float y) {
@@ -1331,6 +1357,8 @@ double min(double x, double y) {
__HIP_OVERLOAD2(double, max)
__HIP_OVERLOAD2(double, min)
#endif
#pragma pop_macro("__DEF_FLOAT_FUN")
#pragma pop_macro("__DEF_FLOAT_FUN2")
#pragma pop_macro("__DEF_FLOAT_FUN2I")