SWDEV-407139 - Update __hipMapVector

Update __hipMapVector to fix surface test
failure

Change-Id: I6179d9f3b2ddd4e42b9a6f7f3912322cfca22cff
This commit is contained in:
taosang2
2023-06-26 23:56:05 -04:00
parent bceec9d9a2
commit 7bea186750
@@ -1061,32 +1061,47 @@ template <typename __T> struct is_scalar : public integral_constant<bool, __is_s
* Map HIP_vector_type<U, rankU> to HIP_vector_type<T, rankT>
*/
template <typename T, unsigned int rankT, typename U, unsigned int rankU>
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 1 && rankU >= rankT),
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 1 && rankU >= 1),
const HIP_vector_type<T, rankT>>::type
__hipMapVector(const HIP_vector_type<U, rankU>& u) {
return HIP_vector_type<T, rankT>(static_cast<T>(u.x));
};
template <typename T, unsigned int rankT, typename U, unsigned int rankU>
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 2 && rankU >= rankT),
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 2 && rankU == 1),
const HIP_vector_type<T, rankT>>::type
__hipMapVector(const HIP_vector_type<U, rankU>& u) {
return HIP_vector_type<T, rankT>(static_cast<T>(u.x), static_cast<T>(u.y));
return HIP_vector_type<T, rankT> (static_cast<T>(u.x), static_cast<T>(0));
};
template <typename T, unsigned int rankT, typename U, unsigned int rankU>
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 3 && rankU >= rankT),
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 2 && rankU >= 2),
const HIP_vector_type<T, rankT>>::type
__hipMapVector(const HIP_vector_type<U, rankU>& u) {
return HIP_vector_type<T, rankT>(static_cast<T>(u.x), static_cast<T>(u.y),
static_cast<T>(u.z));
return HIP_vector_type<T, rankT> (static_cast<T>(u.x), static_cast<T>(u.y));
};
template <typename T, unsigned int rankT, typename U, unsigned int rankU>
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 4 && rankU >= rankT),
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 4 && rankU == 1),
const HIP_vector_type<T, rankT>>::type
__hipMapVector(const HIP_vector_type<U, rankU>& u) {
return HIP_vector_type<T, rankT> (static_cast<T>(u.x), static_cast<T>(0),
static_cast<T>(0), static_cast<T>(0));
};
template <typename T, unsigned int rankT, typename U, unsigned int rankU>
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 4 && rankU == 2),
const HIP_vector_type<T, rankT>>::type
__hipMapVector(const HIP_vector_type<U, rankU>& u) {
return HIP_vector_type<T, rankT>(static_cast<T>(u.x), static_cast<T>(u.y),
static_cast<T>(0), static_cast<T>(0));
};
template <typename T, unsigned int rankT, typename U, unsigned int rankU>
__forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 4 && rankU == 4),
const HIP_vector_type<T, rankT>>::type
__hipMapVector(const HIP_vector_type<U, rankU>& u) {
return HIP_vector_type<T, rankT> (static_cast<T>(u.x), static_cast<T>(u.y),
static_cast<T>(u.z), static_cast<T>(u.w));
};