From 3de5e3bba3165f6862882db177cf93f7e0bcdc74 Mon Sep 17 00:00:00 2001 From: taosang2 Date: Mon, 26 Jun 2023 23:56:05 -0400 Subject: [PATCH] SWDEV-407139 - Update __hipMapVector Update __hipMapVector to fix surface test failure Change-Id: I6179d9f3b2ddd4e42b9a6f7f3912322cfca22cff [ROCm/clr commit: 7bea18675069a4ae9a0efd469c33dc79153e86c5] --- .../hip/amd_detail/amd_hip_vector_types.h | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h index 58bc9daf6e..f6ffc1d5ed 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h @@ -1061,32 +1061,47 @@ template struct is_scalar : public integral_constant to HIP_vector_type */ template - __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>::type __hipMapVector(const HIP_vector_type& u) { return HIP_vector_type(static_cast(u.x)); }; template - __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>::type __hipMapVector(const HIP_vector_type& u) { - return HIP_vector_type(static_cast(u.x), static_cast(u.y)); + return HIP_vector_type (static_cast(u.x), static_cast(0)); }; template - __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>::type __hipMapVector(const HIP_vector_type& u) { - return HIP_vector_type(static_cast(u.x), static_cast(u.y), - static_cast(u.z)); + return HIP_vector_type (static_cast(u.x), static_cast(u.y)); }; template - __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>::type + __hipMapVector(const HIP_vector_type& u) { + return HIP_vector_type (static_cast(u.x), static_cast(0), + static_cast(0), static_cast(0)); + }; + + template + __forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 4 && rankU == 2), const HIP_vector_type>::type __hipMapVector(const HIP_vector_type& u) { return HIP_vector_type(static_cast(u.x), static_cast(u.y), + static_cast(0), static_cast(0)); + }; + + template + __forceinline__ __HOST_DEVICE__ typename std::enable_if<(rankT == 4 && rankU == 4), + const HIP_vector_type>::type + __hipMapVector(const HIP_vector_type& u) { + return HIP_vector_type (static_cast(u.x), static_cast(u.y), static_cast(u.z), static_cast(u.w)); };