diff --git a/libdevice/cmake/modules/SYCLLibdevice.cmake b/libdevice/cmake/modules/SYCLLibdevice.cmake index 7c00bd5358bf8..941479434f32b 100644 --- a/libdevice/cmake/modules/SYCLLibdevice.cmake +++ b/libdevice/cmake/modules/SYCLLibdevice.cmake @@ -580,11 +580,6 @@ else() endif() endif() -add_devicelibs(libsycl-fallback-cassert - SRC fallback-cassert.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${crt_obj_deps} - EXTRA_OPTS -fno-sycl-instrument-device-code) add_devicelibs(libsycl-fallback-cstring SRC fallback-cstring.cpp BUILD_ARCHS ${full_build_archs} diff --git a/libdevice/crt_wrapper.cpp b/libdevice/crt_wrapper.cpp index 97c15944b29ad..32c22f958a870 100644 --- a/libdevice/crt_wrapper.cpp +++ b/libdevice/crt_wrapper.cpp @@ -134,6 +134,11 @@ void srand(unsigned int seed) { RAND_NEXT_ACC[gid1] = seed; } +#if defined(__NVPTX__) || defined(__AMDGCN__) +DEVICE_EXTERN_C void __assertfail(const char *__message, const char *__file, + unsigned __line, const char *__function, + size_t charSize); +#endif #if defined(_WIN32) // Truncates a wide (16 or 32 bit) string (wstr) into an ASCII string (str). // Any non-ASCII characters are replaced by question mark '?'. @@ -157,21 +162,29 @@ void _wassert(const wchar_t *wexpr, const wchar_t *wfile, unsigned line) { char expr[256]; __truncate_wchar_char_str(wexpr, expr, sizeof(expr)); +#if defined(__NVPTX__) || defined(__AMDGCN__) + __assertfail(expr, file, line, nullptr, 1); +#else __devicelib_assert_fail( expr, file, line, /*func=*/nullptr, __spirv_BuiltInGlobalInvocationId(0), __spirv_BuiltInGlobalInvocationId(1), __spirv_BuiltInGlobalInvocationId(2), __spirv_BuiltInLocalInvocationId(0), __spirv_BuiltInLocalInvocationId(1), __spirv_BuiltInLocalInvocationId(2)); +#endif } #else DEVICE_EXTERN_C void __assert_fail(const char *expr, const char *file, unsigned int line, const char *func) { +#if defined(__NVPTX__) || defined(__AMDGCN__) + __assertfail(expr, file, line, func, 1); +#else __devicelib_assert_fail( expr, file, line, func, __spirv_BuiltInGlobalInvocationId(0), __spirv_BuiltInGlobalInvocationId(1), __spirv_BuiltInGlobalInvocationId(2), __spirv_BuiltInLocalInvocationId(0), __spirv_BuiltInLocalInvocationId(1), __spirv_BuiltInLocalInvocationId(2)); +#endif } // In GCC-15, std::__glibcxx_assert_fail is added to do runtime check for some diff --git a/libdevice/fallback-cassert.cpp b/libdevice/fallback-cassert.cpp deleted file mode 100644 index a515cdcb975d1..0000000000000 --- a/libdevice/fallback-cassert.cpp +++ /dev/null @@ -1,31 +0,0 @@ -//==--- fallback-cassert.cpp - device agnostic implementation of C assert --==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "atomic.hpp" -#include "wrapper.h" - -#if defined(__NVPTX__) || defined(__AMDGCN__) - -DEVICE_EXTERN_C void __assertfail(const char *__message, const char *__file, - unsigned __line, const char *__function, - size_t charSize); - -DEVICE_EXTERN_C void __devicelib_assert_fail(const char *expr, const char *file, - int32_t line, const char *func, - uint64_t gid0, uint64_t gid1, - uint64_t gid2, uint64_t lid0, - uint64_t lid1, uint64_t lid2) { - __assertfail(expr, file, line, func, 1); -} - -DEVICE_EXTERN_C void _wassert(const char *_Message, const char *_File, - unsigned _Line) { - __assertfail(_Message, _File, _Line, 0, 1); -} - -#endif // __NVPTX__ || __AMDGCN__