diff --git a/libdevice/include/asan_libdevice.hpp b/libdevice/include/asan_libdevice.hpp index 5f04b557e5acd..091a0dae14b56 100644 --- a/libdevice/include/asan_libdevice.hpp +++ b/libdevice/include/asan_libdevice.hpp @@ -12,6 +12,7 @@ // NOTE This file should be sync with // unified-runtime/source/loader/layers/sanitizer/device_sanitizer_report.hpp +enum class DeviceType : uint32_t { UNKNOWN = 0, CPU, GPU_PVC, GPU_DG2 }; enum class DeviceSanitizerErrorType : int32_t { UNKNOWN, OUT_OF_BOUNDS, @@ -66,14 +67,20 @@ struct LocalArgsInfo { constexpr std::size_t ASAN_MAX_NUM_REPORTS = 10; struct LaunchInfo { + uintptr_t GlobalShadowOffset = 0; + uintptr_t GlobalShadowOffsetEnd = 0; + uintptr_t PrivateShadowOffset = 0; uintptr_t PrivateShadowOffsetEnd = 0; uintptr_t LocalShadowOffset = 0; uintptr_t LocalShadowOffsetEnd = 0; - uint32_t NumLocalArgs = 0; LocalArgsInfo *LocalArgs = nullptr; // Ordered by ArgIndex + uint32_t NumLocalArgs = 0; + + DeviceType DeviceTy = DeviceType::UNKNOWN; + uint32_t Debug = 0; DeviceSanitizerReport SanitizerReport[ASAN_MAX_NUM_REPORTS]; }; @@ -106,13 +113,6 @@ const int kPrivateLeftRedzoneMagic = (char)0xf1; const int kPrivateMidRedzoneMagic = (char)0xf2; const int kPrivateRightRedzoneMagic = (char)0xf3; -constexpr auto kSPIR_AsanShadowMemoryGlobalStart = - "__AsanShadowMemoryGlobalStart"; -constexpr auto kSPIR_AsanShadowMemoryGlobalEnd = "__AsanShadowMemoryGlobalEnd"; - -constexpr auto kSPIR_DeviceType = "__DeviceType"; -constexpr auto kSPIR_AsanDebug = "__AsanDebug"; - constexpr auto kSPIR_AsanDeviceGlobalCount = "__AsanDeviceGlobalCount"; constexpr auto kSPIR_AsanDeviceGlobalMetadata = "__AsanDeviceGlobalMetadata"; diff --git a/libdevice/include/sanitizer_utils.hpp b/libdevice/include/sanitizer_utils.hpp index cec5b72973b27..8546251779b6c 100644 --- a/libdevice/include/sanitizer_utils.hpp +++ b/libdevice/include/sanitizer_utils.hpp @@ -13,7 +13,5 @@ // Treat this header as system one to workaround frontend's restriction #pragma clang system_header -enum DeviceType : uint64_t { UNKNOWN, CPU, GPU_PVC, GPU_DG2 }; - extern SPIR_GLOBAL_VAR __SYCL_GLOBAL__ uint64_t *__SYCL_LOCAL__ __AsanLaunchInfo; diff --git a/libdevice/sanitizer_utils.cpp b/libdevice/sanitizer_utils.cpp index 2e70e14b8168a..85443e175ab37 100644 --- a/libdevice/sanitizer_utils.cpp +++ b/libdevice/sanitizer_utils.cpp @@ -19,10 +19,6 @@ using u8 = unsigned char; using s16 = short; using u16 = unsigned short; -DeviceGlobal __AsanShadowMemoryGlobalStart; -DeviceGlobal __AsanShadowMemoryGlobalEnd; -DeviceGlobal __DeviceType; -DeviceGlobal __AsanDebug; // Save the pointer to LaunchInfo __SYCL_GLOBAL__ uptr *__SYCL_LOCAL__ __AsanLaunchInfo; @@ -85,17 +81,18 @@ static const __SYCL_CONSTANT__ char __asan_print_shadow_value2[] = static __SYCL_CONSTANT__ const char __generic_to[] = "[kernel] %p(4) - %p(%d)\n"; -static __SYCL_CONSTANT__ const char __generic_to_fail[] = - "[kernel] %p(4) - unknown address space\n"; - -static __SYCL_CONSTANT__ const char __mem_launch_info[] = - "[kernel] launch_info: %p (local_shadow=%p~%p, numLocalArgs=%d, " - "localArgs=%p)\n"; - #define ASAN_REPORT_NONE 0 #define ASAN_REPORT_START 1 #define ASAN_REPORT_FINISH 2 +#define ASAN_DEBUG(X) \ + do { \ + auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; \ + if (launch_info->Debug) { \ + X; \ + } \ + } while (false) + enum ADDRESS_SPACE : uint32_t { ADDRESS_SPACE_PRIVATE = 0, ADDRESS_SPACE_GLOBAL = 1, @@ -107,7 +104,6 @@ enum ADDRESS_SPACE : uint32_t { namespace { void __asan_report_unknown_device(); -void __asan_report_out_of_shadow_bounds(); void __asan_print_shadow_memory(uptr addr, uptr shadow_address, uint32_t as); __SYCL_GLOBAL__ void *ToGlobal(void *ptr) { @@ -132,12 +128,12 @@ inline void ConvertGenericPointer(uptr &addr, uint32_t &as) { as = ADDRESS_SPACE_GLOBAL; addr = old; } - if (__AsanDebug) - __spirv_ocl_printf(__generic_to, old, addr, as); + ASAN_DEBUG(__spirv_ocl_printf(__generic_to, old, addr, as)); } inline uptr MemToShadow_CPU(uptr addr) { - return __AsanShadowMemoryGlobalStart + (addr >> ASAN_SHADOW_SCALE); + auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; + return launch_info->GlobalShadowOffset + (addr >> ASAN_SHADOW_SCALE); } inline uptr MemToShadow_DG2(uptr addr, uint32_t as) { @@ -145,13 +141,24 @@ inline uptr MemToShadow_DG2(uptr addr, uint32_t as) { ConvertGenericPointer(addr, as); } - if (as == ADDRESS_SPACE_GLOBAL) { // global + auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; + if (as == ADDRESS_SPACE_GLOBAL) { // global + uptr shadow_ptr; if (addr & 0xFFFF000000000000ULL) { // Device USM - return __AsanShadowMemoryGlobalStart + 0x80000000000ULL + - ((addr & 0x7FFFFFFFFFFFULL) >> ASAN_SHADOW_SCALE); + shadow_ptr = launch_info->GlobalShadowOffset + 0x80000000000ULL + + ((addr & 0x7FFFFFFFFFFFULL) >> ASAN_SHADOW_SCALE); } else { // Host/Shared USM - return __AsanShadowMemoryGlobalStart + (addr >> ASAN_SHADOW_SCALE); + shadow_ptr = + launch_info->GlobalShadowOffset + (addr >> ASAN_SHADOW_SCALE); } + + ASAN_DEBUG( + const auto shadow_offset_end = launch_info->GlobalShadowOffsetEnd; + if (shadow_ptr > shadow_offset_end) { + __spirv_ocl_printf(__global_shadow_out_of_bound, addr, shadow_ptr, + (uptr)launch_info->GlobalShadowOffset); + return 0; + }); } else if (as == ADDRESS_SPACE_LOCAL) { // local // The size of SLM is 64KB on DG2 constexpr unsigned slm_size = 64 * 1024; @@ -161,32 +168,21 @@ inline uptr MemToShadow_DG2(uptr addr, uint32_t as) { __spirv_BuiltInWorkgroupId.y * __spirv_BuiltInNumWorkgroups.z + __spirv_BuiltInWorkgroupId.z; - auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; const auto shadow_offset = launch_info->LocalShadowOffset; - const auto shadow_offset_end = launch_info->LocalShadowOffsetEnd; - if (shadow_offset == 0) { return 0; } - if (__AsanDebug) - __spirv_ocl_printf(__mem_launch_info, launch_info, - launch_info->LocalShadowOffset, - launch_info->LocalShadowOffsetEnd, - launch_info->NumLocalArgs, launch_info->LocalArgs); - auto shadow_ptr = shadow_offset + ((wg_lid * slm_size) >> ASAN_SHADOW_SCALE) + ((addr & (slm_size - 1)) >> ASAN_SHADOW_SCALE); - if (shadow_ptr > shadow_offset_end) { - if (__AsanDebug) { - __spirv_ocl_printf(__local_shadow_out_of_bound, addr, shadow_ptr, - wg_lid, (uptr)shadow_offset); - } - __asan_report_out_of_shadow_bounds(); - return 0; - } + ASAN_DEBUG(const auto shadow_offset_end = launch_info->LocalShadowOffsetEnd; + if (shadow_ptr > shadow_offset_end) { + __spirv_ocl_printf(__local_shadow_out_of_bound, addr, + shadow_ptr, wg_lid, (uptr)shadow_offset); + return 0; + }); return shadow_ptr; } else if (as == ADDRESS_SPACE_PRIVATE) { // private // work-group linear id @@ -196,31 +192,22 @@ inline uptr MemToShadow_DG2(uptr addr, uint32_t as) { __spirv_BuiltInWorkgroupId.y * __spirv_BuiltInNumWorkgroups.z + __spirv_BuiltInWorkgroupId.z; - auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; const auto shadow_offset = launch_info->PrivateShadowOffset; - const auto shadow_offset_end = launch_info->PrivateShadowOffsetEnd; - if (shadow_offset == 0) { return 0; } - if (__AsanDebug) - __spirv_ocl_printf(__mem_launch_info, launch_info, - launch_info->PrivateShadowOffset, 0, - launch_info->NumLocalArgs, launch_info->LocalArgs); - uptr shadow_ptr = shadow_offset + ((WG_LID * ASAN_PRIVATE_SIZE) >> ASAN_SHADOW_SCALE) + ((addr & (ASAN_PRIVATE_SIZE - 1)) >> ASAN_SHADOW_SCALE); - if (shadow_ptr > shadow_offset_end) { - if (__AsanDebug) { - __spirv_ocl_printf(__private_shadow_out_of_bound, addr, shadow_ptr, - WG_LID, (uptr)shadow_offset); - } - __asan_report_out_of_shadow_bounds(); - return 0; - } + ASAN_DEBUG(const auto shadow_offset_end = + launch_info->PrivateShadowOffsetEnd; + if (shadow_ptr > shadow_offset_end) { + __spirv_ocl_printf(__private_shadow_out_of_bound, addr, + shadow_ptr, WG_LID, (uptr)shadow_offset); + return 0; + }); return shadow_ptr; } @@ -232,24 +219,24 @@ inline uptr MemToShadow_PVC(uptr addr, uint32_t as) { ConvertGenericPointer(addr, as); } + auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; if (as == ADDRESS_SPACE_GLOBAL) { // global uptr shadow_ptr; if (addr & 0xFF00000000000000) { // Device USM - shadow_ptr = __AsanShadowMemoryGlobalStart + 0x80000000000 + + shadow_ptr = launch_info->GlobalShadowOffset + 0x80000000000 + ((addr & 0xFFFFFFFFFFFF) >> ASAN_SHADOW_SCALE); } else { // Only consider 47bit VA - shadow_ptr = __AsanShadowMemoryGlobalStart + + shadow_ptr = launch_info->GlobalShadowOffset + ((addr & 0x7FFFFFFFFFFF) >> ASAN_SHADOW_SCALE); } - if (shadow_ptr > __AsanShadowMemoryGlobalEnd) { - if (__AsanDebug) { - __spirv_ocl_printf(__global_shadow_out_of_bound, addr, shadow_ptr, - (uptr)__AsanShadowMemoryGlobalStart); - } - __asan_report_out_of_shadow_bounds(); - return 0; - } + ASAN_DEBUG( + const auto shadow_offset_end = launch_info->GlobalShadowOffsetEnd; + if (shadow_ptr > shadow_offset_end) { + __spirv_ocl_printf(__global_shadow_out_of_bound, addr, shadow_ptr, + (uptr)launch_info->GlobalShadowOffset); + return 0; + }); return shadow_ptr; } else if (as == ADDRESS_SPACE_LOCAL) { // local // The size of SLM is 128KB on PVC @@ -261,32 +248,22 @@ inline uptr MemToShadow_PVC(uptr addr, uint32_t as) { __spirv_BuiltInWorkgroupId.y * __spirv_BuiltInNumWorkgroups.z + __spirv_BuiltInWorkgroupId.z; - auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; const auto shadow_offset = launch_info->LocalShadowOffset; - const auto shadow_offset_end = launch_info->LocalShadowOffsetEnd; if (shadow_offset == 0) { return 0; } - if (__AsanDebug) - __spirv_ocl_printf(__mem_launch_info, launch_info, - launch_info->LocalShadowOffset, - launch_info->LocalShadowOffsetEnd, - launch_info->NumLocalArgs, launch_info->LocalArgs); - uptr shadow_ptr = shadow_offset + ((wg_lid * SLM_SIZE) >> ASAN_SHADOW_SCALE) + ((addr & (SLM_SIZE - 1)) >> ASAN_SHADOW_SCALE); - if (shadow_ptr > shadow_offset_end) { - if (__AsanDebug) { - __spirv_ocl_printf(__local_shadow_out_of_bound, addr, shadow_ptr, - wg_lid, (uptr)shadow_offset); - } - __asan_report_out_of_shadow_bounds(); - return 0; - } + ASAN_DEBUG(const auto shadow_offset_end = launch_info->LocalShadowOffsetEnd; + if (shadow_ptr > shadow_offset_end) { + __spirv_ocl_printf(__local_shadow_out_of_bound, addr, + shadow_ptr, wg_lid, (uptr)shadow_offset); + return 0; + }); return shadow_ptr; } else if (as == ADDRESS_SPACE_PRIVATE) { // private // work-group linear id @@ -296,31 +273,23 @@ inline uptr MemToShadow_PVC(uptr addr, uint32_t as) { __spirv_BuiltInWorkgroupId.y * __spirv_BuiltInNumWorkgroups.z + __spirv_BuiltInWorkgroupId.z; - auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; const auto shadow_offset = launch_info->PrivateShadowOffset; - const auto shadow_offset_end = launch_info->PrivateShadowOffsetEnd; if (shadow_offset == 0) { return 0; } - if (__AsanDebug) - __spirv_ocl_printf(__mem_launch_info, launch_info, - launch_info->PrivateShadowOffset, 0, - launch_info->NumLocalArgs, launch_info->LocalArgs); - uptr shadow_ptr = shadow_offset + ((WG_LID * ASAN_PRIVATE_SIZE) >> ASAN_SHADOW_SCALE) + ((addr & (ASAN_PRIVATE_SIZE - 1)) >> ASAN_SHADOW_SCALE); - if (shadow_ptr > shadow_offset_end) { - if (__AsanDebug) { - __spirv_ocl_printf(__private_shadow_out_of_bound, addr, shadow_ptr, - WG_LID, (uptr)shadow_offset); - } - __asan_report_out_of_shadow_bounds(); - return 0; - } + ASAN_DEBUG(const auto shadow_offset_end = + launch_info->PrivateShadowOffsetEnd; + if (shadow_ptr > shadow_offset_end) { + __spirv_ocl_printf(__private_shadow_out_of_bound, addr, + shadow_ptr, WG_LID, (uptr)shadow_offset); + return 0; + }); return shadow_ptr; } @@ -330,31 +299,30 @@ inline uptr MemToShadow_PVC(uptr addr, uint32_t as) { inline uptr MemToShadow(uptr addr, uint32_t as) { uptr shadow_ptr = 0; - if (__DeviceType == DeviceType::CPU) { + auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; + if (launch_info->DeviceTy == DeviceType::CPU) { shadow_ptr = MemToShadow_CPU(addr); - } else if (__DeviceType == DeviceType::GPU_PVC) { + } else if (launch_info->DeviceTy == DeviceType::GPU_PVC) { shadow_ptr = MemToShadow_PVC(addr, as); - } else if (__DeviceType == DeviceType::GPU_DG2) { + } else if (launch_info->DeviceTy == DeviceType::GPU_DG2) { shadow_ptr = MemToShadow_DG2(addr, as); } else { - if (__AsanDebug) { - __spirv_ocl_printf(__asan_print_unsupport_device_type, (int)__DeviceType); - } + ASAN_DEBUG(__spirv_ocl_printf(__asan_print_unsupport_device_type, + (int)launch_info->DeviceTy)); __asan_report_unknown_device(); return 0; } - if (__AsanDebug) { - if (shadow_ptr) { - if (as == ADDRESS_SPACE_PRIVATE) - __asan_print_shadow_memory(addr, shadow_ptr, as); - else - __spirv_ocl_printf(__asan_print_shadow_value1, addr, as, shadow_ptr, - *(u8 *)shadow_ptr); - } else { - __spirv_ocl_printf(__asan_print_shadow_value2, addr, as, shadow_ptr); - } - } + ASAN_DEBUG( + if (shadow_ptr) { + if (as == ADDRESS_SPACE_PRIVATE) + __asan_print_shadow_memory(addr, shadow_ptr, as); + else + __spirv_ocl_printf(__asan_print_shadow_value1, addr, as, shadow_ptr, + *(u8 *)shadow_ptr); + } else { + __spirv_ocl_printf(__asan_print_shadow_value2, addr, as, shadow_ptr); + }); return shadow_ptr; } @@ -419,9 +387,9 @@ void __asan_internal_report_save(DeviceSanitizerErrorType error_type) { // Show we've done copying atomicStore(&SanitizerReport.Flag, ASAN_REPORT_FINISH); - if (__AsanDebug) - __spirv_ocl_printf(__mem_sanitizer_report, SanitizerReport.ErrorType, - SanitizerReport.IsRecover); + ASAN_DEBUG(__spirv_ocl_printf(__mem_sanitizer_report, + SanitizerReport.ErrorType, + SanitizerReport.IsRecover)); } __devicelib_exit(); } @@ -435,14 +403,6 @@ void __asan_internal_report_save( const int Expected = ASAN_REPORT_NONE; int Desired = ASAN_REPORT_START; - if (__AsanDebug) { - auto *launch_info = (__SYCL_GLOBAL__ LaunchInfo *)__AsanLaunchInfo; - __spirv_ocl_printf(__mem_launch_info, launch_info, - launch_info->LocalShadowOffset, - launch_info->LocalShadowOffsetEnd, - launch_info->NumLocalArgs, launch_info->LocalArgs); - } - // work-group linear id const auto WG_LID = __spirv_BuiltInWorkgroupId.x * __spirv_BuiltInNumWorkgroups.y * @@ -500,9 +460,9 @@ void __asan_internal_report_save( // Show we've done copying atomicStore(&SanitizerReport.Flag, ASAN_REPORT_FINISH); - if (__AsanDebug) - __spirv_ocl_printf(__mem_sanitizer_report, SanitizerReport.ErrorType, - SanitizerReport.IsRecover); + ASAN_DEBUG(__spirv_ocl_printf(__mem_sanitizer_report, + SanitizerReport.ErrorType, + SanitizerReport.IsRecover)); } __devicelib_exit(); } @@ -608,10 +568,6 @@ void __asan_report_unknown_device() { __asan_internal_report_save(DeviceSanitizerErrorType::UNKNOWN_DEVICE); } -void __asan_report_out_of_shadow_bounds() { - __asan_internal_report_save(DeviceSanitizerErrorType::OUT_OF_SHADOW_BOUNDS); -} - /// /// ASan utils /// @@ -787,10 +743,11 @@ __asan_set_shadow_static_local(uptr ptr, size_t size, { auto shadow_address = MemToShadow(ptr + aligned_size, ADDRESS_SPACE_LOCAL); auto count = (size_with_redzone - aligned_size) >> ASAN_SHADOW_SCALE; - if (__AsanDebug) - __spirv_ocl_printf(__mem_set_shadow_local, shadow_address, - shadow_address + count, - (unsigned char)kSharedLocalRedzoneMagic); + + ASAN_DEBUG(__spirv_ocl_printf(__mem_set_shadow_local, shadow_address, + shadow_address + count, + (unsigned char)kSharedLocalRedzoneMagic)); + for (size_t i = 0; i < count; ++i) { ((__SYCL_GLOBAL__ u8 *)shadow_address)[i] = kSharedLocalRedzoneMagic; } @@ -802,9 +759,10 @@ __asan_set_shadow_static_local(uptr ptr, size_t size, auto *shadow_end = (__SYCL_GLOBAL__ s8 *)MemToShadow(user_end, ADDRESS_SPACE_LOCAL); auto value = user_end - RoundDownTo(user_end, ASAN_SHADOW_GRANULARITY) + 1; - if (__AsanDebug) - __spirv_ocl_printf(__mem_set_shadow_local, shadow_end, shadow_end, value); *shadow_end = value; + + ASAN_DEBUG(__spirv_ocl_printf(__mem_set_shadow_local, shadow_end, + shadow_end, value)); } } @@ -816,14 +774,13 @@ static __SYCL_CONSTANT__ const char __mem_unpoison_shadow_static_local_end[] = DEVICE_EXTERN_C_NOINLINE void __asan_unpoison_shadow_static_local(uptr ptr, size_t size, size_t size_with_redzone) { - if (__AsanDebug) - __spirv_ocl_printf(__mem_unpoison_shadow_static_local_begin); + ASAN_DEBUG(__spirv_ocl_printf(__mem_unpoison_shadow_static_local_begin)); auto shadow_begin = MemToShadow(ptr + size, ADDRESS_SPACE_LOCAL); auto shadow_end = MemToShadow(ptr + size_with_redzone, ADDRESS_SPACE_LOCAL); - if (__AsanDebug) - __spirv_ocl_printf(__mem_set_shadow_local, shadow_begin, shadow_end, 0); + ASAN_DEBUG( + __spirv_ocl_printf(__mem_set_shadow_local, shadow_begin, shadow_end, 0)); __spirv_ControlBarrier(__spv::Scope::Workgroup, __spv::Scope::Workgroup, __spv::MemorySemanticsMask::SequentiallyConsistent | @@ -834,8 +791,7 @@ __asan_unpoison_shadow_static_local(uptr ptr, size_t size, ++shadow_begin; } - if (__AsanDebug) - __spirv_ocl_printf(__mem_unpoison_shadow_static_local_end); + ASAN_DEBUG(__spirv_ocl_printf(__mem_unpoison_shadow_static_local_end)); } static __SYCL_CONSTANT__ const char __mem_local_arg[] = @@ -851,8 +807,7 @@ static __SYCL_CONSTANT__ const char __mem_report_arg_count_incorrect[] = DEVICE_EXTERN_C_NOINLINE void __asan_set_shadow_dynamic_local(uptr ptr, uint32_t num_args) { - if (__AsanDebug) - __spirv_ocl_printf(__mem_set_shadow_dynamic_local_begin); + ASAN_DEBUG(__spirv_ocl_printf(__mem_set_shadow_dynamic_local_begin)); auto *launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; if (num_args != launch_info->NumLocalArgs) { @@ -862,24 +817,17 @@ __asan_set_shadow_dynamic_local(uptr ptr, uint32_t num_args) { } uptr *args = (uptr *)ptr; - if (__AsanDebug) - __spirv_ocl_printf(__mem_launch_info, launch_info, - launch_info->LocalShadowOffset, - launch_info->LocalShadowOffsetEnd, - launch_info->NumLocalArgs, launch_info->LocalArgs); for (uint32_t i = 0; i < num_args; ++i) { auto *local_arg = &launch_info->LocalArgs[i]; - if (__AsanDebug) - __spirv_ocl_printf(__mem_local_arg, i, local_arg->Size, - local_arg->SizeWithRedZone); + ASAN_DEBUG(__spirv_ocl_printf(__mem_local_arg, i, local_arg->Size, + local_arg->SizeWithRedZone)); __asan_set_shadow_static_local(args[i], local_arg->Size, local_arg->SizeWithRedZone); } - if (__AsanDebug) - __spirv_ocl_printf(__mem_set_shadow_dynamic_local_end); + ASAN_DEBUG(__spirv_ocl_printf(__mem_set_shadow_dynamic_local_end)); } static __SYCL_CONSTANT__ const char @@ -890,8 +838,7 @@ static __SYCL_CONSTANT__ const char __mem_unpoison_shadow_dynamic_local_end[] = DEVICE_EXTERN_C_NOINLINE void __asan_unpoison_shadow_dynamic_local(uptr ptr, uint32_t num_args) { - if (__AsanDebug) - __spirv_ocl_printf(__mem_unpoison_shadow_dynamic_local_begin); + ASAN_DEBUG(__spirv_ocl_printf(__mem_unpoison_shadow_dynamic_local_begin)); auto *launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; if (num_args != launch_info->NumLocalArgs) { @@ -901,24 +848,17 @@ __asan_unpoison_shadow_dynamic_local(uptr ptr, uint32_t num_args) { } uptr *args = (uptr *)ptr; - if (__AsanDebug) - __spirv_ocl_printf(__mem_launch_info, launch_info, - launch_info->LocalShadowOffset, - launch_info->LocalShadowOffsetEnd, - launch_info->NumLocalArgs, launch_info->LocalArgs); for (uint32_t i = 0; i < num_args; ++i) { auto *local_arg = &launch_info->LocalArgs[i]; - if (__AsanDebug) - __spirv_ocl_printf(__mem_local_arg, i, local_arg->Size, - local_arg->SizeWithRedZone); + ASAN_DEBUG(__spirv_ocl_printf(__mem_local_arg, i, local_arg->Size, + local_arg->SizeWithRedZone)); __asan_unpoison_shadow_static_local(args[i], local_arg->Size, local_arg->SizeWithRedZone); } - if (__AsanDebug) - __spirv_ocl_printf(__mem_unpoison_shadow_dynamic_local_end); + ASAN_DEBUG(__spirv_ocl_printf(__mem_unpoison_shadow_dynamic_local_end)); } /// @@ -934,22 +874,19 @@ static __SYCL_CONSTANT__ const char __mem_set_shadow_private[] = DEVICE_EXTERN_C_NOINLINE void __asan_set_shadow_private(uptr begin, uptr size, char val) { - if (__AsanDebug) - __spirv_ocl_printf(__mem_set_shadow_private_begin); + ASAN_DEBUG(__spirv_ocl_printf(__mem_set_shadow_private_begin)); auto *launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; if (launch_info->PrivateShadowOffset == 0) return; - if (__AsanDebug) - __spirv_ocl_printf(__mem_set_shadow_private, (void *)begin, - (void *)(begin + size), val & 0xFF); + ASAN_DEBUG(__spirv_ocl_printf(__mem_set_shadow_private, (void *)begin, + (void *)(begin + size), val & 0xFF)); for (size_t i = 0; i < size; i++) ((__SYCL_GLOBAL__ u8 *)begin)[i] = val; - if (__AsanDebug) - __spirv_ocl_printf(__mem_set_shadow_private_end); + ASAN_DEBUG(__spirv_ocl_printf(__mem_set_shadow_private_end)); } #endif // __SPIR__ || __SPIRV__