14
14
15
15
#ifdef __SYCL_DEVICE_ONLY__
16
16
template <typename dataT>
17
- extern __ocl_event_t __spirv_GroupAsyncCopy ( int32_t Scope, __local dataT *Dest,
18
- __global dataT *Src ,
19
- size_t NumElements, size_t Stride,
20
- __ocl_event_t E) noexcept ;
17
+ extern __ocl_event_t
18
+ __spirv_GroupAsyncCopy (__spv::Scope Execution, __local dataT *Dest ,
19
+ __global dataT *Src, size_t NumElements, size_t Stride,
20
+ __ocl_event_t E) noexcept ;
21
21
22
22
template <typename dataT>
23
- extern __ocl_event_t __spirv_GroupAsyncCopy ( int32_t Scope, __global dataT *Dest,
24
- __local dataT *Src ,
25
- size_t NumElements, size_t Stride,
26
- __ocl_event_t E) noexcept ;
23
+ extern __ocl_event_t
24
+ __spirv_GroupAsyncCopy (__spv::Scope Execution, __global dataT *Dest ,
25
+ __local dataT *Src, size_t NumElements, size_t Stride,
26
+ __ocl_event_t E) noexcept ;
27
27
28
28
#define OpGroupAsyncCopyGlobalToLocal __spirv_GroupAsyncCopy
29
29
#define OpGroupAsyncCopyLocalToGlobal __spirv_GroupAsyncCopy
30
30
31
31
// Atomic SPIR-V builtins
32
32
#define __SPIRV_ATOMIC_LOAD (AS, Type ) \
33
- extern Type __spirv_AtomicLoad (AS const Type *P, Scope S, MemorySemantics O);
33
+ extern Type __spirv_AtomicLoad (AS const Type *P, __spv::Scope S, \
34
+ __spv::MemorySemanticsMask O);
34
35
#define __SPIRV_ATOMIC_STORE (AS, Type ) \
35
- extern void __spirv_AtomicStore (AS Type *P, Scope S, MemorySemantics O, \
36
- Type V);
36
+ extern void __spirv_AtomicStore (AS Type *P, __spv:: Scope S, \
37
+ __spv::MemorySemanticsMask O, Type V);
37
38
#define __SPIRV_ATOMIC_EXCHANGE (AS, Type ) \
38
- extern Type __spirv_AtomicExchange (AS Type *P, Scope S, MemorySemantics O, \
39
- Type V);
39
+ extern Type __spirv_AtomicExchange (AS Type *P, __spv:: Scope S, \
40
+ __spv::MemorySemanticsMask O, Type V);
40
41
#define __SPIRV_ATOMIC_CMP_EXCHANGE (AS, Type ) \
41
42
extern Type __spirv_AtomicCompareExchange ( \
42
- AS Type *P, Scope S, MemorySemantics E, MemorySemantics U, Type V, \
43
- Type C);
43
+ AS Type *P, __spv:: Scope S, __spv::MemorySemanticsMask E, \
44
+ __spv::MemorySemanticsMask U, Type V, Type C);
44
45
#define __SPIRV_ATOMIC_IADD (AS, Type ) \
45
- extern Type __spirv_AtomicIAdd (AS Type *P, Scope S, MemorySemantics O, \
46
- Type V);
46
+ extern Type __spirv_AtomicIAdd (AS Type *P, __spv:: Scope S, \
47
+ __spv::MemorySemanticsMask O, Type V);
47
48
#define __SPIRV_ATOMIC_ISUB (AS, Type ) \
48
- extern Type __spirv_AtomicISub (AS Type *P, Scope S, MemorySemantics O, \
49
- Type V);
49
+ extern Type __spirv_AtomicISub (AS Type *P, __spv:: Scope S, \
50
+ __spv::MemorySemanticsMask O, Type V);
50
51
#define __SPIRV_ATOMIC_SMIN (AS, Type ) \
51
- extern Type __spirv_AtomicSMin (AS Type *P, Scope S, MemorySemantics O, \
52
- Type V);
52
+ extern Type __spirv_AtomicSMin (AS Type *P, __spv:: Scope S, \
53
+ __spv::MemorySemanticsMask O, Type V);
53
54
#define __SPIRV_ATOMIC_UMIN (AS, Type ) \
54
- extern Type __spirv_AtomicUMin (AS Type *P, Scope S, MemorySemantics O, \
55
- Type V);
55
+ extern Type __spirv_AtomicUMin (AS Type *P, __spv:: Scope S, \
56
+ __spv::MemorySemanticsMask O, Type V);
56
57
#define __SPIRV_ATOMIC_SMAX (AS, Type ) \
57
- extern Type __spirv_AtomicSMax (AS Type *P, Scope S, MemorySemantics O, \
58
- Type V);
58
+ extern Type __spirv_AtomicSMax (AS Type *P, __spv:: Scope S, \
59
+ __spv::MemorySemanticsMask O, Type V);
59
60
#define __SPIRV_ATOMIC_UMAX (AS, Type ) \
60
- extern Type __spirv_AtomicUMax (AS Type *P, Scope S, MemorySemantics O, \
61
- Type V);
61
+ extern Type __spirv_AtomicUMax (AS Type *P, __spv:: Scope S, \
62
+ __spv::MemorySemanticsMask O, Type V);
62
63
#define __SPIRV_ATOMIC_AND (AS, Type ) \
63
- extern Type __spirv_AtomicAnd (AS Type *P, Scope S, MemorySemantics O, Type V);
64
+ extern Type __spirv_AtomicAnd (AS Type *P, __spv::Scope S, \
65
+ __spv::MemorySemanticsMask O, Type V);
64
66
#define __SPIRV_ATOMIC_OR (AS, Type ) \
65
- extern Type __spirv_AtomicOr (AS Type *P, Scope S, MemorySemantics O, Type V);
67
+ extern Type __spirv_AtomicOr (AS Type *P, __spv::Scope S, \
68
+ __spv::MemorySemanticsMask O, Type V);
66
69
#define __SPIRV_ATOMIC_XOR (AS, Type ) \
67
- extern Type __spirv_AtomicXor (AS Type *P, Scope S, MemorySemantics O, Type V);
70
+ extern Type __spirv_AtomicXor (AS Type *P, __spv::Scope S, \
71
+ __spv::MemorySemanticsMask O, Type V);
68
72
69
73
#define __SPIRV_ATOMIC_FLOAT (AS, Type ) \
70
74
__SPIRV_ATOMIC_LOAD (AS, Type) \
@@ -95,15 +99,15 @@ extern __ocl_event_t __spirv_GroupAsyncCopy(int32_t Scope, __global dataT *Dest,
95
99
#define __SPIRV_ATOMIC_MINMAX (AS, Op ) \
96
100
template <typename T> \
97
101
typename std::enable_if<std::is_signed<T>::value, T>::type \
98
- __spirv_Atomic##Op(AS T *Ptr, Scope Scope, MemorySemantics Semantics, \
99
- T Value) { \
100
- return __spirv_AtomicS##Op (Ptr, Scope , Semantics, Value); \
102
+ __spirv_Atomic##Op(AS T *Ptr, __spv:: Scope Memory, \
103
+ __spv::MemorySemanticsMask Semantics, T Value) { \
104
+ return __spirv_AtomicS##Op (Ptr, Memory , Semantics, Value); \
101
105
} \
102
106
template <typename T> \
103
107
typename std::enable_if<!std::is_signed<T>::value, T>::type \
104
- __spirv_Atomic##Op(AS T *Ptr, Scope Scope, MemorySemantics Semantics, \
105
- T Value) { \
106
- return __spirv_AtomicU##Op (Ptr, Scope , Semantics, Value); \
108
+ __spirv_Atomic##Op(AS T *Ptr, __spv:: Scope Memory, \
109
+ __spv::MemorySemanticsMask Semantics, T Value) { \
110
+ return __spirv_AtomicU##Op (Ptr, Memory , Semantics, Value); \
107
111
}
108
112
109
113
#define __SPIRV_ATOMICS (macro, Arg ) macro(__global, Arg) macro(__local, Arg)
@@ -118,30 +122,38 @@ __SPIRV_ATOMICS(__SPIRV_ATOMIC_UNSIGNED, unsigned long long)
118
122
__SPIRV_ATOMICS(__SPIRV_ATOMIC_MINMAX, Min)
119
123
__SPIRV_ATOMICS(__SPIRV_ATOMIC_MINMAX, Max)
120
124
121
- extern bool __spirv_GroupAll(int32_t Scope, bool Predicate) noexcept ;
125
+ extern bool __spirv_GroupAll(__spv:: Scope Execution , bool Predicate) noexcept ;
122
126
123
- extern bool __spirv_GroupAny (int32_t Scope, bool Predicate) noexcept ;
127
+ extern bool __spirv_GroupAny (__spv:: Scope Execution , bool Predicate) noexcept ;
124
128
125
129
template <typename dataT>
126
- extern dataT __spirv_GroupBroadcast (int32_t Scope, dataT Value,
130
+ extern dataT __spirv_GroupBroadcast (__spv:: Scope Execution , dataT Value,
127
131
uint32_t LocalId) noexcept ;
128
132
129
133
template <typename dataT>
130
- extern dataT __spirv_GroupIAdd (int32_t Scope, int32_t Op, dataT Value) noexcept ;
134
+ extern dataT __spirv_GroupIAdd (__spv::Scope Execution, __spv::GroupOperation Op,
135
+ dataT Value) noexcept ;
131
136
template <typename dataT>
132
- extern dataT __spirv_GroupFAdd (int32_t Scope, int32_t Op, dataT Value) noexcept ;
137
+ extern dataT __spirv_GroupFAdd (__spv::Scope Execution, __spv::GroupOperation Op,
138
+ dataT Value) noexcept ;
133
139
template <typename dataT>
134
- extern dataT __spirv_GroupUMin (int32_t Scope, int32_t Op, dataT Value) noexcept ;
140
+ extern dataT __spirv_GroupUMin (__spv::Scope Execution, __spv::GroupOperation Op,
141
+ dataT Value) noexcept ;
135
142
template <typename dataT>
136
- extern dataT __spirv_GroupSMin (int32_t Scope, int32_t Op, dataT Value) noexcept ;
143
+ extern dataT __spirv_GroupSMin (__spv::Scope Execution, __spv::GroupOperation Op,
144
+ dataT Value) noexcept ;
137
145
template <typename dataT>
138
- extern dataT __spirv_GroupFMin (int32_t Scope, int32_t Op, dataT Value) noexcept ;
146
+ extern dataT __spirv_GroupFMin (__spv::Scope Execution, __spv::GroupOperation Op,
147
+ dataT Value) noexcept ;
139
148
template <typename dataT>
140
- extern dataT __spirv_GroupUMax (int32_t Scope, int32_t Op, dataT Value) noexcept ;
149
+ extern dataT __spirv_GroupUMax (__spv::Scope Execution, __spv::GroupOperation Op,
150
+ dataT Value) noexcept ;
141
151
template <typename dataT>
142
- extern dataT __spirv_GroupSMax (int32_t Scope, int32_t Op, dataT Value) noexcept ;
152
+ extern dataT __spirv_GroupSMax (__spv::Scope Execution, __spv::GroupOperation Op,
153
+ dataT Value) noexcept ;
143
154
template <typename dataT>
144
- extern dataT __spirv_GroupFMax (int32_t Scope, int32_t Op, dataT Value) noexcept ;
155
+ extern dataT __spirv_GroupFMax (__spv::Scope Execution, __spv::GroupOperation Op,
156
+ dataT Value) noexcept ;
145
157
template <typename dataT>
146
158
extern dataT __spirv_SubgroupShuffleINTEL (dataT Data,
147
159
uint32_t InvocationId) noexcept ;
@@ -178,7 +190,7 @@ extern void __spirv_ocl_prefetch(const __global char *Ptr,
178
190
179
191
template <typename dataT>
180
192
extern __ocl_event_t
181
- OpGroupAsyncCopyGlobalToLocal (int32_t Scope, dataT *Dest, dataT *Src,
193
+ OpGroupAsyncCopyGlobalToLocal (__spv:: Scope Execution , dataT *Dest, dataT *Src,
182
194
size_t NumElements, size_t Stride,
183
195
__ocl_event_t E) noexcept {
184
196
for (int i = 0 ; i < NumElements; i++) {
@@ -190,7 +202,7 @@ OpGroupAsyncCopyGlobalToLocal(int32_t Scope, dataT *Dest, dataT *Src,
190
202
191
203
template <typename dataT>
192
204
extern __ocl_event_t
193
- OpGroupAsyncCopyLocalToGlobal (int32_t Scope, dataT *Dest, dataT *Src,
205
+ OpGroupAsyncCopyLocalToGlobal (__spv:: Scope Execution , dataT *Dest, dataT *Src,
194
206
size_t NumElements, size_t Stride,
195
207
__ocl_event_t E) noexcept {
196
208
for (int i = 0 ; i < NumElements; i++) {
@@ -204,11 +216,12 @@ extern void __spirv_ocl_prefetch(const char *Ptr, size_t NumBytes) noexcept;
204
216
205
217
#endif // !__SYCL_DEVICE_ONLY__
206
218
207
- extern void __spirv_ControlBarrier (Scope Execution, Scope Memory,
219
+ extern void __spirv_ControlBarrier (__spv:: Scope Execution, __spv:: Scope Memory,
208
220
uint32_t Semantics) noexcept ;
209
221
210
- extern void __spirv_MemoryBarrier (Scope Memory, uint32_t Semantics) noexcept ;
222
+ extern void __spirv_MemoryBarrier (__spv::Scope Memory,
223
+ uint32_t Semantics) noexcept ;
211
224
212
- extern void __spirv_GroupWaitEvents (int32_t Scope, uint32_t NumEvents,
225
+ extern void __spirv_GroupWaitEvents (__spv:: Scope Execution , uint32_t NumEvents,
213
226
__ocl_event_t *WaitEvents) noexcept ;
214
227
0 commit comments