From 9bb2b343de3308994892961b0b48838ce7f2e91d Mon Sep 17 00:00:00 2001 From: Nick Sarnie Date: Wed, 24 Jul 2024 10:25:07 -0400 Subject: [PATCH] [SYCL][ClangLinkerWrapper] Fix SYCL binary creation with spirv64 triple (#14686) I hit this working on thinLTO using the SPIR-V backend, but it's reproducible just with the triple. Signed-off-by: Sarnie, Nick --- clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp | 6 ++++-- sycl/test-e2e/NewOffloadDriver/buffer.cpp | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp index 0cd41a27affc6..88d090f7e91a5 100644 --- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp +++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp @@ -967,10 +967,12 @@ wrapSYCLBinariesFromFile(std::vector &SplitModules, SmallVector Images; // SYCL runtime currently works for spir64 target triple and not for - // spir64-unknown-unknown. - // TODO: Fix SYCL runtime to accept both triple + // spir64-unknown-unknown/spirv64-unknown-unknown/spirv64. + // TODO: Fix SYCL runtime to accept other triples llvm::Triple T(Target); StringRef A(T.getArchName()); + if(A == "spirv64") + A = "spir64"; for (auto &SI : SplitModules) { auto MBOrDesc = MemoryBuffer::getFile(SI.ModuleFilePath); if (!MBOrDesc) diff --git a/sycl/test-e2e/NewOffloadDriver/buffer.cpp b/sycl/test-e2e/NewOffloadDriver/buffer.cpp index 1f48325ff9b5c..5e3f0a2b5d5c2 100644 --- a/sycl/test-e2e/NewOffloadDriver/buffer.cpp +++ b/sycl/test-e2e/NewOffloadDriver/buffer.cpp @@ -12,6 +12,9 @@ // RUN: %clangxx -fsycl --offload-new-driver %s -o %t.out // RUN: %{run} %t.out +// RUN: %clangxx -fsycl -fsycl-targets=spirv64 --offload-new-driver %s -o %t1.out +// RUN: %{run} %t1.out + #include int main() {