DPC++ Runtime
Runtime libraries for oneAPI DPC++
pointers.hpp
Go to the documentation of this file.
1
//==------------ pointers.hpp - SYCL pointers classes ----------------------==//
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 decorated, address_space
12
13
namespace
sycl
{
14
inline
namespace
_V1 {
15
16
template
<
typename
ElementType,
access::address_space
Space,
17
access::decorated
DecorateAddress>
18
class
multi_ptr
;
19
// Template specialization aliases for different pointer address spaces
20
21
template
<
typename
ElementType,
22
access::decorated
IsDecorated = access::decorated::legacy>
23
using
generic_ptr
=
24
multi_ptr<ElementType, access::address_space::generic_space, IsDecorated>
;
25
26
template
<
typename
ElementType,
27
access::decorated
IsDecorated = access::decorated::legacy>
28
using
global_ptr
=
29
multi_ptr<ElementType, access::address_space::global_space, IsDecorated>
;
30
31
template
<
typename
ElementType,
32
access::decorated
IsDecorated = access::decorated::legacy>
33
using
local_ptr
=
34
multi_ptr<ElementType, access::address_space::local_space, IsDecorated>
;
35
36
template
<
typename
ElementType>
37
using
constant_ptr
=
38
multi_ptr
<ElementType, access::address_space::constant_space,
39
access::decorated::legacy>;
40
41
template
<
typename
ElementType,
42
access::decorated
IsDecorated = access::decorated::legacy>
43
using
private_ptr
=
44
multi_ptr<ElementType, access::address_space::private_space, IsDecorated>
;
45
46
// Template specialization aliases for different pointer address spaces.
47
// The interface exposes non-decorated pointer while keeping the
48
// address space information internally.
49
50
template
<
typename
ElementType>
51
using
raw_global_ptr
=
52
multi_ptr
<ElementType,
access::address_space::global_space
,
53
access::decorated::no
>;
54
55
template
<
typename
ElementType>
56
using
raw_local_ptr
=
multi_ptr
<ElementType,
access::address_space::local_space
,
57
access::decorated::no
>;
58
59
template
<
typename
ElementType>
60
using
raw_private_ptr
=
61
multi_ptr
<ElementType,
access::address_space::private_space
,
62
access::decorated::no
>;
63
64
// Template specialization aliases for different pointer address spaces.
65
// The interface exposes decorated pointer.
66
67
template
<
typename
ElementType>
68
using
decorated_global_ptr
=
69
multi_ptr
<ElementType,
access::address_space::global_space
,
70
access::decorated::yes
>;
71
72
template
<
typename
ElementType>
73
using
decorated_local_ptr
=
74
multi_ptr
<ElementType,
access::address_space::local_space
,
75
access::decorated::yes
>;
76
77
template
<
typename
ElementType>
78
using
decorated_private_ptr
=
79
multi_ptr
<ElementType,
access::address_space::private_space
,
80
access::decorated::yes
>;
81
82
}
// namespace _V1
83
}
// namespace sycl
access.hpp
sycl::multi_ptr
Definition:
atomic.hpp:34
sycl::_V1::access::decorated
decorated
Definition:
access.hpp:63
sycl::_V1::access::decorated::no
@ no
sycl::_V1::access::decorated::yes
@ yes
sycl::_V1::access::address_space
address_space
Definition:
access.hpp:51
sycl::_V1::access::address_space::local_space
@ local_space
sycl::_V1::access::address_space::global_space
@ global_space
sycl::_V1::access::address_space::private_space
@ private_space
sycl::_V1::multi_ptr
multi_ptr()
Definition:
multi_ptr.hpp:468
sycl
Definition:
access.hpp:18
include
sycl
pointers.hpp
Generated by
1.9.1