Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion buildbot/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ def do_configure(args, passthrough_args):
]

if sys.platform != "darwin":
llvm_spirv64_runtimes = "compiler-rt"
llvm_spirv64_runtimes = "compiler-rt;libc"
llvm_spirv64_sanitizers = ""
runtime_targets += ";spirv64-unknown-unknown"
cmake_cmd.extend(
Expand Down
22 changes: 17 additions & 5 deletions clang/lib/Driver/Driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6165,11 +6165,21 @@ class OffloadingActionBuilder final {
SmallVector<SmallString<128>, 4> LibLocCandidates;
SYCLInstallation.getSYCLDeviceLibPath(LibLocCandidates);

if (TC->getTriple().isSPIROrSPIRV()) {
bool LinkDeviceLibc = false;
bool LinkDeviceBuiltin = false;
bool NoOffloadLib = !Args.hasFlag(options::OPT_offloadlib,
options::OPT_no_offloadlib, true);
if (TC->getTriple().isSPIROrSPIRV() && !NoOffloadLib) {
if (std::optional<std::string> StdlibPath = TC->getStdlibPath()) {
LinkDeviceLibc = true;
LibLocCandidates.emplace_back(*StdlibPath);
Comment on lines +6173 to +6175
}
SmallString<128> SPIRVCompilerRTPath(TC->getCompilerRTPath());
llvm::sys::path::append(SPIRVCompilerRTPath, "spirv64-unknown-unknown");
if (llvm::sys::fs::exists(SPIRVCompilerRTPath))
if (llvm::sys::fs::exists(SPIRVCompilerRTPath)) {
LinkDeviceBuiltin = true;
LibLocCandidates.emplace_back(SPIRVCompilerRTPath);
}
}

// NVPTX/AMDGCN reuse CudaToolChain/AMDGPUToolChain, not SYCLToolChain.
Expand All @@ -6183,16 +6193,18 @@ class OffloadingActionBuilder final {
// has their own getDeviceLibs that we can potentially use.
DeviceLibraries =
SYCLTC.getDeviceLibNames(C.getDriver(), Args, TC->getTriple());
if (LinkDeviceLibc) {
ToolChain::BitCodeLibraryInfo DeviceLibcInfo("libc.bc");
DeviceLibraries.emplace_back(DeviceLibcInfo);
}
// There is some work in upstream to enable compiler-rt builtins for
// SYCL: https://github.com/llvm/llvm-project/pull/218528, we will
// cherry-pick it to intel/llvm once it is merged. Before it happens,
// we need to enable compiler-rt builtins for SYCL in intel/llvm in
// advance, so enable it in old model for now.
// TODO: when upstream PR lands into intel/llvm, remove the special
// handling for compiler-rt builtins here.
bool NoOffloadLib = !Args.hasFlag(options::OPT_offloadlib,
options::OPT_no_offloadlib, true);
if (!NoOffloadLib) {
if (LinkDeviceBuiltin) {
ToolChain::BitCodeLibraryInfo RTBuiltinInfo("libclang_rt.builtins.bc");
DeviceLibraries.emplace_back(RTBuiltinInfo);
}
Expand Down
8 changes: 8 additions & 0 deletions clang/lib/Driver/ToolChain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1209,6 +1209,14 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
if (auto Path = getPathForTriple(T))
return *Path;

if (T.isSPIROrSPIRV() && T.isArch64Bit()) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIUC, this lets spir64 triples find libraries installed under spirv64-unknown-unknown dir.
Correct?
Since it's in the base ToolChain, it affects every lookup that uses this (getRuntimePath, getStdlibPath, getStdlibIncludePath), not just SYCL libc.

A few cases:

spir64_gen-unknown-unknown    --> spirv64-unknown-unknown
spir64_x86_64-unknown-unknown --> spirv64-unknown-unknown
spir64-unknown-linux          --> spirv64-unknown-linux   (not found)

questions:

  1. spir64_x86_64 (CPU AOT) now also links the spirv64 libc. Is that intended?
  2. Only the arch name is replaced, so a triple like spir64-unknown-linux still won't find spirv64-unknown-unknown. Should we just use spirv64-unknown-unknown directly here?
  3. Can we add a TODO like the AMDGCN one below, explaining why this fallback is needed?

llvm::Triple Canon(T);
Canon.setArchName("spirv64");
Canon = llvm::Triple(Canon.normalize());
if (auto Path = getPathForTriple(Canon))
return *Path;
}

if (T.isAMDGCN()) {
// Clear the subarch as a fallback.
// TODO: Remove this when libc and compiler-rt builds are migrated.
Expand Down
30 changes: 30 additions & 0 deletions clang/lib/Driver/ToolChains/SYCL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -922,6 +922,17 @@ const char *SYCL::Linker::constructLLVMLinkCommand(
return true;
if (InputFilename.starts_with("libclang_rt.builtins"))
return true;
if (InputFilename == "libc.bc") {
std::optional<std::string> StdlibPath = getToolChain().getStdlibPath();
if (StdlibPath) {
llvm::StringRef LibcDirPath = llvm::sys::path::parent_path(FileName);
bool IsSamePath = false;
auto EC =
llvm::sys::fs::equivalent(LibcDirPath, *StdlibPath, IsSamePath);
return (!EC && IsSamePath);
}
return false;
}
StringRef LibSyclPrefix("libsycl-");
if (!InputFilename.starts_with(LibSyclPrefix) ||
!InputFilename.ends_with(LibPostfix))
Expand Down Expand Up @@ -2103,6 +2114,25 @@ SYCLToolChain::getDeviceLibs(
else
getDriver().Diag(diag::err_drv_no_sycl_device_lib) << DeviceLib.Path;
}

bool NoOffloadLib = !DriverArgs.hasFlag(options::OPT_offloadlib,
options::OPT_no_offloadlib, true);
// Link device libc for spirv64 target.
if (getTriple().isSPIROrSPIRV() && getTriple().isArch64Bit() &&
!NoOffloadLib) {
bool LinkDeviceLibc = false;
if (std::optional<std::string> StdlibPath = getStdlibPath()) {
SmallString<128> FullLibcName(*StdlibPath);
llvm::sys::path::append(FullLibcName, "libc.bc");
if (getDriver().getVFS().exists(FullLibcName)) {
LinkDeviceLibc = true;
BCLibs.emplace_back(BitCodeLibraryInfo(FullLibcName, true));
}
}
if (!LinkDeviceLibc)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the new offload model, a missing libc.bc is now a hard error, so any toolchain built without spirv64 libc can't compile SYCL code anymore.
The old model just skips it silently (Driver.cpp only links the lib if the file exists).
Is that intended?

getDriver().Diag(diag::err_drv_no_sycl_device_lib) << "libc.bc";
}

return BCLibs;
}

Expand Down
Empty file.
12 changes: 12 additions & 0 deletions clang/test/Driver/sycl-device-lib-old-model.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// SYCL_DEVICE_LIB_LINK_DEFAULT: llvm-link{{.*}} "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-crt.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libclang_rt.builtins.bc"

/// ###########################################################################
Expand All @@ -44,6 +45,7 @@
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-crt.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libc.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libclang_rt.builtins.bc"

/// ###########################################################################
Expand Down Expand Up @@ -73,6 +75,7 @@
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc"
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc"
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-asan.bc"
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libclang_rt.builtins.bc"
// SYCL_DEVICE_ASAN_MACRO: "-cc1"
// SYCL_DEVICE_ASAN_MACRO-SAME: "USE_SYCL_DEVICE_ASAN"
Expand All @@ -95,6 +98,7 @@
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc"
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc"
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-asan-pvc.bc"
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libclang_rt.builtins.bc"

/// ###########################################################################
Expand All @@ -105,6 +109,7 @@
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc"
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc"
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-asan-cpu.bc"
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libclang_rt.builtins.bc"

/// ###########################################################################
Expand All @@ -124,6 +129,7 @@
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc"
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc"
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-asan-dg2.bc"
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libclang_rt.builtins.bc"


Expand All @@ -145,6 +151,7 @@
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc"
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc"
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-msan.bc"
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libclang_rt.builtins.bc"
// SYCL_DEVICE_MSAN_MACRO: "-cc1"
// SYCL_DEVICE_MSAN_MACRO-SAME: "USE_SYCL_DEVICE_MSAN"
Expand All @@ -165,6 +172,7 @@
// RUN: -Xarch_device -fsanitize=memory -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN_PVC
// SYCL_DEVICE_LIB_MSAN_PVC: llvm-link{{.*}} "--only-needed" "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-crt.bc"
// SYCL_DEVICE_LIB_MSAN_PVC-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-msan-pvc.bc"
// SYCL_DEVICE_LIB_MSAN_PVC-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_MSAN_PVC-SAME: "{{.*}}libclang_rt.builtins.bc"


Expand All @@ -174,6 +182,7 @@
// RUN: -Xarch_device -fsanitize=memory -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN_CPU
// SYCL_DEVICE_LIB_MSAN_CPU: llvm-link{{.*}} "--only-needed" "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-crt.bc"
// SYCL_DEVICE_LIB_MSAN_CPU-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-msan-cpu.bc"
// SYCL_DEVICE_LIB_MSAN_CPU-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_MSAN_CPU-SAME: "{{.*}}libclang_rt.builtins.bc"

/// ###########################################################################
Expand All @@ -194,6 +203,7 @@
// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc"
// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc"
// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-tsan.bc"
// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libclang_rt.builtins.bc"
// SYCL_DEVICE_TSAN_MACRO: "-cc1"
// SYCL_DEVICE_TSAN_MACRO-SAME: "USE_SYCL_DEVICE_TSAN"
Expand All @@ -214,6 +224,7 @@
// RUN: -Xarch_device -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC
// SYCL_DEVICE_LIB_TSAN_PVC: llvm-link{{.*}} "--only-needed" "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-crt.bc"
// SYCL_DEVICE_LIB_TSAN_PVC-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-tsan-pvc.bc"
// SYCL_DEVICE_LIB_TSAN_PVC-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_TSAN_PVC-SAME: "{{.*}}libclang_rt.builtins.bc"


Expand All @@ -223,4 +234,5 @@
// RUN: -Xarch_device -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_CPU
// SYCL_DEVICE_LIB_TSAN_CPU: llvm-link{{.*}} "--only-needed" "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-crt.bc"
// SYCL_DEVICE_LIB_TSAN_CPU-SAME: "{{.*}}dpcpp-{{[0-9]+}}/sycl/libsycl-tsan-cpu.bc"
// SYCL_DEVICE_LIB_TSAN_CPU-SAME: "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_TSAN_CPU-SAME: "{{.*}}libclang_rt.builtins.bc"
2 changes: 2 additions & 0 deletions clang/test/Driver/sycl-device-lib-win.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// SYCL_DEVICE_LIB_LINK_DEFAULT: llvm-link{{.*}} "{{.*}}lib\\libsycl-crt.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}lib\\libsycl-cmath.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}lib\\libsycl-imf.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libc.bc"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: same here, please anchor to the spirv64 dir.
Also, in sycl-no-rdc-win.cpp, "{{.}}libc{{.}}" matches libclang_rt.builtins.bc too.

// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libclang_rt.builtins.bc"

/// ###########################################################################
Expand All @@ -40,6 +41,7 @@
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-crt.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-cmath.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-imf.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libc.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libclang_rt.builtins.bc"

/// ###########################################################################
Expand Down
9 changes: 9 additions & 0 deletions clang/test/Driver/sycl-device-lib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
// SYCL_DEVICE_LIB_LINK_DEFAULT: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}/lib/dpcpp-{{[0-9]+}}/sycl/libsycl-crt.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}/lib/dpcpp-{{[0-9]+}}/sycl/libsycl-cmath.bc
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}/lib/dpcpp-{{[0-9]+}}/sycl/libsycl-imf.bc
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}/lib/{{.*}}/libc.bc

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the test changes here only update CHECK lines.
Can you add tests for:

-fno-offloadlib --> libc.bc is not linked
libc.bc missing --> cannot find expected SYCL device library 'libc.bc' with the new offload model
-fsycl-targets=spir64_gen and spir64_x86_64 --> picks up spirv64-unknown-unknown/libc.bc
An E2E test that calls memcpy/strcmp in a kernel would also be good.

nit: maybe anchor this to spirv64-unknown-unknown{{/|\\}}libc.bc

// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "-mlink-builtin-bitcode-postopt"

/// ###########################################################################
Expand Down Expand Up @@ -40,6 +41,7 @@
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath.bc
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf.bc
// SYCL_DEVICE_LIB_ASAN-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-asan.bc"
// SYCL_DEVICE_LIB_ASAN-SAME: "-mlink-builtin-bitcode" "{{.*}}libc.bc"

// RUN: %clangxx -fsycl --offload-new-driver %s -ccc-install-dir %{clang_install_dir} -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_ASAN_MACRO
Expand All @@ -56,6 +58,7 @@
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-cmath.bc
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf.bc
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-asan-pvc.bc"
// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "-mlink-builtin-bitcode" "{{.*}}libc.bc"

/// ###########################################################################
/// test behavior of linking libsycl-asan-cpu for CPU target AOT compilation when asan flag is applied.
Expand All @@ -65,6 +68,7 @@
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-cmath.bc
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf.bc
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-asan-cpu.bc"
// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "-mlink-builtin-bitcode" "{{.*}}libc.bc"

/// ###########################################################################
/// Test link behavior for multiple targets. Currently, we default to the
Expand All @@ -77,10 +81,12 @@
// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-cmath.bc
// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-imf.bc
// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-asan.bc"
// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: "-mlink-builtin-bitcode" "{{.*}}libc.bc"
// SYCL_DEVICE_LIB_ASAN_CPU_GPU: clang{{.*}} "-triple" "spir64_x86_64-unknown-unknown"{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc"
// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-cmath.bc
// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-imf.bc
// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-asan.bc"
// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: "-mlink-builtin-bitcode" "{{.*}}libc.bc"

/// ###########################################################################
/// test behavior of linking libsycl-asan-dg2 for DG2 target AOT compilation when asan flag is applied.
Expand All @@ -96,6 +102,7 @@
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-cmath.bc
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf.bc
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-asan-dg2.bc"
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "-mlink-builtin-bitcode" "{{.*}}libc.bc"

/// ###########################################################################
/// test behavior of linking libsycl-asan for multiple targets AOT compilation
Expand All @@ -107,6 +114,7 @@
// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-cmath.bc
// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf.bc
// SYCL_DEVICE_LIB_ASAN_MUL-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-asan.bc"
// SYCL_DEVICE_LIB_ASAN_MUL-SAME: "-mlink-builtin-bitcode" "{{.*}}libc.bc"

/// ###########################################################################
/// test behavior of libsycl-msan.o linking when -fsanitize=memory is available
Expand All @@ -124,6 +132,7 @@
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath.bc
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf.bc
// SYCL_DEVICE_LIB_MSAN-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-msan.bc"
// SYCL_DEVICE_LIB_MSAN-SAME: "-mlink-builtin-bitcode" "{{.*}}libc.bc"

// RUN: %clangxx -fsycl --offload-new-driver %s -ccc-install-dir %{clang_install_dir} -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_MSAN_MACRO
Expand Down
33 changes: 17 additions & 16 deletions clang/test/Driver/sycl-no-rdc-fat-archive-old-model.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,20 @@
// CHECK: 2: clang-offload-unbundler, {1}, tempfilelist
// CHECK: 3: spirv-to-ir-wrapper, {2}, tempfilelist, (device-sycl)
// CHECK: 4: input, "{{.*}}libsycl-crt.bc", ir, (device-sycl)
// CHECK: 10: input, "{{.*}}libclang_rt.builtins.bc", ir, (device-sycl)
// CHECK: 11: linker, {4, {{.*}}, 10}, ir, (device-sycl)
// CHECK: 12: linker, {3, 11}, ir, (device-sycl)
// CHECK: 13: foreach, {3, 12}, ir, (device-sycl)
// CHECK: 14: file-table-tform, {3, 13}, tempfilelist, (device-sycl)
// CHECK: 15: sycl-post-link, {14}, tempfiletable, (device-sycl)
// CHECK: 16: foreach, {14, 15}, tempfiletable, (device-sycl)
// CHECK: 17: file-table-tform, {16}, tempfilelist, (device-sycl)
// CHECK: 18: file-table-tform, {16}, tempfilelist, (device-sycl)
// CHECK: 19: foreach, {14, 18}, tempfilelist, (device-sycl)
// CHECK: 20: file-table-tform, {19}, tempfilelist, (device-sycl)
// CHECK: 21: llvm-spirv, {20}, tempfilelist, (device-sycl)
// CHECK: 22: file-table-tform, {17, 21}, tempfiletable, (device-sycl)
// CHECK: 23: clang-offload-wrapper, {22}, object, (device-sycl)
// CHECK: 24: offload, "device-sycl (spir64-unknown-unknown)" {23}, object
// CHECK: 25: linker, {0, 24}, image, (host-sycl)
// CHECK: 10: input, "{{.*}}libc.bc", ir, (device-sycl)
// CHECK: 11: input, "{{.*}}libclang_rt.builtins.bc", ir, (device-sycl)
// CHECK: 12: linker, {4, {{.*}}, 11}, ir, (device-sycl)
// CHECK: 13: linker, {3, 12}, ir, (device-sycl)
// CHECK: 14: foreach, {3, 13}, ir, (device-sycl)
// CHECK: 15: file-table-tform, {3, 14}, tempfilelist, (device-sycl)
// CHECK: 16: sycl-post-link, {15}, tempfiletable, (device-sycl)
// CHECK: 17: foreach, {15, 16}, tempfiletable, (device-sycl)
// CHECK: 18: file-table-tform, {17}, tempfilelist, (device-sycl)
// CHECK: 19: file-table-tform, {17}, tempfilelist, (device-sycl)
// CHECK: 20: foreach, {15, 19}, tempfilelist, (device-sycl)
// CHECK: 21: file-table-tform, {20}, tempfilelist, (device-sycl)
// CHECK: 22: llvm-spirv, {21}, tempfilelist, (device-sycl)
// CHECK: 23: file-table-tform, {18, 22}, tempfiletable, (device-sycl)
// CHECK: 24: clang-offload-wrapper, {23}, object, (device-sycl)
// CHECK: 25: offload, "device-sycl (spir64-unknown-unknown)" {24}, object
// CHECK: 26: linker, {0, 25}, image, (host-sycl)
35 changes: 18 additions & 17 deletions clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,21 @@
// CHECK: 1: input, "[[INPUT]]", archive
// CHECK: 2: clang-offload-unbundler, {1}, tempfilelist
// CHECK: 3: spirv-to-ir-wrapper, {2}, tempfilelist, (device-sycl)
// CHECK: 4: input, "{{.*}}libsycl-crt{{.*}}", ir, (device-sycl)
// CHECK: 11: input, "{{.*}}libclang_rt.builtins{{.*}}", ir, (device-sycl)
// CHECK: 12: linker, {4, {{.*}}, 11}, ir, (device-sycl)
// CHECK: 13: linker, {3, 12}, ir, (device-sycl)
// CHECK: 14: foreach, {3, 13}, ir, (device-sycl)
// CHECK: 15: file-table-tform, {3, 14}, tempfilelist, (device-sycl)
// CHECK: 16: sycl-post-link, {15}, tempfiletable, (device-sycl)
// CHECK: 17: foreach, {15, 16}, tempfiletable, (device-sycl)
// CHECK: 18: file-table-tform, {17}, tempfilelist, (device-sycl)
// CHECK: 19: file-table-tform, {17}, tempfilelist, (device-sycl)
// CHECK: 20: foreach, {15, 19}, tempfilelist, (device-sycl)
// CHECK: 21: file-table-tform, {20}, tempfilelist, (device-sycl)
// CHECK: 22: llvm-spirv, {21}, tempfilelist, (device-sycl)
// CHECK: 23: file-table-tform, {18, 22}, tempfiletable, (device-sycl)
// CHECK: 24: clang-offload-wrapper, {23}, object, (device-sycl)
// CHECK: 25: offload, "device-sycl (spir64-unknown-unknown)" {24}, object
// CHECK: 26: linker, {0, 25}, image, (host-sycl)
// CHECK: 4: input, "{{.*}}libsycl-crt.bc", ir, (device-sycl)
// CHECK: 11: input, "{{.*}}libc.bc", ir, (device-sycl)
// CHECK: 12: input, "{{.*}}libclang_rt.builtins.bc", ir, (device-sycl)
// CHECK: 13: linker, {4, {{.*}}, 12}, ir, (device-sycl)
// CHECK: 14: linker, {3, 13}, ir, (device-sycl)
// CHECK: 15: foreach, {3, 14}, ir, (device-sycl)
// CHECK: 16: file-table-tform, {3, 15}, tempfilelist, (device-sycl)
// CHECK: 17: sycl-post-link, {16}, tempfiletable, (device-sycl)
// CHECK: 18: foreach, {16, 17}, tempfiletable, (device-sycl)
// CHECK: 19: file-table-tform, {18}, tempfilelist, (device-sycl)
// CHECK: 20: file-table-tform, {18}, tempfilelist, (device-sycl)
// CHECK: 21: foreach, {16, 20}, tempfilelist, (device-sycl)
// CHECK: 22: file-table-tform, {21}, tempfilelist, (device-sycl)
// CHECK: 23: llvm-spirv, {22}, tempfilelist, (device-sycl)
// CHECK: 24: file-table-tform, {19, 23}, tempfiletable, (device-sycl)
// CHECK: 25: clang-offload-wrapper, {24}, object, (device-sycl)
// CHECK: 26: offload, "device-sycl (spir64-unknown-unknown)" {25}, object
// CHECK: 27: linker, {0, 26}, image, (host-sycl)
Loading
Loading