25 inline namespace _V1 {
31 : std::is_same<std::remove_cv_t<get_elem_type_t<T>>, float> {};
38 template <
size_t Size,
typename T8,
typename T16,
typename T32,
typename T64>
43 std::conditional_t<Size == 4, T32,
44 std::conditional_t<Size == 8, T64, void>>>>;
46 template <
size_t N,
size_t... Ns> constexpr
bool CheckSizeIn() {
47 constexpr
bool SameSize[] = {(N == Ns)...};
49 for (
size_t I = 0; I <
sizeof...(Ns); ++I)
58 template <
typename T1,
typename T2,
typename =
void>
61 template <
typename T1,
typename T2>
68 constexpr
bool SameType[] = {
69 is_same_op_v<std::remove_cv_t<T>, std::remove_cv_t<Ts>>...};
71 for (
size_t I = 0; I <
sizeof...(Ts); ++I)
79 template <
typename... Ts>
104 template <
typename T>
108 static_assert(std::is_integral_v<T>);
113 template <
typename T>
122 template <
typename T>
126 template <
typename T,
typename... Ts>
129 template <
typename T,
typename... Ts>
137 multi_ptr<ElementType, Space, DecorateAddress>> {
141 template <
typename T>
151 : std::bool_constant<Space == access::address_space::global_space ||
152 Space == access::address_space::local_space ||
153 Space == access::address_space::private_space ||
154 Space == access::address_space::generic_space> {};
156 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