@@ -328,30 +328,78 @@ __SPIRV_ATOMICS(__SPIRV_ATOMIC_MINMAX, Max)
328
328
#undef __SPIRV_ATOMIC_UNSIGNED
329
329
#undef __SPIRV_ATOMIC_XOR
330
330
331
- extern SYCL_EXTERNAL __attribute__ ((opencl_global)) void *
332
- __spirv_GenericCastToPtrExplicit_ToGlobal(const void *Ptr ,
333
- __spv::StorageClass::Flag S) noexcept ;
334
-
335
- extern SYCL_EXTERNAL __attribute__ ((opencl_local)) void *
336
- __spirv_GenericCastToPtrExplicit_ToLocal(const void *Ptr ,
337
- __spv::StorageClass::Flag S) noexcept ;
338
-
339
331
template <typename dataT>
340
332
extern __attribute__ ((opencl_global)) dataT *
341
- __SYCL_GenericCastToPtrExplicit_ToGlobal(const void *Ptr ) noexcept {
333
+ __SYCL_GenericCastToPtrExplicit_ToGlobal(void *Ptr ) noexcept {
342
334
return (__attribute__ ((opencl_global)) dataT *)
343
335
__spirv_GenericCastToPtrExplicit_ToGlobal (
344
336
Ptr , __spv::StorageClass::CrossWorkgroup);
345
337
}
346
338
339
+ template <typename dataT>
340
+ extern const __attribute__ ((opencl_global)) dataT *
341
+ __SYCL_GenericCastToPtrExplicit_ToGlobal(const void *Ptr ) noexcept {
342
+ return (const __attribute__ ((opencl_global)) dataT *)
343
+ __spirv_GenericCastToPtrExplicit_ToGlobal (
344
+ Ptr , __spv::StorageClass::CrossWorkgroup);
345
+ }
346
+
347
+ template <typename dataT>
348
+ extern const volatile __attribute__ ((opencl_global)) dataT *
349
+ __SYCL_GenericCastToPtrExplicit_ToGlobal(const volatile void *Ptr ) noexcept {
350
+ return (const volatile __attribute__ ((opencl_global)) dataT *)
351
+ __spirv_GenericCastToPtrExplicit_ToGlobal (
352
+ Ptr , __spv::StorageClass::CrossWorkgroup);
353
+ }
354
+
347
355
template <typename dataT>
348
356
extern __attribute__ ((opencl_local)) dataT *
349
- __SYCL_GenericCastToPtrExplicit_ToLocal(const void *Ptr ) noexcept {
357
+ __SYCL_GenericCastToPtrExplicit_ToLocal(void *Ptr ) noexcept {
350
358
return (__attribute__ ((opencl_local)) dataT *)
351
359
__spirv_GenericCastToPtrExplicit_ToLocal (Ptr ,
352
360
__spv::StorageClass::Workgroup);
353
361
}
354
362
363
+ template <typename dataT>
364
+ extern const __attribute__ ((opencl_local)) dataT *
365
+ __SYCL_GenericCastToPtrExplicit_ToLocal(const void *Ptr ) noexcept {
366
+ return (const __attribute__ ((opencl_local)) dataT *)
367
+ __spirv_GenericCastToPtrExplicit_ToLocal (Ptr ,
368
+ __spv::StorageClass::Workgroup);
369
+ }
370
+
371
+ template <typename dataT>
372
+ extern const volatile __attribute__ ((opencl_local)) dataT *
373
+ __SYCL_GenericCastToPtrExplicit_ToLocal(const volatile void *Ptr ) noexcept {
374
+ return (const volatile __attribute__ ((opencl_local)) dataT *)
375
+ __spirv_GenericCastToPtrExplicit_ToLocal (Ptr ,
376
+ __spv::StorageClass::Workgroup);
377
+ }
378
+
379
+ template <typename dataT>
380
+ extern __attribute__ ((opencl_private)) dataT *
381
+ __SYCL_GenericCastToPtrExplicit_ToPrivate(void *Ptr ) noexcept {
382
+ return (__attribute__ ((opencl_private)) dataT *)
383
+ __spirv_GenericCastToPtrExplicit_ToPrivate (Ptr ,
384
+ __spv::StorageClass::Function);
385
+ }
386
+
387
+ template <typename dataT>
388
+ extern const __attribute__ ((opencl_private)) dataT *
389
+ __SYCL_GenericCastToPtrExplicit_ToPrivate(const void *Ptr ) noexcept {
390
+ return (const __attribute__ ((opencl_private)) dataT *)
391
+ __spirv_GenericCastToPtrExplicit_ToPrivate (Ptr ,
392
+ __spv::StorageClass::Function);
393
+ }
394
+
395
+ template <typename dataT>
396
+ extern const volatile __attribute__ ((opencl_private)) dataT *
397
+ __SYCL_GenericCastToPtrExplicit_ToPrivate(const volatile void *Ptr ) noexcept {
398
+ return (const volatile __attribute__ ((opencl_private)) dataT *)
399
+ __spirv_GenericCastToPtrExplicit_ToPrivate (Ptr ,
400
+ __spv::StorageClass::Function);
401
+ }
402
+
355
403
template <typename dataT>
356
404
__SYCL_CONVERGENT__ extern SYCL_EXTERNAL dataT
357
405
__spirv_SubgroupShuffleINTEL (dataT Data, uint32_t InvocationId) noexcept ;
0 commit comments