DPC++ Runtime
Runtime libraries for oneAPI DPC++
|
|
Go to the documentation of this file.
18 #include <type_traits>
22 template <
int Dimensions>
class group;
31 template <
typename T>
struct is_group : std::false_type {};
33 template <
int Dimensions>
38 template <>
struct is_sub_group<ext::oneapi::sub_group> : std::true_type {};
42 : std::integral_constant<bool,
43 is_group<T>::value || is_sub_group<T>::value> {};
52 template <
typename ElementType, access::address_space Space>
class multi_ptr;
66 template <
typename T,
typename R>
69 template <
int V>
using int_constant = std::integral_constant<int, V>;
74 template <
typename T,
int N>
80 template <
typename T,
int N>
83 int_constant<sizeof(T) * N>> {};
85 template <
typename T,
int N>
109 template <
typename T,
typename B>
121 template <
typename T,
typename R>
126 template <
typename T,
typename R>
138 template <
typename T>
141 template <
typename T>
144 using type =
typename std::make_signed<T>::type;
147 template <
typename T>
156 template <
typename T>
172 template <
typename T>
175 template <
typename T>
178 using type =
typename std::make_unsigned<T>::type;
181 template <
typename T>
190 template <
typename T>
204 template <
typename T,
int N,
template <
typename>
class S>
208 template <
typename>
struct is_vec : std::false_type {};
209 template <
typename T, std::
size_t N>
213 template <
typename T>
217 template <
typename T>
222 template <
typename T>
227 template <
typename T>
229 :
bool_constant<is_integral<T>::value || is_floating_point<T>::value> {};
231 template <
typename T>
233 :
bool_constant<!is_vec<T>::value && is_arithmetic<T>::value> {};
235 template <
typename T>
237 :
bool_constant<is_vec<T>::value && is_arithmetic<T>::value> {};
240 template <
typename T>
242 :
bool_constant<std::is_same<remove_cv_t<T>, bool>::value> {};
244 template <
typename T>
247 is_scalar_bool<vector_element_t<T>>::value> {};
249 template <
typename T>
257 template <
typename T, access::address_space Space>
267 template <
typename T, access::address_space Space>
272 template <
typename T>
278 template <
typename T,
typename SpaceList>
281 template <
typename T,
typename SpaceList>
284 template <
typename T,
typename SpaceList, access::address_space Space>
286 :
bool_constant<is_one_of_spaces<Space, SpaceList>::value> {};
288 template <
typename T,
typename SpaceList>
302 template <
typename T,
typename TL>
307 template <
typename T>
313 template <
typename T>
320 template <
typename T>
331 static constexpr
bool found = !std::is_same<upper_type, void>::value;
341 #if defined(RESTRICT_WRITE_ACCESS_TO_CONSTANT_PTR)
342 template <access::address_space AS,
class DataT>
344 typename std::conditional<AS == access::address_space::constant_space,
345 const DataT, DataT>::type;
347 template <access::address_space AS,
class DataT>
typename copy_cv_qualifiers< T, R >::type copy_cv_qualifiers_t
copy_cv_qualifiers_t< T, new_type_wo_cv_qualifiers > type
vector_element_t< vec< T, N > > base_type
typename copy_cv_qualifiers_impl< T, remove_cv_t< R > >::type type
typename make_signed_impl< T, T >::type make_signed_impl_t
typename std::make_signed< T >::type type
copy_cv_qualifiers_t< T, vector_element_impl_t< remove_cv_t< T > >> type
typename make_signed< T >::type make_signed_t
Encapsulates all functionality required to represent a particular work-group within a parallel execut...
find_type_t< TL, is_type_size_double_of, T > find_twice_as_large_type_t
typename make_unsigned< T >::type make_unsigned_t
std::array< unsigned char, 16 > uuid_type
typename remove_pointer< T >::type remove_pointer_t
make_signed_impl_t< vector_element_t< T > > base_type
Provides constructors for address space qualified and non address space qualified pointers to allow i...
type_list< conditional_t< std::is_unsigned< char >::value, type_list< scalar_default_char_list, scalar_unsigned_char_list >, scalar_unsigned_char_list >, scalar_unsigned_short_list, scalar_unsigned_int_list, scalar_unsigned_long_list, scalar_unsigned_longlong_list > scalar_unsigned_integer_list
typename std::make_unsigned< T >::type type
find_type_t< TL, is_type_size_equal, T > find_same_size_type_t
cl::sycl::detail::half_impl::half half
make_signed_impl_t< remove_cv_t< T > > new_type_wo_cv_qualifiers
conditional_t< found, new_type, void > type
typename std::conditional< B, T, F >::type conditional_t
find_twice_as_large_type_t< gtl::scalar_unsigned_integer_list, T > type
type_list< conditional_t< std::is_signed< char >::value, type_list< scalar_default_char_list, scalar_signed_char_list >, scalar_signed_char_list >, scalar_signed_short_list, scalar_signed_int_list, scalar_signed_long_list, scalar_signed_longlong_list > scalar_signed_integer_list
typename make_larger_impl< base_type, base_type >::type upper_type
find_twice_as_large_type_t< gtl::scalar_floating_list, T > type
type_list< vector_signed_integer_list, vector_unsigned_integer_list > vector_integer_list
change_base_type_t< T, base_type > type
We provide new interfaces for matrix muliply in this patch:
type_list< scalar_signed_integer_list, scalar_unsigned_integer_list > scalar_integer_list
typename make_larger_impl< T, T >::type type
type_list< scalar_float_list, scalar_double_list, scalar_half_list > scalar_floating_list
typename vector_element_impl< T >::type vector_element_impl_t
typename make_unsigned_impl< T, T >::type make_unsigned_impl_t
type_list< scalar_integer_list, vector_integer_list, marray_integer_list > integer_list
std::tuple< Args... > args_type
typename change_base_type< T, B >::type change_base_type_t
__SYCL_INLINE_CONSTEXPR bool is_group_v
Provides a cross-patform vector class template that works efficiently on SYCL devices as well as in h...
copy_cv_qualifiers_t< T, new_type_wo_cv_qualifiers > type
typename make_larger< T >::type make_larger_t
make_unsigned_impl_t< remove_cv_t< T > > new_type_wo_cv_qualifiers
#define __SYCL_INLINE_CONSTEXPR
make_unsigned_impl_t< vector_element_t< T > > base_type
find_twice_as_large_type_t< gtl::scalar_signed_integer_list, T > type
std::integral_constant< int, V > int_constant
typename make_type_impl< T, TL >::type scalar_type
find_same_size_type_t< TL, T > type
bool_constant< S< T >::value &&(sizeof(vector_element_t< T >)==N)> is_gen_based_on_type_sizeof
typename std::enable_if< B, T >::type enable_if_t
change_base_type_t< T, base_type > type
typename make_type_impl< T, TL >::type make_type_t
typename vector_element< T >::type vector_element_t
#define __SYCL_INLINE_NAMESPACE(X)