@@ -115,6 +115,11 @@ inline __SYCL_GLOBAL__ RawShadow *MemToShadow_PVC(uptr addr, uint32_t as) {
115115inline __SYCL_GLOBAL__ RawShadow *MemToShadow (uptr addr, uint32_t as) {
116116 __SYCL_GLOBAL__ RawShadow *shadow_ptr = nullptr ;
117117
118+ #if defined(__LIBDEVICE_CPU__)
119+ shadow_ptr = MemToShadow_CPU (addr, as);
120+ #elif defined(__LIBDEVICE_PVC__)
121+ shadow_ptr = MemToShadow_PVC (addr, as);
122+ #else
118123 if (TsanLaunchInfo->DeviceTy == DeviceType::CPU) {
119124 shadow_ptr = MemToShadow_CPU (addr, as);
120125 } else if (TsanLaunchInfo->DeviceTy == DeviceType::GPU_PVC) {
@@ -124,6 +129,7 @@ inline __SYCL_GLOBAL__ RawShadow *MemToShadow(uptr addr, uint32_t as) {
124129 (int )TsanLaunchInfo->DeviceTy ));
125130 return nullptr ;
126131 }
132+ #endif
127133
128134 return shadow_ptr;
129135}
@@ -148,6 +154,11 @@ inline Sid GetCurrentSid_GPU() {
148154}
149155
150156inline Sid GetCurrentSid () {
157+ #if defined(__LIBDEVICE_CPU__)
158+ return GetCurrentSid_CPU ();
159+ #elif defined(__LIBDEVICE_PVC__)
160+ return GetCurrentSid_GPU ();
161+ #else
151162 if (TsanLaunchInfo->DeviceTy == DeviceType::CPU) {
152163 return GetCurrentSid_CPU ();
153164 } else if (TsanLaunchInfo->DeviceTy != DeviceType::UNKNOWN) {
@@ -157,6 +168,7 @@ inline Sid GetCurrentSid() {
157168 (int )TsanLaunchInfo->DeviceTy ));
158169 return 0 ;
159170 }
171+ #endif
160172}
161173
162174inline RawShadow LoadShadow (const __SYCL_GLOBAL__ RawShadow *p) {
@@ -426,10 +438,7 @@ __tsan_unaligned_read16(uptr addr, uint32_t as,
426438 __tsan_unaligned_read8 (addr + 8 , as, file, line, func);
427439}
428440
429- DEVICE_EXTERN_C_NOINLINE void __tsan_cleanup_private (uptr addr, uint32_t size) {
430- if (TsanLaunchInfo->DeviceTy != DeviceType::CPU)
431- return ;
432-
441+ static inline void __tsan_cleanup_private_cpu_impl (uptr addr, uint32_t size) {
433442 if (size) {
434443 addr = RoundDownTo (addr, kShadowCell );
435444 size = RoundUpTo (size, kShadowCell );
@@ -443,6 +452,19 @@ DEVICE_EXTERN_C_NOINLINE void __tsan_cleanup_private(uptr addr, uint32_t size) {
443452 }
444453}
445454
455+ DEVICE_EXTERN_C_NOINLINE void __tsan_cleanup_private (uptr addr, uint32_t size) {
456+ #if defined(__LIBDEVICE_CPU__)
457+ __tsan_cleanup_private_cpu_impl (addr, size);
458+ #elif defined(__LIBDEVICE_PVC__)
459+ return ;
460+ #else
461+ if (TsanLaunchInfo->DeviceTy != DeviceType::CPU)
462+ return ;
463+
464+ __tsan_cleanup_private_cpu_impl (addr, size);
465+ #endif
466+ }
467+
446468DEVICE_EXTERN_C_INLINE void __tsan_device_barrier () {
447469 Sid sid = GetCurrentSid ();
448470 __spirv_ControlBarrier (__spv::Scope::Device, __spv::Scope::Device,
@@ -470,10 +492,7 @@ DEVICE_EXTERN_C_INLINE void __tsan_device_barrier() {
470492 __spv::MemorySemanticsMask::WorkgroupMemory);
471493}
472494
473- DEVICE_EXTERN_C_INLINE void __tsan_group_barrier () {
474- if (TsanLaunchInfo->DeviceTy == DeviceType::CPU)
475- return ;
476-
495+ static inline void __tsan_group_barrier_impl () {
477496 Sid sid = GetCurrentSid ();
478497 __spirv_ControlBarrier (__spv::Scope::Workgroup, __spv::Scope::Workgroup,
479498 __spv::MemorySemanticsMask::SequentiallyConsistent |
@@ -500,4 +519,16 @@ DEVICE_EXTERN_C_INLINE void __tsan_group_barrier() {
500519 __spv::MemorySemanticsMask::WorkgroupMemory);
501520}
502521
522+ DEVICE_EXTERN_C_INLINE void __tsan_group_barrier () {
523+ #if defined(__LIBDEVICE_CPU__)
524+ return ;
525+ #elif defined(__LIBDEVICE_PVC__)
526+ __tsan_group_barrier_impl ();
527+ #else
528+ if (TsanLaunchInfo->DeviceTy == DeviceType::CPU)
529+ return ;
530+ __tsan_group_barrier_impl ();
531+ #endif
532+ }
533+
503534#endif // __SPIR__ || __SPIRV__
0 commit comments