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>
14 #include <sycl/half_type.hpp>
15 
16 #include <cstddef>
17 
18 // Generic type name description, which serves as a description for all valid
19 // types of parameters to kernel functions
20 
21 // Forward declarations
22 namespace sycl {
24 template <typename T, int N> class vec;
25 template <typename Type, std::size_t NumElements> class marray;
26 } // __SYCL_INLINE_VER_NAMESPACE(_V1)
27 } // namespace sycl
28 
29 namespace sycl {
31 namespace detail {
32 namespace gtl {
33 // floating point types
35 
38 
39 using marray_half_list =
42 
44 
45 using half_list =
47 
49 
50 using vector_float_list =
53 
54 using marray_float_list =
57 
60 
61 using float_list =
63 
65 
66 using vector_double_list =
69 
70 using marray_double_list =
73 
76 
77 using double_list =
79 
82 
85 
88 
91 
92 using floating_list =
94 
95 // geometric floating point types
97 
99 
101 
102 using vector_geo_half_list =
104 
105 using vector_geo_float_list =
107 
110 
112 
114 
115 using geo_double_list =
117 
120 
123 
125 
126 // cross floating point types
128 
130 
132 
133 using cross_floating_list =
135 
137 
141 
145 
146 using default_char_list =
149 
151 
155 
160 
161 using signed_char_list =
164 
166 
171 
176 
177 using unsigned_char_list =
180 
181 using scalar_char_list =
184 
185 using vector_char_list =
188 
189 using marray_char_list =
192 
194 
195 // short int types
197 
202 
207 
208 using signed_short_list =
211 
213 
218 
223 
224 using unsigned_short_list =
227 
228 using scalar_short_list =
230 
231 using vector_short_list =
234 
236 
237 // int types
239 
243 
248 
249 using signed_int_list =
252 
254 
259 
264 
265 using unsigned_int_list =
268 
269 using scalar_int_list =
271 
272 using vector_int_list =
274 
275 using marray_int_list =
277 
279 
280 // long types
282 
286 
291 
292 using signed_long_list =
295 
297 
302 
307 
308 using unsigned_long_list =
311 
312 using scalar_long_list =
314 
315 using vector_long_list =
317 
318 using marray_long_list =
320 
321 using long_list =
323 
324 // long long types
326 
331 
336 
337 using signed_longlong_list =
340 
342 
347 
352 
356 
357 using scalar_longlong_list =
359 
360 using vector_longlong_list =
362 
363 using marray_longlong_list =
365 
366 using longlong_list =
368 
369 // long integer types
372 
375 
378 
382 
385 
388 
391 
395 
398 
401 
404 
405 using long_integer_list =
408 
409 #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
410 // std::byte
412 
413 using vector_byte_list =
416 
420 #endif
421 
422 // integer types
429 
436 
443 
444 using signed_integer_list =
447 
455 #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
456  ,
458 #endif
459  >;
460 
468 #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
469  ,
471 #endif
472  >;
473 
481 #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
482  ,
484 #endif
485  >;
486 
487 using unsigned_integer_list =
490 
491 using scalar_integer_list =
493 
494 using vector_integer_list =
496 
497 using marray_integer_list =
499 
500 using integer_list =
502 
503 // bool types
504 
505 using marray_bool_list =
508 
510 
512 
513 // basic types
516 
519 
522 
523 using signed_basic_list =
526 
528 
530 
532 
533 using unsigned_basic_list =
536 
537 using scalar_basic_list =
539 
540 using vector_basic_list =
542 
543 using marray_basic_list =
545 
546 using basic_list =
548 
549 // nan builtin types
552 } // namespace gtl
553 namespace gvl {
554 // address spaces
556  access::address_space::local_space, access::address_space::global_space,
557  access::address_space::private_space, access::address_space::constant_space,
558  access::address_space::ext_intel_global_device_space,
559  access::address_space::ext_intel_global_host_space>;
560 
562  address_space_list<access::address_space::local_space,
563  access::address_space::global_space,
564  access::address_space::private_space,
565  access::address_space::ext_intel_global_device_space,
566  access::address_space::ext_intel_global_host_space>;
567 
569  address_space_list<access::address_space::global_space,
570  access::address_space::private_space,
571  access::address_space::constant_space,
572  access::address_space::ext_intel_global_device_space,
573  access::address_space::ext_intel_global_host_space>;
574 } // namespace gvl
575 } // namespace detail
576 } // __SYCL_INLINE_VER_NAMESPACE(_V1)
577 } // namespace sycl
sycl::_V1::detail::gtl::vector_default_char_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
Definition: generic_type_lists.hpp:140
sycl::_V1::detail::gtl::scalar_signed_integer_list
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
Definition: generic_type_lists.hpp:428
sycl::_V1::detail::gtl::vector_unsigned_int_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
Definition: generic_type_lists.hpp:258
sycl::_V1::detail::gtl::scalar_unsigned_long_integer_list
type_list< scalar_unsigned_long_list, scalar_unsigned_longlong_list > scalar_unsigned_long_integer_list
Definition: generic_type_lists.hpp:384
sycl::_V1::detail::gtl::scalar_unsigned_basic_list
type_list< scalar_unsigned_integer_list > scalar_unsigned_basic_list
Definition: generic_type_lists.hpp:527
sycl::_V1::detail::gtl::marray_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
Definition: generic_type_lists.hpp:247
sycl::_V1::detail::gtl::vector_geo_float_list
type_list< vec< float, 1 >, vec< float, 2 >, vec< float, 3 >, vec< float, 4 > > vector_geo_float_list
Definition: generic_type_lists.hpp:106
__SYCL_INLINE_VER_NAMESPACE
#define __SYCL_INLINE_VER_NAMESPACE(X)
Definition: defines_elementary.hpp:11
sycl::_V1::detail::gtl::vector_long_integer_list
type_list< vector_signed_long_integer_list, vector_unsigned_long_integer_list > vector_long_integer_list
Definition: generic_type_lists.hpp:400
sycl::_V1::detail::gtl::marray_default_char_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
Definition: generic_type_lists.hpp:144
sycl::_V1::detail::gtl::vector_unsigned_integer_list
type_list< conditional_t< std::is_unsigned< char >::value, type_list< 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
Definition: generic_type_lists.hpp:472
sycl
---— Error handling, matching OpenCL plugin semantics.
Definition: access.hpp:14
access.hpp
sycl::_V1::detail::gtl::scalar_signed_short_list
type_list< signed short > scalar_signed_short_list
Definition: generic_type_lists.hpp:196
sycl::_V1::detail::gtl::vector_signed_long_integer_list
type_list< vector_signed_long_list, vector_signed_longlong_list > vector_signed_long_integer_list
Definition: generic_type_lists.hpp:374
sycl::_V1::detail::gtl::scalar_long_integer_list
type_list< scalar_signed_long_integer_list, scalar_unsigned_long_integer_list > scalar_long_integer_list
Definition: generic_type_lists.hpp:397
sycl::_V1::detail::gtl::scalar_signed_basic_list
type_list< scalar_floating_list, scalar_signed_integer_list > scalar_signed_basic_list
Definition: generic_type_lists.hpp:515
stl_type_traits.hpp
sycl::_V1::detail::gtl::scalar_default_char_list
type_list< char > scalar_default_char_list
Definition: generic_type_lists.hpp:136
sycl::_V1::detail::gtl::vector_signed_long_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
Definition: generic_type_lists.hpp:285
sycl::_V1::detail::gtl::vector_signed_longlong_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
Definition: generic_type_lists.hpp:330
sycl::_V1::detail::gtl::marray_unsigned_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
Definition: generic_type_lists.hpp:222
sycl::_V1::detail::gtl::scalar_signed_long_integer_list
type_list< scalar_signed_long_list, scalar_signed_longlong_list > scalar_signed_long_integer_list
Definition: generic_type_lists.hpp:371
sycl::_V1::marray
Provides a cross-platform math array class template that works on SYCL devices as well as in host C++...
Definition: generic_type_lists.hpp:25
sycl::_V1::detail::gtl::scalar_geo_float_list
type_list< float > scalar_geo_float_list
Definition: generic_type_lists.hpp:98
sycl::_V1::detail::gtl::scalar_unsigned_char_list
type_list< unsigned char > scalar_unsigned_char_list
Definition: generic_type_lists.hpp:165
sycl::_V1::detail::gtl::vector_unsigned_long_integer_list
type_list< vector_unsigned_long_list, vector_unsigned_longlong_list > vector_unsigned_long_integer_list
Definition: generic_type_lists.hpp:387
sycl::_V1::detail::gtl::scalar_signed_longlong_list
type_list< signed long long > scalar_signed_longlong_list
Definition: generic_type_lists.hpp:325
sycl::_V1::detail::gtl::marray_signed_long_integer_list
type_list< marray_signed_long_list, marray_signed_longlong_list > marray_signed_long_integer_list
Definition: generic_type_lists.hpp:377
sycl::_V1::detail::gtl::marray_signed_short_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
Definition: generic_type_lists.hpp:206
sycl::_V1::detail::gtl::vector_unsigned_short_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
Definition: generic_type_lists.hpp:217
sycl::_V1::detail::gtl::vector_unsigned_longlong_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
Definition: generic_type_lists.hpp:346
sycl::_V1::detail::gtl::unsigned_int_list
type_list< scalar_unsigned_int_list, vector_unsigned_int_list, marray_unsigned_int_list > unsigned_int_list
Definition: generic_type_lists.hpp:267
sycl::_V1::detail::gtl::unsigned_short_list
type_list< scalar_unsigned_short_list, vector_unsigned_short_list, marray_unsigned_short_list > unsigned_short_list
Definition: generic_type_lists.hpp:226
sycl::_V1::detail::gtl::vector_signed_char_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
Definition: generic_type_lists.hpp:154
sycl::_V1::detail::type_list
Definition: type_list.hpp:23
sycl::_V1::detail::gtl::scalar_signed_int_list
type_list< signed int > scalar_signed_int_list
Definition: generic_type_lists.hpp:238
sycl::_V1::detail::value_list
Definition: type_list.hpp:62
sycl::_V1::detail::gtl::scalar_unsigned_long_list
type_list< unsigned long > scalar_unsigned_long_list
Definition: generic_type_lists.hpp:296
sycl::_V1::vec
Provides a cross-patform vector class template that works efficiently on SYCL devices as well as in h...
Definition: aliases.hpp:20
sycl::_V1::detail::gtl::scalar_unsigned_integer_list
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
Definition: generic_type_lists.hpp:459
sycl::_V1::detail::gtl::vector_signed_integer_list
type_list< conditional_t< std::is_signed< char >::value, type_list< 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
Definition: generic_type_lists.hpp:435
sycl::_V1::detail::gtl::scalar_unsigned_short_list
type_list< unsigned short > scalar_unsigned_short_list
Definition: generic_type_lists.hpp:212
sycl::_V1::detail::gtl::scalar_unsigned_int_list
type_list< unsigned int > scalar_unsigned_int_list
Definition: generic_type_lists.hpp:253
sycl::_V1::detail::gtl::scalar_signed_char_list
type_list< signed char > scalar_signed_char_list
Definition: generic_type_lists.hpp:150
sycl::_V1::detail::gtl::vector_unsigned_long_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
Definition: generic_type_lists.hpp:301
sycl::_V1::detail::gtl::scalar_signed_long_list
type_list< signed long > scalar_signed_long_list
Definition: generic_type_lists.hpp:281
half_type.hpp
sycl::_V1::detail::gtl::vector_unsigned_char_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
Definition: generic_type_lists.hpp:170
sycl::_V1::detail::gtl::scalar_unsigned_longlong_list
type_list< unsigned long long > scalar_unsigned_longlong_list
Definition: generic_type_lists.hpp:341
sycl::_V1::detail::conditional_t
typename std::conditional< B, T, F >::type conditional_t
Definition: stl_type_traits.hpp:27
sycl::_V1::detail::gtl::marray_signed_char_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
Definition: generic_type_lists.hpp:159
sycl::_V1::detail::gtl::scalar_geo_half_list
type_list< half > scalar_geo_half_list
Definition: generic_type_lists.hpp:96
sycl::_V1::detail::gtl::marray_unsigned_int_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
Definition: generic_type_lists.hpp:263
sycl::_V1::detail::gtl::vector_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
Definition: generic_type_lists.hpp:242
sycl::_V1::detail::gtl::vector_signed_short_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
Definition: generic_type_lists.hpp:201
sycl::_V1::detail::gtl::vector_unsigned_basic_list
type_list< vector_unsigned_integer_list > vector_unsigned_basic_list
Definition: generic_type_lists.hpp:529
sycl::_V1::detail::gtl::vector_geo_half_list
type_list< vec< half, 1 >, vec< half, 2 >, vec< half, 3 >, vec< half, 4 > > vector_geo_half_list
Definition: generic_type_lists.hpp:103
sycl::_V1::detail::gtl::vector_signed_basic_list
type_list< vector_floating_list, vector_signed_integer_list > vector_signed_basic_list
Definition: generic_type_lists.hpp:518
type_list.hpp
sycl::_V1::detail::gtl::marray_signed_long_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
Definition: generic_type_lists.hpp:290
sycl::_V1::detail::gtl::marray_unsigned_long_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
Definition: generic_type_lists.hpp:306