DPC++ Runtime
Runtime libraries for oneAPI DPC++
generic_type_lists.hpp
Go to the documentation of this file.
1 //==-------- generic_type_lists.hpp - SYCL Generic type lists --------------==//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #pragma once
10 
11 #include <sycl/access/access.hpp> // for address_space
12 #include <sycl/detail/type_list.hpp> // for type_list, address_space_list
13 
14 #include <cstddef> // for byte, size_t
15 #include <type_traits> // for conditional_t, is_signed_v, is_...
16 
17 // Generic type name description, which serves as a description for all valid
18 // types of parameters to kernel functions
19 
20 // Forward declarations
21 namespace sycl {
22 inline namespace _V1 {
23 template <typename T, int N> class vec;
24 template <typename Type, std::size_t NumElements> class marray;
25 
26 namespace detail {
27 namespace half_impl {
28 class half;
29 }
30 } // namespace detail
32 
33 namespace ext::oneapi {
34 class bfloat16;
35 }
36 namespace detail {
37 namespace gtl {
38 // floating point types
40 
43 
47 
49 
50 using half_list =
52 
54 
59 
66 
69 
72 
74 
76 
80 
84 
87 
88 using float_list =
90 
92 
96 
100 
103 
104 using double_list =
106 
109 
112 
115 
118 
121 
122 // geometric floating point types
124 
126 
128 
131 
134 
137 
140 
143 
145 
147 
150 
153 
156 
159 
161 
162 // cross floating point types
164 
166 
168 
171 
174 
176 
180 
184 
188 
190 
194 
199 
203 
205 
210 
215 
219 
223 
227 
231 
233 
234 // short int types
236 
241 
246 
250 
252 
257 
262 
266 
269 
273 
275 
276 // int types
278 
282 
287 
291 
293 
298 
303 
307 
310 
313 
316 
318 
319 // long types
321 
325 
330 
334 
336 
341 
346 
350 
353 
356 
359 
360 using long_list =
362 
363 // long long types
365 
370 
375 
379 
381 
386 
391 
395 
398 
401 
404 
407 
408 // long integer types
411 
414 
417 
421 
424 
427 
430 
434 
437 
440 
443 
447 
448 #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
449 // std::byte
451 
455 
459 #endif
460 
461 // integer types
463  tl_append<std::conditional_t<
464  std::is_signed_v<char>,
469 
471  tl_append<std::conditional_t<
472  std::is_signed_v<char>,
477 
479  tl_append<std::conditional_t<
480  std::is_signed_v<char>,
485 
489 
497 #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
498  ,
500 #endif
501  >;
502 
510 #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
511  ,
513 #endif
514  >;
515 
523 #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
524  ,
526 #endif
527  >;
528 
532 
535 
538 
541 
544 
545 // bool types
546 
550 
552 
554 
557 
558 // basic types
561 
564 
567 
571 
573 
575 
577 
581 
584 
587 
590 
591 using basic_list =
593 
594 // nan builtin types
597 } // namespace gtl
598 namespace gvl {
599 // address spaces
605 
606 } // namespace gvl
607 } // namespace detail
608 } // namespace _V1
609 } // namespace sycl
Provides a cross-platform math array class template that works on SYCL devices as well as in host C++...
Definition: marray.hpp:49
class sycl::vec ///////////////////////// Provides a cross-patform vector class template that works e...
Definition: vector.hpp:361
type_list< sycl::ext::oneapi::bfloat16 > scalar_bfloat16_list
tl_append< vector_signed_basic_list, vector_unsigned_basic_list > vector_basic_list
tl_append< scalar_double_list, vector_double_list, marray_double_list > double_list
tl_append< marray_default_char_list, marray_signed_char_list, marray_unsigned_char_list > marray_char_list
tl_append< scalar_unsigned_longlong_list, vector_unsigned_longlong_list, marray_unsigned_longlong_list > unsigned_longlong_list
tl_append< scalar_short_list, vector_short_list > short_list
tl_append< std::conditional_t< std::is_signed_v< char >, tl_append< vector_default_char_list, vector_signed_char_list >, vector_signed_char_list >, vector_signed_short_list, vector_signed_int_list, vector_signed_long_list, vector_signed_longlong_list > vector_signed_integer_list
type_list< char > scalar_default_char_list
type_list< signed short > scalar_signed_short_list
type_list< vec< signed long long, 1 >, vec< signed long long, 2 >, vec< signed long long, 3 >, vec< signed long long, 4 >, vec< signed long long, 8 >, vec< signed long long, 16 > > vector_signed_longlong_list
tl_append< scalar_floating_list, vector_floating_list > scalar_vector_floating_list
type_list< half > scalar_half_list
type_list< unsigned long > scalar_unsigned_long_list
type_list< float > scalar_float_list
type_list< vec< unsigned short, 1 >, vec< unsigned short, 2 >, vec< unsigned short, 3 >, vec< unsigned short, 4 >, vec< unsigned short, 8 >, vec< unsigned short, 16 > > vector_unsigned_short_list
tl_append< scalar_integer_list, vector_integer_list, marray_integer_list > integer_list
type_list< vec< char, 1 >, vec< char, 2 >, vec< char, 3 >, vec< char, 4 >, vec< char, 8 >, vec< char, 16 > > vector_default_char_list
type_list< half > scalar_geo_half_list
tl_append< scalar_signed_basic_list, scalar_unsigned_basic_list > scalar_basic_list
type_list< vec< signed short, 1 >, vec< signed short, 2 >, vec< signed short, 3 >, vec< signed short, 4 >, vec< signed short, 8 >, vec< signed short, 16 > > vector_signed_short_list
tl_append< scalar_geo_half_list, vector_geo_half_list > geo_half_list
tl_append< marray_signed_long_integer_list, marray_unsigned_long_integer_list > marray_long_integer_list
tl_append< cross_float_list, cross_double_list, cross_half_list > cross_floating_list
tl_append< marray_geo_float_list, marray_geo_double_list > marray_geo_list
type_list< signed int > scalar_signed_int_list
tl_append< scalar_float_list, vector_float_list > scalar_vector_float_list
type_list< unsigned int > scalar_unsigned_int_list
tl_append< scalar_unsigned_integer_list > scalar_unsigned_basic_list
tl_append< vector_default_char_list, vector_signed_char_list, vector_unsigned_char_list > vector_char_list
tl_append< scalar_signed_longlong_list, vector_signed_longlong_list, marray_signed_longlong_list > signed_longlong_list
tl_append< vector_float_list, vector_double_list, vector_half_list, vector_bfloat16_list > vector_floating_list
tl_append< scalar_unsigned_basic_list, vector_unsigned_basic_list, marray_unsigned_basic_list > unsigned_basic_list
type_list< double > scalar_double_list
type_list< marray< float, 1 >, marray< float, 2 >, marray< float, 3 >, marray< float, 4 >, marray< float, 8 >, marray< float, 16 > > marray_float_list
tl_append< scalar_signed_long_list, scalar_signed_longlong_list > scalar_signed_long_integer_list
tl_append< scalar_geo_float_list, vector_geo_float_list > geo_float_list
tl_append< scalar_unsigned_long_list, scalar_unsigned_longlong_list > scalar_unsigned_long_integer_list
tl_append< scalar_signed_integer_list, scalar_unsigned_integer_list > scalar_integer_list
type_list< unsigned long long > scalar_unsigned_longlong_list
type_list< vec< sycl::ext::oneapi::bfloat16, 1 >, vec< sycl::ext::oneapi::bfloat16, 2 >, vec< sycl::ext::oneapi::bfloat16, 3 >, vec< sycl::ext::oneapi::bfloat16, 4 >, vec< sycl::ext::oneapi::bfloat16, 8 >, vec< sycl::ext::oneapi::bfloat16, 16 > > vector_bfloat16_list
tl_append< scalar_longlong_list, vector_longlong_list, marray_longlong_list > longlong_list
type_list< vec< double, 3 >, vec< double, 4 > > cross_double_list
tl_append< scalar_default_char_list, scalar_signed_char_list, scalar_unsigned_char_list > scalar_char_list
tl_append< std::conditional_t< std::is_unsigned_v< char >, tl_append< vector_default_char_list, vector_unsigned_char_list >, vector_unsigned_char_list >, vector_unsigned_short_list, vector_unsigned_int_list, vector_unsigned_long_list, vector_unsigned_longlong_list, vector_byte_list > vector_unsigned_integer_list
type_list< signed long > scalar_signed_long_list
tl_append< scalar_long_integer_list, vector_long_integer_list, marray_long_integer_list > long_integer_list
type_list< float > scalar_geo_float_list
type_list< marray< signed long, 1 >, marray< signed long, 2 >, marray< signed long, 3 >, marray< signed long, 4 >, marray< signed long, 8 >, marray< signed long, 16 > > marray_signed_long_list
tl_append< scalar_signed_long_integer_list, scalar_unsigned_long_integer_list > scalar_long_integer_list
type_list< marray< unsigned long, 1 >, marray< unsigned long, 2 >, marray< unsigned long, 3 >, marray< unsigned long, 4 >, marray< unsigned long, 8 >, marray< unsigned long, 16 > > marray_unsigned_long_list
tl_append< scalar_geo_half_list, scalar_geo_float_list, scalar_geo_double_list > scalar_geo_list
tl_append< marray_float_list, marray_double_list, marray_half_list, marray_bfloat16_list > marray_floating_list
type_list< vec< float, 3 >, vec< float, 4 > > cross_float_list
tl_append< scalar_signed_char_list, vector_signed_char_list, marray_signed_char_list > signed_char_list
tl_append< scalar_unsigned_int_list, vector_unsigned_int_list, marray_unsigned_int_list > unsigned_int_list
tl_append< scalar_signed_short_list, scalar_unsigned_short_list > scalar_short_list
tl_append< vector_geo_half_list, vector_geo_float_list, vector_geo_double_list > vector_geo_list
tl_append< marray_signed_longlong_list, marray_unsigned_longlong_list > marray_longlong_list
type_list< marray< unsigned char, 1 >, marray< unsigned char, 2 >, marray< unsigned char, 3 >, marray< unsigned char, 4 >, marray< unsigned char, 8 >, marray< unsigned char, 16 > > marray_unsigned_char_list
tl_append< scalar_signed_int_list, scalar_unsigned_int_list > scalar_int_list
tl_append< vector_unsigned_integer_list > vector_unsigned_basic_list
tl_append< vector_signed_int_list, vector_unsigned_int_list > vector_int_list
type_list< signed char > scalar_signed_char_list
tl_append< scalar_unsigned_integer_list, vector_unsigned_integer_list, marray_unsigned_integer_list > unsigned_integer_list
type_list< signed long long > scalar_signed_longlong_list
tl_append< scalar_unsigned_char_list, vector_unsigned_char_list, marray_unsigned_char_list > unsigned_char_list
tl_append< scalar_half_list, scalar_bfloat16_list > half_bfloat16_list
type_list< marray< signed short, 1 >, marray< signed short, 2 >, marray< signed short, 3 >, marray< signed short, 4 >, marray< signed short, 8 >, marray< signed short, 16 > > marray_signed_short_list
type_list< marray< float, 3 >, marray< float, 4 >, marray< double, 3 >, marray< double, 4 > > cross_marray_list
tl_append< marray_unsigned_integer_list > marray_unsigned_basic_list
tl_append< scalar_signed_int_list, vector_signed_int_list, marray_signed_int_list > signed_int_list
type_list< vec< signed int, 1 >, vec< signed int, 2 >, vec< signed int, 3 >, vec< signed int, 4 >, vec< signed int, 8 >, vec< signed int, 16 > > vector_signed_int_list
type_list< marray< signed int, 1 >, marray< signed int, 2 >, marray< signed int, 3 >, marray< signed int, 4 >, marray< signed int, 8 >, marray< signed int, 16 > > marray_signed_int_list
type_list< vec< std::byte, 1 >, vec< std::byte, 2 >, vec< std::byte, 3 >, vec< std::byte, 4 >, vec< std::byte, 8 >, vec< std::byte, 16 > > vector_byte_list
tl_append< std::conditional_t< std::is_unsigned_v< char >, tl_append< marray_default_char_list, marray_unsigned_char_list >, marray_unsigned_char_list >, marray_unsigned_short_list, marray_unsigned_int_list, marray_unsigned_long_list, marray_unsigned_longlong_list, marray_byte_list > marray_unsigned_integer_list
type_list< marray< char, 1 >, marray< char, 2 >, marray< char, 3 >, marray< char, 4 >, marray< char, 8 >, marray< char, 16 > > marray_default_char_list
type_list< unsigned char > scalar_unsigned_char_list
type_list< vec< signed long, 1 >, vec< signed long, 2 >, vec< signed long, 3 >, vec< signed long, 4 >, vec< signed long, 8 >, vec< signed long, 16 > > vector_signed_long_list
tl_append< marray_signed_int_list, marray_unsigned_int_list > marray_int_list
type_list< vec< double, 1 >, vec< double, 2 >, vec< double, 3 >, vec< double, 4 > > vector_geo_double_list
tl_append< scalar_signed_basic_list, vector_signed_basic_list, marray_signed_basic_list > signed_basic_list
tl_append< scalar_bool_list, marray_bool_list > bool_list
tl_append< scalar_signed_short_list, vector_signed_short_list, marray_signed_short_list > signed_short_list
type_list< marray< std::byte, 1 >, marray< std::byte, 2 >, marray< std::byte, 3 >, marray< std::byte, 4 >, marray< std::byte, 8 >, marray< std::byte, 16 > > marray_byte_list
type_list< vec< unsigned int, 1 >, vec< unsigned int, 2 >, vec< unsigned int, 3 >, vec< unsigned int, 4 >, vec< unsigned int, 8 >, vec< unsigned int, 16 > > vector_unsigned_int_list
type_list< vec< double, 1 >, vec< double, 2 >, vec< double, 3 >, vec< double, 4 >, vec< double, 8 >, vec< double, 16 > > vector_double_list
type_list< marray< float, 2 >, marray< float, 3 >, marray< float, 4 > > marray_geo_float_list
type_list< marray< sycl::ext::oneapi::bfloat16, 1 >, marray< sycl::ext::oneapi::bfloat16, 2 >, marray< sycl::ext::oneapi::bfloat16, 3 >, marray< sycl::ext::oneapi::bfloat16, 4 >, marray< sycl::ext::oneapi::bfloat16, 8 >, marray< sycl::ext::oneapi::bfloat16, 16 > > marray_bfloat16_list
tl_append< scalar_default_char_list, vector_default_char_list, marray_default_char_list > default_char_list
type_list< vec< bool, 1 >, vec< bool, 2 >, vec< bool, 3 >, vec< bool, 4 >, vec< bool, 8 >, vec< bool, 16 > > vector_bool_list
tl_append< vector_signed_longlong_list, vector_unsigned_longlong_list > vector_longlong_list
type_list< vec< half, 1 >, vec< half, 2 >, vec< half, 3 >, vec< half, 4 >, vec< half, 8 >, vec< half, 16 > > vector_half_list
tl_append< marray_floating_list, marray_signed_integer_list > marray_signed_basic_list
type_list< vec< unsigned char, 1 >, vec< unsigned char, 2 >, vec< unsigned char, 3 >, vec< unsigned char, 4 >, vec< unsigned char, 8 >, vec< unsigned char, 16 > > vector_unsigned_char_list
tl_append< scalar_char_list, vector_char_list > char_list
tl_append< marray_signed_integer_list, marray_unsigned_integer_list > marray_integer_list
tl_append< scalar_signed_long_integer_list, vector_signed_long_integer_list, marray_signed_long_integer_list > signed_long_integer_list
tl_append< scalar_geo_double_list, vector_geo_double_list > geo_double_list
tl_append< gtl::unsigned_short_list, gtl::unsigned_int_list, gtl::unsigned_long_integer_list > nan_list
tl_append< vector_signed_long_integer_list, vector_unsigned_long_integer_list > vector_long_integer_list
tl_append< scalar_half_list, vector_half_list, marray_half_list > half_list
type_list< marray< half, 1 >, marray< half, 2 >, marray< half, 3 >, marray< half, 4 >, marray< half, 8 >, marray< half, 16 > > marray_half_list
tl_append< scalar_basic_list, vector_basic_list, marray_basic_list > basic_list
tl_append< marray_signed_long_list, marray_unsigned_long_list > marray_long_list
type_list< unsigned short > scalar_unsigned_short_list
type_list< vec< half, 3 >, vec< half, 4 > > cross_half_list
tl_append< vector_signed_integer_list, vector_unsigned_integer_list > vector_integer_list
type_list< std::byte > scalar_byte_list
type_list< marray< unsigned long long, 1 >, marray< unsigned long long, 2 >, marray< unsigned long long, 3 >, marray< unsigned long long, 4 >, marray< unsigned long long, 8 >, marray< unsigned long long, 16 > > marray_unsigned_longlong_list
type_list< vec< float, 1 >, vec< float, 2 >, vec< float, 3 >, vec< float, 4 > > vector_geo_float_list
type_list< vec< unsigned long, 1 >, vec< unsigned long, 2 >, vec< unsigned long, 3 >, vec< unsigned long, 4 >, vec< unsigned long, 8 >, vec< unsigned long, 16 > > vector_unsigned_long_list
tl_append< scalar_unsigned_short_list, vector_unsigned_short_list, marray_unsigned_short_list > unsigned_short_list
tl_append< scalar_signed_integer_list, vector_signed_integer_list, marray_signed_integer_list > signed_integer_list
type_list< vec< float, 1 >, vec< float, 2 >, vec< float, 3 >, vec< float, 4 >, vec< float, 8 >, vec< float, 16 > > vector_float_list
tl_append< vector_unsigned_long_list, vector_unsigned_longlong_list > vector_unsigned_long_integer_list
tl_append< scalar_float_list, scalar_double_list, scalar_half_list, scalar_bfloat16_list > scalar_floating_list
tl_append< scalar_half_list, vector_half_list > scalar_vector_half_list
type_list< marray< double, 1 >, marray< double, 2 >, marray< double, 3 >, marray< double, 4 >, marray< double, 8 >, marray< double, 16 > > marray_double_list
tl_append< scalar_signed_long_list, vector_signed_long_list, marray_signed_long_list > signed_long_list
type_list< vec< unsigned long long, 1 >, vec< unsigned long long, 2 >, vec< unsigned long long, 3 >, vec< unsigned long long, 4 >, vec< unsigned long long, 8 >, vec< unsigned long long, 16 > > vector_unsigned_longlong_list
tl_append< scalar_floating_list, scalar_signed_integer_list > scalar_signed_basic_list
tl_append< scalar_long_list, vector_long_list, marray_long_list > long_list
tl_append< scalar_signed_longlong_list, scalar_unsigned_longlong_list > scalar_longlong_list
tl_append< std::conditional_t< std::is_signed_v< char >, tl_append< marray_default_char_list, marray_signed_char_list >, marray_signed_char_list >, marray_signed_short_list, marray_signed_int_list, marray_signed_long_list, marray_signed_longlong_list > marray_signed_integer_list
tl_append< scalar_float_list, vector_float_list, marray_float_list > float_list
tl_append< marray_signed_long_list, marray_signed_longlong_list > marray_signed_long_integer_list
tl_append< scalar_unsigned_long_integer_list, vector_unsigned_long_integer_list, marray_unsigned_long_integer_list > unsigned_long_integer_list
tl_append< vector_signed_short_list, vector_unsigned_short_list, marray_unsigned_short_list > vector_short_list
type_list< marray< unsigned short, 1 >, marray< unsigned short, 2 >, marray< unsigned short, 3 >, marray< unsigned short, 4 >, marray< unsigned short, 8 >, marray< unsigned short, 16 > > marray_unsigned_short_list
tl_append< marray_signed_basic_list, marray_unsigned_basic_list > marray_basic_list
type_list< marray< unsigned int, 1 >, marray< unsigned int, 2 >, marray< unsigned int, 3 >, marray< unsigned int, 4 >, marray< unsigned int, 8 >, marray< unsigned int, 16 > > marray_unsigned_int_list
tl_append< scalar_double_list, vector_double_list > scalar_vector_double_list
type_list< marray< signed char, 1 >, marray< signed char, 2 >, marray< signed char, 3 >, marray< signed char, 4 >, marray< signed char, 8 >, marray< signed char, 16 > > marray_signed_char_list
type_list< double > scalar_geo_double_list
tl_append< scalar_signed_long_list, scalar_unsigned_long_list > scalar_long_list
tl_append< std::conditional_t< std::is_unsigned_v< char >, tl_append< 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
type_list< bool > scalar_bool_list
tl_append< marray_unsigned_long_list, marray_unsigned_longlong_list > marray_unsigned_long_integer_list
type_list< marray< signed long long, 1 >, marray< signed long long, 2 >, marray< signed long long, 3 >, marray< signed long long, 4 >, marray< signed long long, 8 >, marray< signed long long, 16 > > marray_signed_longlong_list
tl_append< scalar_bfloat16_list, vector_bfloat16_list > scalar_vector_bfloat16_list
type_list< marray< double, 2 >, marray< double, 3 >, marray< double, 4 > > marray_geo_double_list
type_list< marray< bool, 1 >, marray< bool, 2 >, marray< bool, 3 >, marray< bool, 4 >, marray< bool, 8 >, marray< bool, 16 > > marray_bool_list
tl_append< vector_signed_long_list, vector_signed_longlong_list > vector_signed_long_integer_list
tl_append< scalar_floating_list, vector_floating_list, marray_floating_list > floating_list
tl_append< scalar_bfloat16_list, vector_bfloat16_list, marray_bfloat16_list > bfloat16_list
tl_append< std::conditional_t< std::is_signed_v< char >, tl_append< 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
type_list< vec< signed char, 1 >, vec< signed char, 2 >, vec< signed char, 3 >, vec< signed char, 4 >, vec< signed char, 8 >, vec< signed char, 16 > > vector_signed_char_list
tl_append< vector_floating_list, vector_signed_integer_list > vector_signed_basic_list
tl_append< scalar_int_list, vector_int_list, marray_int_list > int_list
type_list< vec< half, 1 >, vec< half, 2 >, vec< half, 3 >, vec< half, 4 > > vector_geo_half_list
tl_append< scalar_geo_list, vector_geo_list > geo_list
tl_append< scalar_unsigned_long_list, vector_unsigned_long_list, marray_unsigned_long_list > unsigned_long_list
tl_append< vector_signed_long_list, vector_unsigned_long_list > vector_long_list
boost::mp11::mp_append< L... > tl_append
Definition: type_list.hpp:37
boost::mp11::mp_list< T... > type_list
Definition: type_list.hpp:22
sycl::detail::half_impl::half half
Definition: aliases.hpp:101
Definition: access.hpp:18