diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index c3184dbfe25f6..d2a84ab2a282e 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -5528,7 +5528,7 @@ class OffloadingActionBuilder final { Action *NativeCPULib = nullptr; if (IsSPIR || IsNVPTX || IsAMDGCN || IsNativeCPU) { SYCLDeviceLibLinked = addSYCLDeviceLibs( - TC, SYCLDeviceLibs, IsSpirvAOT, + TC, SYCLDeviceLibs, C.getDefaultToolChain().getTriple().isWindowsMSVCEnvironment(), IsNativeCPU, NativeCPULib, BoundArch); } @@ -5756,15 +5756,21 @@ class OffloadingActionBuilder final { } bool addSYCLDeviceLibs(const ToolChain *TC, ActionList &DeviceLinkObjects, - bool isSpirvAOT, bool isMSVCEnv, bool isNativeCPU, + bool isMSVCEnv, bool isNativeCPU, Action *&NativeCPULib, const char *BoundArch) { + int NumOfDeviceLibLinked = 0; SmallVector, 4> LibLocCandidates; SYCLInstallation.getSYCLDeviceLibPath(LibLocCandidates); + const toolchains::SYCLToolChain &SYCLTC = + static_cast(*TC); SmallVector DeviceLibraries; + // TODO: Use the getDeviceLibs for each toolchain instead of using the + // specific libs and doing a separate directory search. Each toolchain + // has their own getDeviceLibs that we can potentially use. DeviceLibraries = - tools::SYCL::getDeviceLibraries(C, TC->getTriple(), isSpirvAOT); + SYCLTC.getDeviceLibNames(C.getDriver(), Args, TC->getTriple()); for (const auto &DeviceLib : DeviceLibraries) { for (const auto &LLCandidate : LibLocCandidates) { diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index bc05d4ea10322..8594bc26c43b7 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -11474,7 +11474,6 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, // one bitcode library to link in for a specific triple. Additionally, the // path is *not* relative to the -sycl-device-library-location - the full // path must be provided. - SmallString<256> LibList; SmallVector BCLibList; auto appendToList = [](SmallString<256> &List, const Twine &Arg) { @@ -11487,9 +11486,16 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, for (const auto &[Kind, TC] : llvm::make_range(ToolChainRange.first, ToolChainRange.second)) { llvm::Triple TargetTriple = TC->getTriple(); - bool IsSpirAOT = TargetTriple.isSPIRAOT(); - SmallVector SYCLDeviceLibs = - SYCL::getDeviceLibraries(C, TargetTriple, IsSpirAOT); + const toolchains::SYCLToolChain &SYCLTC = + static_cast(*TC); + SmallVector SYCLDeviceLibs; + // SPIR or SPIR-V device libraries are compiled into the device compile + // step. + if (!TargetTriple.isSPIROrSPIRV()) + SYCLDeviceLibs.append(SYCLTC.getDeviceLibNames(D, Args, TargetTriple)); + const DerivedArgList &ToolChainArgs = + C.getArgsForToolChain(TC, StringRef(), Kind); + SYCLDeviceLibs.append(SYCLTC.getDeviceSanitizerLibNames(ToolChainArgs)); for (const auto &AddLib : SYCLDeviceLibs) { if (llvm::sys::path::extension(AddLib) == ".bc") { SmallString<256> LibPath(DeviceLibDir); @@ -11498,8 +11504,6 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, (Twine(TC->getTriple().str()) + "=" + LibPath).str()); continue; } - - appendToList(LibList, AddLib); } if (TC->getTriple().isNVPTX()) @@ -11509,10 +11513,6 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, (Twine(TC->getTriple().str()) + "=" + LibSpirvFile).str()); } - if (LibList.size()) - CmdArgs.push_back( - Args.MakeArgString(Twine("-sycl-device-libraries=") + LibList)); - if (BCLibList.size()) for (const std::string &Lib : BCLibList) CmdArgs.push_back( diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index 6089add6507eb..f86c7f75b8578 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -229,15 +229,14 @@ bool SYCL::shouldDoPerObjectFileLinking(const Compilation &C) { } // Return whether to use native bfloat16 library. -static bool selectBfloatLibs(const llvm::Triple &Triple, const Compilation &C, +static bool selectBfloatLibs(const llvm::opt::ArgList &Args, + const llvm::Triple &Triple, const ToolChain &TC, bool &UseNative) { - static llvm::SmallSet GPUArchsWithNBF16{ "intel_gpu_pvc", "intel_gpu_acm_g10", "intel_gpu_acm_g11", "intel_gpu_acm_g12", "intel_gpu_dg2_g10", "intel_gpu_dg2_g11", "intel_dg2_g12", "intel_gpu_bmg_g21", "intel_gpu_lnl_m", "intel_gpu_ptl_h", "intel_gpu_ptl_u", "intel_gpu_wcl"}; - const llvm::opt::ArgList &Args = C.getArgs(); bool NeedLibs = false; // spir64 target is actually JIT compilation, so we defer selection of @@ -246,21 +245,11 @@ static bool selectBfloatLibs(const llvm::Triple &Triple, const Compilation &C, NeedLibs = Triple.getSubArch() != llvm::Triple::NoSubArch && !Triple.isNVPTX() && !Triple.isAMDGCN(); UseNative = false; - if (NeedLibs && Triple.getSubArch() == llvm::Triple::SPIRSubArch_gen && - C.hasOffloadToolChain()) { + if (NeedLibs && Triple.getSubArch() == llvm::Triple::SPIRSubArch_gen) { ArgStringList TargArgs; - auto ToolChains = C.getOffloadToolChains(); - // Match up the toolchain with the incoming Triple so we are grabbing the - // expected arguments to scrutinize. - for (auto TI = ToolChains.first, TE = ToolChains.second; TI != TE; ++TI) { - llvm::Triple SYCLTriple = TI->second->getTriple(); - if (SYCLTriple == Triple) { - const toolchains::SYCLToolChain *SYCLTC = - static_cast(TI->second); - SYCLTC->TranslateBackendTargetArgs(Triple, Args, TargArgs); - break; - } - } + const toolchains::SYCLToolChain &SYCLTC = + static_cast(TC); + SYCLTC.TranslateBackendTargetArgs(Triple, Args, TargArgs); // We need to select fallback/native bfloat16 devicelib in AOT compilation // targetting for Intel GPU devices. Users have 2 ways to apply AOT, @@ -416,13 +405,11 @@ static bool checkPVCDevice(std::string SingleArg, std::string &DevArg) { #if !defined(_WIN32) static void -addSYCLDeviceSanitizerLibs(const Compilation &C, bool IsSpirvAOT, - StringRef LibSuffix, +addSYCLDeviceSanitizerLibs(const llvm::opt::ArgList &Args, SmallVector &LibraryList) { - const llvm::opt::ArgList &Args = C.getArgs(); enum { JIT = 0, AOT_CPU, AOT_DG2, AOT_PVC }; auto addSingleLibrary = [&](StringRef DeviceLibName) { - LibraryList.push_back(Args.MakeArgString(Twine(DeviceLibName) + LibSuffix)); + LibraryList.push_back(Args.MakeArgString(Twine(DeviceLibName) + ".bc")); }; // This function is used to check whether there is only one GPU device @@ -445,9 +432,6 @@ addSYCLDeviceSanitizerLibs(const Compilation &C, bool IsSpirvAOT, }; auto getSingleBuildTarget = [&]() -> size_t { - if (!IsSpirvAOT) - return JIT; - llvm::opt::Arg *SYCLTarget = Args.getLastArg(options::OPT_offload_targets_EQ); if (!SYCLTarget || (SYCLTarget->getValues().size() != 1)) @@ -548,12 +532,12 @@ addSYCLDeviceSanitizerLibs(const Compilation &C, bool IsSpirvAOT, } #endif -// Get the list of SYCL device libraries to link with user's device image. +// Get the list of SYCL device library names to link with user's device image. SmallVector -SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple, - bool IsSpirvAOT) { +SYCLToolChain::getDeviceLibNames(const Driver &D, + const llvm::opt::ArgList &Args, + const llvm::Triple &TargetTriple) const { SmallVector LibraryList; - const llvm::opt::ArgList &Args = C.getArgs(); bool NoOffloadLib = !Args.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib, true); if (TargetTriple.isNVPTX()) { @@ -597,17 +581,9 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple, "libsycl-fallback-imf", "libsycl-fallback-imf-fp64", "libsycl-fallback-imf-bf16"}; - bool IsWindowsMSVCEnv = - C.getDefaultToolChain().getTriple().isWindowsMSVCEnvironment(); - bool IsNewOffload = C.getDriver().getUseNewOffloadingDriver(); - StringRef LibSuffix = ".bc"; - if (IsNewOffload) - // For new offload model, we use packaged .bc files. - LibSuffix = IsWindowsMSVCEnv ? ".new.obj" : ".new.o"; auto addLibraries = [&](const SYCLDeviceLibsList &LibsList) { - for (const StringRef &Lib : LibsList) { - LibraryList.push_back(Args.MakeArgString(Twine(Lib) + LibSuffix)); - } + for (const StringRef &Lib : LibsList) + LibraryList.push_back(Args.MakeArgString(Twine(Lib) + ".bc")); }; if (!NoOffloadLib) @@ -627,7 +603,8 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple, const SYCLDeviceLibsList SYCLDeviceBfloat16NativeLib = { "libsycl-native-bfloat16"}; bool NativeBfloatLibs; - bool NeedBfloatLibs = selectBfloatLibs(TargetTriple, C, NativeBfloatLibs); + bool NeedBfloatLibs = + selectBfloatLibs(Args, TargetTriple, *this, NativeBfloatLibs); if (NeedBfloatLibs && !NoOffloadLib) { // Add native or fallback bfloat16 library. if (NativeBfloatLibs) @@ -639,8 +616,32 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple, // Currently, device sanitizer support is required by some developers on // Linux platform only, so compiler only provides device sanitizer libraries // on Linux platform. + // Do not pull these in with the new offloading model, as they will be pulled + // in separately to be linked in with the clang-linker-wrapper. + if (getDriver().getUseNewOffloadingDriver()) + return LibraryList; +#if !defined(_WIN32) + addSYCLDeviceSanitizerLibs(Args, LibraryList); +#endif + + return LibraryList; +} + +// Get the list of SYCL device library names associated with the sanitizers. +SmallVector +SYCLToolChain::getDeviceSanitizerLibNames( + const llvm::opt::ArgList &Args) const { + SmallVector LibraryList; + bool NoOffloadLib = + !Args.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib, true); + + if (NoOffloadLib) + return {}; + // Currently, device sanitizer support is required by some developers on + // Linux platform only, so compiler only provides device sanitizer libraries + // on Linux platform. #if !defined(_WIN32) - addSYCLDeviceSanitizerLibs(C, IsSpirvAOT, LibSuffix, LibraryList); + addSYCLDeviceSanitizerLibs(Args, LibraryList); #endif return LibraryList; @@ -1456,6 +1457,22 @@ void SYCLToolChain::addClangTargetOptions( SYCLInstallation.addLibspirvLinkArgs(getEffectiveTriple(), DriverArgs, HostTC.getTriple(), CC1Args); } + // mtoguchi + // Add device libraries. + // This is currently only done with the new offloading model, to better fit + // with community expectations + if (!getDriver().getUseNewOffloadingDriver() || !getTriple().isSPIROrSPIRV()) + return; + + llvm::SmallVector BCLibs; + BCLibs.append(SYCLToolChain::getDeviceLibs(DriverArgs, DeviceOffloadingKind)); + for (auto BCFile : BCLibs) { + CC1Args.push_back("-mlink-builtin-bitcode"); + CC1Args.push_back(DriverArgs.MakeArgString(BCFile.Path)); + } + // FIXME: Turn off potential linker warnings when linking in device library + // files that are built for spir64, but we are compiling for AOT. + CC1Args.push_back("-Wno-linker-warnings"); } llvm::opt::DerivedArgList * @@ -1892,6 +1909,34 @@ void SYCLToolChain::AddClangCXXStdlibIncludeArgs(const ArgList &Args, HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args); } +llvm::SmallVector +SYCLToolChain::getDeviceLibs( + const llvm::opt::ArgList &DriverArgs, + const Action::OffloadKind DeviceOffloadingKind) const { + llvm::SmallVector BCLibs; + + SmallVector, 4> LibraryPaths; + SYCLInstallation.getSYCLDeviceLibPath(LibraryPaths); + + // Formulate all of the device libraries needed for this compilation. + SmallVector DeviceLibs = + getDeviceLibNames(getDriver(), DriverArgs, getTriple()); + + // Create full path names to each device library. If found, add to the list + // of device libraries that will be linked against. + for (auto DeviceLib : DeviceLibs) { + for (auto LibraryPath : LibraryPaths) { + SmallString<1208> FullLibName(LibraryPath); + llvm::sys::path::append(FullLibName, DeviceLib); + if (llvm::sys::fs::exists(FullLibName)) { + BCLibs.emplace_back(FullLibName); + break; + } + } + } + return BCLibs; +} + SanitizerMask SYCLToolChain::getSupportedSanitizers() const { return SanitizerKind::Address | SanitizerKind::Memory | SanitizerKind::Thread; } diff --git a/clang/lib/Driver/ToolChains/SYCL.h b/clang/lib/Driver/ToolChains/SYCL.h index c1403ae1d5036..7dd8c193125e3 100644 --- a/clang/lib/Driver/ToolChains/SYCL.h +++ b/clang/lib/Driver/ToolChains/SYCL.h @@ -33,12 +33,6 @@ void constructLLVMForeachCommand(Compilation &C, const JobAction &JA, StringRef Increment, StringRef Ext = "out", StringRef ParallelJobs = ""); -// Provides a vector of device library names that are associated with the -// given triple and AOT information. -SmallVector getDeviceLibraries(const Compilation &C, - const llvm::Triple &TargetTriple, - bool IsSpirvAOT); - // Populates the SYCL device traits macros. void populateSYCLDeviceTraitsMacrosArgs( Compilation &C, const llvm::opt::ArgList &Args, @@ -160,6 +154,18 @@ class LLVM_LIBRARY_VISIBILITY SYCLToolChain : public ToolChain { llvm::opt::OptSpecifier Opt, llvm::opt::OptSpecifier Opt_EQ, StringRef Device) const; + // Provides a vector of device library names that are associated with the + // given triple and AOT information. + SmallVector + getDeviceLibNames(const Driver &D, const llvm::opt::ArgList &Args, + const llvm::Triple &TargetTriple) const; + + // Provides a vector of device library names that are associated with the + // sanitizers. This is pulled out separately from the normal device library + // names to provide the ability to link in these with the clang-linker-wrapper + // instead of at compile time. + SmallVector + getDeviceSanitizerLibNames(const llvm::opt::ArgList &Args) const; bool useIntegratedAs() const override { return true; } bool isPICDefault() const override { @@ -189,6 +195,10 @@ class LLVM_LIBRARY_VISIBILITY SYCLToolChain : public ToolChain { const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1Args) const override; + llvm::SmallVector + getDeviceLibs(const llvm::opt::ArgList &Args, + const Action::OffloadKind DeviceOffloadingKind) const override; + SanitizerMask getSupportedSanitizers() const override; protected: diff --git a/clang/test/Driver/sycl-device-lib.cpp b/clang/test/Driver/sycl-device-lib.cpp index 16c68be8b3889..d684bac648c74 100644 --- a/clang/test/Driver/sycl-device-lib.cpp +++ b/clang/test/Driver/sycl-device-lib.cpp @@ -9,22 +9,22 @@ /// test behavior of device library default link // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_LINK_DEFAULT -// SYCL_DEVICE_LIB_LINK_DEFAULT: clang-linker-wrapper{{.*}} "-sycl-device-libraries=libsycl-crt.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-complex.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-complex-fp64.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-cmath.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-cmath-fp64.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf-fp64.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf-bf16.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cstring.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-complex.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cmath.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o +// SYCL_DEVICE_LIB_LINK_DEFAULT: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-complex.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-complex-fp64.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-cmath.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-cmath-fp64.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf-fp64.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf-bf16.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cstring.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-complex.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-complex-fp64.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cmath.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf-fp64.bc +// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf-bf16.bc /// ########################################################################### @@ -32,7 +32,7 @@ // RUN: %clangxx -fsycl --offload-new-driver %s --no-offloadlib --sysroot=%S/Inputs/SYCL -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_LINK_NO_DEVICE_LIB // SYCL_DEVICE_LIB_LINK_NO_DEVICE_LIB: {{.*}}clang{{.*}} "-cc1" "-triple" "spir64-unknown-unknown" -// SYCL_DEVICE_LIB_LINK_NO_DEVICE_LIB-NOT: libsycl-cmath.new.o +// SYCL_DEVICE_LIB_LINK_NO_DEVICE_LIB-NOT: libsycl-cmath.bc /// ########################################################################### @@ -47,30 +47,28 @@ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN +// SYCL_DEVICE_LIB_ASAN: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cstring.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-asan.bc" + // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_ASAN_MACRO -// SYCL_DEVICE_LIB_ASAN: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_ASAN: {{.*}}libsycl-crt.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex. -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex-fp64. -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cstring.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-asan.new.o -// SYCL_DEVICE_ASAN_MACRO: "-cc1" -// SYCL_DEVICE_ASAN_MACRO-SAME: "USE_SYCL_DEVICE_ASAN" -// SYCL_DEVICE_ASAN_MACRO: libsycl-asan.new.o - +// SYCL_DEVICE_ASAN_MACRO: clang{{.*}} "USE_SYCL_DEVICE_ASAN" +// SYCL_DEVICE_ASAN_MACRO: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-asan.bc" /// ########################################################################### /// test behavior of linking libsycl-asan-pvc for PVC target AOT compilation when asan flag is applied. @@ -91,47 +89,45 @@ // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -Xs "-device 12.60.7" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_PVC -// SYCL_DEVICE_LIB_ASAN_PVC: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_ASAN_PVC: {{.*}}libsycl-crt.new.o +// SYCL_DEVICE_LIB_ASAN_PVC: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-complex. // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-complex-fp64. -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-cmath.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cstring.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-complex.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cmath.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-asan-pvc.new.o +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-cmath.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cstring.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-complex.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cmath.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN_PVC: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-asan-pvc.bc" /// ########################################################################### /// test behavior of linking libsycl-asan-cpu for CPU target AOT compilation when asan flag is applied. // RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_CPU -// SYCL_DEVICE_LIB_ASAN_CPU: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_ASAN_CPU: {{.*}}libsycl-crt.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-complex. -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-complex-fp64. -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-cmath.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cstring.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-complex.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cmath.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-asan-cpu.new.o +// SYCL_DEVICE_LIB_ASAN_CPU: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-complex.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-cmath.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cstring.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-complex.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cmath.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN_CPU: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-asan-cpu.bc" /// ########################################################################### /// test behavior of linking libsycl-asan-dg2 for DG2 target AOT compilation when asan flag is applied. @@ -146,24 +142,23 @@ // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -Xs "-device dg2" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_DG2 -// SYCL_DEVICE_LIB_ASAN_DG2: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_ASAN_DG2: {{.*}}libsycl-crt.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-complex. -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-complex-fp64. -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-cmath.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cstring.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-complex.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cmath.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-asan-dg2.new.o +// SYCL_DEVICE_LIB_ASAN_DG2: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-complex.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-cmath.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cstring.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-complex.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cmath.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN_DG2: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-asan-dg2.bc" /// ########################################################################### /// test behavior of linking libsycl-asan for multiple targets AOT compilation @@ -174,25 +169,23 @@ // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -Xsycl-target-backend=spir64_gen "-device pvc,dg2" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_MUL -// SYCL_DEVICE_LIB_ASAN_MUL: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_ASAN_MUL: {{.*}}libsycl-crt.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-complex. -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-complex-fp64. -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-cmath.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cstring.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-complex.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cmath.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-asan.new.o - +// SYCL_DEVICE_LIB_ASAN_MUL: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-complex.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-cmath.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cstring.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-complex.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-complex-fp64.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cmath.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf-fp64.bc +// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf-bf16.bc +// SYCL_DEVICE_LIB_ASAN_MUL: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-asan.bc" /// ########################################################################### /// test behavior of libsycl-msan.o linking when -fsanitize=memory is available @@ -206,41 +199,38 @@ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN +// SYCL_DEVICE_LIB_MSAN: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-complex.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-complex-fp64.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath-fp64.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf-fp64.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf-bf16.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cstring.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-complex.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-complex-fp64.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cmath.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf-fp64.bc +// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf-bf16.bc +// SYCL_DEVICE_LIB_MSAN: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-msan.bc" + // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_MSAN_MACRO -// SYCL_DEVICE_LIB_MSAN: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_MSAN: {{.*}}libsycl-crt.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-complex. -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-complex-fp64. -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath-fp64.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf-fp64.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf-bf16.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cstring.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-complex.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cmath.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-msan.new.o -// SYCL_DEVICE_MSAN_MACRO: "-cc1" -// SYCL_DEVICE_MSAN_MACRO-SAME: "USE_SYCL_DEVICE_MSAN" -// SYCL_DEVICE_MSAN_MACRO: libsycl-msan.new.o +// SYCL_DEVICE_MSAN_MACRO: clang{{.*}} "USE_SYCL_DEVICE_MSAN" +// SYCL_DEVICE_MSAN_MACRO: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-msan.bc" /// test behavior of msan libdevice linking when -fsanitize=memory is available for AOT targets // RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_pvc --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -fsanitize=memory -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN_PVC -// SYCL_DEVICE_LIB_MSAN_PVC: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_MSAN_PVC-SAME: {{.*}}libsycl-msan-pvc.new.o +// SYCL_DEVICE_LIB_MSAN_PVC: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-msan-pvc.bc" /// test behavior of msan libdevice linking when -fsanitize=memory is available for AOT targets // RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -fsanitize=memory -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN_CPU -// SYCL_DEVICE_LIB_MSAN_CPU: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_MSAN_CPU-SAME: {{.*}}libsycl-msan-cpu.new.o +// SYCL_DEVICE_LIB_MSAN_CPU: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-msan-cpu.bc" /// ########################################################################### /// test behavior of libsycl-tsan.o linking when -fsanitize=thread is available @@ -254,38 +244,35 @@ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=thread -DUSE_SYCL_DEVICE_TSAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN -// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=thread -DUSE_SYCL_DEVICE_TSAN" -### 2>&1 \ -// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_TSAN_MACRO -// SYCL_DEVICE_LIB_TSAN: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_TSAN: {{.*}}libsycl-crt.new.o +// SYCL_DEVICE_LIB_TSAN: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-complex. // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-complex-fp64. -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-cmath.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-cmath-fp64.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf-fp64.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf-bf16.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cstring.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-complex.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cmath.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-tsan.new.o -// SYCL_DEVICE_TSAN_MACRO: "-cc1" -// SYCL_DEVICE_TSAN_MACRO-SAME: "USE_SYCL_DEVICE_TSAN" -// SYCL_DEVICE_TSAN_MACRO: libsycl-tsan.new.o +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-cmath.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-cmath-fp64.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf-fp64.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf-bf16.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cstring.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-complex.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-complex-fp64.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cmath.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf-fp64.bc +// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf-bf16.bc +// SYCL_DEVICE_LIB_TSAN: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-tsan.bc" + +// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=thread -DUSE_SYCL_DEVICE_TSAN" -### 2>&1 \ +// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_TSAN_MACRO +// SYCL_DEVICE_TSAN_MACRO: clang{{.*}} "USE_SYCL_DEVICE_TSAN" +// SYCL_DEVICE_TSAN_MACRO: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-tsan.bc" /// test behavior of tsan libdevice linking when -fsanitize=thread is available for AOT targets // RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_pvc --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC -// SYCL_DEVICE_LIB_TSAN_PVC: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_TSAN_PVC-SAME: {{.*}}libsycl-tsan-pvc.new.o +// SYCL_DEVICE_LIB_TSAN_PVC: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-tsan-pvc.bc" /// test behavior of tsan libdevice linking when -fsanitize=thread is available for AOT targets // RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_CPU -// SYCL_DEVICE_LIB_TSAN_CPU: clang-linker-wrapper{{.*}} "-sycl-device-libraries -// SYCL_DEVICE_LIB_TSAN_CPU-SAME: {{.*}}libsycl-tsan-cpu.new.o +// SYCL_DEVICE_LIB_TSAN_CPU: clang-linker-wrapper{{.*}} "--bitcode-library={{.*}}libsycl-tsan-cpu.bc" diff --git a/clang/test/Driver/sycl-instrumentation.cpp b/clang/test/Driver/sycl-instrumentation.cpp index 23cb5b9558b2a..59c6a66e02343 100644 --- a/clang/test/Driver/sycl-instrumentation.cpp +++ b/clang/test/Driver/sycl-instrumentation.cpp @@ -14,10 +14,10 @@ // RUN: | FileCheck -check-prefixes=CHECK-SPIRV %s // CHECK-SPIRV: "-cc1"{{.*}} "-fsycl-is-device"{{.*}} "-fsycl-instrument-device-code" +// CHECK-SPIRV: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-user-wrappers.bc" +// CHECK-SPIRV-SAME: libsycl-itt-compiler-wrappers.bc +// CHECK-SPIRV-SAME: libsycl-itt-stubs.bc // CHECK-HOST-NOT: "-cc1"{{.*}} "-fsycl-is-host"{{.*}} "-fsycl-instrument-device-code" -// CHECK-SPIRV: clang-linker-wrapper{{.*}} {{.*}}libsycl-itt-user-wrappers.new.o -// CHECK-SPIRV-SAME: libsycl-itt-compiler-wrappers.new.o -// CHECK-SPIRV-SAME: libsycl-itt-stubs.new.o // ITT annotations in device code are disabled by default. However, for SYCL offloading, // we still link ITT annotations libraries to ensure ABI compatibility with previous release. @@ -27,7 +27,7 @@ // RUN: | FileCheck -check-prefixes=CHECK-NONPASSED %s // CHECK-ITT-LINK-ONLY-NOT: "-fsycl-instrument-device-code" -// CHECK-ITT-LINK-ONLY: clang-linker-wrapper{{.*}} {{.*}}libsycl-itt-{{.*}} +// CHECK-ITT-LINK-ONLY: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-{{.*}}" // RUN: %clangxx -fsycl --offload-new-driver -fno-sycl-instrument-device-code -fsycl-targets=spir64 -### %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHECK-NONPASSED %s @@ -35,4 +35,4 @@ // RUN: | FileCheck -check-prefixes=CHECK-NONPASSED %s // CHECK-NONPASSED-NOT: "-fsycl-instrument-device-code" -// CHECK-NONPASSED-NOT: clang-linker-wrapper{{.*}} {{.*}}libsycl-itt-{{.*}} +// CHECK-NONPASSED-NOT: {{.*}}libsycl-itt-{{.*}} diff --git a/clang/test/Driver/sycl-offload-new-driver.cpp b/clang/test/Driver/sycl-offload-new-driver.cpp index 0e8b394b1aa3b..ff787ed834af8 100644 --- a/clang/test/Driver/sycl-offload-new-driver.cpp +++ b/clang/test/Driver/sycl-offload-new-driver.cpp @@ -30,12 +30,6 @@ // CHK-FLOW-NEXT: clang-linker-wrapper{{.*}} "--host-triple=x86_64-unknown-linux-gnu"{{.*}} "--linker-path={{.*}}/ld" {{.*}} "[[CC1FINALOUT]]" /// Verify options passed to clang-linker-wrapper -// RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver \ -// RUN: --sysroot=%S/Inputs/SYCL -### %s 2>&1 \ -// RUN: | FileCheck -check-prefix WRAPPER_OPTIONS %s -// WRAPPER_OPTIONS: clang-linker-wrapper{{.*}} "-sycl-device-libraries=libsycl-crt.new.o,libsycl-complex.new.o,libsycl-complex-fp64.new.o,libsycl-cmath.new.o,libsycl-cmath-fp64.new.o,libsycl-imf.new.o,libsycl-imf-fp64.new.o,libsycl-imf-bf16.new.o,libsycl-fallback-cstring.new.o,libsycl-fallback-complex.new.o,libsycl-fallback-complex-fp64.new.o,libsycl-fallback-cmath.new.o,libsycl-fallback-cmath-fp64.new.o,libsycl-fallback-imf.new.o,libsycl-fallback-imf-fp64.new.o,libsycl-fallback-imf-bf16.new.o,libsycl-itt-user-wrappers.new.o,libsycl-itt-compiler-wrappers.new.o,libsycl-itt-stubs.new.o" -// WRAPPER_OPTIONS-SAME: "-sycl-device-library-location={{.*}}/lib" - /// Verify phases used to generate SPIR-V instead of LLVM-IR // RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver \ // RUN: -fsycl-device-obj=spirv -ccc-print-phases %s 2>&1 \ diff --git a/clang/test/Driver/sycl-spirv-default-options.cpp b/clang/test/Driver/sycl-spirv-default-options.cpp index c3ced7858e52f..b57a4742d72a1 100644 --- a/clang/test/Driver/sycl-spirv-default-options.cpp +++ b/clang/test/Driver/sycl-spirv-default-options.cpp @@ -1,4 +1,5 @@ // Generate .o file as SYCL device library file. +// REQUIRES: system-linux // // RUN: touch %t.devicelib.cpp // RUN: %clang %t.devicelib.cpp -fsycl -fsycl-targets=spir64-unknown-unknown -c --offload-new-driver -o %t_1.devicelib.o diff --git a/clang/test/Driver/sycl-spirv-ext.cpp b/clang/test/Driver/sycl-spirv-ext.cpp index a8394d1ece837..b44014641a6f6 100644 --- a/clang/test/Driver/sycl-spirv-ext.cpp +++ b/clang/test/Driver/sycl-spirv-ext.cpp @@ -1,4 +1,5 @@ // Generate .o file as SYCL device library file. +// REQUIRES: system-linux // // RUN: touch %t.devicelib.cpp // RUN: %clang %t.devicelib.cpp -fsycl -fsycl-targets=spir64-unknown-unknown -c --offload-new-driver -o %t_1.devicelib.o @@ -7,7 +8,7 @@ /// Check llvm-spirv extensions that are set -// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --offload-new-driver \ +// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --offload-new-driver \ // RUN: -fsycl-targets=spir64-unknown-unknown -c %s -o %t_1.o // RUN: clang-linker-wrapper -sycl-device-libraries=%t_1.devicelib.o \ // RUN: "--host-triple=x86_64-unknown-linux-gnu" "--linker-path=/usr/bin/ld" \