https://github.com/YuriPlyakhin updated 
https://github.com/llvm/llvm-project/pull/200513

>From 7e8ba3e9d398b2572a04a9fd8876f434f23981b8 Mon Sep 17 00:00:00 2001
From: "Plyakhin, Yury" <[email protected]>
Date: Wed, 27 May 2026 02:10:16 +0200
Subject: [PATCH 1/5] draft

---
 .../linker-wrapper-image.c                    |  2 +-
 .../OffloadTools/clang-sycl-linker/basic.ll   | 20 ++----
 .../clang-sycl-linker/split-mode.ll           |  6 ++
 .../ClangLinkerWrapper.cpp                    | 13 ----
 .../clang-sycl-linker/ClangSYCLLinker.cpp     | 72 ++++++++++++-------
 5 files changed, 59 insertions(+), 54 deletions(-)

diff --git 
a/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c 
b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c
index 9d3c65fd36760..23f69773f8e8d 100644
--- a/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c
+++ b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c
@@ -311,7 +311,7 @@
 // RUN: clang-linker-wrapper --print-wrapped-module --dry-run 
--host-triple=x86_64-unknown-linux-gnu -r \
 // RUN:   --linker-path=/usr/bin/ld %t.o -o a.out 2>&1 | FileCheck %s 
--check-prefixes=SYCL
 
-//      SYCL: @.sycl_offloading.binary = internal unnamed_addr constant 
[[[SIZE:[0-9]+]] x i8] c"{{.*}}", section ".llvm.offloading"
+//      SYCL: @.sycl_offloading.binary = internal unnamed_addr constant 
[[[SIZE:[0-9]+]] x i8] {{(c".*"|zeroinitializer)}}, section ".llvm.offloading"
 
 //      SYCL: define internal void @sycl.descriptor_reg() section 
