diff --git a/libdevice/nativecpu_utils.cpp b/libdevice/nativecpu_utils.cpp index 8dc2807539653..ab52bea7ce025 100644 --- a/libdevice/nativecpu_utils.cpp +++ b/libdevice/nativecpu_utils.cpp @@ -65,13 +65,13 @@ __spirv_MemoryBarrier(uint32_t Memory, uint32_t Semantics) { template <> \ __SYCL_CONVERGENT__ DEVICE_EXTERNAL Type \ __spirv_SubgroupBlockReadINTEL(const OCL_GLOBAL PType *Ptr) noexcept { \ - return *Ptr; \ + return Ptr[__spirv_SubgroupLocalInvocationId()]; \ } \ template <> \ __SYCL_CONVERGENT__ DEVICE_EXTERNAL void \ __spirv_SubgroupBlockWriteINTEL(PType OCL_GLOBAL * ptr, \ Type v) noexcept { \ - *(Type *)ptr = v; \ + ((Type*)ptr)[__spirv_SubgroupLocalInvocationId()] = v; \ } #define DefSubgroupBlockINTEL_vt(Type, VT_name) \