10 using int8_t =
signed char;
11 using uint8_t =
unsigned char;
12 using int16_t =
signed short;
13 using uint16_t =
unsigned short;
14 using float_t = float;
18 #ifdef CK_CODE_GEN_RTC
19 using byte =
unsigned char;
27 using f4_t =
unsigned _BitInt(4);
29 using bf6_t =
unsigned _BitInt(6);
41 static_assert(I < 2,
"Index is out of range.");
43 return data & 0b00001111;
50 return (x1 << 4) | (x0 & 0b00001111);
67 static_assert(I < 16,
"Index out of range for 16 f6_t elements.");
69 constexpr
int num_bits_elem = 6;
70 constexpr
int num_bits_vec_elem = 32;
71 constexpr
int vector_size = 3;
72 constexpr
int bit_pos = I * num_bits_elem;
73 constexpr
int arr_idx = bit_pos / num_bits_vec_elem;
74 constexpr
int bit_offset = bit_pos % num_bits_vec_elem;
76 constexpr
int overhang = bit_offset + num_bits_elem - num_bits_vec_elem;
78 if constexpr(overhang > 0 && (arr_idx + 1) < vector_size)
81 << (num_bits_elem - overhang);
84 return static_cast<f6_t>(bits & 0x3F);
93 uint32_t bits =
static_cast<uint32_t
>(x[
static_cast<int>(i)]) & 0x3F;
94 constexpr
int num_bits_elem = 6;
95 constexpr
int num_bits_vec_elem = 32;
96 constexpr
int vector_size = 3;
97 constexpr
int bit_pos = i * num_bits_elem;
98 constexpr
int arr_index = bit_pos / num_bits_vec_elem;
99 constexpr
int bit_offset = bit_pos % num_bits_vec_elem;
100 constexpr
int overhang = bit_offset + num_bits_elem - num_bits_vec_elem;
104 old_value |= (bits << bit_offset);
108 if constexpr(overhang > 0 && (arr_index + 1) < vector_size)
111 next_value |= (bits >> (num_bits_elem - overhang));
133 static_assert(I < 32,
"Index out of range for 32 f6_t elements.");
135 constexpr
int num_bits_elem = 6;
136 constexpr
int num_bits_vec_elem = 32;
137 constexpr
int vector_size = 6;
138 constexpr
int bit_pos = I * num_bits_elem;
139 constexpr
int arr_idx = bit_pos / num_bits_vec_elem;
140 constexpr
int bit_offset = bit_pos % num_bits_vec_elem;
142 constexpr
int overhang = bit_offset + num_bits_elem - num_bits_vec_elem;
144 if constexpr(overhang > 0 && (arr_idx + 1) < vector_size)
147 << (num_bits_elem - overhang);
150 return static_cast<f6_t>(bits & 0x3F);
159 uint32_t bits =
static_cast<uint32_t
>(x[
static_cast<int>(i)]) & 0x3F;
160 constexpr
int num_bits_elem = 6;
161 constexpr
int num_bits_vec_elem = 32;
162 constexpr
int vector_size = 6;
163 constexpr
int bit_pos = i * num_bits_elem;
164 constexpr
int arr_index = bit_pos / num_bits_vec_elem;
165 constexpr
int bit_offset = bit_pos % num_bits_vec_elem;
166 constexpr
int overhang = bit_offset + num_bits_elem - num_bits_vec_elem;
170 old_value |= (bits << bit_offset);
174 if constexpr(overhang > 0 && (arr_index + 1) < vector_size)
177 next_value |= (bits >> (num_bits_elem - overhang));
199 static_assert(I < 16,
"Index out of range for 16 f6_t elements.");
201 constexpr
int num_bits_elem = 6;
202 constexpr
int num_bits_vec_elem = 32;
203 constexpr
int vector_size = 3;
204 constexpr
int bit_pos = I * num_bits_elem;
205 constexpr
int arr_idx = bit_pos / num_bits_vec_elem;
206 constexpr
int bit_offset = bit_pos % num_bits_vec_elem;
208 constexpr
int overhang = bit_offset + num_bits_elem - num_bits_vec_elem;
210 if constexpr(overhang > 0 && (arr_idx + 1) < vector_size)
213 << (num_bits_elem - overhang);
216 return static_cast<bf6_t>(bits & 0x3F);
225 uint32_t bits =
static_cast<uint32_t
>(x[
static_cast<int>(i)]) & 0x3F;
226 constexpr
int num_bits_elem = 6;
227 constexpr
int num_bits_vec_elem = 32;
228 constexpr
int vector_size = 3;
229 constexpr
int bit_pos = i * num_bits_elem;
230 constexpr
int arr_index = bit_pos / num_bits_vec_elem;
231 constexpr
int bit_offset = bit_pos % num_bits_vec_elem;
232 constexpr
int overhang = bit_offset + num_bits_elem - num_bits_vec_elem;
236 old_value |= (bits << bit_offset);
240 if constexpr(overhang > 0 && (arr_index + 1) < vector_size)
243 next_value |= (bits >> (num_bits_elem - overhang));
265 static_assert(I < 32,
"Index out of range for 32 f6_t elements.");
267 constexpr
int num_bits_elem = 6;
268 constexpr
int num_bits_vec_elem = 32;
269 constexpr
int vector_size = 6;
270 constexpr
int bit_pos = I * num_bits_elem;
271 constexpr
int arr_idx = bit_pos / num_bits_vec_elem;
272 constexpr
int bit_offset = bit_pos % num_bits_vec_elem;
274 constexpr
int overhang = bit_offset + num_bits_elem - num_bits_vec_elem;
276 if constexpr(overhang > 0 && (arr_idx + 1) < vector_size)
279 << (num_bits_elem - overhang);
282 return static_cast<bf6_t>(bits & 0x3F);
291 uint32_t bits =
static_cast<uint32_t
>(x[
static_cast<int>(i)]) & 0x3F;
292 constexpr
int num_bits_elem = 6;
293 constexpr
int num_bits_vec_elem = 32;
294 constexpr
int vector_size = 6;
295 constexpr
int bit_pos = i * num_bits_elem;
296 constexpr
int arr_index = bit_pos / num_bits_vec_elem;
297 constexpr
int bit_offset = bit_pos % num_bits_vec_elem;
298 constexpr
int overhang = bit_offset + num_bits_elem - num_bits_vec_elem;
302 old_value |= (bits << bit_offset);
306 if constexpr(overhang > 0 && (arr_index + 1) < vector_size)
309 next_value |= (bits >> (num_bits_elem - overhang));
330 return x > 1u ? (1u << (32u - __builtin_clz(x - 1u))) : x;
335 template <
typename T>
346 template <
typename T, index_t N,
typename Enable =
void>
353 template <
typename T, index_t V, index_t N>
354 struct vector_type<T __attribute__((ext_vector_type(V))), N>;
360 template <
typename T, index_t V, index_t N>
365 template <
typename T, index_t N>
371 template <
typename T, index_t N0, index_t N1>
377 template <
typename T, index_t N0, index_t N1>
383 template <
typename T, index_t N>
386 template <
typename T, index_t N>
393 template <
typename TV>
397 template <
typename TV>
404 template <
typename X,
typename Y>
408 template <
typename T, index_t N>
415 template <
typename T, index_t N>
472 #ifdef CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4
477 static constexpr
index_t vector_size = 1;
523 template <
typename T>
539 template <
typename X>
540 __host__ __device__ constexpr
const auto&
AsType()
const
543 "Something went wrong, please check src and dst types.");
548 template <
typename X>
549 __host__ __device__ constexpr
auto&
AsType()
552 "Something went wrong, please check src and dst types.");
558 __device__
int static err = 0;
559 template <
typename T>
563 typedef T
d2_t __attribute__((ext_vector_type(2)));
578 template <
typename X>
579 __host__ __device__ constexpr
const auto&
AsType()
const
582 "Something went wrong, please check src and dst types.");
598 template <
typename X>
599 __host__ __device__ constexpr
auto&
AsType()
602 "Something went wrong, please check src and dst types.");
619 template <
typename T>
623 typedef T
d2_t __attribute__((ext_vector_type(2)));
624 typedef T
d3_t __attribute__((ext_vector_type(3)));
640 template <
typename X>
641 __host__ __device__ constexpr
const auto&
AsType()
const
644 "Something went wrong, please check src and dst types.");
664 template <
typename X>
665 __host__ __device__ constexpr
auto&
AsType()
668 "Something went wrong, please check src and dst types.");
689 template <
typename T>
693 typedef T
d2_t __attribute__((ext_vector_type(2)));
694 typedef T
d4_t __attribute__((ext_vector_type(4)));
710 template <
typename X>
711 __host__ __device__ constexpr
const auto&
AsType()
const
714 "Something went wrong, please check src and dst types.");
734 template <
typename X>
735 __host__ __device__ constexpr
auto&
AsType()
738 "Something went wrong, please check src and dst types.");
759 template <
typename T>
763 typedef T
d4_t __attribute__((ext_vector_type(4)));
764 typedef T
d5_t __attribute__((ext_vector_type(5)));
780 template <
typename X>
781 __host__ __device__ constexpr
const auto&
AsType()
const
784 "Something went wrong, please check src and dst types.");
804 template <
typename X>
805 __host__ __device__ constexpr
auto&
AsType()
808 "Something went wrong, please check src and dst types.");
829 template <
typename T>
833 typedef T
d2_t __attribute__((ext_vector_type(2)));
834 typedef T
d4_t __attribute__((ext_vector_type(4)));
835 typedef T
d7_t __attribute__((ext_vector_type(7)));
852 template <
typename X>
853 __host__ __device__ constexpr
const auto&
AsType()
const
857 "Something went wrong, please check src and dst types.");
881 template <
typename X>
882 __host__ __device__ constexpr
auto&
AsType()
886 "Something went wrong, please check src and dst types.");
911 template <
typename T>
915 typedef T
d2_t __attribute__((ext_vector_type(2)));
916 typedef T
d4_t __attribute__((ext_vector_type(4)));
917 typedef T
d8_t __attribute__((ext_vector_type(8)));
934 template <
typename X>
935 __host__ __device__ constexpr
const auto&
AsType()
const
939 "Something went wrong, please check src and dst types.");
963 template <
typename X>
964 __host__ __device__ constexpr
auto&
AsType()
968 "Something went wrong, please check src and dst types.");
993 template <
typename T>
997 typedef T
d4_t __attribute__((ext_vector_type(4)));
998 typedef T
d8_t __attribute__((ext_vector_type(8)));
999 typedef T
d13_t __attribute__((ext_vector_type(13)));
1016 template <
typename X>
1017 __host__ __device__ constexpr
const auto&
AsType()
const
1021 "Something went wrong, please check src and dst types.");
1025 return data_.d1x13_;
1037 return data_.d13x1_;
1045 template <
typename X>
1050 "Something went wrong, please check src and dst types.");
1054 return data_.d1x13_;
1066 return data_.d13x1_;
1075 template <
typename T>
1079 typedef T
d2_t __attribute__((ext_vector_type(2)));
1080 typedef T
d4_t __attribute__((ext_vector_type(4)));
1081 typedef T
d8_t __attribute__((ext_vector_type(8)));
1082 typedef T
d16_t __attribute__((ext_vector_type(16)));
1100 template <
typename X>
1101 __host__ __device__ constexpr
const auto&
AsType()
const
1106 "Something went wrong, please check src and dst types.");
1110 return data_.d1x16_;
1126 return data_.d16x1_;
1134 template <
typename X>
1140 "Something went wrong, please check src and dst types.");
1144 return data_.d1x16_;
1160 return data_.d16x1_;
1169 template <
typename T>
1173 typedef T
d2_t __attribute__((ext_vector_type(2)));
1174 typedef T
d4_t __attribute__((ext_vector_type(4)));
1175 typedef T
d8_t __attribute__((ext_vector_type(8)));
1176 typedef T
d16_t __attribute__((ext_vector_type(16)));
1177 typedef T
d32_t __attribute__((ext_vector_type(32)));
1196 template <
typename X>
1197 __host__ __device__ constexpr
const auto&
AsType()
const
1202 "Something went wrong, please check src and dst types.");
1206 return data_.d1x32_;
1210 return data_.d2x16_;
1222 return data_.d16x2_;
1226 return data_.d32x1_;
1234 template <
typename X>
1240 "Something went wrong, please check src and dst types.");
1244 return data_.d1x32_;
1248 return data_.d2x16_;
1260 return data_.d16x2_;
1264 return data_.d32x1_;
1273 template <
typename T>
1277 typedef T
d2_t __attribute__((ext_vector_type(2)));
1278 typedef T
d4_t __attribute__((ext_vector_type(4)));
1279 typedef T
d8_t __attribute__((ext_vector_type(8)));
1280 typedef T
d16_t __attribute__((ext_vector_type(16)));
1281 typedef T
d32_t __attribute__((ext_vector_type(32)));
1282 typedef T
d64_t __attribute__((ext_vector_type(64)));
1302 template <
typename X>
1303 __host__ __device__ constexpr
const auto&
AsType()
const
1309 "Something went wrong, please check src and dst types.");
1313 return data_.d1x64_;
1317 return data_.d2x32_;
1321 return data_.d4x16_;
1329 return data_.d16x4_;
1333 return data_.d32x2_;
1337 return data_.d64x1_;
1345 template <
typename X>
1352 "Something went wrong, please check src and dst types.");
1356 return data_.d1x64_;
1360 return data_.d2x32_;
1364 return data_.d4x16_;
1372 return data_.d16x4_;
1376 return data_.d32x2_;
1380 return data_.d64x1_;
1389 template <
typename T>
1393 typedef T
d2_t __attribute__((ext_vector_type(2)));
1394 typedef T
d4_t __attribute__((ext_vector_type(4)));
1395 typedef T
d8_t __attribute__((ext_vector_type(8)));
1396 typedef T
d16_t __attribute__((ext_vector_type(16)));
1397 typedef T
d32_t __attribute__((ext_vector_type(32)));
1398 typedef T
d64_t __attribute__((ext_vector_type(64)));
1399 typedef T
d128_t __attribute__((ext_vector_type(128)));
1420 template <
typename X>
1421 __host__ __device__ constexpr
const auto&
AsType()
const
1427 "Something went wrong, please check src and dst types.");
1431 return data_.d1x128_;
1435 return data_.d2x64_;
1439 return data_.d4x32_;
1443 return data_.d8x16_;
1447 return data_.d16x8_;
1451 return data_.d32x4_;
1455 return data_.d64x2_;
1459 return data_.d128x1_;
1467 template <
typename X>
1474 "Something went wrong, please check src and dst types.");
1478 return data_.d1x128_;
1482 return data_.d2x64_;
1486 return data_.d4x32_;
1490 return data_.d8x16_;
1494 return data_.d16x8_;
1498 return data_.d32x4_;
1502 return data_.d64x2_;
1506 return data_.d128x1_;
1515 template <
typename T>
1519 typedef T
d2_t __attribute__((ext_vector_type(2)));
1520 typedef T
d4_t __attribute__((ext_vector_type(4)));
1521 typedef T
d8_t __attribute__((ext_vector_type(8)));
1522 typedef T
d16_t __attribute__((ext_vector_type(16)));
1523 typedef T
d32_t __attribute__((ext_vector_type(32)));
1524 typedef T
d64_t __attribute__((ext_vector_type(64)));
1525 typedef T
d128_t __attribute__((ext_vector_type(128)));
1526 typedef T
d256_t __attribute__((ext_vector_type(256)));
1548 template <
typename X>
1549 __host__ __device__ constexpr
const auto&
AsType()
const
1555 "Something went wrong, please check src and dst types.");
1559 return data_.d1x256_;
1563 return data_.d2x128_;
1567 return data_.d4x64_;
1571 return data_.d8x32_;
1575 return data_.d16x16_;
1579 return data_.d32x8_;
1583 return data_.d64x4_;
1587 return data_.d128x2_;
1591 return data_.d256x1_;
1599 template <
typename X>
1606 "Something went wrong, please check src and dst types.");
1610 return data_.d1x256_;
1614 return data_.d2x128_;
1618 return data_.d4x64_;
1622 return data_.d8x32_;
1626 return data_.d16x16_;
1630 return data_.d32x8_;
1634 return data_.d64x4_;
1638 return data_.d128x2_;
1642 return data_.d256x1_;
1651 template <
typename T, index_t N,
typename Enable =
void>
1654 template <
typename T>
1657 using type =
unsigned _BitInt(8 *
sizeof(T));
1702 template <
typename T, index_t N>
1706 ck::
enable_if_t<sizeof(T) == 1 || sizeof(T) == 2 || sizeof(T) == 4 || sizeof(T) == 8>>
1709 static_assert(
sizeof(T) ==
sizeof(
data_t),
"non_native_vector_base storage size mismatch");
1713 union alignas(next_pow2(N * sizeof(T)))
1729 __host__ __device__ constexpr
operator data_v()
const {
return data_.dN; }
1730 __host__ __device__ constexpr
operator data_t()
const
1732 if constexpr(N == 1)
1741 __host__ __device__ constexpr
operator T()
const
1743 if constexpr(N == 1)
1753 template <
typename X>
1754 __host__ __device__ constexpr
const auto&
AsType()
const
1756 static_assert(is_same_v<X, data_t> || is_same_v<X, T> || is_same_v<X, data_v>,
1757 "Something went wrong, please check src and dst types.");
1759 if constexpr(is_same_v<X, data_t>)
1763 else if constexpr(is_same_v<X, T>)
1767 else if constexpr(is_same_v<X, data_v>)
1777 template <
typename X>
1780 static_assert(is_same_v<X, data_t> || is_same_v<X, T> || is_same_v<X, data_v>,
1781 "Something went wrong, please check src and dst types.");
1783 if constexpr(is_same_v<X, data_t>)
1787 else if constexpr(is_same_v<X, T>)
1791 else if constexpr(is_same_v<X, data_v>)
1803 template <
typename T, index_t N>
1809 static_assert(
sizeof(T) ==
sizeof(
data_t),
"non_native_vector_base storage size mismatch");
1810 static constexpr
size_t size_factor =
1815 union alignas(next_pow2(N * sizeof(T)))
1834 __host__ __device__ constexpr
operator data_v()
const {
return data_.dN; }
1835 __host__ __device__ constexpr
operator data_t()
const
1837 if constexpr(N == 1)
1846 __host__ __device__ constexpr
operator T()
const
1848 if constexpr(N == 1)
1859 template <
typename T, index_t N>
1860 struct scalar_type<non_native_vector_base<T, N>>;
1862 template <index_t N>
1870 template <index_t N>
1878 template <index_t N>
1887 template <
typename T>
1894 union alignas(next_pow2(1 * sizeof(T)))
1905 template <
typename X>
1906 __host__ __device__ constexpr
const auto&
AsType()
const
1909 "Something went wrong, please check src and dst types.");
1921 template <
typename X>
1925 "Something went wrong, please check src and dst types.");
1938 template <
typename T>
1947 union alignas(next_pow2(2 * sizeof(T)))
1958 template <
typename X>
1959 __host__ __device__ constexpr
const auto&
AsType()
const
1963 "Something went wrong, please check src and dst types.");
1979 template <
typename X>
1984 "Something went wrong, please check src and dst types.");
2001 template <
typename T>
2011 union alignas(next_pow2(4 * sizeof(T)))
2023 template <
typename X>
2024 __host__ __device__ constexpr
const auto&
AsType()
const
2028 "Something went wrong, please check src and dst types.");
2048 template <
typename X>
2053 "Something went wrong, please check src and dst types.");
2074 template <
typename T>
2085 union alignas(next_pow2(8 * sizeof(T)))
2098 template <
typename X>
2099 __host__ __device__ constexpr
const auto&
AsType()
const
2104 "Something went wrong, please check src and dst types.");
2128 template <
typename X>
2134 "Something went wrong, please check src and dst types.");
2159 template <
typename T>
2171 union alignas(next_pow2(16 * sizeof(T)))
2185 template <
typename X>
2186 __host__ __device__ constexpr
const auto&
AsType()
const
2191 "Something went wrong, please check src and dst types.");
2195 return data_.d1x16_;
2211 return data_.d16x1_;
2219 template <
typename X>
2225 "Something went wrong, please check src and dst types.");
2229 return data_.d1x16_;
2245 return data_.d16x1_;
2254 template <
typename T>
2266 union alignas(next_pow2(32 * sizeof(T)))
2281 template <
typename X>
2282 __host__ __device__ constexpr
const auto&
AsType()
const
2287 "Something went wrong, please check src and dst types.");
2291 return data_.d1x32_;
2295 return data_.d2x16_;
2307 return data_.d16x2_;
2311 return data_.d32x1_;
2319 template <
typename X>
2325 "Something went wrong, please check src and dst types.");
2329 return data_.d1x32_;
2333 return data_.d2x16_;
2345 return data_.d16x2_;
2349 return data_.d32x1_;
2358 template <
typename T>
2371 union alignas(next_pow2(64 * sizeof(T)))
2387 template <
typename X>
2388 __host__ __device__ constexpr
const auto&
AsType()
const
2394 "Something went wrong, please check src and dst types.");
2398 return data_.d1x64_;
2402 return data_.d2x32_;
2406 return data_.d4x16_;
2414 return data_.d16x4_;
2418 return data_.d32x2_;
2422 return data_.d64x1_;
2430 template <
typename X>
2437 "Something went wrong, please check src and dst types.");
2441 return data_.d1x64_;
2445 return data_.d2x32_;
2449 return data_.d4x16_;
2457 return data_.d16x4_;
2461 return data_.d32x2_;
2465 return data_.d64x1_;
2568 #elif CK_FP8_TYPE_FNUZ
2615 #ifdef CK_CODE_GEN_RTC
2616 template <
typename T>
2622 __host__ __device__
static constexpr int32_t Lowest() noexcept {
return -2147483647 - 1; }
2624 __host__ __device__
static constexpr int32_t Min() noexcept {
return -2147483647 - 1; }
2626 __host__ __device__
static constexpr int32_t Max() noexcept {
return 2147483647; }
2628 __host__ __device__
static constexpr int32_t Infinity() noexcept {
return 0; }
2630 __host__ __device__
static constexpr int32_t QuietNaN() {
return 0; }
2633 struct NumericLimits<int16_t>
2635 __host__ __device__
static constexpr int16_t Lowest() noexcept {
return -32768; }
2637 __host__ __device__
static constexpr int16_t Min() noexcept {
return -32768; }
2639 __host__ __device__
static constexpr int16_t Max() noexcept {
return 32767; }
2641 __host__ __device__
static constexpr int16_t Infinity() noexcept {
return 0; }
2643 __host__ __device__
static constexpr int16_t QuietNaN() {
return 0; }
2647 struct NumericLimits<
int8_t>
2649 __host__ __device__
static constexpr
int8_t Lowest() noexcept {
return -128; }
2651 __host__ __device__
static constexpr
int8_t Min() noexcept {
return -128; }
2653 __host__ __device__
static constexpr
int8_t Max() noexcept {
return 127; }
2655 __host__ __device__
static constexpr
int8_t Infinity() noexcept {
return 0; }
2657 __host__ __device__
static constexpr
int8_t QuietNaN() {
return 0; }
2661 struct NumericLimits<uint32_t>
2663 __host__ __device__
static constexpr uint32_t Lowest() noexcept {
return 0; }
2665 __host__ __device__
static constexpr uint32_t Min() noexcept {
return 0; }
2667 __host__ __device__
static constexpr uint32_t Max() noexcept {
return 4294967295U; }
2669 __host__ __device__
static constexpr uint32_t Infinity() noexcept {
return 0; }
2671 __host__ __device__
static constexpr uint32_t QuietNaN() {
return 0; }
2675 struct NumericLimits<uint16_t>
2677 __host__ __device__
static constexpr uint16_t Lowest() noexcept {
return 0; }
2679 __host__ __device__
static constexpr uint16_t Min() noexcept {
return 0; }
2681 __host__ __device__
static constexpr uint16_t Max() noexcept {
return 65535U; }
2683 __host__ __device__
static constexpr uint16_t Infinity() noexcept {
return 0; }
2685 __host__ __device__
static constexpr uint16_t QuietNaN() {
return 0; }
2689 struct NumericLimits<float>
2691 static constexpr
unsigned int binary_min = 0x00800000;
2692 static constexpr
unsigned int binary_max = 0x7F7FFFFF;
2693 static constexpr
unsigned int binary_lowest = 0xFF7FFFFF;
2694 static constexpr
unsigned int binary_qnan = 0xFFC00001;
2695 static constexpr
unsigned int binary_inf = 0x7F8000000;
2697 __host__ __device__
static constexpr
float Min() {
return bit_cast<float>(binary_min); }
2699 __host__ __device__
static constexpr
float Max() {
return bit_cast<float>(binary_max); }
2701 __host__ __device__
static constexpr
float Lowest() {
return bit_cast<float>(binary_lowest); }
2703 __host__ __device__
static constexpr
float QuietNaN() {
return bit_cast<float>(binary_qnan); }
2705 __host__ __device__
static constexpr
float Infinity() {
return bit_cast<float>(binary_inf); }
2709 struct NumericLimits<
half_t>
2711 static constexpr
unsigned short binary_min = 0x0400;
2712 static constexpr
unsigned short binary_max = 0x7BFF;
2713 static constexpr
unsigned short binary_lowest = 0xFBFF;
2714 static constexpr
unsigned short binary_qnan = 0x7FFF;
2716 __host__ __device__
static constexpr
half_t Min() {
return bit_cast<half_t>(binary_min); }
2718 __host__ __device__
static constexpr
half_t Max() {
return bit_cast<half_t>(binary_max); }
2720 __host__ __device__
static constexpr
half_t Lowest() {
return bit_cast<half_t>(binary_lowest); }
2722 __host__ __device__
static constexpr
half_t QuietNaN() {
return bit_cast<half_t>(binary_qnan); }
2725 #ifdef CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4
2727 struct NumericLimits<
int4_t>
2729 __host__ __device__
static constexpr
int4_t Min() {
return int4_t(-8); }
2731 __host__ __device__
static constexpr
int4_t Max() {
return int4_t(7); }
2733 __host__ __device__
static constexpr
int4_t Lowest() {
return int4_t(-8); }
2741 static constexpr uint8_t binary_min = 0x08;
2742 static constexpr uint8_t binary_max = 0x7F;
2743 static constexpr uint8_t binary_lowest = 0xFF;
2744 static constexpr uint8_t binary_qnan = 0x80;
2751 __host__ __device__
static constexpr
f8_fnuz_t Min() {
return f8_fnuz_t(binary_min); }
2753 __host__ __device__
static constexpr
f8_fnuz_t Max() {
return f8_fnuz_t(binary_max); }
2755 __host__ __device__
static constexpr
f8_fnuz_t Lowest() {
return f8_fnuz_t(binary_lowest); }
2757 __host__ __device__
static constexpr
f8_fnuz_t QuietNaN() {
return f8_fnuz_t(binary_qnan); }
2764 static constexpr uint8_t binary_min = 0x04;
2765 static constexpr uint8_t binary_max = 0x7F;
2766 static constexpr uint8_t binary_lowest = 0xFF;
2767 static constexpr uint8_t binary_qnan = 0x80;
2784 struct NumericLimits<f8_ocp_t>
2786 static constexpr uint8_t binary_min = 0x08;
2787 static constexpr uint8_t binary_max = 0x7E;
2788 static constexpr uint8_t binary_lowest = 0xFE;
2789 static constexpr uint8_t binary_qnan = 0x7F;
2791 __host__ __device__
static constexpr f8_ocp_t Min() {
return bit_cast<f8_ocp_t>(binary_min); }
2793 __host__ __device__
static constexpr f8_ocp_t Max() {
return bit_cast<f8_ocp_t>(binary_max); }
2795 __host__ __device__
static constexpr f8_ocp_t Lowest()
2797 return bit_cast<f8_ocp_t>(binary_lowest);
2800 __host__ __device__
static constexpr f8_ocp_t QuietNaN()
2802 return bit_cast<f8_ocp_t>(binary_qnan);
2807 struct NumericLimits<bf8_ocp_t>
2809 static constexpr uint8_t binary_min = 0x04;
2810 static constexpr uint8_t binary_max = 0x7B;
2811 static constexpr uint8_t binary_lowest = 0xFB;
2812 static constexpr uint8_t binary_qnan = 0x7D;
2814 __host__ __device__
static constexpr bf8_ocp_t Min() {
return bit_cast<bf8_ocp_t>(binary_min); }
2816 __host__ __device__
static constexpr bf8_ocp_t Max() {
return bit_cast<bf8_ocp_t>(binary_max); }
2818 __host__ __device__
static constexpr bf8_ocp_t Lowest()
2820 return bit_cast<bf8_ocp_t>(binary_lowest);
2823 __host__ __device__
static constexpr bf8_ocp_t QuietNaN()
2825 return bit_cast<bf8_ocp_t>(binary_qnan);
2829 template <
typename T>
2834 __host__ __device__
static constexpr T
Lowest() {
return std::numeric_limits<T>::lowest(); }
2837 return std::numeric_limits<T>::quiet_NaN();
2839 __host__ __device__
static constexpr T
Infinity() {
return std::numeric_limits<T>::infinity(); }
2845 static constexpr
unsigned short binary_min = 0x0400;
2846 static constexpr
unsigned short binary_max = 0x7BFF;
2847 static constexpr
unsigned short binary_lowest = 0xFBFF;
2848 static constexpr
unsigned short binary_qnan = 0x7FFF;
2850 __host__ __device__
static constexpr
half_t Min() {
return bit_cast<half_t>(binary_min); }
2852 __host__ __device__
static constexpr
half_t Max() {
return bit_cast<half_t>(binary_max); }
2854 __host__ __device__
static constexpr
half_t Lowest() {
return bit_cast<half_t>(binary_lowest); }
2856 __host__ __device__
static constexpr
half_t QuietNaN() {
return bit_cast<half_t>(binary_qnan); }
2859 #ifdef CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4
2861 struct NumericLimits<
int4_t>
2863 __host__ __device__
static constexpr
int4_t Min() {
return int4_t(-8); }
2865 __host__ __device__
static constexpr
int4_t Max() {
return int4_t(7); }
2867 __host__ __device__
static constexpr
int4_t Lowest() {
return int4_t(-8); }
2875 static constexpr uint8_t binary_min = 0x08;
2876 static constexpr uint8_t binary_max = 0x7F;
2877 static constexpr uint8_t binary_lowest = 0xFF;
2878 static constexpr uint8_t binary_qnan = 0x80;
2898 static constexpr uint8_t binary_min = 0x04;
2899 static constexpr uint8_t binary_max = 0x7F;
2900 static constexpr uint8_t binary_lowest = 0xFF;
2901 static constexpr uint8_t binary_qnan = 0x80;
2920 static constexpr uint8_t binary_min = 0x08;
2921 static constexpr uint8_t binary_max = 0x7E;
2922 static constexpr uint8_t binary_lowest = 0xFE;
2923 static constexpr uint8_t binary_qnan = 0x7F;
2925 __host__ __device__
static constexpr
f8_ocp_t Min() {
return bit_cast<f8_ocp_t>(binary_min); }
2927 __host__ __device__
static constexpr
f8_ocp_t Max() {
return bit_cast<f8_ocp_t>(binary_max); }
2931 return bit_cast<f8_ocp_t>(binary_lowest);
2936 return bit_cast<f8_ocp_t>(binary_qnan);
2943 static constexpr uint8_t binary_min = 0x04;
2944 static constexpr uint8_t binary_max = 0x7B;
2945 static constexpr uint8_t binary_lowest = 0xFB;
2946 static constexpr uint8_t binary_qnan = 0x7D;
2948 __host__ __device__
static constexpr
bf8_ocp_t Min() {
return bit_cast<bf8_ocp_t>(binary_min); }
2950 __host__ __device__
static constexpr
bf8_ocp_t Max() {
return bit_cast<bf8_ocp_t>(binary_max); }
2954 return bit_cast<bf8_ocp_t>(binary_lowest);
2959 return bit_cast<bf8_ocp_t>(binary_qnan);
2967 static constexpr uint8_t binary_min_normal = 0x2;
2968 static constexpr uint8_t binary_max_normal = 0x7;
2969 static constexpr uint8_t binary_lowest_normal = 0xF;
2970 static constexpr uint8_t binary_min_subnorm = 0x1;
2971 static constexpr uint8_t binary_max_subnorm = 0x1;
2973 static constexpr
float data_max_normal_number = 6;
2974 static constexpr
float data_min_subnormal_number = 0.5;
2976 __host__ __device__
static constexpr
f4_t Min() {
return f4_t(binary_min_normal); }
2977 __host__ __device__
static constexpr
f4_t Max() {
return f4_t(binary_max_normal); }
2978 __host__ __device__
static constexpr
f4_t Lowest() {
return f4_t(binary_lowest_normal); }
2982 __host__ __device__
static constexpr
float DataMaxNorm() {
return data_max_normal_number; }
2985 return data_min_subnormal_number;
2992 static constexpr uint8_t binary_min_normal = 0x08;
2993 static constexpr uint8_t binary_max_normal = 0x1F;
2994 static constexpr uint8_t binary_lowest_normal = 0x3F;
2995 static constexpr uint8_t binary_min_subnorm = 0x01;
2996 static constexpr uint8_t binary_max_subnorm = 0x07;
2998 static constexpr
float data_max_normal_number = 7.5;
2999 static constexpr
float data_min_subnormal_number = 0.125;
3001 __host__ __device__
static constexpr
f6_t Min() {
return f6_t(binary_min_normal & 0b111111); }
3002 __host__ __device__
static constexpr
f6_t Max() {
return f6_t(binary_max_normal & 0b111111); }
3005 return f6_t(binary_lowest_normal & 0b111111);
3009 return f6_t(binary_min_subnorm & 0b111111);
3013 return f6_t(binary_max_subnorm & 0b111111);
3016 __host__ __device__
static constexpr
float DataMaxNorm() {
return data_max_normal_number; }
3019 return data_min_subnormal_number;
3026 static constexpr uint8_t binary_min_normal = 0x08;
3027 static constexpr uint8_t binary_max_normal = 0x1F;
3028 static constexpr uint8_t binary_lowest_normal = 0x3F;
3029 static constexpr uint8_t binary_min_subnorm = 0x01;
3030 static constexpr uint8_t binary_max_subnorm = 0x03;
3032 static constexpr
float data_max_normal_number = 28;
3033 static constexpr
float data_min_subnormal_number = 0.0625;
3035 __host__ __device__
static constexpr
bf6_t Min() {
return bf6_t(binary_min_normal); }
3036 __host__ __device__
static constexpr
bf6_t Max() {
return bf6_t(binary_max_normal); }
3041 __host__ __device__
static constexpr
float DataMaxNorm() {
return data_max_normal_number; }
3044 return data_min_subnormal_number;
3076 template <
typename T>
3085 static constexpr
int mant = 23;
3086 static constexpr
int bias = 127;
3087 static constexpr uint32_t nan_mask = 0x7F800000;
3088 static constexpr uint32_t head_mask = 0xFF800000;
3089 static constexpr uint32_t mant_mask = 0x7FFFFF;
3090 static constexpr uint32_t exp_mask = 0xFF;
3091 static constexpr uint32_t Inf = 0x7F800000;
3092 static constexpr uint32_t NegInf = 0xFF800000;
3093 static constexpr uint32_t NaN = 0x7F800001;
3094 static constexpr uint32_t Neg0 = 0x80000000;
3095 static constexpr
bool has_inf =
true;
3103 static constexpr
int mant = 10;
3104 static constexpr
int bias = 15;
3105 static constexpr uint16_t nan_mask = 0x7C00;
3106 static constexpr uint16_t head_mask = 0xFC00;
3107 static constexpr uint16_t mant_mask = 0x3FF;
3108 static constexpr uint16_t exp_mask = 0x1F;
3109 static constexpr uint32_t Inf = 0x7C00;
3110 static constexpr uint32_t NegInf = 0xFC00;
3111 static constexpr uint32_t NaN = 0x7C01;
3112 static constexpr uint32_t Neg0 = 0x8000;
3113 static constexpr
bool has_inf =
true;
3121 static constexpr
int mant = 7;
3122 static constexpr
int bias = 128;
3130 static constexpr
int mant = 3;
3131 static constexpr
int bias = 8;
3133 static constexpr
bool has_inf =
false;
3140 static constexpr
int mant = 2;
3141 static constexpr
int bias = 16;
3143 static constexpr
bool has_inf =
false;
3149 static constexpr
int mant = 3;
3150 static constexpr
int bias = 7;
3157 static constexpr
int mant = 2;
3158 static constexpr
int bias = 15;
3165 static constexpr
int mant = 1;
3166 static constexpr
int bias = 1;
3167 static constexpr uint32_t sr_shift = 10;
3169 static constexpr
int unbiased_exp_min = 0;
3170 static constexpr
int unbiased_exp_max = 2;
3171 static constexpr
int biased_exp_min = 1;
3172 static constexpr
int biased_exp_max = 3;
3174 static constexpr uint8_t positive_zero_mask = 0b0000;
3175 static constexpr uint8_t negative_zero_mask = 0b1000;
3177 static constexpr uint8_t one_mask = 0b0010;
3178 static constexpr uint8_t set_sign_mask = 0b0111;
3180 static constexpr uint8_t data_max_positive_normal_mask = 0b0111;
3181 static constexpr uint8_t data_max_negative_normal_mask = 0b1111;
3183 static constexpr uint8_t data_max_positive_subnormal_mask = 0b0001;
3184 static constexpr uint8_t data_max_negative_subnormal_mask = 0b1001;
3186 static constexpr
bool has_inf =
false;
3195 static constexpr
int mant = 3;
3196 static constexpr
int bias = 1;
3197 static constexpr uint32_t sr_shift = 12;
3199 static constexpr
int unbiased_exp_min = 0;
3200 static constexpr
int unbiased_exp_max = 2;
3201 static constexpr
int biased_exp_min = 1;
3202 static constexpr
int biased_exp_max = 3;
3204 static constexpr uint8_t positive_zero_mask = 0b000000;
3205 static constexpr uint8_t negative_zero_mask = 0b100000;
3207 static constexpr uint8_t set_sign_mask = 0b011111;
3209 static constexpr uint8_t data_max_positive_normal_mask = 0b011111;
3210 static constexpr uint8_t data_max_negative_normal_mask = 0b111111;
3212 static constexpr uint8_t data_max_positive_subnormal_mask = 0b000111;
3213 static constexpr uint8_t data_max_negative_subnormal_mask = 0b100111;
3215 static constexpr
bool has_inf =
false;
3216 static constexpr
bool has_nan =
false;
3217 static constexpr
bool has_zero =
true;
3226 static constexpr
int mant = 2;
3227 static constexpr
int bias = 3;
3228 static constexpr uint32_t sr_shift = 11;
3230 static constexpr
int unbiased_exp_min = -2;
3231 static constexpr
int unbiased_exp_max = 4;
3232 static constexpr
int biased_exp_min = 1;
3233 static constexpr
int biased_exp_max = 7;
3235 static constexpr uint8_t positive_zero_mask = 0b000000;
3236 static constexpr uint8_t negative_zero_mask = 0b100000;
3238 static constexpr uint8_t set_sign_mask = 0b011111;
3240 static constexpr uint8_t data_max_positive_normal_mask = 0b011111;
3241 static constexpr uint8_t data_max_negative_normal_mask = 0b111111;
3243 static constexpr uint8_t data_max_positive_subnormal_mask = 0b000011;
3244 static constexpr uint8_t data_max_negative_subnormal_mask = 0b100011;
3246 static constexpr
bool has_inf =
false;
3247 static constexpr
bool has_nan =
false;
3248 static constexpr
bool has_zero =
true;
3257 static constexpr
int mant = 0;
3258 static constexpr
int bias = 127;
3260 static constexpr
int unbiased_exp_min = -127;
3261 static constexpr
int unbiased_exp_max = 127;
3262 static constexpr
int biased_exp_min = 0;
3263 static constexpr
int biased_exp_max = 254;
__host__ T exp(T x)
Definition: math_v2.hpp:391
__host__ constexpr __device__ T max(T x)
Definition: math.hpp:84
__host__ constexpr __device__ T min(T x)
Definition: math.hpp:116
bf8_t __attribute((ext_vector_type(2))) bf8x2_t
Definition: vector_type.hpp:195
bf8_t __attribute((ext_vector_type(4))) bf8x4_t
Definition: vector_type.hpp:196
bf8_t __attribute((ext_vector_type(16))) bf8x16_t
Definition: vector_type.hpp:198
int8_t int8_t
Definition: int8.hpp:20
bf8_t __attribute((ext_vector_type(64))) bf8x64_t
Definition: vector_type.hpp:200
bf8_t __attribute((ext_vector_type(8))) bf8x8_t
Definition: vector_type.hpp:197
bf8_t __attribute((ext_vector_type(32))) bf8x32_t
Definition: vector_type.hpp:199
typename detail::StaticallyIndexedArrayImpl< T, N >::type StaticallyIndexedArray
Definition: statically_indexed_array.hpp:45
typename vector_type< f8_fnuz_t, 8 >::type f8x8_fnuz_t
Definition: data_type.hpp:2523
typename vector_type< bf6x16_pk_t, 1 >::type bf6x16_t
Definition: data_type.hpp:2607
typename vector_type< bf8_ocp_t, 4 >::type bf8x4_ocp_t
Definition: data_type.hpp:2546
__host__ constexpr __device__ Y bit_cast(const X &x)
Definition: type.hpp:309
typename vector_type< bhalf_t, 32 >::type bhalf32_t
Definition: data_type.hpp:2501
typename vector_type< f8_fnuz_t, 64 >::type f8x64_fnuz_t
Definition: data_type.hpp:2526
typename vector_type< float, 16 >::type float16_t
Definition: data_type.hpp:2484
typename vector_type< half_t, 32 >::type half32_t
Definition: data_type.hpp:2493
typename vector_type< bf8_ocp_t, 32 >::type bf8x32_ocp_t
Definition: data_type.hpp:2549
typename vector_type< pk_i4_t, 8 >::type pk_i4x8_t
Definition: data_type.hpp:2613
typename vector_type< f6x32_pk_t, 1 >::type f6x32_t
Definition: data_type.hpp:2604
typename vector_type< bhalf_t, 4 >::type bhalf4_t
Definition: data_type.hpp:2498
typename vector_type< int32_t, 2 >::type int32x2_t
Definition: data_type.hpp:2505
typename vector_type< pk_i4_t, 4 >::type pk_i4x4_t
Definition: data_type.hpp:2612
constexpr bool is_native_type()
Definition: data_type.hpp:336
typename vector_type< bhalf_t, 64 >::type bhalf64_t
Definition: data_type.hpp:2502
typename vector_type< int8_t, 2 >::type int8x2_t
Definition: data_type.hpp:2513
typename vector_type< uint8_t, 8 >::type uint8x8_t
Definition: data_type.hpp:2589
unsigned _BitInt(4) f4_t
Definition: data_type.hpp:27
typename vector_type< uint8_t, 32 >::type uint8x32_t
Definition: data_type.hpp:2591
_BitInt(6) f6_t
Definition: data_type.hpp:28
typename vector_type< int8_t, 32 >::type int8x32_t
Definition: data_type.hpp:2517
typename vector_type< f4x2_pk_t, 1 >::type f4x2_t
Definition: data_type.hpp:2595
typename vector_type< bhalf_t, 8 >::type bhalf8_t
Definition: data_type.hpp:2499
typename vector_type< double, 2 >::type double2_t
Definition: data_type.hpp:2477
typename vector_type< f6x16_pk_t, 1 >::type f6x16_t
Definition: data_type.hpp:2603
typename vector_type< float, 2 >::type float2_t
Definition: data_type.hpp:2481
typename vector_type< int8_t, 8 >::type int8x8_t
Definition: data_type.hpp:2515
typename vector_type< half_t, 4 >::type half4_t
Definition: data_type.hpp:2490
typename vector_type< uint8_t, 2 >::type uint8x2_t
Definition: data_type.hpp:2587
_Float16 half_t
Definition: data_type.hpp:25
typename vector_type< bf6x32_pk_t, 1 >::type bf6x32_t
Definition: data_type.hpp:2608
ushort bhalf_t
Definition: data_type.hpp:24
typename vector_type< f8_ocp_t, 2 >::type f8x2_ocp_t
Definition: data_type.hpp:2537
typename vector_type< int32_t, 8 >::type int32x8_t
Definition: data_type.hpp:2507
typename vector_type< f4x2_pk_t, 2 >::type f4x4_t
Definition: data_type.hpp:2596
typename vector_type< bf8_fnuz_t, 4 >::type bf8x4_fnuz_t
Definition: data_type.hpp:2530
typename vector_type< uint8_t, 16 >::type uint8x16_t
Definition: data_type.hpp:2590
typename vector_type< float, 8 >::type float8_t
Definition: data_type.hpp:2483
typename vector_type< bf8_ocp_t, 2 >::type bf8x2_ocp_t
Definition: data_type.hpp:2545
typename vector_type< f4x2_pk_t, 16 >::type f4x32_t
Definition: data_type.hpp:2599
typename vector_type< bhalf_t, 2 >::type bhalf2_t
Definition: data_type.hpp:2497
typename vector_type< f8_fnuz_t, 16 >::type f8x16_fnuz_t
Definition: data_type.hpp:2524
typename vector_type< f4x2_pk_t, 8 >::type f4x16_t
Definition: data_type.hpp:2598
typename vector_type< float, 4 >::type float4_t
Definition: data_type.hpp:2482
typename vector_type< int8_t, 64 >::type int8x64_t
Definition: data_type.hpp:2518
typename vector_type< int32_t, 64 >::type int32x64_t
Definition: data_type.hpp:2510
typename vector_type< int32_t, 16 >::type int32x16_t
Definition: data_type.hpp:2508
_BitInt(4) int4_t
Definition: data_type.hpp:26
unsigned _BitInt(6) bf6_t
Definition: data_type.hpp:29
typename vector_type< f8_ocp_t, 8 >::type f8x8_ocp_t
Definition: data_type.hpp:2539
unsigned _BitInt(8) bf8_fnuz_t
Definition: amd_ck_fp8.hpp:40
typename vector_type< pk_i4_t, 2 >::type pk_i4x2_t
Definition: data_type.hpp:2611
typename vector_type< f8_ocp_t, 32 >::type f8x32_ocp_t
Definition: data_type.hpp:2541
typename vector_type< bf8_fnuz_t, 16 >::type bf8x16_fnuz_t
Definition: data_type.hpp:2532
typename vector_type< uint8_t, 64 >::type uint8x64_t
Definition: data_type.hpp:2592
typename vector_type< f8_ocp_t, 64 >::type f8x64_ocp_t
Definition: data_type.hpp:2542
__host__ constexpr __device__ auto make_vector_type(Number< N >)
Definition: data_type.hpp:387
typename vector_type< int8_t, 16 >::type int8x16_t
Definition: data_type.hpp:2516
constexpr auto next_pow2(uint32_t x)
Definition: data_type.hpp:327
typename vector_type< double, 4 >::type double4_t
Definition: data_type.hpp:2478
typename vector_type< f4x2_pk_t, 32 >::type f4x64_t
Definition: data_type.hpp:2600
typename vector_type< bhalf_t, 16 >::type bhalf16_t
Definition: data_type.hpp:2500
typename vector_type< f8_ocp_t, 4 >::type f8x4_ocp_t
Definition: data_type.hpp:2538
typename vector_type< half_t, 2 >::type half2_t
Definition: data_type.hpp:2489
long int64_t
Definition: data_type.hpp:2474
typename vector_type< int32_t, 32 >::type int32x32_t
Definition: data_type.hpp:2509
typename vector_type< f8_ocp_t, 16 >::type f8x16_ocp_t
Definition: data_type.hpp:2540
typename vector_type< f8_fnuz_t, 32 >::type f8x32_fnuz_t
Definition: data_type.hpp:2525
typename vector_type< int32_t, 4 >::type int32x4_t
Definition: data_type.hpp:2506
int32_t index_t
Definition: ck.hpp:289
typename vector_type< bf8_fnuz_t, 2 >::type bf8x2_fnuz_t
Definition: data_type.hpp:2529
typename std::enable_if< B, T >::type enable_if_t
Definition: enable_if.hpp:13
typename vector_type< f8_fnuz_t, 4 >::type f8x4_fnuz_t
Definition: data_type.hpp:2522
typename vector_type< f8_fnuz_t, 2 >::type f8x2_fnuz_t
Definition: data_type.hpp:2521
typename vector_type< int8_t, 4 >::type int8x4_t
Definition: data_type.hpp:2514
typename vector_type< f4x2_pk_t, 4 >::type f4x8_t
Definition: data_type.hpp:2597
typename vector_type< bf8_ocp_t, 64 >::type bf8x64_ocp_t
Definition: data_type.hpp:2550
typename vector_type< half_t, 16 >::type half16_t
Definition: data_type.hpp:2492
typename vector_type< half_t, 64 >::type half64_t
Definition: data_type.hpp:2494
_BitInt(8) f8_fnuz_t
Definition: amd_ck_fp8.hpp:39
typename vector_type< uint8_t, 4 >::type uint8x4_t
Definition: data_type.hpp:2588
typename vector_type< float, 64 >::type float64_t
Definition: data_type.hpp:2486
typename vector_type< bf8_fnuz_t, 64 >::type bf8x64_fnuz_t
Definition: data_type.hpp:2534
typename vector_type< bf8_fnuz_t, 32 >::type bf8x32_fnuz_t
Definition: data_type.hpp:2533
typename vector_type< bf8_ocp_t, 16 >::type bf8x16_ocp_t
Definition: data_type.hpp:2548
typename vector_type< bf8_ocp_t, 8 >::type bf8x8_ocp_t
Definition: data_type.hpp:2547
typename vector_type< float, 32 >::type float32_t
Definition: data_type.hpp:2485
typename vector_type< half_t, 8 >::type half8_t
Definition: data_type.hpp:2491
typename vector_type< bf8_fnuz_t, 8 >::type bf8x8_fnuz_t
Definition: data_type.hpp:2531
typename vector_type_maker< T, N >::type vector_type_maker_t
Definition: data_type.hpp:384
__host__ static constexpr __device__ float DataMaxNorm()
Definition: data_type.hpp:3041
__host__ static constexpr __device__ bf6_t MinSubnorm()
Definition: data_type.hpp:3038
__host__ static constexpr __device__ float DataMinSubnorm()
Definition: data_type.hpp:3042
__host__ static constexpr __device__ bf6_t MaxSubnorm()
Definition: data_type.hpp:3039
__host__ static constexpr __device__ bf6_t Max()
Definition: data_type.hpp:3036
__host__ static constexpr __device__ bf6_t Lowest()
Definition: data_type.hpp:3037
__host__ static constexpr __device__ bf6_t Min()
Definition: data_type.hpp:3035
__host__ static constexpr __device__ bf8_fnuz_t QuietNaN()
Definition: data_type.hpp:2914
__host__ static constexpr __device__ bf8_fnuz_t Min()
Definition: data_type.hpp:2908
__host__ static constexpr __device__ bf8_fnuz_t Lowest()
Definition: data_type.hpp:2912
__host__ static constexpr __device__ bf8_fnuz_t Max()
Definition: data_type.hpp:2910
__host__ static constexpr __device__ bf8_ocp_t Min()
Definition: data_type.hpp:2948
__host__ static constexpr __device__ bf8_ocp_t Lowest()
Definition: data_type.hpp:2952
__host__ static constexpr __device__ bf8_ocp_t Max()
Definition: data_type.hpp:2950
__host__ static constexpr __device__ bf8_ocp_t QuietNaN()
Definition: data_type.hpp:2957
__host__ static constexpr __device__ e8m0_bexp_t Binary_2()
Definition: data_type.hpp:3064
__host__ static constexpr __device__ e8m0_bexp_t Binary_142()
Definition: data_type.hpp:3070
__host__ static constexpr __device__ e8m0_bexp_t Max()
Definition: data_type.hpp:3061
__host__ static constexpr __device__ e8m0_bexp_t QuietNaN()
Definition: data_type.hpp:3062
__host__ static constexpr __device__ e8m0_bexp_t Binary_135()
Definition: data_type.hpp:3066
__host__ static constexpr __device__ e8m0_bexp_t Min()
Definition: data_type.hpp:3060
__host__ static constexpr __device__ e8m0_bexp_t Binary_1()
Definition: data_type.hpp:3063
__host__ static constexpr __device__ e8m0_bexp_t Binary_3()
Definition: data_type.hpp:3065
__host__ static constexpr __device__ float DataMinSubnorm()
Definition: data_type.hpp:2983
__host__ static constexpr __device__ f4_t Min()
Definition: data_type.hpp:2976
__host__ static constexpr __device__ f4_t Lowest()
Definition: data_type.hpp:2978
__host__ static constexpr __device__ float DataMaxNorm()
Definition: data_type.hpp:2982
__host__ static constexpr __device__ f4_t Max()
Definition: data_type.hpp:2977
__host__ static constexpr __device__ f4_t MaxSubnorm()
Definition: data_type.hpp:2980
__host__ static constexpr __device__ f4_t MinSubnorm()
Definition: data_type.hpp:2979
__host__ static constexpr __device__ float DataMaxNorm()
Definition: data_type.hpp:3016
__host__ static constexpr __device__ f6_t MinSubnorm()
Definition: data_type.hpp:3007
__host__ static constexpr __device__ f6_t MaxSubnorm()
Definition: data_type.hpp:3011
__host__ static constexpr __device__ f6_t Min()
Definition: data_type.hpp:3001
__host__ static constexpr __device__ f6_t Max()
Definition: data_type.hpp:3002
__host__ static constexpr __device__ f6_t Lowest()
Definition: data_type.hpp:3003
__host__ static constexpr __device__ float DataMinSubnorm()
Definition: data_type.hpp:3017
__host__ static constexpr __device__ f8_fnuz_t QuietNaN()
Definition: data_type.hpp:2891
__host__ static constexpr __device__ f8_fnuz_t Min()
Definition: data_type.hpp:2885
__host__ static constexpr __device__ f8_fnuz_t Max()
Definition: data_type.hpp:2887
__host__ static constexpr __device__ f8_fnuz_t Lowest()
Definition: data_type.hpp:2889
__host__ static constexpr __device__ f8_ocp_t Min()
Definition: data_type.hpp:2925
__host__ static constexpr __device__ f8_ocp_t Max()
Definition: data_type.hpp:2927
__host__ static constexpr __device__ f8_ocp_t QuietNaN()
Definition: data_type.hpp:2934
__host__ static constexpr __device__ f8_ocp_t Lowest()
Definition: data_type.hpp:2929
__host__ static constexpr __device__ half_t Max()
Definition: data_type.hpp:2852
__host__ static constexpr __device__ half_t Lowest()
Definition: data_type.hpp:2854
__host__ static constexpr __device__ half_t Min()
Definition: data_type.hpp:2850
__host__ static constexpr __device__ half_t QuietNaN()
Definition: data_type.hpp:2856
Definition: data_type.hpp:2831
__host__ static constexpr __device__ T Lowest()
Definition: data_type.hpp:2834
__host__ static constexpr __device__ T Infinity()
Definition: data_type.hpp:2839
__host__ static constexpr __device__ T QuietNaN()
Definition: data_type.hpp:2835
__host__ static constexpr __device__ T Min()
Definition: data_type.hpp:2832
__host__ static constexpr __device__ T Max()
Definition: data_type.hpp:2833
uint8_t bitwise_type
Definition: data_type.hpp:3250
uint8_t bitwise_type
Definition: data_type.hpp:3265
uint8_t bitwise_type
Definition: data_type.hpp:3188
uint8_t bitwise_type
Definition: data_type.hpp:3219
uint32_t bitwise_type
Definition: data_type.hpp:3096
uint16_t bitwise_type
Definition: data_type.hpp:3114
Definition: data_type.hpp:3078
__host__ constexpr __device__ const auto & At(Number< I >) const
Definition: statically_indexed_array.hpp:69
Definition: data_type.hpp:187
uint32_t element_type
Definition: data_type.hpp:189
__host__ __device__ type pack(const test_vec_t &x)
Definition: data_type.hpp:219
type data
Definition: data_type.hpp:191
int8_t test_vec_t
Definition: data_type.hpp:192
__host__ __device__ bf6_t unpack(Number< I >)
Definition: data_type.hpp:197
StaticallyIndexedArray_v2< element_type, 3 > type
Definition: data_type.hpp:190
bf6x16_pk_t()
Definition: data_type.hpp:193
bf6x16_pk_t(type init)
Definition: data_type.hpp:194
Definition: data_type.hpp:253
bf6x32_pk_t()
Definition: data_type.hpp:259
uint32_t element_type
Definition: data_type.hpp:255
type data
Definition: data_type.hpp:257
StaticallyIndexedArray_v2< element_type, 6 > type
Definition: data_type.hpp:256
__host__ __device__ bf6_t unpack(Number< I >)
Definition: data_type.hpp:263
__host__ __device__ type pack(const test_vec_t &x)
Definition: data_type.hpp:285
bf6x32_pk_t(type init)
Definition: data_type.hpp:260
int8_t test_vec_t
Definition: data_type.hpp:258
Definition: amd_ck_fp8.hpp:344
fp8_storage_t data_type
Definition: amd_ck_fp8.hpp:345
Unsigned representation of a conventional biased Float32 exponent.
Definition: e8m0.hpp:25
Definition: data_type.hpp:32
f4x2_pk_t()
Definition: data_type.hpp:35
__host__ __device__ type unpack(Number< I >) const
Definition: data_type.hpp:39
type data
Definition: data_type.hpp:34
__host__ __device__ type pack(const type x0, const type x1)
Definition: data_type.hpp:48
uint8_t type
Definition: data_type.hpp:33
f4x2_pk_t(type init)
Definition: data_type.hpp:36
Definition: data_type.hpp:55
f6x16_pk_t(type init)
Definition: data_type.hpp:62
type data
Definition: data_type.hpp:59
StaticallyIndexedArray_v2< element_type, 3 > type
Definition: data_type.hpp:58
int8_t test_vec_t
Definition: data_type.hpp:60
uint32_t element_type
Definition: data_type.hpp:57
__host__ __device__ type pack(const test_vec_t &x)
Definition: data_type.hpp:87
__host__ __device__ f6_t unpack(Number< I >)
Definition: data_type.hpp:65
f6x16_pk_t()
Definition: data_type.hpp:61
Definition: data_type.hpp:121
int8_t test_vec_t
Definition: data_type.hpp:126
f6x32_pk_t(type init)
Definition: data_type.hpp:128
__host__ __device__ f6_t unpack(Number< I >)
Definition: data_type.hpp:131
f6x32_pk_t()
Definition: data_type.hpp:127
type data
Definition: data_type.hpp:125
__host__ __device__ type pack(const test_vec_t &x)
Definition: data_type.hpp:153
StaticallyIndexedArray_v2< element_type, 6 > type
Definition: data_type.hpp:124
uint32_t element_type
Definition: data_type.hpp:123
Definition: amd_ck_fp8.hpp:298
fp8_storage_t data_type
Definition: amd_ck_fp8.hpp:299
Definition: integral_constant.hpp:10
Definition: data_type.hpp:399
static constexpr bool value
Definition: data_type.hpp:400
bf8_ocp_t::data_type type
Definition: data_type.hpp:1669
f8_ocp_t::data_type type
Definition: data_type.hpp:1663
pk_i4_t::type type
Definition: data_type.hpp:1699
Definition: data_type.hpp:1656
unsigned _BitInt(8 *sizeof(T)) type
Definition: data_type.hpp:1657
__host__ constexpr __device__ non_native_vector_base(data_v v)
Definition: data_type.hpp:1727
__host__ constexpr __device__ non_native_vector_base(T f)
Definition: data_type.hpp:1722
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1754
typename nnvb_data_t_selector< T >::type data_t
Definition: data_type.hpp:1708
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1778
__host__ constexpr __device__ non_native_vector_base(data_t a)
Definition: data_type.hpp:1721
__host__ constexpr __device__ non_native_vector_base()
Definition: data_type.hpp:1726
data_t data_v
Definition: data_type.hpp:1710
__host__ constexpr __device__ non_native_vector_base(data_t a)
Definition: data_type.hpp:1823
typename nnvb_data_t_selector< T >::type data_t
Definition: data_type.hpp:1807
typename T::element_type element_t
Definition: data_type.hpp:1808
element_t data_v
Definition: data_type.hpp:1812
__host__ constexpr __device__ non_native_vector_base()
Definition: data_type.hpp:1831
__host__ constexpr __device__ non_native_vector_base(data_v v)
Definition: data_type.hpp:1832
__host__ constexpr __device__ non_native_vector_base(T f)
Definition: data_type.hpp:1827
Definition: data_type.hpp:1652
Definition: data_type.hpp:320
type data
Definition: data_type.hpp:322
__host__ constexpr __device__ pk_i4_t(type init)
Definition: data_type.hpp:324
int8_t type
Definition: data_type.hpp:321
__host__ constexpr __device__ pk_i4_t()
Definition: data_type.hpp:323
T type
Definition: data_type.hpp:411
bf8_fnuz_t type
Definition: data_type.hpp:498
bf8_ocp_t::data_type type
Definition: data_type.hpp:512
bhalf_t type
Definition: data_type.hpp:447
bool type
Definition: data_type.hpp:519
double type
Definition: data_type.hpp:426
f8_fnuz_t type
Definition: data_type.hpp:491
f8_ocp_t::data_type type
Definition: data_type.hpp:505
float type
Definition: data_type.hpp:433
half_t type
Definition: data_type.hpp:440
int32_t type
Definition: data_type.hpp:454
int8_t type
Definition: data_type.hpp:461
typename non_native_vector_base< bf8_ocp_t, N >::data_t type
Definition: data_type.hpp:1873
typename non_native_vector_base< f8_ocp_t, N >::data_t type
Definition: data_type.hpp:1865
typename non_native_vector_base< pk_i4_t, N >::data_t type
Definition: data_type.hpp:1881
uint8_t type
Definition: data_type.hpp:468
T type
Definition: data_type.hpp:418
Definition: data_type.hpp:394
Definition: functional2.hpp:31
StaticallyIndexedArray< d16_t, 8 > d16x8_
Definition: data_type.hpp:1410
d128_t type
Definition: data_type.hpp:1401
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:1418
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1421
T d32_t
Definition: data_type.hpp:1397
StaticallyIndexedArray< d64_t, 2 > d64x2_
Definition: data_type.hpp:1412
T d4_t
Definition: data_type.hpp:1394
StaticallyIndexedArray< d128_t, 1 > d128x1_
Definition: data_type.hpp:1413
T d2_t
Definition: data_type.hpp:1393
T d64_t
Definition: data_type.hpp:1398
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:1416
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1468
T d8_t
Definition: data_type.hpp:1395
StaticallyIndexedArray< d4_t, 32 > d4x32_
Definition: data_type.hpp:1408
StaticallyIndexedArray< d8_t, 16 > d8x16_
Definition: data_type.hpp:1409
StaticallyIndexedArray< d1_t, 128 > d1x128_
Definition: data_type.hpp:1406
T d1_t
Definition: data_type.hpp:1392
d128_t d128_
Definition: data_type.hpp:1405
StaticallyIndexedArray< d32_t, 4 > d32x4_
Definition: data_type.hpp:1411
StaticallyIndexedArray< d2_t, 64 > d2x64_
Definition: data_type.hpp:1407
T d128_t
Definition: data_type.hpp:1399
T d16_t
Definition: data_type.hpp:1396
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1017
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:1012
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:1014
StaticallyIndexedArray< d4_t, 3 > d4x3_
Definition: data_type.hpp:1007
T d8_t
Definition: data_type.hpp:998
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1046
T d4_t
Definition: data_type.hpp:997
StaticallyIndexedArray< d1_t, 13 > d1x13_
Definition: data_type.hpp:1006
d13_t type
Definition: data_type.hpp:1001
d13_t d13_
Definition: data_type.hpp:1005
T d1_t
Definition: data_type.hpp:996
T d13_t
Definition: data_type.hpp:999
StaticallyIndexedArray< d13_t, 1 > d13x1_
Definition: data_type.hpp:1009
StaticallyIndexedArray< d8_t, 1 > d8x1_
Definition: data_type.hpp:1008
T d4_t
Definition: data_type.hpp:1080
d16_t type
Definition: data_type.hpp:1084
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1101
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:1096
T d2_t
Definition: data_type.hpp:1079
StaticallyIndexedArray< d4_t, 4 > d4x4_
Definition: data_type.hpp:1091
StaticallyIndexedArray< d8_t, 2 > d8x2_
Definition: data_type.hpp:1092
StaticallyIndexedArray< d2_t, 8 > d2x8_
Definition: data_type.hpp:1090
T d16_t
Definition: data_type.hpp:1082
T d8_t
Definition: data_type.hpp:1081
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:1098
d16_t d16_
Definition: data_type.hpp:1088
StaticallyIndexedArray< d1_t, 16 > d1x16_
Definition: data_type.hpp:1089
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1135
StaticallyIndexedArray< d16_t, 1 > d16x1_
Definition: data_type.hpp:1093
T d1_t
Definition: data_type.hpp:1078
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:2186
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:2220
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:2183
T d1_t
Definition: data_type.hpp:2162
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:2181
T d1_
Definition: data_type.hpp:531
d1_t type
Definition: data_type.hpp:527
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:535
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:549
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:537
StaticallyIndexedArray< T, 1 > d1x1_
Definition: data_type.hpp:532
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:540
T d1_t
Definition: data_type.hpp:526
T d1_t
Definition: data_type.hpp:1890
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:1903
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1922
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:1901
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1906
StaticallyIndexedArray< d32_t, 8 > d32x8_
Definition: data_type.hpp:1538
T d1_t
Definition: data_type.hpp:1518
StaticallyIndexedArray< d256_t, 1 > d256x1_
Definition: data_type.hpp:1541
d256_t d256_
Definition: data_type.hpp:1532
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:1546
StaticallyIndexedArray< d128_t, 2 > d128x2_
Definition: data_type.hpp:1540
StaticallyIndexedArray< d4_t, 64 > d4x64_
Definition: data_type.hpp:1535
StaticallyIndexedArray< d16_t, 16 > d16x16_
Definition: data_type.hpp:1537
T d2_t
Definition: data_type.hpp:1519
T d256_t
Definition: data_type.hpp:1526
T d4_t
Definition: data_type.hpp:1520
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1549
T d8_t
Definition: data_type.hpp:1521
T d64_t
Definition: data_type.hpp:1524
StaticallyIndexedArray< d64_t, 4 > d64x4_
Definition: data_type.hpp:1539
T d16_t
Definition: data_type.hpp:1522
d256_t type
Definition: data_type.hpp:1528
StaticallyIndexedArray< d8_t, 32 > d8x32_
Definition: data_type.hpp:1536
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:1544
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1600
StaticallyIndexedArray< d2_t, 128 > d2x128_
Definition: data_type.hpp:1534
T d128_t
Definition: data_type.hpp:1525
StaticallyIndexedArray< d1_t, 256 > d1x256_
Definition: data_type.hpp:1533
T d32_t
Definition: data_type.hpp:1523
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:574
T d2_t
Definition: data_type.hpp:563
d2_t d2_
Definition: data_type.hpp:569
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:599
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:576
T d1_t
Definition: data_type.hpp:562
StaticallyIndexedArray< d2_t, 1 > d2x1_
Definition: data_type.hpp:571
StaticallyIndexedArray< d1_t, 2 > d1x2_
Definition: data_type.hpp:570
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:579
d2_t type
Definition: data_type.hpp:565
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1980
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:1954
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:1956
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1959
T d1_t
Definition: data_type.hpp:1941
T d1_t
Definition: data_type.hpp:1172
StaticallyIndexedArray< d8_t, 4 > d8x4_
Definition: data_type.hpp:1187
d32_t type
Definition: data_type.hpp:1179
StaticallyIndexedArray< d1_t, 32 > d1x32_
Definition: data_type.hpp:1184
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:1192
StaticallyIndexedArray< d32_t, 1 > d32x1_
Definition: data_type.hpp:1189
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1197
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1235
T d4_t
Definition: data_type.hpp:1174
T d16_t
Definition: data_type.hpp:1176
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:1194
T d32_t
Definition: data_type.hpp:1177
StaticallyIndexedArray< d16_t, 2 > d16x2_
Definition: data_type.hpp:1188
StaticallyIndexedArray< d2_t, 16 > d2x16_
Definition: data_type.hpp:1185
d32_t d32_
Definition: data_type.hpp:1183
T d8_t
Definition: data_type.hpp:1175
T d2_t
Definition: data_type.hpp:1173
StaticallyIndexedArray< d4_t, 8 > d4x8_
Definition: data_type.hpp:1186
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:2320
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:2282
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:2277
T d1_t
Definition: data_type.hpp:2257
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:2279
T d1_t
Definition: data_type.hpp:622
StaticallyIndexedArray< d3_t, 1 > d3x1_
Definition: data_type.hpp:633
T d2_t
Definition: data_type.hpp:623
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:636
StaticallyIndexedArray< d1_t, 3 > d1x3_
Definition: data_type.hpp:631
StaticallyIndexedArray< d2_t, 1 > d2x1_
Definition: data_type.hpp:632
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:665
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:638
d3_t d3_
Definition: data_type.hpp:630
d3_t type
Definition: data_type.hpp:626
T d3_t
Definition: data_type.hpp:624
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:641
d4_t type
Definition: data_type.hpp:696
T d1_t
Definition: data_type.hpp:692
StaticallyIndexedArray< d2_t, 2 > d2x2_
Definition: data_type.hpp:702
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:711
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:706
T d4_t
Definition: data_type.hpp:694
d4_t d4_
Definition: data_type.hpp:700
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:708
StaticallyIndexedArray< d1_t, 4 > d1x4_
Definition: data_type.hpp:701
StaticallyIndexedArray< d4_t, 1 > d4x1_
Definition: data_type.hpp:703
T d2_t
Definition: data_type.hpp:693
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:735
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:2021
T d1_t
Definition: data_type.hpp:2004
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:2049
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:2019
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:2024
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:776
StaticallyIndexedArray< d4_t, 1 > d4x1_
Definition: data_type.hpp:772
d5_t d5_
Definition: data_type.hpp:770
T d4_t
Definition: data_type.hpp:763
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:778
T d1_t
Definition: data_type.hpp:762
StaticallyIndexedArray< d1_t, 5 > d1x5_
Definition: data_type.hpp:771
d5_t type
Definition: data_type.hpp:766
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:805
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:781
T d5_t
Definition: data_type.hpp:764
StaticallyIndexedArray< d5_t, 1 > d5x1_
Definition: data_type.hpp:773
StaticallyIndexedArray< d2_t, 32 > d2x32_
Definition: data_type.hpp:1290
StaticallyIndexedArray< d1_t, 64 > d1x64_
Definition: data_type.hpp:1289
StaticallyIndexedArray< d4_t, 16 > d4x16_
Definition: data_type.hpp:1291
T d4_t
Definition: data_type.hpp:1278
StaticallyIndexedArray< d64_t, 1 > d64x1_
Definition: data_type.hpp:1295
d64_t d64_
Definition: data_type.hpp:1288
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:1346
StaticallyIndexedArray< d8_t, 8 > d8x8_
Definition: data_type.hpp:1292
StaticallyIndexedArray< d32_t, 2 > d32x2_
Definition: data_type.hpp:1294
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:1298
d64_t type
Definition: data_type.hpp:1284
T d8_t
Definition: data_type.hpp:1279
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:1303
T d32_t
Definition: data_type.hpp:1281
T d2_t
Definition: data_type.hpp:1277
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:1300
StaticallyIndexedArray< d16_t, 4 > d16x4_
Definition: data_type.hpp:1293
T d16_t
Definition: data_type.hpp:1280
T d1_t
Definition: data_type.hpp:1276
T d64_t
Definition: data_type.hpp:1282
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:2385
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:2431
T d1_t
Definition: data_type.hpp:2361
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:2383
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:2388
StaticallyIndexedArray< d1_t, 7 > d1x7_
Definition: data_type.hpp:842
T d1_t
Definition: data_type.hpp:832
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:850
d7_t type
Definition: data_type.hpp:837
StaticallyIndexedArray< d2_t, 3 > d2x3_
Definition: data_type.hpp:843
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:882
StaticallyIndexedArray< d4_t, 1 > d4x1_
Definition: data_type.hpp:844
d7_t d7_
Definition: data_type.hpp:841
T d4_t
Definition: data_type.hpp:834
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:853
StaticallyIndexedArray< d7_t, 1 > d7x1_
Definition: data_type.hpp:845
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:848
T d2_t
Definition: data_type.hpp:833
T d7_t
Definition: data_type.hpp:835
T d1_t
Definition: data_type.hpp:914
T d2_t
Definition: data_type.hpp:915
T d4_t
Definition: data_type.hpp:916
d8_t type
Definition: data_type.hpp:919
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:930
T d8_t
Definition: data_type.hpp:917
StaticallyIndexedArray< d8_t, 1 > d8x1_
Definition: data_type.hpp:927
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:932
StaticallyIndexedArray< d2_t, 4 > d2x4_
Definition: data_type.hpp:925
StaticallyIndexedArray< d1_t, 8 > d1x8_
Definition: data_type.hpp:924
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:964
StaticallyIndexedArray< d4_t, 2 > d4x2_
Definition: data_type.hpp:926
d8_t d8_
Definition: data_type.hpp:923
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:935
__host__ constexpr __device__ const auto & AsType() const
Definition: data_type.hpp:2099
__host__ constexpr __device__ vector_type(type v)
Definition: data_type.hpp:2096
T d1_t
Definition: data_type.hpp:2077
__host__ constexpr __device__ auto & AsType()
Definition: data_type.hpp:2129
__host__ constexpr __device__ vector_type()
Definition: data_type.hpp:2094
Definition: data_type.hpp:367
Definition: data_type.hpp:347
StaticallyIndexedArray< data_t, N > dxN
Definition: data_type.hpp:1716
StaticallyIndexedArray< T, N > dTxN
Definition: data_type.hpp:1717
StaticallyIndexedArray< data_v, 1 > dNx1
Definition: data_type.hpp:1718
data_v dN
Definition: data_type.hpp:1715
StaticallyIndexedArray< data_t, N > dxN
Definition: data_type.hpp:1818
StaticallyIndexedArray< data_v, 1 > dNx1
Definition: data_type.hpp:1820
data_v dN
Definition: data_type.hpp:1817
StaticallyIndexedArray< T, N > dTxN
Definition: data_type.hpp:1819
StaticallyIndexedArray< d16_t, 1 > d16x1_
Definition: data_type.hpp:2178
d16_t d16_
Definition: data_type.hpp:2173
StaticallyIndexedArray< d4_t, 4 > d4x4_
Definition: data_type.hpp:2176
StaticallyIndexedArray< d1_t, 16 > d1x16_
Definition: data_type.hpp:2174
StaticallyIndexedArray< d2_t, 8 > d2x8_
Definition: data_type.hpp:2175
StaticallyIndexedArray< d8_t, 2 > d8x2_
Definition: data_type.hpp:2177
StaticallyIndexedArray< d1_t, 1 > d1x1_
Definition: data_type.hpp:1897
d1_t d1_
Definition: data_type.hpp:1896
d1_nnv_t d1_nnv_
Definition: data_type.hpp:1898
StaticallyIndexedArray< d1_t, 2 > d1x2_
Definition: data_type.hpp:1950
d2_t d2_
Definition: data_type.hpp:1949
StaticallyIndexedArray< d2_t, 1 > d2x1_
Definition: data_type.hpp:1951
StaticallyIndexedArray< d1_t, 32 > d1x32_
Definition: data_type.hpp:2269
StaticallyIndexedArray< d8_t, 4 > d8x4_
Definition: data_type.hpp:2272
StaticallyIndexedArray< d16_t, 2 > d16x2_
Definition: data_type.hpp:2273
StaticallyIndexedArray< d32_t, 1 > d32x1_
Definition: data_type.hpp:2274
d32_t d32_
Definition: data_type.hpp:2268
StaticallyIndexedArray< d4_t, 8 > d4x8_
Definition: data_type.hpp:2271
StaticallyIndexedArray< d2_t, 16 > d2x16_
Definition: data_type.hpp:2270
StaticallyIndexedArray< d2_t, 2 > d2x2_
Definition: data_type.hpp:2015
StaticallyIndexedArray< d1_t, 4 > d1x4_
Definition: data_type.hpp:2014
d4_t d4_
Definition: data_type.hpp:2013
StaticallyIndexedArray< d4_t, 1 > d4x1_
Definition: data_type.hpp:2016
StaticallyIndexedArray< d8_t, 8 > d8x8_
Definition: data_type.hpp:2377
StaticallyIndexedArray< d1_t, 64 > d1x64_
Definition: data_type.hpp:2374
StaticallyIndexedArray< d64_t, 1 > d64x1_
Definition: data_type.hpp:2380
StaticallyIndexedArray< d4_t, 16 > d4x16_
Definition: data_type.hpp:2376
StaticallyIndexedArray< d16_t, 4 > d16x4_
Definition: data_type.hpp:2378
StaticallyIndexedArray< d32_t, 2 > d32x2_
Definition: data_type.hpp:2379
StaticallyIndexedArray< d2_t, 32 > d2x32_
Definition: data_type.hpp:2375
d64_t d64_
Definition: data_type.hpp:2373
StaticallyIndexedArray< d2_t, 4 > d2x4_
Definition: data_type.hpp:2089
d8_t d8_
Definition: data_type.hpp:2087
StaticallyIndexedArray< d8_t, 1 > d8x1_
Definition: data_type.hpp:2091
StaticallyIndexedArray< d4_t, 2 > d4x2_
Definition: data_type.hpp:2090
StaticallyIndexedArray< d1_t, 8 > d1x8_
Definition: data_type.hpp:2088