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 c4736e4743..220f2189fc 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 @@ -1205,900 +1205,720 @@ __MAKE_VECTOR_TYPE__(double, double); /* this is for compatibility with CUDA as CUDA allows accessing vector components in C++ program with MSVC +structs are wrapped with templates so that mangled names match templated implementation */ -typedef union { - struct { - char x; - }; - char data; -} char1; -typedef union { - struct { - char x; - char y; - }; - char data[2]; -} char2; -typedef union { - struct { - char x; - char y; - char z; - char w; - }; - char data[4]; -} char4; -typedef union { - struct { - char x; - char y; - char z; - }; - char data[3]; -} char3; -typedef union { - __m64 data; -} char8; -typedef union { - __m128i data; -} char16; -typedef union { - struct { - unsigned char x; - }; - unsigned char data; -} uchar1; -typedef union { - struct { - unsigned char x; - unsigned char y; - }; - unsigned char data[2]; -} uchar2; -typedef union { - struct { - unsigned char x; - unsigned char y; - unsigned char z; - unsigned char w; - }; - unsigned char data[4]; -} uchar4; -typedef union { - struct { - unsigned char x; - unsigned char y; - unsigned char z; - }; - unsigned char data[3]; -} uchar3; -typedef union { - __m64 data; -} uchar8; -typedef union { - __m128i data; -} uchar16; +template struct HIP_vector_type; -typedef union { - struct { - short x; +// One template per vector size +template +struct HIP_vector_type { + union { + struct { + T x; + }; + T data; }; - short data; -} short1; -typedef union { - struct { - short x; - short y; +}; +template +struct HIP_vector_type { + union { + struct { + T x; + T y; + }; + T data[2]; }; - short data[2]; -} short2; -typedef union { - struct { - short x; - short y; - short z; - short w; +}; +template +struct HIP_vector_type { + union { + struct { + T x; + T y; + T z; + }; + T data[3]; }; - __m64 data; -} short4; -typedef union { - struct { - short x; - short y; - short z; +}; +template +struct HIP_vector_type { + union { + struct { + T x; + T y; + T z; + T w; + }; + T data[4]; }; - short data[3]; -} short3; -typedef union { - __m128i data; -} short8; -typedef union { - __m128i data[2]; -} short16; +}; +// 8- and 16-length vectors do not have CUDA-style accessible components +template +struct HIP_vector_type { + union { + T data[8]; + }; +}; +template +struct HIP_vector_type { + union { + T data[16]; + }; +}; -typedef union { - struct { - unsigned short x; +// Explicit specialization for vectors using MSVC-specific definitions +template<> +struct HIP_vector_type { + union { + __m64 data; }; - unsigned short data; -} ushort1; -typedef union { - struct { - unsigned short x; - unsigned short y; +}; +template<> +struct HIP_vector_type { + union { + __m128i data; }; - unsigned short data[2]; -} ushort2; -typedef union { - struct { - unsigned short x; - unsigned short y; - unsigned short z; - unsigned short w; - }; - __m64 data; -} ushort4; -typedef union { - struct { - unsigned short x; - unsigned short y; - unsigned short z; - }; - unsigned short data[3]; -} ushort3; -typedef union { - __m128i data; -} ushort8; -typedef union { - __m128i data[2]; -} ushort16; +}; -typedef union { - struct { - int x; +template<> +struct HIP_vector_type { + union { + __m64 data; }; - int data; -} int1; -typedef union { - struct { - int x; - int y; +}; +template<> +struct HIP_vector_type { + union { + __m128i data; }; - __m64 data; -} int2; -typedef union { - struct { - int x; - int y; - int z; - int w; - }; - __m128i data; -} int4; -typedef union { - struct { - int x; - int y; - int z; - }; - int data[3]; -} int3; -typedef union { - __m128i data[2]; -} int8; -typedef union { - __m128i data[4]; -} int16; +}; -typedef union { - struct { - unsigned int x; +template<> +struct HIP_vector_type { + union { + struct { + short x; + short y; + short z; + short w; + }; + __m64 data; }; - unsigned int data; -} uint1; -typedef union { - struct { - unsigned int x; - unsigned int y; +}; +template<> +struct HIP_vector_type { + union { + __m128i data; }; - __m64 data; -} uint2; -typedef union { - struct { - unsigned int x; - unsigned int y; - unsigned int z; - unsigned int w; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[2]; }; - __m128i data; -} uint4; -typedef union { - struct { - unsigned int x; - unsigned int y; - unsigned int z; - }; - unsigned int data[3]; -} uint3; -typedef union { - __m128i data[2]; -} uint8; -typedef union { - __m128i data[4]; -} uint16; +}; -typedef union { - struct { - int x; +template<> +struct HIP_vector_type { + union { + struct { + unsigned short x; + unsigned short y; + unsigned short z; + unsigned short w; + }; + __m64 data; }; - int data; -} long1; -typedef union { - struct { - int x; - int y; +}; +template<> +struct HIP_vector_type { + union { + __m128i data; }; - __m64 data; -} long2; -typedef union { - struct { - int x; - int y; - int z; - int w; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[2]; }; - __m128i data; -} long4; -typedef union { - struct { - int x; - int y; - int z; - }; - int data[3]; -} long3; -typedef union { - __m128i data[2]; -} long8; -typedef union { - __m128i data[4]; -} long16; +}; -typedef union { - struct { - unsigned int x; +template<> +struct HIP_vector_type { + union { + struct { + int x; + int y; + }; + __m64 data; }; - unsigned int data; -} ulong1; -typedef union { - struct { - unsigned int x; - unsigned int y; +}; +template<> +struct HIP_vector_type { + union { + struct { + int x; + int y; + int z; + int w; + }; + __m128i data; }; - __m64 data; -} ulong2; -typedef union { - struct { - unsigned int x; - unsigned int y; - unsigned int z; - unsigned int w; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[2]; }; - __m128i data; -} ulong4; -typedef union { - struct { - unsigned int x; - unsigned int y; - unsigned int z; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[4]; }; - unsigned int data[3]; -} ulong3; -typedef union { - __m128i data[2]; -} ulong8; -typedef union { - __m128i data[4]; -} ulong16; +}; -typedef union { - struct { - long long x; +template<> +struct HIP_vector_type { + union { + struct { + unsigned int x; + unsigned int y; + }; + __m64 data; }; - __m64 data; -} longlong1; -typedef union { - struct { - long long x; - long long y; +}; +template<> +struct HIP_vector_type { + union { + struct { + unsigned int x; + unsigned int y; + unsigned int z; + unsigned int w; + }; + __m128i data; }; - __m128i data; -} longlong2; -typedef union { - struct { - long long x; - long long y; - long long z; - long long w; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[2]; }; - __m128i data[2]; -} longlong4; -typedef union { - struct { - long long x; - long long y; - long long z; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[4]; }; - __m64 data[3]; -} longlong3; -typedef union { - __m128i data[4]; -} longlong8; -typedef union { - __m128i data[8]; -} longlong16; +}; -typedef union { - struct { - __m64 x; +// MSVC uses 32-bit longs and 64-bit long longs, explicitly defining for clarity +template<> +struct HIP_vector_type{ + union { + struct { + std::int32_t x; + }; + std::int32_t data; }; - __m64 data; -} ulonglong1; -typedef union { - struct { - __m64 x; - __m64 y; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::int32_t x; + std::int32_t y; + }; + __m64 data; }; - __m128i data; -} ulonglong2; -typedef union { - struct { - __m64 x; - __m64 y; - __m64 z; - __m64 w; +}; +template<> +struct HIP_vector_type{ + union { + struct { + std::int32_t x; + std::int32_t y; + std::int32_t z; + }; + std::int32_t data[3]; }; - __m128i data[2]; -} ulonglong4; -typedef union { - struct { - __m64 x; - __m64 y; - __m64 z; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::int32_t x; + std::int32_t y; + std::int32_t z; + std::int32_t w; + }; + __m128i data; }; - __m64 data[3]; -} ulonglong3; -typedef union { - __m128i data[4]; -} ulonglong8; -typedef union { - __m128i data[8]; -} ulonglong16; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[2]; + }; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[4]; + }; +}; -typedef union { - struct { - float x; +template<> +struct HIP_vector_type { + union { + struct { + std::uint32_t x; + }; + std::uint32_t data; }; - float data; -} float1; -typedef union { - struct { - float x; - float y; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::uint32_t x; + std::uint32_t y; + }; + __m64 data; }; - __m64 data; -} float2; -typedef union { - struct { - float x; - float y; - float z; - float w; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::uint32_t x; + std::uint32_t y; + std::uint32_t z; + }; + std::uint32_t data[3]; }; - __m128 data; -} float4; -typedef union { - struct { - float x; - float y; - float z; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::uint32_t x; + std::uint32_t y; + std::uint32_t z; + std::uint32_t w; + }; + __m128i data; }; - float data[3]; -} float3; -typedef union { - __m256 data; -} float8; -typedef union { - __m256 data[2]; -} float16; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[2]; + }; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[4]; + }; +}; -typedef union { - struct { - double x; +template<> +struct HIP_vector_type { + union { + struct { + std::int64_t x; + }; + __m64 data; }; - double data; -} double1; -typedef union { - struct { - double x; - double y; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::int64_t x; + std::int64_t y; + }; + __m128i data; }; - __m128d data; -} double2; -typedef union { - struct { - double x; - double y; - double z; - double w; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::int64_t x; + std::int64_t y; + std::int64_t z; + }; + __m64 data[3]; }; - __m256d data; -} double4; -typedef union { - struct { - double x; - double y; - double z; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::int64_t x; + std::int64_t y; + std::int64_t z; + std::int64_t w; + }; + __m128i data[2]; }; - double data[3]; -} double3; -typedef union { - __m256d data[2]; -} double8; -typedef union { - __m256d data[4]; -} double16; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[4]; + }; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[8]; + }; +}; + +template<> +struct HIP_vector_type{ + union{ + struct { + std::uint64_t x; + }; + __m64 data; + }; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::uint64_t x; + std::uint64_t y; + }; + __m128i data; + }; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::uint64_t x; + std::uint64_t y; + std::uint64_t z; + }; + __m64 data[3]; + }; +}; +template<> +struct HIP_vector_type { + union { + struct { + std::uint64_t x; + std::uint64_t y; + std::uint64_t z; + std::uint64_t w; + }; + __m128i data[2]; + }; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[4]; + }; +}; +template<> +struct HIP_vector_type { + union { + __m128i data[8]; + }; +}; + +template<> +struct HIP_vector_type { + union { + struct { + float x; + float y; + }; + __m64 data; + }; +}; +template<> +struct HIP_vector_type{ + union { + struct { + float x; + float y; + float z; + float w; + }; + __m128 data; + }; +}; +template<> +struct HIP_vector_type{ + union { + __m256 data; + }; +}; +template<> +struct HIP_vector_type{ + union { + __m256 data[2]; + }; +}; + +template<> +struct HIP_vector_type{ + union { + struct { + double x; + double y; + }; + __m128d data; + }; +}; +template<> +struct HIP_vector_type{ + union { + struct { + double x; + double y; + double z; + double w; + }; + __m256d data; + }; +}; +template<> +struct HIP_vector_type{ + union { + __m256d data[2]; + }; +}; +template<> +struct HIP_vector_type{ + union { + __m256d data[4]; + }; +}; + +// Type aliasing +using char1 = HIP_vector_type; +using char2 = HIP_vector_type; +using char3 = HIP_vector_type; +using char4 = HIP_vector_type; +using char8 = HIP_vector_type; +using char16 = HIP_vector_type; +using uchar1 = HIP_vector_type; +using uchar2 = HIP_vector_type; +using uchar3 = HIP_vector_type; +using uchar4 = HIP_vector_type; +using uchar8 = HIP_vector_type; +using uchar16 = HIP_vector_type; +using short1 = HIP_vector_type; +using short2 = HIP_vector_type; +using short3 = HIP_vector_type; +using short4 = HIP_vector_type; +using short8 = HIP_vector_type; +using short16 = HIP_vector_type; +using ushort1 = HIP_vector_type; +using ushort2 = HIP_vector_type; +using ushort3 = HIP_vector_type; +using ushort4 = HIP_vector_type; +using ushort8 = HIP_vector_type; +using ushort16 = HIP_vector_type; +using int1 = HIP_vector_type; +using int2 = HIP_vector_type; +using int3 = HIP_vector_type; +using int4 = HIP_vector_type; +using int8 = HIP_vector_type; +using int16 = HIP_vector_type; +using uint1 = HIP_vector_type; +using uint2 = HIP_vector_type; +using uint3 = HIP_vector_type; +using uint4 = HIP_vector_type; +using uint8 = HIP_vector_type; +using uint16 = HIP_vector_type; +using long1 = HIP_vector_type; +using long2 = HIP_vector_type; +using long3 = HIP_vector_type; +using long4 = HIP_vector_type; +using long8 = HIP_vector_type; +using long16 = HIP_vector_type; +using ulong1 = HIP_vector_type; +using ulong2 = HIP_vector_type; +using ulong3 = HIP_vector_type; +using ulong4 = HIP_vector_type; +using ulong8 = HIP_vector_type; +using ulong16 = HIP_vector_type; +using longlong1 = HIP_vector_type; +using longlong2 = HIP_vector_type; +using longlong3 = HIP_vector_type; +using longlong4 = HIP_vector_type; +using longlong8 = HIP_vector_type; +using longlong16 = HIP_vector_type; +using ulonglong1 = HIP_vector_type; +using ulonglong2 = HIP_vector_type; +using ulonglong3 = HIP_vector_type; +using ulonglong4 = HIP_vector_type; +using ulonglong8 = HIP_vector_type; +using ulonglong16 = HIP_vector_type; +using float1 = HIP_vector_type; +using float2 = HIP_vector_type; +using float3 = HIP_vector_type; +using float4 = HIP_vector_type; +using float8 = HIP_vector_type; +using float16 = HIP_vector_type; +using double1 = HIP_vector_type; +using double2 = HIP_vector_type; +using double3 = HIP_vector_type; +using double4 = HIP_vector_type; +using double8 = HIP_vector_type; +using double16 = HIP_vector_type; #else // !defined(_MSC_VER) /* this is for compatibility with CUDA as CUDA allows accessing vector components in C++ program with MSVC +structs are wrapped with templates so that mangled names match templated implementation */ -typedef union { - struct { - char x; - }; - char data; -} char1; -typedef union { - struct { - char x; - char y; - }; - char data[2]; -} char2; -typedef union { - struct { - char x; - char y; - char z; - char w; - }; - char data[4]; -} char4; -typedef union { - char data[8]; -} char8; -typedef union { - char data[16]; -} char16; -typedef union { - struct { - char x; - char y; - char z; - }; - char data[3]; -} char3; -typedef union { - struct { - unsigned char x; - }; - unsigned char data; -} uchar1; -typedef union { - struct { - unsigned char x; - unsigned char y; - }; - unsigned char data[2]; -} uchar2; -typedef union { - struct { - unsigned char x; - unsigned char y; - unsigned char z; - unsigned char w; - }; - unsigned char data[4]; -} uchar4; -typedef union { - unsigned char data[8]; -} uchar8; -typedef union { - unsigned char data[16]; -} uchar16; -typedef union { - struct { - unsigned char x; - unsigned char y; - unsigned char z; - }; - unsigned char data[3]; -} uchar3; +template struct HIP_vector_type; -typedef union { - struct { - short x; +// One template per vector size +template +struct HIP_vector_type { + union { + struct { + T x; + }; + T data; }; - short data; -} short1; -typedef union { - struct { - short x; - short y; +}; +template +struct HIP_vector_type { + union { + struct { + T x; + T y; + }; + T data[2]; }; - short data[2]; -} short2; -typedef union { - struct { - short x; - short y; - short z; - short w; +}; +template +struct HIP_vector_type { + union { + struct { + T x; + T y; + T z; + }; + T data[3]; }; - short data[4]; -} short4; -typedef union { - short data[8]; -} short8; -typedef union { - short data[16]; -} short16; -typedef union { - struct { - short x; - short y; - short z; +}; +template +struct HIP_vector_type { + union { + struct { + T x; + T y; + T z; + T w; + }; + T data[4]; }; - short data[3]; -} short3; +}; +// 8- and 16-length vectors do not have CUDA-style accessible components +template +struct HIP_vector_type { + union { + T data[8]; + }; +}; +template +struct HIP_vector_type { + union { + T data[16]; + }; +}; -typedef union { - struct { - unsigned short x; - }; - unsigned short data; -} ushort1; -typedef union { - struct { - unsigned short x; - unsigned short y; - }; - unsigned short data[2]; -} ushort2; -typedef union { - struct { - unsigned short x; - unsigned short y; - unsigned short z; - unsigned short w; - }; - unsigned short data[4]; -} ushort4; -typedef union { - unsigned short data[8]; -} ushort8; -typedef union { - unsigned short data[16]; -} ushort16; -typedef union { - struct { - unsigned short x; - unsigned short y; - unsigned short z; - }; - unsigned short data[3]; -} ushort3; - -typedef union { - struct { - int x; - }; - int data; -} int1; -typedef union { - struct { - int x; - int y; - }; - int data[2]; -} int2; -typedef union { - struct { - int x; - int y; - int z; - int w; - }; - int data[4]; -} int4; -typedef union { - int data[8]; -} int8; -typedef union { - int data[16]; -} int16; -typedef union { - struct { - int x; - int y; - int z; - }; - int data[3]; -} int3; - -typedef union { - struct { - unsigned int x; - }; - unsigned int data; -} uint1; -typedef union { - struct { - unsigned int x; - unsigned int y; - }; - unsigned int data[2]; -} uint2; -typedef union { - struct { - unsigned int x; - unsigned int y; - unsigned int z; - unsigned int w; - }; - unsigned int data[4]; -} uint4; -typedef union { - unsigned int data[8]; -} uint8; -typedef union { - unsigned int data[16]; -} uint16; -typedef union { - struct { - unsigned int x; - unsigned int y; - unsigned int z; - }; - unsigned int data[3]; -} uint3; - -typedef union { - struct { - long x; - }; - long data; -} long1; -typedef union { - struct { - long x; - long y; - }; - long data[2]; -} long2; -typedef union { - struct { - long x; - long y; - long z; - long w; - }; - long data[4]; -} long4; -typedef union { - long data[8]; -} long8; -typedef union { - long data[16]; -} long16; -typedef union { - struct { - long x; - long y; - long z; - }; - long data[3]; -} long3; - -typedef union { - struct { - unsigned long x; - }; - unsigned long data; -} ulong1; -typedef union { - struct { - unsigned long x; - unsigned long y; - }; - unsigned long data[2]; -} ulong2; -typedef union { - struct { - unsigned long x; - unsigned long y; - unsigned long z; - unsigned long w; - }; - unsigned long data[4]; -} ulong4; -typedef union { - unsigned long data[8]; -} ulong8; -typedef union { - unsigned long data[16]; -} ulong16; -typedef union { - struct { - unsigned long x; - unsigned long y; - unsigned long z; - }; - unsigned long data[3]; -} ulong3; - -typedef union { - struct { - long long x; - }; - long long data; -} longlong1; -typedef union { - struct { - long long x; - long long y; - }; - long long data[2]; -} longlong2; -typedef union { - struct { - long long x; - long long y; - long long z; - long long w; - }; - long long data[4]; -} longlong4; -typedef union { - long long data[8]; -} longlong8; -typedef union { - long long data[16]; -} longlong16; -typedef union { - struct { - long long x; - long long y; - long long z; - }; - long long data[3]; -} longlong3; - -typedef union { - struct { - unsigned long long x; - }; - unsigned long long data; -} ulonglong1; -typedef union { - struct { - unsigned long long x; - unsigned long long y; - }; - unsigned long long data[2]; -} ulonglong2; -typedef union { - struct { - unsigned long long x; - unsigned long long y; - unsigned long long z; - unsigned long long w; - }; - unsigned long long data[4]; -} ulonglong4; -typedef union { - unsigned long long data[8]; -} ulonglong8; -typedef union { - unsigned long long data[16]; -} ulonglong16; -typedef union { - struct { - unsigned long long x; - unsigned long long y; - unsigned long long z; - }; - unsigned long long data[3]; -} ulonglong3; - -typedef union { - struct { - float x; - }; - float data; -} float1; -typedef union { - struct { - float x; - float y; - }; - float data[2]; -} float2; -typedef union { - struct { - float x; - float y; - float z; - float w; - }; - float data[4]; -} float4; -typedef union { - float data[8]; -} float8; -typedef union { - float data[16]; -} float16; -typedef union { - struct { - float x; - float y; - float z; - }; - float data[3]; -} float3; - -typedef union { - struct { - double x; - }; - double data; -} double1; -typedef union { - struct { - double x; - double y; - }; - double data[2]; -} double2; -typedef union { - struct { - double x; - double y; - double z; - double w; - }; - double data[4]; -} double4; -typedef union { - double data[8]; -} double8; -typedef union { - double data[16]; -} double16; -typedef union { - struct { - double x; - double y; - double z; - }; - double data[3]; -} double3; +// Type aliasing +using char1 = HIP_vector_type; +using char2 = HIP_vector_type; +using char3 = HIP_vector_type; +using char4 = HIP_vector_type; +using char8 = HIP_vector_type; +using char16 = HIP_vector_type; +using uchar1 = HIP_vector_type; +using uchar2 = HIP_vector_type; +using uchar3 = HIP_vector_type; +using uchar4 = HIP_vector_type; +using uchar8 = HIP_vector_type; +using uchar16 = HIP_vector_type; +using short1 = HIP_vector_type; +using short2 = HIP_vector_type; +using short3 = HIP_vector_type; +using short4 = HIP_vector_type; +using short8 = HIP_vector_type; +using short16 = HIP_vector_type; +using ushort1 = HIP_vector_type; +using ushort2 = HIP_vector_type; +using ushort3 = HIP_vector_type; +using ushort4 = HIP_vector_type; +using ushort8 = HIP_vector_type; +using ushort16 = HIP_vector_type; +using int1 = HIP_vector_type; +using int2 = HIP_vector_type; +using int3 = HIP_vector_type; +using int4 = HIP_vector_type; +using int8 = HIP_vector_type; +using int16 = HIP_vector_type; +using uint1 = HIP_vector_type; +using uint2 = HIP_vector_type; +using uint3 = HIP_vector_type; +using uint4 = HIP_vector_type; +using uint8 = HIP_vector_type; +using uint16 = HIP_vector_type; +using long1 = HIP_vector_type; +using long2 = HIP_vector_type; +using long3 = HIP_vector_type; +using long4 = HIP_vector_type; +using long8 = HIP_vector_type; +using long16 = HIP_vector_type; +using ulong1 = HIP_vector_type; +using ulong2 = HIP_vector_type; +using ulong3 = HIP_vector_type; +using ulong4 = HIP_vector_type; +using ulong8 = HIP_vector_type; +using ulong16 = HIP_vector_type; +using longlong1 = HIP_vector_type; +using longlong2 = HIP_vector_type; +using longlong3 = HIP_vector_type; +using longlong4 = HIP_vector_type; +using longlong8 = HIP_vector_type; +using longlong16 = HIP_vector_type; +using ulonglong1 = HIP_vector_type; +using ulonglong2 = HIP_vector_type; +using ulonglong3 = HIP_vector_type; +using ulonglong4 = HIP_vector_type; +using ulonglong8 = HIP_vector_type; +using ulonglong16 = HIP_vector_type; +using float1 = HIP_vector_type; +using float2 = HIP_vector_type; +using float3 = HIP_vector_type; +using float4 = HIP_vector_type; +using float8 = HIP_vector_type; +using float16 = HIP_vector_type; +using double1 = HIP_vector_type; +using double2 = HIP_vector_type; +using double3 = HIP_vector_type; +using double4 = HIP_vector_type; +using double8 = HIP_vector_type; +using double16 = HIP_vector_type; #endif // defined(_MSC_VER) #endif // defined(__has_attribute)