".text.startup" {
 // SYCL-NEXT: entry:
diff --git a/clang/test/OffloadTools/clang-sycl-linker/basic.ll 
b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
index 3bd40eda90f71..fb0e7acd3b5e5 100644
--- a/clang/test/OffloadTools/clang-sycl-linker/basic.ll
+++ b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
@@ -24,16 +24,13 @@
 ; RUN: not clang-sycl-linker %t-missing.bc -o %t.out 2>&1 | FileCheck %s 
--check-prefix=MISSING
 ; MISSING: Input file '{{.*}}-missing.bc' does not exist
 ;
-; Test the dry run of a simple case to link two input files.
+; Test a simple case to link two input files.
+; Test that IMG_SPIRV image kind is set for non-AOT compilation.
 ; RUN: clang-sycl-linker --dry-run -v --module-split-mode=none %t/input1.bc 
%t/input2.bc -o %t/spirv.out 2>&1 \
 ; RUN:   | FileCheck %s --check-prefix=SIMPLE-FO
 ; SIMPLE-FO:      link: inputs: {{.*}}.bc, {{.*}}.bc  libfiles:  output: 
[[LLVMLINKOUT:.*]].bc
 ; SIMPLE-FO-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: {{.*}}_0.spv
-; SIMPLE-FO-NOT:  {{.+}}
-;
-; Test that IMG_SPIRV image kind is set for non-AOT compilation.
-; RUN: llvm-objdump --offloading %t/spirv.out | FileCheck %s 
--check-prefix=IMAGE-KIND-SPIRV
-; IMAGE-KIND-SPIRV: kind            spir-v
+; SIMPLE-FO-NEXT: sycl-bundle: image kind: spv,{{.*}}
 ;
 ; Test the dry run of a simple case with device library files specified.
 ; RUN: mkdir -p %t/libs
@@ -87,27 +84,24 @@
 ; NO-DIR-AS-LIB: 'libs' library file not found
 ;
 ; Test AOT compilation for an Intel GPU.
+; Test that IMG_Object image kind is set for AOT compilation (Intel GPU).
 ; RUN: clang-sycl-linker --dry-run -v --module-split-mode=none -arch=bmg_g21 
%t/input1.bc %t/input2.bc -o %t/aot-gpu.out 2>&1 \
 ; RUN:     --ocloc-options="-a -b" \
 ; RUN:   | FileCheck %s --check-prefix=AOT-INTEL-GPU
 ; AOT-INTEL-GPU:      link: inputs: {{.*}}.bc, {{.*}}.bc libfiles: output: 
[[LLVMLINKOUT:.*]].bc
 ; AOT-INTEL-GPU-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: 
[[SPIRVTRANSLATIONOUT:.*]]_0.spv
 ; AOT-INTEL-GPU-NEXT: "{{.*}}ocloc{{.*}}" {{.*}}-device bmg_g21 -a -b 
{{.*}}-output [[SPIRVTRANSLATIONOUT]]_0.out -file [[SPIRVTRANSLATIONOUT]]_0.spv
-;
-; Test that IMG_Object image kind is set for AOT compilation (Intel GPU).
-; RUN: llvm-objdump --offloading %t/aot-gpu.out | FileCheck %s 
--check-prefix=IMAGE-KIND-OBJECT
-; IMAGE-KIND-OBJECT: kind            elf
+; AOT-INTEL-GPU-NEXT: sycl-bundle: image kind: o,{{.*}}
 ;
 ; Test AOT compilation for an Intel CPU.
+; Test that IMG_Object image kind is set for AOT compilation (Intel CPU).
 ; RUN: clang-sycl-linker --dry-run -v --module-split-mode=none 
-arch=graniterapids %t/input1.bc %t/input2.bc -o %t/aot-cpu.out 2>&1 \
 ; RUN:     --opencl-aot-options="-a -b" \
 ; RUN:   | FileCheck %s --check-prefix=AOT-INTEL-CPU
 ; AOT-INTEL-CPU:      link: inputs: {{.*}}.bc, {{.*}}.bc libfiles: output: 
[[LLVMLINKOUT:.*]].bc
 ; AOT-INTEL-CPU-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: 
[[SPIRVTRANSLATIONOUT:.*]]_0.spv
 ; AOT-INTEL-CPU-NEXT: "{{.*}}opencl-aot{{.*}}" {{.*}}--device=cpu -a -b 
{{.*}}-o [[SPIRVTRANSLATIONOUT]]_0.out [[SPIRVTRANSLATIONOUT]]_0.spv
-;
-; Test that IMG_Object image kind is set for AOT compilation (Intel CPU).
-; RUN: llvm-objdump --offloading %t/aot-cpu.out | FileCheck %s 
--check-prefix=IMAGE-KIND-OBJECT
+; AOT-INTEL-CPU-NEXT: sycl-bundle: image kind: o,{{.*}}
 ;
 ; Check that the output file must be specified.
 ; RUN: not clang-sycl-linker --dry-run %t/input1.bc %t/input2.bc 2>&1 \
diff --git a/clang/test/OffloadTools/clang-sycl-linker/split-mode.ll 
b/clang/test/OffloadTools/clang-sycl-linker/split-mode.ll
index 56a6b3e082550..de44c1cb9ac70 100644
--- a/clang/test/OffloadTools/clang-sycl-linker/split-mode.ll
+++ b/clang/test/OffloadTools/clang-sycl-linker/split-mode.ll
@@ -14,6 +14,7 @@
 ; RUN:   | FileCheck %s --check-prefix=SPLIT-NONE
 ; SPLIT-NONE:      link: inputs: {{.*}}.bc  libfiles:  output: 
[[LLVMLINKOUT:.*]].bc
 ; SPLIT-NONE-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: 
{{.*}}_0.spv
+; SPLIT-NONE-NEXT: sycl-bundle: image kind: spv,{{.*}}
 ; SPLIT-NONE-NOT:  {{.+}}
 ;
 ; Test the split mode ("kernel"): each SPIR_KERNEL function produces its own 
device image.
@@ -27,6 +28,9 @@
 ; SPLIT-KERNEL-NEXT: LLVM backend: input: [[SPLIT0]].bc, output: {{.*}}_0.spv
 ; SPLIT-KERNEL-NEXT: LLVM backend: input: [[SPLIT1]].bc, output: {{.*}}_1.spv
 ; SPLIT-KERNEL-NEXT: LLVM backend: input: [[SPLIT2]].bc, output: {{.*}}_2.spv
+; SPLIT-KERNEL-NEXT: sycl-bundle: image kind: spv,{{.*}}
+; SPLIT-KERNEL-NEXT: sycl-bundle: image kind: spv,{{.*}}
+; SPLIT-KERNEL-NEXT: sycl-bundle: image kind: spv,{{.*}}
 ; SPLIT-KERNEL-NOT:  {{.+}}
 ;
 ; Test default split mode ('source'): no --module-split-mode flag needed.
@@ -45,6 +49,8 @@
 ; SPLIT-SRC-NEXT: [[S1:.*]].bc [kernel_a ]
 ; SPLIT-SRC-NEXT: LLVM backend: input: [[S0]].bc, output: {{.*}}_0.spv
 ; SPLIT-SRC-NEXT: LLVM backend: input: [[S1]].bc, output: {{.*}}_1.spv
+; SPLIT-SRC-NEXT: sycl-bundle: image kind: spv,{{.*}}
+; SPLIT-SRC-NEXT: sycl-bundle: image kind: spv,{{.*}}
 ; SPLIT-SRC-NOT:  {{.+}}
 
 target datalayout = 
"e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64-G1"
diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp 
b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index c648bb38edf71..e67569b879af3 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -800,19 +800,6 @@ bundleOpenMP(ArrayRef<OffloadingImage> Images) {
 Expected<SmallVector<std::unique_ptr<MemoryBuffer>>>
 bundleSYCL(ArrayRef<OffloadingImage> Images) {
   SmallVector<std::unique_ptr<MemoryBuffer>> Buffers;
-  if (DryRun) {
-    // In dry-run mode there is an empty input which is insufficient for the
-    // testing. Therefore, we return here a stub image.
-    OffloadingImage Image;
-    Image.TheImageKind = IMG_None;
-    Image.TheOffloadKind = OffloadKind::OFK_SYCL;
-    Image.StringData["symbols"] = "stub";
-    Image.Image = MemoryBuffer::getMemBufferCopy("");
-    SmallString<0> SerializedImage = OffloadBinary::write(Image);
-    Buffers.emplace_back(MemoryBuffer::getMemBufferCopy(SerializedImage));
-    return std::move(Buffers);
-  }
-
   for (const OffloadingImage &Image : Images) {
     // clang-sycl-linker packs outputs into one binary blob. Therefore, it is
     // passed to Offload Wrapper as is.
diff --git a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp 
b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
index 9e79bbf31464b..f3241fae30ab4 100644
--- a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
+++ b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
@@ -56,7 +56,7 @@ using namespace llvm::opt;
 using namespace llvm::object;
 using namespace clang;
 
-/// Print commands/steps with arguments without executing.
+/// Print commands with arguments without executing.
 static bool DryRun = false;
 
 /// Print verbose output.
@@ -135,7 +135,7 @@ std::string getMainExecutable(const char *Name) {
 Expected<StringRef> createTempFile(const ArgList &Args, const Twine &Prefix,
                                    StringRef Extension) {
   SmallString<128> OutputFile;
-  if (Args.hasArg(OPT_save_temps)) {
+  if (Args.hasArg(OPT_save_temps) || DryRun) {
     // Generate a unique path name without creating a file
     sys::fs::createUniquePath(Prefix + "-%%%%%%." + Extension, OutputFile,
                               /*MakeAbsolute=*/false);
@@ -151,7 +151,7 @@ Expected<StringRef> createTempFile(const ArgList &Args, 
const Twine &Prefix,
 
 Expected<std::string> findProgram(const ArgList &Args, StringRef Name,
                                   ArrayRef<StringRef> Paths) {
-  if (Args.hasArg(OPT_dry_run))
+  if (DryRun)
     return Name.str();
   ErrorOr<std::string> Path = sys::findProgramByName(Name, Paths);
   if (!Path)
@@ -176,10 +176,12 @@ Error executeCommands(StringRef ExecutablePath, 
ArrayRef<StringRef> Args) {
   if (Verbose || DryRun)
     printCommands(Args);
 
-  if (!DryRun)
-    if (sys::ExecuteAndWait(ExecutablePath, Args))
-      return createStringError(
-          "'%s' failed", sys::path::filename(ExecutablePath).str().c_str());
+  if (DryRun)
+    return Error::success();
+
+  if (sys::ExecuteAndWait(ExecutablePath, Args))
+    return createStringError("'%s' failed",
+                             
sys::path::filename(ExecutablePath).str().c_str());
   return Error::success();
 }
 
@@ -293,7 +295,7 @@ Expected<LinkResult> linkInputs(ArrayRef<std::string> 
InputFiles,
   if (!BitcodeOutput)
     return BitcodeOutput.takeError();
 
-  if (Verbose || DryRun) {
+  if (Verbose) {
     std::string Inputs = llvm::join(InputFiles.begin(), InputFiles.end(), ", 
");
     std::string LibInputs =
         llvm::join((*BCLibFiles).begin(), (*BCLibFiles).end(), ", ");
@@ -349,11 +351,13 @@ Expected<LinkResult> linkInputs(ArrayRef<std::string> 
InputFiles,
     outs() << *LinkerOutput;
 
   // Write the final output into 'BitcodeOutput' file.
-  int FD = -1;
-  if (std::error_code EC = sys::fs::openFileForWrite(*BitcodeOutput, FD))
-    return errorCodeToError(EC);
-  llvm::raw_fd_ostream OS(FD, true);
-  WriteBitcodeToFile(*LinkerOutput, OS);
+  if (!DryRun) {
+    int FD = -1;
+    if (std::error_code EC = sys::fs::openFileForWrite(*BitcodeOutput, FD))
+      return errorCodeToError(EC);
+    llvm::raw_fd_ostream OS(FD, true);
+    WriteBitcodeToFile(*LinkerOutput, OS);
+  }
 
   return LinkResult{std::move(LinkerOutput), SmallString<256>(*BitcodeOutput),
                     std::move(TargetTriple)};
@@ -375,6 +379,9 @@ static Error runCodeGen(StringRef File, const llvm::Triple 
&TargetTriple,
     errs() << formatv("LLVM backend: input: {0}, output: {1}\n", File,
                       OutputFile);
 
+  if (DryRun)
+    return Error::success();
+
   // Parse input module.
   SMDiagnostic Err;
   std::unique_ptr<Module> M = parseIRFile(File, Err, C);
@@ -624,11 +631,13 @@ splitDeviceCode(std::unique_ptr<Module> M, StringRef 
LinkedBitcodeFile,
     if (!BitcodeFileOrErr)
       return BitcodeFileOrErr.takeError();
 
-    int FD = -1;
-    if (std::error_code EC = sys::fs::openFileForWrite(*BitcodeFileOrErr, FD))
-      return errorCodeToError(EC);
-    raw_fd_ostream OS(FD, /*shouldClose=*/true);
-    WriteBitcodeToFile(*Part, OS);
+    if (!DryRun) {
+      int FD = -1;
+      if (std::error_code EC = sys::fs::openFileForWrite(*BitcodeFileOrErr, 
FD))
+        return errorCodeToError(EC);
+      raw_fd_ostream OS(FD, /*shouldClose=*/true);
+      WriteBitcodeToFile(*Part, OS);
+    }
 
     SplitModules.push_back(
         {SmallString<256>(*BitcodeFileOrErr),
@@ -640,7 +649,7 @@ splitDeviceCode(std::unique_ptr<Module> M, StringRef 
LinkedBitcodeFile,
           std::move(M), Categorizer, SplitCallback))
     return Err;
 
-  if (Verbose || DryRun) {
+  if (Verbose) {
     errs() << formatv("sycl-module-split: input: {0}, mode: {1}\n",
                       LinkedBitcodeFile, splitModeToString(Mode));
     for (const SplitModule &SI : SplitModules) {
@@ -750,13 +759,11 @@ Error runSYCLLink(ArrayRef<std::string> Files, const 
ArgList &Args) {
   SmallVector<OffloadingImage> Images;
   for (SplitModule &SI : SplitModules) {
     llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> FileOrErr =
-        llvm::MemoryBuffer::getFileOrSTDIN(SI.ModuleFilePath);
-    if (std::error_code EC = FileOrErr.getError()) {
-      if (DryRun)
-        FileOrErr = MemoryBuffer::getMemBuffer("");
-      else
-        return createFileError(SI.ModuleFilePath, EC);
-    }
+        DryRun ? llvm::MemoryBuffer::getMemBuffer("")
+               : llvm::MemoryBuffer::getFileOrSTDIN(SI.ModuleFilePath);
+    if (!FileOrErr)
+      return createFileError(SI.ModuleFilePath, FileOrErr.getError());
+
     OffloadingImage TheImage{};
     TheImage.TheImageKind = IsAOTCompileNeeded ? IMG_Object : IMG_SPIRV;
     TheImage.TheOffloadKind = OFK_SYCL;
@@ -769,10 +776,21 @@ Error runSYCLLink(ArrayRef<std::string> Files, const 
ArgList &Args) {
     Images.emplace_back(std::move(TheImage));
   }
 
+  if (Verbose) {
+    for (const OffloadingImage &Image : Images)
+      errs() << formatv(
+          "sycl-bundle: image kind: {0}, triple: {1}, arch: {2}\n",
+          getImageKindName(Image.TheImageKind), 
Image.StringData.lookup("triple"),
+          Image.StringData.lookup("arch"));
+  }
+
   llvm::SmallString<0> Buffer = OffloadBinary::write(Images);
   if (Buffer.size() % OffloadBinary::getAlignment() != 0)
     return createStringError("Offload binary has invalid size alignment");
 
+  if (DryRun)
+    return Error::success();
+
   auto OutputOrErr = FileOutputBuffer::create(OutputFile, Buffer.size());
   if (!OutputOrErr)
     return OutputOrErr.takeError();
@@ -848,7 +866,7 @@ int main(int argc, char **argv) {
     reportError(std::move(Err));
 
   // Remove the temporary files created.
-  if (!Args.hasArg(OPT_save_temps))
+  if (!Args.hasArg(OPT_save_temps) && !DryRun)
     for (const auto &TempFile : TempFiles)
       if (std::error_code EC = sys::fs::remove(TempFile))
         reportError(createFileError(TempFile, EC));

>From a5fb338795941533f29cc7d1bcb89c59e8811183 Mon Sep 17 00:00:00 2001
From: "Plyakhin, Yury" <[email protected]>
Date: Sat, 30 May 2026 00:37:37 +0200
Subject: [PATCH 2/5] update

---
 .../clang-linker-wrapper/linker-wrapper-image.c             | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git 
a/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c 
b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c
index 23f69773f8e8d..bc846e01d338b 100644
--- a/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c
+++ b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c
@@ -311,16 +311,16 @@
 // RUN: clang-linker-wrapper --print-wrapped-module --dry-run 
--host-triple=x86_64-unknown-linux-gnu -r \
 // RUN:   --linker-path=/usr/bin/ld %t.o -o a.out 2>&1 | FileCheck %s 
--check-prefixes=SYCL
 
-//      SYCL: @.sycl_offloading.binary = internal unnamed_addr constant 
[[[SIZE:[0-9]+]] x i8] {{(c".*"|zeroinitializer)}}, section ".llvm.offloading"
+//      SYCL: @.sycl_offloading.binary = internal unnamed_addr constant [0 x 
i8] zeroinitializer, section ".llvm.offloading"
 
 //      SYCL: define internal void @sycl.descriptor_reg() section 
".text.startup" {
 // SYCL-NEXT: entry:
-// SYCL-NEXT:   call void @__sycl_register_lib(ptr @.sycl_offloading.binary, 
i64 [[SIZE]])
+// SYCL-NEXT:   call void @__sycl_register_lib(ptr @.sycl_offloading.binary, 
i64 0)
 // SYCL-NEXT:   ret void
 // SYCL-NEXT: }
 
 //      SYCL: define internal void @sycl.descriptor_unreg() section 
".text.startup" {
 // SYCL-NEXT: entry:
-// SYCL-NEXT:   call void @__sycl_unregister_lib(ptr @.sycl_offloading.binary, 
i64 [[SIZE]])
+// SYCL-NEXT:   call void @__sycl_unregister_lib(ptr @.sycl_offloading.binary, 
i64 0)
 // SYCL-NEXT:   ret void
 // SYCL-NEXT: }

>From 95f3afe8d992ed3d53bb87e40d512bd673ad4132 Mon Sep 17 00:00:00 2001
From: "Plyakhin, Yury" <[email protected]>
Date: Sat, 30 May 2026 00:43:24 +0200
Subject: [PATCH 3/5] update

---
 clang/test/OffloadTools/clang-sycl-linker/basic.ll | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/test/OffloadTools/clang-sycl-linker/basic.ll 
b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
index fb0e7acd3b5e5..ee1cf82981b9d 100644
--- a/clang/test/OffloadTools/clang-sycl-linker/basic.ll
+++ b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
@@ -24,7 +24,7 @@
 ; RUN: not clang-sycl-linker %t-missing.bc -o %t.out 2>&1 | FileCheck %s 
--check-prefix=MISSING
 ; MISSING: Input file '{{.*}}-missing.bc' does not exist
 ;
-; Test a simple case to link two input files.
+; Test the dry run of a simple case to link two input files.
 ; Test that IMG_SPIRV image kind is set for non-AOT compilation.
 ; RUN: clang-sycl-linker --dry-run -v --module-split-mode=none %t/input1.bc 
%t/input2.bc -o %t/spirv.out 2>&1 \
 ; RUN:   | FileCheck %s --check-prefix=SIMPLE-FO

>From c6c35772e30a6055db80ee8463b4e68383a3ae7d Mon Sep 17 00:00:00 2001
From: "Plyakhin, Yury" <[email protected]>
Date: Sat, 30 May 2026 00:52:19 +0200
Subject: [PATCH 4/5] update

---
 clang/test/OffloadTools/clang-sycl-linker/basic.ll | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/clang/test/OffloadTools/clang-sycl-linker/basic.ll 
b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
index ee1cf82981b9d..bed45ed64f1bb 100644
--- a/clang/test/OffloadTools/clang-sycl-linker/basic.ll
+++ b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
@@ -31,6 +31,7 @@
 ; SIMPLE-FO:      link: inputs: {{.*}}.bc, {{.*}}.bc  libfiles:  output: 
[[LLVMLINKOUT:.*]].bc
 ; SIMPLE-FO-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: {{.*}}_0.spv
 ; SIMPLE-FO-NEXT: sycl-bundle: image kind: spv,{{.*}}
+; SIMPLE-FO-NOT:  {{.+}}
 ;
 ; Test the dry run of a simple case with device library files specified.
 ; RUN: mkdir -p %t/libs
@@ -40,6 +41,8 @@
 ; RUN:   | FileCheck %s --check-prefix=DEVLIBS
 ; DEVLIBS:      link: inputs: {{.*}}.bc  libfiles: {{.*}}lib1.bc, 
{{.*}}lib2.bc  output: [[LLVMLINKOUT:.*]].bc
 ; DEVLIBS-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: a_0.spv
+; DEVLIBS-NEXT: sycl-bundle: image kind: spv,{{.*}}
+; DEVLIBS-NOT:  {{.+}}
 ;
 ; Test -L short form (joined) and --bc-library= joined form.
 ; RUN: clang-sycl-linker --dry-run -v --module-split-mode=none %t/input1.bc 
-L%t/libs --bc-library=lib1.bc -o a.spv 2>&1 \
@@ -92,6 +95,7 @@
 ; AOT-INTEL-GPU-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: 
[[SPIRVTRANSLATIONOUT:.*]]_0.spv
 ; AOT-INTEL-GPU-NEXT: "{{.*}}ocloc{{.*}}" {{.*}}-device bmg_g21 -a -b 
{{.*}}-output [[SPIRVTRANSLATIONOUT]]_0.out -file [[SPIRVTRANSLATIONOUT]]_0.spv
 ; AOT-INTEL-GPU-NEXT: sycl-bundle: image kind: o,{{.*}}
+; AOT-INTEL-GPU-NOT:  {{.+}}
 ;
 ; Test AOT compilation for an Intel CPU.
 ; Test that IMG_Object image kind is set for AOT compilation (Intel CPU).
@@ -102,6 +106,7 @@
 ; AOT-INTEL-CPU-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: 
[[SPIRVTRANSLATIONOUT:.*]]_0.spv
 ; AOT-INTEL-CPU-NEXT: "{{.*}}opencl-aot{{.*}}" {{.*}}--device=cpu -a -b 
{{.*}}-o [[SPIRVTRANSLATIONOUT]]_0.out [[SPIRVTRANSLATIONOUT]]_0.spv
 ; AOT-INTEL-CPU-NEXT: sycl-bundle: image kind: o,{{.*}}
+; AOT-INTEL-CPU-NOT:  {{.+}}
 ;
 ; Check that the output file must be specified.
 ; RUN: not clang-sycl-linker --dry-run %t/input1.bc %t/input2.bc 2>&1 \

>From 9462c25a5e0d8102b35ab15ca6670d3e73d2f6c6 Mon Sep 17 00:00:00 2001
From: "Plyakhin, Yury" <[email protected]>
Date: Sat, 30 May 2026 00:59:28 +0200
Subject: [PATCH 5/5] update

---
 clang/test/OffloadTools/clang-sycl-linker/basic.ll | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/clang/test/OffloadTools/clang-sycl-linker/basic.ll 
b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
index bed45ed64f1bb..f27aae7cb6c1f 100644
--- a/clang/test/OffloadTools/clang-sycl-linker/basic.ll
+++ b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
@@ -30,7 +30,7 @@
 ; RUN:   | FileCheck %s --check-prefix=SIMPLE-FO
 ; SIMPLE-FO:      link: inputs: {{.*}}.bc, {{.*}}.bc  libfiles:  output: 
[[LLVMLINKOUT:.*]].bc
 ; SIMPLE-FO-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: {{.*}}_0.spv
-; SIMPLE-FO-NEXT: sycl-bundle: image kind: spv,{{.*}}
+; SIMPLE-FO-NEXT: sycl-bundle: image kind: spv, triple: spirv64, arch: {{$}}
 ; SIMPLE-FO-NOT:  {{.+}}
 ;
 ; Test the dry run of a simple case with device library files specified.
@@ -41,7 +41,7 @@
 ; RUN:   | FileCheck %s --check-prefix=DEVLIBS
 ; DEVLIBS:      link: inputs: {{.*}}.bc  libfiles: {{.*}}lib1.bc, 
{{.*}}lib2.bc  output: [[LLVMLINKOUT:.*]].bc
 ; DEVLIBS-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: a_0.spv
-; DEVLIBS-NEXT: sycl-bundle: image kind: spv,{{.*}}
+; DEVLIBS-NEXT: sycl-bundle: image kind: spv, triple: spirv64, arch: {{$}}
 ; DEVLIBS-NOT:  {{.+}}
 ;
 ; Test -L short form (joined) and --bc-library= joined form.
@@ -94,7 +94,7 @@
 ; AOT-INTEL-GPU:      link: inputs: {{.*}}.bc, {{.*}}.bc libfiles: output: 
[[LLVMLINKOUT:.*]].bc
 ; AOT-INTEL-GPU-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: 
[[SPIRVTRANSLATIONOUT:.*]]_0.spv
 ; AOT-INTEL-GPU-NEXT: "{{.*}}ocloc{{.*}}" {{.*}}-device bmg_g21 -a -b 
{{.*}}-output [[SPIRVTRANSLATIONOUT]]_0.out -file [[SPIRVTRANSLATIONOUT]]_0.spv
-; AOT-INTEL-GPU-NEXT: sycl-bundle: image kind: o,{{.*}}
+; AOT-INTEL-GPU-NEXT: sycl-bundle: image kind: o, triple: spirv64, arch: 
bmg_g21
 ; AOT-INTEL-GPU-NOT:  {{.+}}
 ;
 ; Test AOT compilation for an Intel CPU.
@@ -105,7 +105,7 @@
 ; AOT-INTEL-CPU:      link: inputs: {{.*}}.bc, {{.*}}.bc libfiles: output: 
[[LLVMLINKOUT:.*]].bc
 ; AOT-INTEL-CPU-NEXT: LLVM backend: input: [[LLVMLINKOUT]].bc, output: 
[[SPIRVTRANSLATIONOUT:.*]]_0.spv
 ; AOT-INTEL-CPU-NEXT: "{{.*}}opencl-aot{{.*}}" {{.*}}--device=cpu -a -b 
{{.*}}-o [[SPIRVTRANSLATIONOUT]]_0.out [[SPIRVTRANSLATIONOUT]]_0.spv
-; AOT-INTEL-CPU-NEXT: sycl-bundle: image kind: o,{{.*}}
+; AOT-INTEL-CPU-NEXT: sycl-bundle: image kind: o, triple: spirv64, arch: 
graniterapids
 ; AOT-INTEL-CPU-NOT:  {{.+}}
 ;
 ; Check that the output file must be specified.

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to