From 1bce89ca51cee08acda75fb2088c64c97c7f655e Mon Sep 17 00:00:00 2001 From: "Dittakavi, Satyanvesh" Date: Thu, 5 Jun 2025 00:14:56 +0530 Subject: [PATCH] SWDEV-535738 - Use the type traits implementation from __hip_internal namespace in hip headers (#471) --- .../hip/amd_detail/amd_hip_vector_types.h | 15 +++++----- hipamd/include/hip/amd_detail/host_defines.h | 29 +++++++++++++++++++ 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/hipamd/include/hip/amd_detail/amd_hip_vector_types.h b/hipamd/include/hip/amd_detail/amd_hip_vector_types.h index 258c4c5281..9f25024e54 100644 --- a/hipamd/include/hip/amd_detail/amd_hip_vector_types.h +++ b/hipamd/include/hip/amd_detail/amd_hip_vector_types.h @@ -64,8 +64,8 @@ template __attribute__((always_inline)) __HOST_DEVICE__ typename HIP_vector_base::Native_vec_* get_native_pointer(HIP_vector_base& base_vec) { static_assert(sizeof(base_vec) == sizeof(typename HIP_vector_base::Native_vec_)); - static_assert(std::alignment_of>::value == - std::alignment_of::Native_vec_>::value); + static_assert(__hip_internal::alignment_of>::value == + __hip_internal::alignment_of::Native_vec_>::value); return reinterpret_cast::Native_vec_*>(&base_vec.x); }; @@ -73,8 +73,8 @@ template __attribute__((always_inline)) __HOST_DEVICE__ const typename HIP_vector_base::Native_vec_* get_native_pointer(const HIP_vector_base& base_vec) { static_assert(sizeof(base_vec) == sizeof(typename HIP_vector_base::Native_vec_)); - static_assert(std::alignment_of>::value == - std::alignment_of::Native_vec_>::value); + static_assert(__hip_internal::alignment_of>::value == + __hip_internal::alignment_of::Native_vec_>::value); return reinterpret_cast::Native_vec_*>(&base_vec.x); }; } // Namespace hip_impl. @@ -334,14 +334,15 @@ get_native_pointer(const HIP_vector_base& base_vec) { template constexpr inline __HOST_DEVICE__ HIP_vector_type make_vector_type_impl( - T val, std::index_sequence) noexcept { + T val, __hip_internal::index_sequence) noexcept { // Fills vec with vals, and ignores the indices return HIP_vector_type{((void)indices, val)...}; } template constexpr inline __HOST_DEVICE__ HIP_vector_type make_vector_type(T val) { - return make_vector_type_impl(val, std::make_index_sequence{}); + return make_vector_type_impl(val, + __hip_internal::make_index_sequence_value(__hip_internal::make_index_sequence{})); } template @@ -351,7 +352,7 @@ get_native_pointer(const HIP_vector_base& base_vec) { __HOST_DEVICE__ HIP_vector_type() = default; template ::value>::type* = nullptr> + typename __hip_internal::enable_if<__hip_internal::is_convertible::value>::type* = nullptr> __HOST_DEVICE__ explicit constexpr HIP_vector_type(U x_) noexcept : HIP_vector_base{static_cast(x_)} {} template < // TODO: constrain based on type as well. diff --git a/hipamd/include/hip/amd_detail/host_defines.h b/hipamd/include/hip/amd_detail/host_defines.h index e0a3c1f23d..3585a407f3 100644 --- a/hipamd/include/hip/amd_detail/host_defines.h +++ b/hipamd/include/hip/amd_detail/host_defines.h @@ -43,6 +43,7 @@ typedef signed char int8_t; typedef signed short int16_t; typedef signed int int32_t; typedef signed long long int64_t; +typedef unsigned long size_t; template struct integral_constant { static constexpr const _Tp value = __v; @@ -181,6 +182,34 @@ template template struct conditional { using type = T; }; template struct conditional { using type = F; }; + +template +struct alignment_of : integral_constant {}; + +template +struct integer_sequence { + using value_type = T; + static constexpr size_t size() noexcept { return sizeof...(Ints); } +}; + +template +using index_sequence = integer_sequence; + +template +struct make_index_sequence_impl : make_index_sequence_impl {}; + +template +struct make_index_sequence_impl<0, Ints...> { + using type = index_sequence; +}; + +template +using make_index_sequence = typename make_index_sequence_impl::type; + +template +constexpr index_sequence make_index_sequence_value(index_sequence) { + return {}; +} } typedef __hip_internal::uint8_t __hip_uint8_t; typedef __hip_internal::uint16_t __hip_uint16_t;