DPC++ Runtime
Runtime libraries for oneAPI DPC++
|
|
Go to the documentation of this file.
19 #include <type_traits>
23 template <
int Dimensions>
class group;
24 namespace ext::oneapi {
27 namespace experimental {
33 template <
typename Group, std::
size_t Extent>
42 template <
typename T>
struct is_group : std::false_type {};
44 template <
int Dimensions>
49 template <>
struct is_sub_group<ext::oneapi::sub_group> : std::true_type {};
53 : std::integral_constant<bool,
54 is_group<T>::value || is_sub_group<T>::value> {};
69 detail::is_sub_group<T>::value> {};
73 namespace ext::oneapi::experimental {
87 template <
typename T,
typename R>
90 template <
int V>
using int_constant = std::integral_constant<int, V>;
94 template <
typename T,
int N>
101 template <
typename T>
123 template <
typename T,
typename B>
135 template <
typename T,
typename R>
140 template <
typename T,
typename R>
152 template <
typename T>
155 template <
typename T>
158 using type =
typename std::make_signed<T>::type;
161 template <
typename T>
170 template <
typename T>
186 template <
typename T>
189 template <
typename T>
192 using type =
typename std::make_unsigned<T>::type;
195 template <
typename T>
204 template <
typename T>
218 template <
typename T,
int N,
template <
typename>
class S>
222 template <
typename>
struct is_vec : std::false_type {};
223 template <
typename T, std::
size_t N>
227 static constexpr std::size_t size = 1;
231 static constexpr std::size_t size = N;
235 template <
typename T>
239 template <
typename T>
244 template <
typename T>
249 template <
typename T>
251 :
bool_constant<is_integral<T>::value || is_floating_point<T>::value> {};
253 template <
typename T>
255 :
bool_constant<!is_vec<T>::value && is_arithmetic<T>::value> {};
257 template <
typename T>
259 :
bool_constant<is_vec<T>::value && is_arithmetic<T>::value> {};
262 template <
typename T>
264 :
bool_constant<std::is_same<remove_cv_t<T>, bool>::value> {};
266 template <
typename T>
269 is_scalar_bool<vector_element_t<T>>::value> {};
271 template <
typename T>
301 template <
typename T>
307 template <
typename T,
typename SpaceList>
310 template <
typename T,
typename SpaceList>
317 :
bool_constant<is_one_of_spaces<Space, SpaceList>::value> {};
319 template <
typename T,
typename SpaceList>
333 template <
typename T,
typename TL>
338 template <
typename T>
344 template <
typename T>
351 template <
typename T>
362 static constexpr
bool found = !std::is_same<upper_type, void>::value;
372 #if defined(RESTRICT_WRITE_ACCESS_TO_CONSTANT_PTR)
373 template <access::address_space AS,
class DataT>
375 typename std::conditional<AS == access::address_space::constant_space,
376 const DataT, DataT>::type;
378 template <access::address_space AS,
class DataT>
make_signed_impl_t< vector_element_t< T > > base_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_signed_integer_list, T > type
typename copy_cv_qualifiers< T, R >::type copy_cv_qualifiers_t
std::integral_constant< bool, V > bool_constant
#define __SYCL_INLINE_VER_NAMESPACE(X)
typename make_signed_impl< T, T >::type make_signed_impl_t
find_twice_as_large_type_t< gtl::scalar_floating_list, T > type
find_twice_as_large_type_t< gtl::scalar_unsigned_integer_list, T > type
change_base_type_t< T, base_type > type
bool_constant< S< T >::value &&(sizeof(vector_element_t< T >)==N)> is_gen_based_on_type_sizeof
typename make_larger_impl< T, T >::type type
typename vector_element_impl< T >::type vector_element_impl_t
typename make_signed< T >::type make_signed_t
class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(local_accessor) local_accessor class __SYCL_EBO __SYCL_SPECIAL_CLASS Dimensions
---— Error handling, matching OpenCL plugin semantics.
make_signed_impl_t< remove_cv_t< T > > new_type_wo_cv_qualifiers
change_base_type_t< T, base_type > type
vector_element_t< vec< T, N > > base_type
copy_cv_qualifiers_t< T, vector_element_impl_t< remove_cv_t< T > >> type
typename std::enable_if< B, T >::type enable_if_t
typename make_larger< T >::type make_larger_t
typename make_type_impl< T, TL >::type make_type_t
typename copy_cv_qualifiers_impl< T, remove_cv_t< R > >::type type
typename make_unsigned< T >::type make_unsigned_t
typename remove_pointer< T >::type remove_pointer_t
Provides constructors for address space qualified and non address space qualified pointers to allow i...
copy_cv_qualifiers_t< T, new_type_wo_cv_qualifiers > type
typename change_base_type< T, B >::type change_base_type_t
std::integral_constant< int, V > int_constant
conditional_t< found, new_type, void > type
type_list< scalar_signed_integer_list, scalar_unsigned_integer_list > scalar_integer_list
type_list< vector_signed_integer_list, vector_unsigned_integer_list > vector_integer_list
std::array< unsigned char, 16 > uuid_type
find_type_t< TypeList, is_type_size_equal, T > find_same_size_type_t
make_unsigned_impl_t< remove_cv_t< T > > new_type_wo_cv_qualifiers
typename std::make_unsigned< T >::type type
sycl::detail::half_impl::half half
constexpr bool is_group_v
constexpr bool is_group_helper_v
find_same_size_type_t< TL, T > type
typename vector_element< T >::type vector_element_t
find_type_t< TypeList, is_type_size_double_of, T > find_twice_as_large_type_t
std::tuple< Args... > args_type
make_unsigned_impl_t< vector_element_t< T > > base_type
Provides a cross-patform vector class template that works efficiently on SYCL devices as well as in h...
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_byte_list > scalar_unsigned_integer_list
typename std::make_signed< T >::type type
typename std::conditional< B, T, F >::type conditional_t
typename make_unsigned_impl< T, T >::type make_unsigned_impl_t
type_list< scalar_float_list, scalar_double_list, scalar_half_list > scalar_floating_list
typename make_type_impl< T, TL >::type scalar_type
type_list< scalar_integer_list, vector_integer_list, marray_integer_list > integer_list
copy_cv_qualifiers_t< T, new_type_wo_cv_qualifiers > type