SWDEV-536813 - Fix HIP_vector_base alignment (#501)
* SWDEV-536813 - Fix HIP_vector_base alignment
Change-Id: I6ee211437768bbdf42186bcd0805b8c2290373da
* Remove alignas for vec3
Change-Id: If93c55327cad38cf179bdd2a89faa725b0a0fc15
* align array to match native_vector
Change-Id: I54fbdba01c19241a4c4945ba4c35ac6d40f17ea6
* update
Change-Id: Ib7de5a7ebde0b2a5c18fe5c70f7329a90807abfb
[ROCm/clr commit: 3faece02dc]
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
38cf648f0e
Коммит
56bee0426a
@@ -41,7 +41,7 @@ THE SOFTWARE.
|
||||
#define __HIP_USE_NATIVE_VECTOR__ 1
|
||||
#define __NATIVE_VECTOR__(n, T) T __attribute__((ext_vector_type(n)))
|
||||
#else
|
||||
#define __NATIVE_VECTOR__(n, T) T[n]
|
||||
#define __NATIVE_VECTOR__(n, T) alignas(n * sizeof(T)) T[n]
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
@@ -55,11 +55,6 @@ template <typename T, unsigned int n> struct HIP_vector_base;
|
||||
template <typename T, unsigned int rank> struct HIP_vector_type;
|
||||
|
||||
namespace hip_impl {
|
||||
inline constexpr unsigned int next_pot(unsigned int x) {
|
||||
// Precondition: x > 1.
|
||||
return 1u << (32u - __builtin_clz(x - 1u));
|
||||
}
|
||||
|
||||
template <typename T, unsigned int n>
|
||||
__attribute__((always_inline)) __HOST_DEVICE__ typename HIP_vector_base<T, n>::Native_vec_*
|
||||
get_native_pointer(HIP_vector_base<T, n>& base_vec) {
|
||||
@@ -116,7 +111,7 @@ get_native_pointer(const HIP_vector_base<T, n>& base_vec) {
|
||||
HIP_vector_base& operator=(const HIP_vector_base&) = default;
|
||||
};
|
||||
|
||||
template <typename T> struct alignas(2 * sizeof(T)) HIP_vector_base<T, 2> {
|
||||
template <typename T> struct alignas(alignof(__NATIVE_VECTOR__(2, T))) HIP_vector_base<T, 2> {
|
||||
using Native_vec_ = __NATIVE_VECTOR__(2, T);
|
||||
|
||||
T x, y;
|
||||
@@ -310,7 +305,7 @@ get_native_pointer(const HIP_vector_base<T, n>& base_vec) {
|
||||
HIP_vector_base& operator=(HIP_vector_base&&) = default;
|
||||
};
|
||||
|
||||
template <typename T> struct alignas(4 * sizeof(T)) HIP_vector_base<T, 4> {
|
||||
template <typename T> struct alignas(__NATIVE_VECTOR__(4, T)) HIP_vector_base<T, 4> {
|
||||
using Native_vec_ = __NATIVE_VECTOR__(4, T);
|
||||
|
||||
T x, y, z, w;
|
||||
|
||||
Ссылка в новой задаче
Block a user