24 inline namespace _V1 {
30 : std::is_same<std::remove_cv_t<get_elem_type_t<T>>, float> {};
37 template <
size_t Size,
typename T8,
typename T16,
typename T32,
typename T64>
42 std::conditional_t<Size == 4, T32,
43 std::conditional_t<Size == 8, T64, void>>>>;
45 template <
size_t N,
size_t... Ns> constexpr
bool CheckSizeIn() {
46 constexpr
bool SameSize[] = {(N == Ns)...};
48 for (
size_t I = 0; I <
sizeof...(Ns); ++I)
57 template <
typename T1,
typename T2,
typename =
void>
60 template <
typename T1,
typename T2>
67 constexpr
bool SameType[] = {
68 is_same_op_v<std::remove_cv_t<T>, std::remove_cv_t<Ts>>...};
70 for (
size_t I = 0; I <
sizeof...(Ts); ++I)
78 template <
typename... Ts>
103 template <
typename T>
107 static_assert(std::is_integral_v<T>);
112 template <
typename T>
121 template <
typename T>
125 template <
typename T,
typename... Ts>
128 template <
typename T,
typename... Ts>
136 multi_ptr<ElementType, Space, DecorateAddress>> {
140 template <
typename T>
150 : std::bool_constant<Space == access::address_space::global_space ||
151 Space == access::address_space::local_space ||
152 Space == access::address_space::private_space ||
153 Space == access::address_space::generic_space> {};
155 template <
typename T>
constexpr bool check_all_same_op_type_v
typename get_fixed_sized_int< T >::type get_fixed_sized_int_t
constexpr bool is_same_op_v
typename same_size_unsigned_int< T >::type same_size_unsigned_int_t
constexpr bool check_size_in_v
std::conditional_t< Size==1, T8, std::conditional_t< Size==2, T16, std::conditional_t< Size==4, T32, std::conditional_t< Size==8, T64, void > >> > select_scalar_by_size_t
constexpr bool is_valid_elem_type_v
constexpr access::decorated get_multi_ptr_decoration_v
constexpr bool CheckSizeIn()
typename simplify_if_swizzle< T >::type simplify_if_swizzle_t
constexpr bool CheckAllSameOpType()
constexpr bool use_fast_math_v
typename same_size_signed_int< T >::type same_size_signed_int_t
constexpr bool has_writeable_addr_space_v
std::conditional_t< std::is_signed_v< T >, same_size_signed_int_t< T >, same_size_unsigned_int_t< T > > type
select_scalar_by_size_t< Size, int8_t, int16_t, int32_t, int64_t > type
select_scalar_by_size_t< Size, uint8_t, uint16_t, uint32_t, uint64_t > type
typename get_signed_int_by_size< sizeof(T)>::type type
typename get_unsigned_int_by_size< sizeof(T)>::type type