@@ -16,6 +16,9 @@ inline namespace _V1 {
1616namespace ext {
1717namespace oneapi {
1818namespace experimental {
19+ namespace detail {
20+ using namespace sycl ::detail;
21+ }
1922// Shorthands for address space names
2023constexpr inline access::address_space global_space = access::address_space::global_space;
2124constexpr inline access::address_space local_space = access::address_space::local_space;
@@ -32,6 +35,18 @@ static_address_cast(ElementType *Ptr) {
3235 if constexpr (Space == generic_space) {
3336 // Undecorated raw pointer is in generic AS already, no extra casts needed.
3437 return ret_ty (Ptr);
38+ } else if constexpr (Space == access::address_space::
39+ ext_intel_global_device_space ||
40+ Space ==
41+ access::address_space::ext_intel_global_host_space) {
42+ #ifdef __ENABLE_USM_ADDR_SPACE__
43+ // No SPIR-V intrinsic for this yet.
44+ using raw_type = detail::DecoratedType<ElementType, Space>::type *;
45+ auto CastPtr = (raw_type)(Ptr);
46+ #else
47+ auto CastPtr = sycl::detail::spirv::GenericCastToPtr<global_space>(Ptr);
48+ #endif
49+ return ret_ty (CastPtr);
3550 } else {
3651 auto CastPtr = sycl::detail::spirv::GenericCastToPtr<Space>(Ptr);
3752 return ret_ty (CastPtr);
@@ -60,6 +75,20 @@ dynamic_address_cast(ElementType *Ptr) {
6075 " The extension expects undecorated raw pointers only!" );
6176 if constexpr (Space == generic_space) {
6277 return ret_ty (Ptr);
78+ } else if constexpr (Space == access::address_space::
79+ ext_intel_global_device_space ||
80+ Space ==
81+ access::address_space::ext_intel_global_host_space) {
82+ #ifdef __ENABLE_USM_ADDR_SPACE__
83+ static_assert (
84+ Space != access::address_space::ext_intel_global_device_space &&
85+ Space != access::address_space::ext_intel_global_host_space,
86+ " Not supported yet!" );
87+ return ret_ty (nullptr );
88+ #else
89+ auto CastPtr = sycl::detail::spirv::GenericCastToPtr<global_space>(Ptr);
90+ return ret_ty (CastPtr);
91+ #endif
6392 } else {
6493 auto CastPtr = sycl::detail::spirv::GenericCastToPtrExplicit<Space>(Ptr);
6594 return ret_ty (CastPtr);
0 commit comments