36template <
typename T_, index_t N_,
typename =
void>
39template <
typename T_, index_t N_>
40struct ext_vector<T_, N_,
std::enable_if_t<!std::is_class_v<typename native_t<T_>::type>>>
45 static_assert(!std::is_class_v<value_type>);
49template <
typename T_, index_t N_>
50struct ext_vector<T_, N_,
std::enable_if_t<std::is_class_v<typename native_t<T_>::type>>>
55 static_assert(!std::is_class_v<value_type>);
59template <
typename V_, index_t Vs_, index_t N_>
60struct ext_vector<V_ __attribute__((ext_vector_type(Vs_))),
62 std::enable_if_t<!std::is_class_v<typename native_t<V_>::type>>>
66 static_assert(!std::is_class_v<value_type>);
70template <
typename V_, index_t Vs_, index_t N_>
71struct ext_vector<V_ __attribute__((ext_vector_type(Vs_))),
73 std::enable_if_t<std::is_class_v<typename native_t<V_>::type>>>
77 static_assert(!std::is_class_v<value_type>);
83template <
typename T, index_t N>
88template <
typename T,
typename =
void>
92 std::conditional_t<std::is_same_v<remove_cvref_t<T>,
pk_int4_t>,
94 std::conditional_t<std::is_same_v<remove_cvref_t<T>,
pk_fp4_t> ||
95 std::is_same_v<remove_cvref_t<T>,
e8m0_t>,
102template <
typename T, index_t N>
106 std::is_same_v<T, pk_int4_t>,
108 std::conditional_t<std::is_same_v<T, pk_fp4_t> || std::is_same_v<remove_cvref_t<T>,
e8m0_t>,
114template <
typename X,
typename Y>
122using fp64x2_t =
double __attribute__((ext_vector_type(2)));
123using fp64x4_t =
double __attribute__((ext_vector_type(4)));
127using fp32x2_t =
float __attribute__((ext_vector_type(2)));
128using fp32x4_t =
float __attribute__((ext_vector_type(4)));
129using fp32x8_t =
float __attribute__((ext_vector_type(8)));
130using fp32x16_t =
float __attribute__((ext_vector_type(16)));
131using fp32x32_t =
float __attribute__((ext_vector_type(32)));
132using fp32x64_t =
float __attribute__((ext_vector_type(64)));
136using fp16x2_t = _Float16 __attribute__((ext_vector_type(2)));
137using fp16x4_t = _Float16 __attribute__((ext_vector_type(4)));
138using fp16x8_t = _Float16 __attribute__((ext_vector_type(8)));
139using fp16x16_t = _Float16 __attribute__((ext_vector_type(16)));
140using fp16x32_t = _Float16 __attribute__((ext_vector_type(32)));
141using fp16x64_t = _Float16 __attribute__((ext_vector_type(64)));
206#if CK_TILE_USE_CUSTOM_DATA_TYPE
Definition tile/core/arch/amd_buffer_addressing.hpp:110
Definition tile/core/algorithm/cluster_descriptor.hpp:13
_Float16 fp16x2_t
Definition half.hpp:385
remove_cv_t< std::remove_reference_t< T > > remove_cvref_t
Definition type_traits.hpp:21
uint8_t uint8x64_t
Definition vector_type.hpp:204
int8_t int8x8_t
Definition vector_type.hpp:192
fp8_t fp8x4_t
Definition vector_type.hpp:228
int8_t int8x2_t
Definition pk_int4.hpp:103
uint8_t __attribute((ext_vector_type(2))) pk_fp4x2_t
Definition vector_type.hpp:252
int8_t pk_int4x16_t
Definition vector_type.hpp:249
bfloat16_t bf16x64_t
Definition vector_type.hpp:150
int8_t int8x64_t
Definition vector_type.hpp:195
int8_t pk_int4x4_t
Definition vector_type.hpp:247
int8_t int8x32_t
Definition vector_type.hpp:194
uint8_t __attribute((ext_vector_type(4))) pk_fp4x4_t
Definition vector_type.hpp:253
uint16_t uint16x2_t
Definition vector_type.hpp:181
float fp32x32_t
Definition vector_type.hpp:131
int16_t int16x4_t
Definition vector_type.hpp:173
uint32_t uint32x8_t
Definition vector_type.hpp:165
uint8_t uint8x4_t
Definition vector_type.hpp:200
_Float16 fp16x64_t
Definition vector_type.hpp:141
int8_t int8_t
Definition int8.hpp:20
int32_t int32x8_t
Definition vector_type.hpp:156
ushort bfloat16_t
Definition bfloat16.hpp:111
fp8_t fp8x32_t
Definition vector_type.hpp:231
_BitInt(8) fp8_t
Definition float8.hpp:204
bfloat16_t bf16x16_t
Definition vector_type.hpp:148
int32_t int32x4_t
Definition vector_type.hpp:155
int16_t int16x16_t
Definition vector_type.hpp:175
bfloat16_t bf16x2_t
Definition pk_fp4.hpp:24
double fp64x2_t
Definition vector_type.hpp:122
float fp32x64_t
Definition vector_type.hpp:132
int16_t int16x8_t
Definition vector_type.hpp:174
double fp64_t
Definition vector_type.hpp:121
uint32_t uint32x4_t
Definition vector_type.hpp:164
bf8_t bf8x2_t
Definition vector_type.hpp:236
double fp64x4_t
Definition vector_type.hpp:123
_Float16 fp16x4_t
Definition vector_type.hpp:137
uint8_t __attribute((ext_vector_type(16))) pk_fp4x16_t
Definition vector_type.hpp:255
uint16_t uint16x16_t
Definition vector_type.hpp:184
uint16_t uint16x64_t
Definition vector_type.hpp:186
uint8_t fp8_raw_t
Definition float8.hpp:205
pk_float4_e2m1_t pk_fp4_t
Definition pk_fp4.hpp:151
bf8_t bf8x16_t
Definition vector_type.hpp:239
bf8_t bf8x32_t
Definition vector_type.hpp:240
int8_t int8x16_t
Definition vector_type.hpp:193
uint8_t uint8x16_t
Definition vector_type.hpp:202
int16_t int16x64_t
Definition vector_type.hpp:177
bfloat16_t bf16x32_t
Definition vector_type.hpp:149
bf8_t bf8x8_t
Definition vector_type.hpp:238
uint8_t __attribute((ext_vector_type(32))) pk_fp4x32_t
Definition vector_type.hpp:256
bfloat16_t bf16x4_t
Definition vector_type.hpp:146
int32_t int32_t
Definition integer.hpp:10
int32_t int32x16_t
Definition vector_type.hpp:157
_Float16 fp16x8_t
Definition vector_type.hpp:138
e8m0_bexp_t e8m0_t
Definition tile/core/numeric/e8m0.hpp:49
fp8_t fp8x2_t
Definition vector_type.hpp:227
bfloat16_t bf16x8_t
Definition vector_type.hpp:147
int8_t pk_int4x2_t
Definition vector_type.hpp:246
uint8_t uint8x2_t
Definition vector_type.hpp:199
typename impl::ext_vector< T, N >::type ext_vector_t
Definition vector_type.hpp:84
unsigned _BitInt(8) bf8_t
Definition float8.hpp:206
fp8_t fp8x16_t
Definition vector_type.hpp:230
uint8_t __attribute((ext_vector_type(8))) pk_fp4x8_t
Definition vector_type.hpp:254
uint8_t bf8_raw_t
Definition float8.hpp:207
uint32_t uint32x64_t
Definition vector_type.hpp:168
uint32_t uint32x32_t
Definition vector_type.hpp:167
uint32_t uint32x16_t
Definition vector_type.hpp:166
float fp32x4_t
Definition vector_type.hpp:128
float fp32x8_t
Definition vector_type.hpp:129
int16_t int16x32_t
Definition vector_type.hpp:176
uint16_t uint16x8_t
Definition vector_type.hpp:183
uint16_t uint16x4_t
Definition vector_type.hpp:182
float fp32x2_t
Definition pk_fp4.hpp:22
bf8_t bf8x4_t
Definition vector_type.hpp:237
int8_t int8x4_t
Definition vector_type.hpp:191
std::is_same< typename vector_traits< remove_cvref_t< X > >::scalar_type, typename vector_traits< remove_cvref_t< Y > >::scalar_type > has_same_scalar_type
Definition vector_type.hpp:115
_Float16 fp16x16_t
Definition vector_type.hpp:139
_Float16 fp16x32_t
Definition vector_type.hpp:140
fp8_t fp8x8_t
Definition vector_type.hpp:229
int32_t index_t
Definition integer.hpp:9
uint16_t uint16x32_t
Definition vector_type.hpp:185
int32_t int32x64_t
Definition vector_type.hpp:159
int32_t int32x2_t
Definition vector_type.hpp:154
int8_t pk_int4x8_t
Definition vector_type.hpp:248
bf8_t bf8x64_t
Definition vector_type.hpp:241
float fp32_t
Definition pk_fp4.hpp:21
float fp32x16_t
Definition vector_type.hpp:130
int16_t int16x2_t
Definition vector_type.hpp:172
uint8_t uint8x8_t
Definition vector_type.hpp:201
uint8_t uint8x32_t
Definition vector_type.hpp:203
uint32_t uint32x2_t
Definition vector_type.hpp:163
fp8_t fp8x64_t
Definition vector_type.hpp:232
int8_t pk_int4x32_t
Definition vector_type.hpp:250
int32_t int32x32_t
Definition vector_type.hpp:158
signed short int16_t
Definition stdint.h:122
unsigned short uint16_t
Definition stdint.h:125
unsigned int uint32_t
Definition stdint.h:126
unsigned char uint8_t
Definition stdint.h:124
value_type type
Definition vector_type.hpp:56
static constexpr index_t N
Definition vector_type.hpp:52
typename native_t< T_ >::type::type value_type
Definition vector_type.hpp:54
value_type type
Definition vector_type.hpp:46
static constexpr index_t N
Definition vector_type.hpp:42
typename native_t< T_ >::type value_type
Definition vector_type.hpp:44
typename native_t< remove_cvref_t< V_ > >::type::type value_type
Definition vector_type.hpp:76
value_type type
Definition vector_type.hpp:78
static constexpr index_t N
Definition vector_type.hpp:75
value_type type
Definition vector_type.hpp:67
static constexpr index_t N
Definition vector_type.hpp:64
typename native_t< remove_cvref_t< V_ > >::type value_type
Definition vector_type.hpp:65
Definition vector_type.hpp:37
Definition vector_type.hpp:26
remove_cvref_t< T > type
Definition vector_type.hpp:27
Definition pk_int4.hpp:21
static constexpr index_t vector_size
Definition vector_type.hpp:111
std::conditional_t< std::is_same_v< T, pk_int4_t >, int8_t, std::conditional_t< std::is_same_v< T, pk_fp4_t >||std::is_same_v< remove_cvref_t< T >, e8m0_t >, uint8_t, T > > scalar_type
Definition vector_type.hpp:105
Definition vector_type.hpp:90
static constexpr index_t vector_size
Definition vector_type.hpp:98
std::conditional_t< std::is_same_v< remove_cvref_t< T >, pk_int4_t >, int8_t, std::conditional_t< std::is_same_v< remove_cvref_t< T >, pk_fp4_t >|| std::is_same_v< remove_cvref_t< T >, e8m0_t >, uint8_t, remove_cvref_t< T > > > scalar_type
Definition vector_type.hpp:91