Author: Joseph Huber
Date: 2026-01-29T08:52:10-06:00
New Revision: 3b97c1a1fcdec66e42d49ed1a4ee79dceb9f923a

URL: 
https://github.com/llvm/llvm-project/commit/3b97c1a1fcdec66e42d49ed1a4ee79dceb9f923a
DIFF: 
https://github.com/llvm/llvm-project/commit/3b97c1a1fcdec66e42d49ed1a4ee79dceb9f923a.diff

LOG: Revert "[Clang] Lift HIPSPV onto the new offload driver (#168043)"

This reverts commit 9ae6d8f565515a0199b18d6f156b1a41f328af1a.
This reverts commit d2e18bebe0b95d09ef8d0ac2ba0aa8d0e129be54.

Added: 
    

Modified: 
    clang/docs/ReleaseNotes.rst
    clang/lib/Basic/Targets.cpp
    clang/lib/Basic/Targets/SPIR.h
    clang/lib/Driver/Driver.cpp
    clang/lib/Driver/ToolChains/Clang.cpp
    clang/lib/Driver/ToolChains/HIPSPV.cpp
    clang/lib/Driver/ToolChains/HIPSPV.h
    clang/test/Driver/hipspv-link-static-library.hip
    clang/test/Driver/hipspv-pass-plugin.hip
    clang/test/Driver/hipspv-toolchain-rdc.hip
    clang/test/Driver/hipspv-toolchain.hip
    clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Removed: 
    
clang/test/Driver/Inputs/hipspv/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc
    clang/test/Driver/hipspv-toolchain-rdc-separate.hip


################################################################################
diff  --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 423ee9f66a6e3..81abc9adc3bf0 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -52,13 +52,6 @@ AST Dumping Potentially Breaking Changes
 Clang Frontend Potentially Breaking Changes
 -------------------------------------------
 
-- HIPSPV toolchain: `--offload-targets=spirv{32,64}` option is
-  deprecated and will be removed when the new offload driver becomes
-  default. The replacement for the option is
-  `--offload-targets=spirv{32,64}-unknown-chipstar` when using the new
-  offload driver (`--offload-new-driver`).
-
-
 Clang Python Bindings Potentially Breaking Changes
 --------------------------------------------------
 - Remove ``CompletionString.Availability``. No libclang interfaces returned 
instances of it.

diff  --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 919fb0703b7a4..263253918d965 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -680,13 +680,13 @@ std::unique_ptr<TargetInfo> AllocateTarget(const 
llvm::Triple &Triple,
     return std::make_unique<SPIRVTargetInfo>(Triple, Opts);
   }
   case llvm::Triple::spirv32: {
-    if ((os != llvm::Triple::UnknownOS && os != llvm::Triple::ChipStar) ||
+    if (os != llvm::Triple::UnknownOS ||
         Triple.getEnvironment() != llvm::Triple::UnknownEnvironment)
       return nullptr;
     return std::make_unique<SPIRV32TargetInfo>(Triple, Opts);
   }
   case llvm::Triple::spirv64: {
-    if ((os != llvm::Triple::UnknownOS && os != llvm::Triple::ChipStar) ||
+    if (os != llvm::Triple::UnknownOS ||
         Triple.getEnvironment() != llvm::Triple::UnknownEnvironment) {
       if (os == llvm::Triple::OSType::AMDHSA)
         return std::make_unique<SPIRV64AMDGCNTargetInfo>(Triple, Opts);

diff  --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h
index eef9521c7434a..ea992b0e01dbe 100644
--- a/clang/lib/Basic/Targets/SPIR.h
+++ b/clang/lib/Basic/Targets/SPIR.h
@@ -362,9 +362,8 @@ class LLVM_LIBRARY_VISIBILITY SPIRV32TargetInfo : public 
BaseSPIRVTargetInfo {
       : BaseSPIRVTargetInfo(Triple, Opts) {
     assert(Triple.getArch() == llvm::Triple::spirv32 &&
            "Invalid architecture for 32-bit SPIR-V.");
-    assert((getTriple().getOS() == llvm::Triple::UnknownOS ||
-            getTriple().getOS() == llvm::Triple::ChipStar) &&
-           "32-bit SPIR-V target must use unknown or chipstar OS");
+    assert(getTriple().getOS() == llvm::Triple::UnknownOS &&
+           "32-bit SPIR-V target must use unknown OS");
     assert(getTriple().getEnvironment() == llvm::Triple::UnknownEnvironment &&
            "32-bit SPIR-V target must use unknown environment type");
     PointerWidth = PointerAlign = 32;
@@ -386,9 +385,8 @@ class LLVM_LIBRARY_VISIBILITY SPIRV64TargetInfo : public 
BaseSPIRVTargetInfo {
       : BaseSPIRVTargetInfo(Triple, Opts) {
     assert(Triple.getArch() == llvm::Triple::spirv64 &&
            "Invalid architecture for 64-bit SPIR-V.");
-    assert((getTriple().getOS() == llvm::Triple::UnknownOS ||
-            getTriple().getOS() == llvm::Triple::ChipStar) &&
-           "64-bit SPIR-V target must use unknown or chipstar OS");
+    assert(getTriple().getOS() == llvm::Triple::UnknownOS &&
+           "64-bit SPIR-V target must use unknown OS");
     assert(getTriple().getEnvironment() == llvm::Triple::UnknownEnvironment &&
            "64-bit SPIR-V target must use unknown environment type");
     PointerWidth = PointerAlign = 64;

diff  --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 10932dde13e01..eb3f9cbea2845 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -4938,26 +4938,21 @@ Action *Driver::BuildOffloadingActions(Compilation &C,
     // Compiling HIP in device-only non-RDC mode requires linking each action
     // individually.
     for (Action *&A : DeviceActions) {
-      auto *OffloadTriple = A->getOffloadingToolChain()
-                                ? &A->getOffloadingToolChain()->getTriple()
-                                : nullptr;
-      bool IsHIPSPV =
-          OffloadTriple && OffloadTriple->isSPIRV() &&
-          (OffloadTriple->getOS() == llvm::Triple::OSType::AMDHSA ||
-           OffloadTriple->getOS() == llvm::Triple::OSType::ChipStar);
+      bool IsAMDGCNSPIRV = A->getOffloadingToolChain() &&
+                           A->getOffloadingToolChain()->getTriple().getOS() ==
+                               llvm::Triple::OSType::AMDHSA &&
+                           A->getOffloadingToolChain()->getTriple().isSPIRV();
       bool UseSPIRVBackend = Args.hasFlag(options::OPT_use_spirv_backend,
                                           options::OPT_no_use_spirv_backend,
                                           /*Default=*/false);
 
-      // Special handling for the HIP SPIR-V toolchains in device-only.
+      // Special handling for the HIP SPIR-V toolchain in device-only.
       // The translator path has a linking step, whereas the SPIR-V backend 
path
       // does not to avoid any external dependency such as spirv-link. The
       // linking step is skipped for the SPIR-V backend path.
-      bool IsAMDGCNSPIRVWithBackend =
-          IsHIPSPV && OffloadTriple->getOS() == llvm::Triple::OSType::AMDHSA &&
-          UseSPIRVBackend;
+      bool IsAMDGCNSPIRVWithBackend = IsAMDGCNSPIRV && UseSPIRVBackend;
 
-      if ((A->getType() != types::TY_Object && !IsHIPSPV &&
+      if ((A->getType() != types::TY_Object && !IsAMDGCNSPIRV &&
            A->getType() != types::TY_LTO_BC) ||
           HIPRelocatableObj || !HIPNoRDC || !offloadDeviceOnly() ||
           (IsAMDGCNSPIRVWithBackend && offloadDeviceOnly()))
@@ -6966,9 +6961,6 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
     case llvm::Triple::ShaderModel:
       TC = std::make_unique<toolchains::HLSLToolChain>(*this, Target, Args);
       break;
-    case llvm::Triple::ChipStar:
-      TC = std::make_unique<toolchains::HIPSPVToolChain>(*this, Target, Args);
-      break;
     default:
       // Of these targets, Hexagon is the only one that might have
       // an OS of Linux, in which case it got handled above already.

diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 37ef3b196c743..af6da80cb5ceb 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -9156,7 +9156,6 @@ void LinkerWrapper::ConstructJob(Compilation &C, const 
JobAction &JA,
       OPT_v,
       OPT_cuda_path_EQ,
       OPT_rocm_path_EQ,
-      OPT_hip_path_EQ,
       OPT_O_Group,
       OPT_g_Group,
       OPT_g_flags_Group,

diff  --git a/clang/lib/Driver/ToolChains/HIPSPV.cpp 
b/clang/lib/Driver/ToolChains/HIPSPV.cpp
index ec140aa937e58..f797573a5725d 100644
--- a/clang/lib/Driver/ToolChains/HIPSPV.cpp
+++ b/clang/lib/Driver/ToolChains/HIPSPV.cpp
@@ -90,27 +90,9 @@ void HIPSPV::Linker::constructLinkAndEmitSpirvCommand(
   }
 
   // Emit SPIR-V binary.
-  llvm::opt::ArgStringList TrArgs;
-  auto T = getToolChain().getTriple();
-  bool HasNoSubArch = T.getSubArch() == llvm::Triple::NoSubArch;
-  if (T.getOS() == llvm::Triple::ChipStar) {
-    // chipStar needs 1.2 for supporting warp-level primitivies via sub-group
-    // extensions.  Strictly put we'd need 1.3 for the standard non-extension
-    // shuffle operations, but it's not supported by any backend driver of the
-    // chipStar.
-    if (HasNoSubArch)
-      TrArgs.push_back("--spirv-max-version=1.2");
-    TrArgs.push_back("--spirv-ext=-all"
-                     // Needed for experimental indirect call support.
-                     ",+SPV_INTEL_function_pointers"
-                     // Needed for shuffles below SPIR-V 1.3
-                     ",+SPV_INTEL_subgroups");
-  } else {
-    if (HasNoSubArch)
-      TrArgs.push_back("--spirv-max-version=1.1");
-    TrArgs.push_back("--spirv-ext=+all");
-  }
 
+  llvm::opt::ArgStringList TrArgs{"--spirv-max-version=1.1",
+                                  "--spirv-ext=+all"};
   InputInfo TrInput = InputInfo(types::TY_LLVM_BC, TempFile, "");
   SPIRV::constructTranslateCommand(C, *this, JA, Output, TrInput, TrArgs);
 }
@@ -134,16 +116,7 @@ void HIPSPV::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
 HIPSPVToolChain::HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple,
                                  const ToolChain &HostTC, const ArgList &Args)
-    : ToolChain(D, Triple, Args), HostTC(&HostTC) {
-  // Lookup binaries into the driver directory, this is used to
-  // discover the clang-offload-bundler executable.
-  getProgramPaths().push_back(getDriver().Dir);
-}
-
-// Non-offloading toolchain. Primaly used by clang-offload-linker.
-HIPSPVToolChain::HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple,
-                                 const ArgList &Args)
-    : ToolChain(D, Triple, Args), HostTC(nullptr) {
+    : ToolChain(D, Triple, Args), HostTC(HostTC) {
   // Lookup binaries into the driver directory, this is used to
   // discover the clang-offload-bundler executable.
   getProgramPaths().push_back(getDriver().Dir);
@@ -152,14 +125,7 @@ HIPSPVToolChain::HIPSPVToolChain(const Driver &D, const 
llvm::Triple &Triple,
 void HIPSPVToolChain::addClangTargetOptions(
     const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
     Action::OffloadKind DeviceOffloadingKind) const {
-
-  if (!HostTC) {
-    assert(DeviceOffloadingKind == Action::OFK_None &&
-           "Need host toolchain for offloading!");
-    return;
-  }
-
-  HostTC->addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind);
+  HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind);
 
   assert(DeviceOffloadingKind == Action::OFK_HIP &&
          "Only HIP offloading kinds are supported for GPUs.");
@@ -190,37 +156,27 @@ Tool *HIPSPVToolChain::buildLinker() const {
 }
 
 void HIPSPVToolChain::addClangWarningOptions(ArgStringList &CC1Args) const {
-  if (HostTC)
-    HostTC->addClangWarningOptions(CC1Args);
-  ToolChain::addClangWarningOptions(CC1Args);
+  HostTC.addClangWarningOptions(CC1Args);
 }
 
 ToolChain::CXXStdlibType
 HIPSPVToolChain::GetCXXStdlibType(const ArgList &Args) const {
-  if (HostTC)
-    return HostTC->GetCXXStdlibType(Args);
-  return ToolChain::GetCXXStdlibType(Args);
+  return HostTC.GetCXXStdlibType(Args);
 }
 
 void HIPSPVToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
                                                 ArgStringList &CC1Args) const {
-  if (HostTC)
-    HostTC->AddClangSystemIncludeArgs(DriverArgs, CC1Args);
-  ToolChain::AddClangSystemIncludeArgs(DriverArgs, CC1Args);
+  HostTC.AddClangSystemIncludeArgs(DriverArgs, CC1Args);
 }
 
 void HIPSPVToolChain::AddClangCXXStdlibIncludeArgs(
     const ArgList &Args, ArgStringList &CC1Args) const {
-  if (HostTC)
-    HostTC->AddClangCXXStdlibIncludeArgs(Args, CC1Args);
-  ToolChain::AddClangCXXStdlibIncludeArgs(Args, CC1Args);
+  HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args);
 }
 
 void HIPSPVToolChain::AddIAMCUIncludeArgs(const ArgList &Args,
                                           ArgStringList &CC1Args) const {
-  if (HostTC)
-    HostTC->AddIAMCUIncludeArgs(Args, CC1Args);
-  ToolChain::AddIAMCUIncludeArgs(Args, CC1Args);
+  HostTC.AddIAMCUIncludeArgs(Args, CC1Args);
 }
 
 void HIPSPVToolChain::AddHIPIncludeArgs(const ArgList &DriverArgs,
@@ -314,16 +270,12 @@ SanitizerMask HIPSPVToolChain::getSupportedSanitizers() 
const {
   // This behavior is necessary because the host and device toolchains
   // invocations often share the command line, so the device toolchain must
   // tolerate flags meant only for the host toolchain.
-  if (HostTC)
-    return HostTC->getSupportedSanitizers();
-  return ToolChain::getSupportedSanitizers();
+  return HostTC.getSupportedSanitizers();
 }
 
 VersionTuple HIPSPVToolChain::computeMSVCVersion(const Driver *D,
                                                  const ArgList &Args) const {
-  if (HostTC)
-    return HostTC->computeMSVCVersion(D, Args);
-  return ToolChain::computeMSVCVersion(D, Args);
+  return HostTC.computeMSVCVersion(D, Args);
 }
 
 void HIPSPVToolChain::adjustDebugInfoKind(

diff  --git a/clang/lib/Driver/ToolChains/HIPSPV.h 
b/clang/lib/Driver/ToolChains/HIPSPV.h
index 068040ee4f491..caf6924151446 100644
--- a/clang/lib/Driver/ToolChains/HIPSPV.h
+++ b/clang/lib/Driver/ToolChains/HIPSPV.h
@@ -47,12 +47,9 @@ class LLVM_LIBRARY_VISIBILITY HIPSPVToolChain final : public 
ToolChain {
 public:
   HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple,
                   const ToolChain &HostTC, const llvm::opt::ArgList &Args);
-  HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple,
-                  const llvm::opt::ArgList &Args);
 
   const llvm::Triple *getAuxTriple() const override {
-    assert(HostTC);
-    return &HostTC->getTriple();
+    return &HostTC.getTriple();
   }
 
   void
@@ -93,7 +90,7 @@ class LLVM_LIBRARY_VISIBILITY HIPSPVToolChain final : public 
ToolChain {
   bool isPICDefaultForced() const override { return false; }
   bool SupportsProfiling() const override { return false; }
 
-  const ToolChain *HostTC = nullptr;
+  const ToolChain &HostTC;
 
 protected:
   Tool *buildLinker() const override;

diff  --git 
a/clang/test/Driver/Inputs/hipspv/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc
 
b/clang/test/Driver/Inputs/hipspv/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc
deleted file mode 100644
index e69de29bb2d1d..0000000000000

diff  --git a/clang/test/Driver/hipspv-link-static-library.hip 
b/clang/test/Driver/hipspv-link-static-library.hip
index 5b9dcef717213..cf16236738c12 100644
--- a/clang/test/Driver/hipspv-link-static-library.hip
+++ b/clang/test/Driver/hipspv-link-static-library.hip
@@ -4,45 +4,25 @@
 
 // Create a dummy archive to test SDL linking
 // RUN: rm -rf %t && mkdir %t
-// RUN: touch %t/dummy.bc
+// RUN: touch %t/dummy.bc  
 // RUN: llvm-ar cr %t/libSDL.a %t/dummy.bc
 
 // Test that -l options are passed to llvm-link for --offload=spirv64
 // RUN: %clang -### --target=x86_64-linux-gnu --offload=spirv64 \
 // RUN:   --hip-path=%S/Inputs/hipspv -nohipwrapperinc %s \
-// RUN:   --no-offload-new-driver -L%t -lSDL \
-// RUN: 2>&1 | FileCheck -check-prefixes=ALL,SDL %s
+// RUN:   -L%t -lSDL \
+// RUN: 2>&1 | FileCheck -check-prefix=SDL-LINK %s
 
-// Test that .a files are properly unbundled and passed to llvm-link
+// Test that .a files are properly unbundled and passed to llvm-link  
 // RUN: %clang -### --target=x86_64-linux-gnu --offload=spirv64 \
 // RUN:   --hip-path=%S/Inputs/hipspv -nohipwrapperinc %s \
-// RUN:   --no-offload-new-driver %t/libSDL.a \
-// RUN: 2>&1 | FileCheck -check-prefixes=ALL,SDL %s
-
-// RUN: %clang --offload-new-driver -fgpu-rdc \
-// RUN:   --target=x86_64-linux-gnu \
-// RUN:   --offload=spirv64-unknown-chipstar \
-// RUN:   -nogpuinc -nogpulib %s -c -o %t/tu0.o
-// RUN: %clang --offload-new-driver -fgpu-rdc \
-// RUN:   --offload=spirv64-unknown-chipstar \
-// RUN:   -nogpuinc -nogpulib %s -c -o %t/tu1.o
-// RUN: llvm-ar cr %t/libSDL2.a %t/tu1.o
-
-// RUN: %clang --offload-new-driver -fgpu-rdc \
-// RUN:   --target=x86_64-linux-gnu \
-// RUN:   -Xoffload-compiler-spirv64-unknown-chipstar \
-// RUN:   --hip-path=%S/Inputs/hipspv -no-hip-rt %t/tu0.o %t/libSDL2.a \
-// A hacky trick to print clang commands invoked by clang-linker-wrapper
-// RUN:   -v -Xlinker --emit-fatbin-only -Xoffload-compiler '-###' \
-// RUN: 2>&1 | FileCheck -check-prefixes=ALL,SDL-NEW %s
+// RUN:   %t/libSDL.a \
+// RUN: 2>&1 | FileCheck -check-prefix=SDL-ARCHIVE %s
 
 // Verify that the input files are added before the SDL files in llvm-link 
command
 // This tests the ordering fix to match HIPAMD behavior
-// SDL: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" 
"-input={{.*}}libSDL.a" "-targets=hip-spirv64-unknown-unknown-unknown-generic" 
"-output=[[SDL_A:.*\.a]]" "-allow-missing-bundles"
-// SDL: "{{.*}}llvm-link" "-o" "{{.*}}.bc" "{{.*}}.bc" "[[SDL_A]]"
-// SDL-NEW: "{{.*}}clang-linker-wrapper"
-// SDL-NEW: "{{.*}}llvm-link" "-o" "{{.*}}.bc" "{{.*}}.o" "{{.*}}.o"
+// SDL-LINK: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" 
"-input={{.*}}libSDL.a" "-targets=hip-spirv64-unknown-unknown-unknown-generic" 
"-output=[[SDL_A:.*\.a]]" "-allow-missing-bundles"
+// SDL-LINK: "{{.*}}llvm-link" "-o" "{{.*}}.bc" "{{.*}}.bc" "[[SDL_A]]"
 
-// ALL: "{{.*}}opt"
-// ALL-SAME: "-load-pass-plugin" {{".*/hipspv/lib/libLLVMHipSpvPasses.so"}}
-// ALL-SAME: "-passes=hip-post-link-passes"
+// SDL-ARCHIVE: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" 
"-input={{.*}}libSDL.a" "-targets=hip-spirv64-unknown-unknown-unknown-generic" 
"-output=[[SDL_A:.*\.a]]" "-allow-missing-bundles"  
+// SDL-ARCHIVE: "{{.*}}llvm-link" "-o" "{{.*}}.bc" "{{.*}}.bc" "[[SDL_A]]"

diff  --git a/clang/test/Driver/hipspv-pass-plugin.hip 
b/clang/test/Driver/hipspv-pass-plugin.hip
index 3b1f06b307405..fc3c64b057352 100644
--- a/clang/test/Driver/hipspv-pass-plugin.hip
+++ b/clang/test/Driver/hipspv-pass-plugin.hip
@@ -1,45 +1,20 @@
 // UNSUPPORTED: system-windows
 
 // RUN: %clang -### -target x86_64-linux-gnu --offload=spirv64 \
-// RUN: --no-offload-new-driver --hip-path=%S/Inputs/hipspv -nogpuinc %s \
-// RUN: 2>&1 | FileCheck --check-prefixes=ALL,FROM-HIP-PATH %s
+// RUN:  --hip-path=%S/Inputs/hipspv -nogpuinc %s \
+// RUN: 2>&1 | FileCheck --check-prefixes=FROM-HIP-PATH %s
 
 // RUN: %clang -### -target x86_64-linux-gnu --offload=spirv64 \
-// RUN: --no-offload-new-driver -nogpuinc -nogpulib 
--hipspv-pass-plugin=%S/Inputs/pass-plugin.so %s \
-// RUN: 2>&1 | FileCheck --check-prefixes=ALL,FROM-OPTION %s
+// RUN: -nogpuinc -nogpulib --hipspv-pass-plugin=%S/Inputs/pass-plugin.so %s \
+// RUN: 2>&1 | FileCheck --check-prefixes=FROM-OPTION %s
 
 // RUN: not %clang -### --target=x86_64-linux-gnu --offload=spirv64 \
-// RUN: --no-offload-new-driver -nogpuinc -nogpulib 
--hipspv-pass-plugin=foo.so %s \
-// RUN: 2>&1 | FileCheck --check-prefixes=ALL,FROM-OPTION-INVALID %s
+// RUN: -nogpuinc -nogpulib --hipspv-pass-plugin=foo.so %s \
+// RUN: 2>&1 | FileCheck --check-prefixes=FROM-OPTION-INVALID %s
 
 // RUN: %clang -### -target x86_64-linux-gnu --offload=spirv64 \
-// RUN: --no-offload-new-driver -nogpuinc -nogpulib %s \
-// RUN: 2>&1 | FileCheck --check-prefixes=ALL,NO-PLUGIN %s
-
-// RUN: %clang --offload-new-driver -nogpuinc -nogpulib \
-// RUN:   --offload=spirv64-unknown-chipstar \
-// RUN:   --hip-path=%S/Inputs/hipspv -Xoffload-compiler \
-// RUN:   '-###' -c %s -o /dev/null 2>&1 \
-// RUN: | FileCheck %s --check-prefixes=ALL,FROM-HIP-PATH
-
-// RUN: %clang --offload-new-driver -nogpuinc -nogpulib \
-// RUN:   --offload=spirv64-unknown-chipstar \
-// RUN:   -Xoffload-compiler-spirv64-unknown-chipstar \
-// RUN:   --hipspv-pass-plugin=%S/Inputs/pass-plugin.so -Xoffload-compiler \
-// RUN:   '-###' -c %s -o /dev/null 2>&1 \
-// RUN: | FileCheck %s --check-prefixes=ALL,FROM-OPTION
-
-// RUN: not %clang --offload-new-driver -nogpuinc -nogpulib \
-// RUN:   --offload=spirv64-unknown-chipstar \
-// RUN:   -Xoffload-compiler-spirv64-unknown-chipstar \
-// RUN:   --hipspv-pass-plugin=foo.so -Xoffload-compiler \
-// RUN:   '-###' -c %s -o /dev/null 2>&1 \
-// RUN: | FileCheck %s --check-prefixes=ALL,FROM-OPTION-INVALID
-
-// RUN: %clang --offload-new-driver -nogpuinc -nogpulib \
-// RUN:   --offload=spirv64-unknown-chipstar -Xoffload-compiler \
-// RUN:   '-###' -c %s -o /dev/null 2>&1 \
-// RUN: | FileCheck %s --check-prefixes=ALL,NO-PLUGIN
+// RUN: -nogpuinc -nogpulib %s \
+// RUN: 2>&1 | FileCheck --check-prefixes=NO-PLUGIN %s
 
 // FROM-HIP-PATH: {{".*opt"}} {{".*.bc"}} "-load-pass-plugin"
 // FROM-HIP-PATH-SAME: {{".*/Inputs/hipspv/lib/libLLVMHipSpvPasses.so"}}
@@ -48,4 +23,3 @@
 // FROM-OPTION-INVALID: error: no such file or directory: 'foo.so'
 // NO-PLUGIN-NOT: {{".*opt"}} {{".*.bc"}} "-load-pass-plugin"
 // NO-PLUGIN-NOT: {{".*/Inputs/hipspv/lib/libLLVMHipSpvPasses.so"}}
-// ALL: {{".*llvm-spirv[^ ]*"}}

diff  --git a/clang/test/Driver/hipspv-toolchain-rdc-separate.hip 
b/clang/test/Driver/hipspv-toolchain-rdc-separate.hip
deleted file mode 100644
index 9d8e98856f7a3..0000000000000
--- a/clang/test/Driver/hipspv-toolchain-rdc-separate.hip
+++ /dev/null
@@ -1,66 +0,0 @@
-// UNSUPPORTED: system-windows
-
-// RUN: %clang -### -x hip -target x86_64-linux-gnu \
-// RUN:   --offload=spirv64-unknown-chipstar --offload-new-driver -fgpu-rdc -c 
\
-// RUN:   --hip-path=%S/Inputs/hipspv -nohipwrapperinc \
-// RUN:   %S/Inputs/hip_multiple_inputs/a.cu \
-// RUN:   %S/Inputs/hip_multiple_inputs/b.hip \
-// RUN: 2>&1 | FileCheck  \
-// RUN:   -DHIP_PATH=%S/Inputs/hipspv %s
-
-// CHECK: [[CLANG:".*clang[^ ]*"]] "-cc1" "-triple" "spirv64-unknown-chipstar"
-// CHECK-SAME: "-aux-triple" "[[HOST_TRIPLE:[^ ]*]]"
-// CHECK-SAME: "-emit-llvm-bc"
-// CHECK-SAME: "-fcuda-is-device" "-fcuda-allow-variadic-functions"
-// CHECK-SAME: "-fvisibility=hidden" "-fapply-global-visibility-to-externs"
-// CHECK-SAME: "-mlink-builtin-bitcode" 
"[[HIP_PATH]]/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc"
-// CHECK-SAME: "-fgpu-rdc"
-// CHECK-SAME: "-o" "[[A_DEV_BC:.*bc]]" "-x" "hip"
-// CHECK-SAME: "[[A_SRC:.*a.cu]]"
-
-// CHECK: "{{.*llvm-offload-binary[^ ]*}}" "-o" "[[A_BIN_PACKAGE:.*.out]]"
-// CHECK-SAME: 
"--image=file=[[A_DEV_BC]],triple=spirv64-unknown-chipstar,arch=generic,kind=hip"
-
-// CHECK: [[CLANG]] "-cc1" "-triple" "[[HOST_TRIPLE]]"
-// CHECK-SAME: "-aux-triple" "spirv64-unknown-chipstar"
-// CHECK-SAME: "-emit-obj"
-// CHECK-SAME: "-fgpu-rdc"
-// CHECK-SAME: "-fembed-offload-object=[[A_BIN_PACKAGE]]"
-// CHECK-SAME: "-o" "[[A_HOST_OBJ:.*o]]" "-x" "hip" "[[A_SRC]]"
-
-// CHECK: [[CLANG]] "-cc1" "-triple" "spirv64-unknown-chipstar"
-// CHECK-SAME: "-aux-triple" "[[HOST_TRIPLE]]"
-// CHECK-SAME: "-emit-llvm-bc"
-// CHECK-SAME: "-fcuda-is-device" "-fcuda-allow-variadic-functions"
-// CHECK-SAME: "-fvisibility=hidden" "-fapply-global-visibility-to-externs"
-// CHECK-SAME: "-mlink-builtin-bitcode" 
"[[HIP_PATH]]/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc"
-// CHECK-SAME: "-fgpu-rdc"
-// CHECK-SAME: "-o" "[[B_DEV_BC:.*bc]]" "-x" "hip"
-// CHECK-SAME: "[[B_SRC:.*b.hip]]"
-
-// CHECK: "{{.*llvm-offload-binary[^ ]*}}" "-o" "[[B_BIN_PACKAGE:.*.out]]"
-// CHECK-SAME: 
"--image=file=[[B_DEV_BC]],triple=spirv64-unknown-chipstar,arch=generic,kind=hip"
-
-// CHECK: [[CLANG]] "-cc1" "-triple" "[[HOST_TRIPLE]]"
-// CHECK-SAME: "-aux-triple" "spirv64-unknown-chipstar"
-// CHECK-SAME: "-emit-obj"
-// CHECK-SAME: "-fgpu-rdc"
-// CHECK-SAME: "-fembed-offload-object=[[B_BIN_PACKAGE]]"
-// CHECK-SAME: "-o" "[[B_HOST_OBJ:.*o]]" "-x" "hip"
-// CHECK-SAME: "[[B_SRC]]"
-
-// RUN: rm -rf %t && mkdir %t
-// RUN: touch %t/a.o %t/b.o
-// RUN: %clang -### -target x86_64-linux-gnu --offload-new-driver -fgpu-rdc \
-// RUN:   -Xoffload-compiler-spirv64-unknown-chipstar \
-// RUN:   --hip-path=%S/Inputs/hipspv \
-// RUN:   -no-hip-rt %t/a.o %t/b.o \
-// RUN: 2>&1 | FileCheck -check-prefixes=LINK \
-// RUN:   -DHIP_PATH=%S/Inputs/hipspv %s
-
-// LINK: "{{.*clang-linker-wrapper[^ ]*}}"
-// LINK-SAME: "--host-triple=x86_64-unknown-linux-gnu"
-// LINK-SAME: 
"--device-compiler=spirv64-unknown-chipstar=--hip-path=[[HIP_PATH]]"
-// LINK-SAME: "-o" "a.out"
-// LINK-SAME: "{{.*a[.]o}}" "{{.*b[.]o}}"
-// LINK-NOT: -lamdhip64

diff  --git a/clang/test/Driver/hipspv-toolchain-rdc.hip 
b/clang/test/Driver/hipspv-toolchain-rdc.hip
index 24e39ba0d16cf..05d9079f8dc18 100644
--- a/clang/test/Driver/hipspv-toolchain-rdc.hip
+++ b/clang/test/Driver/hipspv-toolchain-rdc.hip
@@ -4,113 +4,57 @@
 // RUN:   --no-offload-new-driver -fgpu-rdc --hip-path=%S/Inputs/hipspv 
-nohipwrapperinc \
 // RUN:   %S/Inputs/hip_multiple_inputs/a.cu \
 // RUN:   %S/Inputs/hip_multiple_inputs/b.hip \
-// RUN: 2>&1 | FileCheck --check-prefix=OLD %s
-
-// RUN: %clang -### -x hip -target x86_64-linux-gnu \
-// RUN:   --offload=spirv64-unknown-chipstar --offload-new-driver -fgpu-rdc \
-// RUN:   --hip-path=%S/Inputs/hipspv -nohipwrapperinc -no-hip-rt \
-// RUN:   %S/Inputs/hip_multiple_inputs/a.cu \
-// RUN:   %S/Inputs/hip_multiple_inputs/b.hip \
-// RUN: 2>&1 | FileCheck --check-prefix=NEW \
-// RUN:   -DOFFLOAD_TRIPLE=spirv64-unknown-chipstar 
-DHIP_PATH=%S/Inputs/hipspv %s
+// RUN: 2>&1 | FileCheck %s
 
 // Emit objects for host side path
-// OLD: [[CLANG:".*clang.*"]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
-// OLD-SAME: "-aux-triple" "spirv64"
-// OLD-SAME: "-emit-obj"
-// OLD-SAME: "-fgpu-rdc"
-// OLD-SAME: {{.*}} "-o" [[A_OBJ_HOST:".*o"]] "-x" "hip"
-// OLD-SAME: {{.*}} [[A_SRC:".*a.cu"]]
-
-// OLD: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
-// OLD-SAME: "-aux-triple" "spirv64"
-// OLD-SAME: "-emit-obj"
-// OLD-SAME: "-fgpu-rdc"
-// OLD-SAME: {{.*}} "-o" [[B_OBJ_HOST:".*o"]] "-x" "hip"
-// OLD-SAME: {{.*}} [[B_SRC:".*b.hip"]]
+// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
+// CHECK-SAME: "-aux-triple" "spirv64"
+// CHECK-SAME: "-emit-obj"
+// CHECK-SAME: "-fgpu-rdc"
+// CHECK-SAME: {{.*}} "-o" [[A_OBJ_HOST:".*o"]] "-x" "hip"
+// CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]]
+
+// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
+// CHECK-SAME: "-aux-triple" "spirv64"
+// CHECK-SAME: "-emit-obj"
+// CHECK-SAME: "-fgpu-rdc"
+// CHECK-SAME: {{.*}} "-o" [[B_OBJ_HOST:".*o"]] "-x" "hip"
+// CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]]
 
 // Emit code (LLVM BC) for device side path.
-// OLD: [[CLANG]] "-cc1" "-triple" "spirv64"
-// OLD-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
-// OLD-SAME: "-emit-llvm-bc"
-// OLD-SAME: "-fcuda-is-device" "-fcuda-allow-variadic-functions"
-// OLD-SAME: "-fvisibility=hidden" "-fapply-global-visibility-to-externs"
-// OLD-SAME: "-fgpu-rdc"
-// OLD-SAME: {{.*}} "-o" [[A_BC1:".*bc"]] "-x" "hip"
-// OLD-SAME: {{.*}} [[A_SRC]]
-
-// OLD: [[CLANG]] "-cc1" "-triple" "spirv64"
-// OLD-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
-// OLD-SAME: "-emit-llvm-bc"
-// OLD-SAME: "-fcuda-is-device" "-fcuda-allow-variadic-functions"
-// OLD-SAME: "-fvisibility=hidden" "-fapply-global-visibility-to-externs"
-// OLD-SAME: "-fgpu-rdc"
-// OLD-SAME: {{.*}} "-o" [[B_BC1:".*bc"]] "-x" "hip"
-// OLD-SAME: {{.*}} [[B_SRC]]
+// CHECK: [[CLANG]] "-cc1" "-triple" "spirv64"
+// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
+// CHECK-SAME: "-emit-llvm-bc"
+// CHECK-SAME: "-fcuda-is-device" "-fcuda-allow-variadic-functions"
+// CHECK-SAME: "-fvisibility=hidden" "-fapply-global-visibility-to-externs"
+// CHECK-SAME: "-fgpu-rdc"
+// CHECK-SAME: {{.*}} "-o" [[A_BC1:".*bc"]] "-x" "hip"
+// CHECK-SAME: {{.*}} [[A_SRC]]
+
+// CHECK: [[CLANG]] "-cc1" "-triple" "spirv64"
+// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
+// CHECK-SAME: "-emit-llvm-bc"
+// CHECK-SAME: "-fcuda-is-device" "-fcuda-allow-variadic-functions"
+// CHECK-SAME: "-fvisibility=hidden" "-fapply-global-visibility-to-externs"
+// CHECK-SAME: "-fgpu-rdc"
+// CHECK-SAME: {{.*}} "-o" [[B_BC1:".*bc"]] "-x" "hip"
+// CHECK-SAME: {{.*}} [[B_SRC]]
 
 // Link device code, lower it with HIPSPV passes and emit SPIR-V binary.
-// OLD: {{".*llvm-link.*"}} "-o" [[AB_LINK:".*bc"]] [[A_BC1]] [[B_BC1]]
-// OLD: {{".*opt.*"}} [[AB_LINK]] "-load-pass-plugin"
-// OLD-SAME: "{{.*}}/Inputs/hipspv/lib/libLLVMHipSpvPasses.so"
-// OLD-SAME: "-o" [[AB_LOWER:".*bc"]]
-// OLD: {{".*llvm-spirv"}} "--spirv-max-version=1.1" "--spirv-ext=+all"
-// OLD-SAME: [[AB_LOWER]] "-o" "[[AB_SPIRV:.*out]]"
+// CHECK: {{".*llvm-link.*"}} "-o" [[AB_LINK:".*bc"]] [[A_BC1]] [[B_BC1]]
+// CHECK: {{".*opt.*"}} [[AB_LINK]] "-load-pass-plugin"
+// CHECK-SAME: "{{.*}}/Inputs/hipspv/lib/libLLVMHipSpvPasses.so"
+// CHECK-SAME: "-o" [[AB_LOWER:".*bc"]]
+// CHECK: {{".*llvm-spirv"}} "--spirv-max-version=1.1" "--spirv-ext=+all"
+// CHECK-SAME: [[AB_LOWER]] "-o" "[[AB_SPIRV:.*out]]"
 
 // Construct fat binary object.
-// OLD: [[BUNDLER:".*clang-offload-bundler"]] "-type=o" "-bundle-align=4096"
-// OLD-SAME: "-targets={{.*}},hip-spirv64----generic"
-// OLD-SAME: "-input=/dev/null" "-input=[[AB_SPIRV]]"
-// OLD-SAME: "-output=[[AB_FATBIN:.*hipfb]]"
-// OLD: {{".*clang.*"}} "-o" [[OBJBUNDLE:".*o"]] "{{.*}}.mcin"
+// CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o" "-bundle-align=4096"
+// CHECK-SAME: "-targets={{.*}},hip-spirv64----generic"
+// CHECK-SAME: "-input=/dev/null" "-input=[[AB_SPIRV]]"
+// CHECK-SAME: "-output=[[AB_FATBIN:.*hipfb]]"
+// CHECK: {{".*clang.*"}} "-o" [[OBJBUNDLE:".*o"]] "{{.*}}.mcin"
 
 // Output the executable
-// OLD: {{".*ld.*"}} {{.*}}"-o" "a.out" {{.*}} [[A_OBJ_HOST]] [[B_OBJ_HOST]]
-// OLD-SAME: [[OBJBUNDLE]]
-
-// NEW: [[CLANG:".*clang[^ ]*"]] "-cc1" "-triple" "[[OFFLOAD_TRIPLE]]"
-// NEW-SAME: "-aux-triple" "[[HOST_TRIPLE:[^ ]*]]"
-// NEW-SAME: "-emit-llvm-bc"
-// NEW-SAME: "-fcuda-is-device" "-fcuda-allow-variadic-functions"
-// NEW-SAME: "-fvisibility=hidden" "-fapply-global-visibility-to-externs"
-// NEW-SAME: "-mlink-builtin-bitcode" 
"[[HIP_PATH]]/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc"
-// NEW-SAME: "-fgpu-rdc"
-// NEW-SAME: "-o" "[[A_DEV_BC:.*bc]]" "-x" "hip"
-// NEW-SAME: "[[A_SRC:.*a.cu]]"
-
-// NEW: "{{.*llvm-offload-binary[^ ]*}}" "-o" "[[A_BIN_PACKAGE:.*.out]]"
-// NEW-SAME: 
"--image=file=[[A_DEV_BC]],triple=[[OFFLOAD_TRIPLE]],arch=generic,kind=hip"
-
-// NEW: [[CLANG]] "-cc1" "-triple" "[[HOST_TRIPLE]]"
-// NEW-SAME: "-aux-triple" "[[OFFLOAD_TRIPLE]]"
-// NEW-SAME: "-emit-obj"
-// NEW-SAME: "-fgpu-rdc"
-// NEW-SAME: "-fembed-offload-object=[[A_BIN_PACKAGE]]"
-// NEW-SAME: "-o" "[[A_HOST_OBJ:.*o]]" "-x" "hip" "[[A_SRC]]"
-
-// NEW: [[CLANG]] "-cc1" "-triple" "[[OFFLOAD_TRIPLE]]"
-// NEW-SAME: "-aux-triple" "[[HOST_TRIPLE]]"
-// NEW-SAME: "-emit-llvm-bc"
-// NEW-SAME: "-fcuda-is-device" "-fcuda-allow-variadic-functions"
-// NEW-SAME: "-fvisibility=hidden" "-fapply-global-visibility-to-externs"
-// NEW-SAME: "-mlink-builtin-bitcode" 
"[[HIP_PATH]]/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc"
-// NEW-SAME: "-fgpu-rdc"
-// NEW-SAME: "-o" "[[B_DEV_BC:.*bc]]" "-x" "hip"
-// NEW-SAME: "[[B_SRC:.*b.hip]]"
-
-// NEW: "{{.*llvm-offload-binary[^ ]*}}" "-o" "[[B_BIN_PACKAGE:.*.out]]"
-// NEW-SAME: 
"--image=file=[[B_DEV_BC]],triple=[[OFFLOAD_TRIPLE]],arch=generic,kind=hip"
-
-// NEW: [[CLANG]] "-cc1" "-triple" "[[HOST_TRIPLE]]"
-// NEW-SAME: "-aux-triple" "[[OFFLOAD_TRIPLE]]"
-// NEW-SAME: "-emit-obj"
-// NEW-SAME: "-fgpu-rdc"
-// NEW-SAME: "-fembed-offload-object=[[B_BIN_PACKAGE]]"
-// NEW-SAME: "-o" "[[B_HOST_OBJ:.*o]]" "-x" "hip"
-// NEW-SAME: "[[B_SRC]]"
-
-// NEW: "{{.*clang-linker-wrapper[^ ]*}}"
-// NEW-SAME: "--device-compiler=[[OFFLOAD_TRIPLE]]=--hip-path=[[HIP_PATH]]"
-// NEW-SAME: "--host-triple=[[HOST_TRIPLE]]"
-// NEW-SAME: "-o" "a.out"
-// NEW-SAME: "[[A_HOST_OBJ]]" "[[B_HOST_OBJ]]"
-// NEW-NOT: -lamdhip64
+// CHECK: {{".*ld.*"}} {{.*}}"-o" "a.out" {{.*}} [[A_OBJ_HOST]] [[B_OBJ_HOST]]
+// CHECK-SAME: [[OBJBUNDLE]]

diff  --git a/clang/test/Driver/hipspv-toolchain.hip 
b/clang/test/Driver/hipspv-toolchain.hip
index 3749a41a7181c..85c4333e877f2 100644
--- a/clang/test/Driver/hipspv-toolchain.hip
+++ b/clang/test/Driver/hipspv-toolchain.hip
@@ -2,92 +2,37 @@
 
 // RUN: %clang -### -target x86_64-linux-gnu --offload=spirv64 \
 // RUN:   --no-offload-new-driver --hip-path=%S/Inputs/hipspv -nohipwrapperinc 
%s \
-// RUN: 2>&1 | FileCheck --check-prefixes=CHECK,OLD \
-// RUN:   -DTRIPLE=spirv64 %s
+// RUN: 2>&1 | FileCheck %s
 
-// RUN: %clang -### -target x86_64-linux-gnu \
-// RUN:   --offload=spirv64-unknown-chipstar \
-// RUN:   --offload-new-driver --hip-path=%S/Inputs/hipspv -nohipwrapperinc %s 
\
-// RUN: 2>&1 | FileCheck --check-prefixes=CHECK,NEW \
-// RUN:   -DTRIPLE=spirv64-unknown-chipstar -DHIP_PATH=%S/Inputs/hipspv %s
-
-// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "[[TRIPLE]]"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "spirv64"
 // CHECK-SAME: "-aux-triple" "{{.*}}" "-emit-llvm-bc"
 // CHECK-SAME: "-fcuda-is-device"
 // CHECK-SAME: "-fcuda-allow-variadic-functions"
-// CHECK-SAME: "-mlink-builtin-bitcode" 
{{".*/hipspv/lib/hip-device-lib/hipspv-}}[[TRIPLE]].bc"
+// CHECK-SAME: "-mlink-builtin-bitcode" 
{{".*/hipspv/lib/hip-device-lib/hipspv-spirv64.bc"}}
 // CHECK-SAME: "-isystem" {{".*/hipspv/include"}}
 // CHECK-SAME: "-fhip-new-launch-api"
-// CHECK-SAME: "-o" "[[OBJ_DEV:.*(o|bc)]]"
+// CHECK-SAME: "-o" [[DEV_BC:".*bc"]]
 // CHECK-SAME: "-x" "hip"
 
-// OLD: {{".*llvm-link"}} "-o" [[LINK_BC:".*bc"]] "[[OBJ_DEV]]"
-
-// OLD: {{".*opt"}} [[LINK_BC]] "-load-pass-plugin"
-// OLD-SAME: {{".*/hipspv/lib/libLLVMHipSpvPasses.so"}}
-// OLD-SAME: "-passes=hip-post-link-passes" "-o" [[LOWER_BC:".*bc"]]
+// CHECK: {{".*llvm-link"}} "-o" [[LINK_BC:".*bc"]] [[DEV_BC]]
 
-// OLD: {{".*llvm-spirv"}} "--spirv-max-version=1.1" "--spirv-ext=+all"
-// OLD-SAME: [[LOWER_BC]] "-o" "[[SPIRV_OUT:.*out]]"
+// CHECK: {{".*opt"}} [[LINK_BC]] "-load-pass-plugin"
+// CHECK-SAME: {{".*/hipspv/lib/libLLVMHipSpvPasses.so"}}
+// CHECK-SAME: "-passes=hip-post-link-passes" "-o" [[LOWER_BC:".*bc"]]
 
-// OLD: {{".*clang-offload-bundler"}} "-type=o" "-bundle-align=4096"
-// OLD-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-spirv64----generic"
-// OLD-SAME: "-input={{.*}}" "-input=[[SPIRV_OUT]]" 
"-output=[[BUNDLE:.*hipfb]]"
+// CHECK: {{".*llvm-spirv"}} "--spirv-max-version=1.1" "--spirv-ext=+all"
+// CHECK-SAME: [[LOWER_BC]] "-o" "[[SPIRV_OUT:.*out]]"
 
-// NEW: {{".*llvm-offload-binary"}} "-o" "[[PACKAGE:.*.out]]"
-// NEW-SAME: "--image=file=[[OBJ_DEV]],triple=[[TRIPLE]],arch=generic,kind=hip"
+// CHECK: {{".*clang-offload-bundler"}} "-type=o" "-bundle-align=4096"
+// CHECK-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-spirv64----generic"
+// CHECK-SAME: "-input={{.*}}" "-input=[[SPIRV_OUT]]" 
"-output=[[BUNDLE:.*hipfb]]"
 
-// NEW: {{".*clang-linker-wrapper"}} 
"--device-compiler=[[TRIPLE]]=--hip-path=[[HIP_PATH]]"
-// NEW-SAME: "--emit-fatbin-only" "-o" "[[BUNDLE:.*hipfb]]"
-
-// CHECK: [[CLANG]] "-cc1" "-triple" {{".*"}} "-aux-triple" "[[TRIPLE]]"
+// CHECK: [[CLANG]] "-cc1" "-triple" {{".*"}} "-aux-triple" "spirv64"
 // CHECK-SAME: "-emit-obj"
 // CHECK-SAME: "-fcuda-include-gpubinary" "[[BUNDLE]]"
 // CHECK-SAME: "-o" [[OBJ_HOST:".*o"]] "-x" "hip"
 
-// OLD: {{".*ld.*"}} {{.*}}[[OBJ_HOST]]
-
-// NEW: {{".*clang-linker-wrapper"}}
-// NEW-SAME: "--linker-path={{.*ld.*}}" "-o" "a.out"
-// NEW-SAME: [[OBJ_HOST]]
-
-//------------------------------------------------------------------------------
-// Check the clang command, invoked by the linker wrapper, selects the HIPSPV
-// toolchain for the new offload driver.
-
-// RUN: %clang --offload-new-driver -target x86_64-linux-gnu -nogpuinc \
-// RUN:   -nogpulib --offload=spirv64-unknown-chipstar \
-// RUN:   --hip-path=%S/Inputs/hipspv -Xoffload-compiler \
-// RUN:   '-###' -c %s -o /dev/null 2>&1 \
-// RUN: | FileCheck %s --check-prefix=CHIPSTAR
-
-//      CHIPSTAR: {{".*llvm-link"}}
-// CHIPSTAR-SAME: "-o" [[LINK_BC:".*bc"]] "{{[^ ]*.o}}"
-
-//      CHIPSTAR: {{".*opt"}} [[LINK_BC]] "-load-pass-plugin"
-// CHIPSTAR-SAME: {{".*/hipspv/lib/libLLVMHipSpvPasses.so"}}
-// CHIPSTAR-SAME: "-passes=hip-post-link-passes" "-o" [[LOWER_BC:".*bc"]]
-
-//      CHIPSTAR: {{".*llvm-spirv"}} "--spirv-max-version=1.2"
-// CHIPSTAR-SAME: 
"--spirv-ext=-all,+SPV_INTEL_function_pointers,+SPV_INTEL_subgroups"
-// CHIPSTAR-SAME: [[LOWER_BC]] "-o" "[[SPIRV_OUT:.*img]]"
-
-// RUN: %clang --offload-new-driver -target x86_64-linux-gnu -nogpuinc \
-// RUN:   -nogpulib --offload=spirv64v1.3-unknown-chipstar \
-// RUN:   --hip-path=%S/Inputs/hipspv -Xoffload-compiler \
-// RUN:   '-###' -c %s -o /dev/null 2>&1 \
-// RUN: | FileCheck %s --check-prefix=CHIPSTAR_SUBARCH
-
-//      CHIPSTAR_SUBARCH: {{".*llvm-link"}}
-// CHIPSTAR_SUBARCH-SAME: "-o" [[LINK_BC:".*bc"]] "{{[^ ]*.o}}"
-
-//      CHIPSTAR_SUBARCH: {{".*opt"}} [[LINK_BC]] "-load-pass-plugin"
-// CHIPSTAR_SUBARCH-SAME: {{".*/hipspv/lib/libLLVMHipSpvPasses.so"}}
-// CHIPSTAR_SUBARCH-SAME: "-passes=hip-post-link-passes" "-o" 
[[LOWER_BC:".*bc"]]
-
-//      CHIPSTAR_SUBARCH: {{".*llvm-spirv"}}
-// CHIPSTAR_SUBARCH-SAME: 
"--spirv-ext=-all,+SPV_INTEL_function_pointers,+SPV_INTEL_subgroups"
-// CHIPSTAR_SUBARCH-SAME: [[LOWER_BC]] "-o" "[[SPIRV_OUT:.*img]]"
+// CHECK: {{".*ld.*"}} {{.*}}[[OBJ_HOST]]
 
 //-----------------------------------------------------------------------------
 // Check llvm-spirv-<LLVM_VERSION_MAJOR> is used if it is found in PATH.
@@ -96,14 +41,8 @@
 // RUN:   && chmod +x %t/versioned/llvm-spirv-%llvm-version-major
 // RUN: env "PATH=%t/versioned" %clang -### -target x86_64-linux-gnu \
 // RUN:   --offload=spirv64 --hip-path=%S/Inputs/hipspv -nohipwrapperinc \
-// RUN:   --no-offload-new-driver %s 2>&1 \
+// RUN:   %s 2>&1 \
 // RUN:   | FileCheck -DVERSION=%llvm-version-major \
 // RUN:   --check-prefix=VERSIONED %s
 
-// RUN: env "PATH=%t/versioned" %clang -target x86_64-linux-gnu 
--offload-new-driver \
-// RUN:   -nogpuinc -nogpulib --offload=spirv64-unknown-chipstar \
-// RUN:   --hip-path=%S/Inputs/hipspv -Xoffload-compiler '-###' -c %s \
-// RUN:   -o /dev/null 2>&1 \
-// RUN: | FileCheck -DVERSION=%llvm-version-major --check-prefix=VERSIONED %s
-
 // VERSIONED: {{.*}}llvm-spirv-[[VERSION]]

diff  --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp 
b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 619e539857fc6..48a3c5f97e375 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -409,19 +409,8 @@ fatbinary(ArrayRef<std::pair<StringRef, StringRef>> 
InputFiles,
 } // namespace nvptx
 
 namespace amdgcn {
-
-// Constructs a triple string for clang offload bundler.
-// NOTE: copied from HIPUtility.cpp.
-static std::string normalizeForBundler(const llvm::Triple &T,
-                                       bool HasTargetID) {
-  return HasTargetID ? (T.getArchName() + "-" + T.getVendorName() + "-" +
-                        T.getOSName() + "-" + T.getEnvironmentName())
-                           .str()
-                     : T.normalize(llvm::Triple::CanonicalForm::FOUR_IDENT);
-}
-
 Expected<StringRef>
-fatbinary(ArrayRef<std::tuple<StringRef, StringRef, StringRef>> InputFiles,
+fatbinary(ArrayRef<std::pair<StringRef, StringRef>> InputFiles,
           const ArgList &Args) {
   llvm::TimeTraceScope TimeScope("AMDGPU Fatbinary");
 
@@ -452,10 +441,10 @@ fatbinary(ArrayRef<std::tuple<StringRef, StringRef, 
StringRef>> InputFiles,
         Args.MakeArgString(Twine("-compression-level=") + Arg->getValue()));
 
   SmallVector<StringRef> Targets = {"-targets=host-x86_64-unknown-linux-gnu"};
-  for (const auto &[File, TripleRef, Arch] : InputFiles) {
-    std::string NormalizedTriple =
-        normalizeForBundler(Triple(TripleRef), !Arch.empty());
-    Targets.push_back(Saver.save("hip-" + NormalizedTriple + "-" + Arch));
+  for (const auto &[File, Arch] : InputFiles) {
+    Targets.push_back(Saver.save(Arch == "amdgcnspirv"
+                                     ? "hip-spirv64-amd-amdhsa--" + Arch
+                                     : "hip-amdgcn-amd-amdhsa--" + Arch));
   }
   CmdArgs.push_back(Saver.save(llvm::join(Targets, ",")));
 
@@ -464,7 +453,7 @@ fatbinary(ArrayRef<std::tuple<StringRef, StringRef, 
StringRef>> InputFiles,
 #else
   CmdArgs.push_back("-input=/dev/null");
 #endif
-  for (const auto &[File, Triple, Arch] : InputFiles)
+  for (const auto &[File, Arch] : InputFiles)
     CmdArgs.push_back(Saver.save("-input=" + File));
 
   CmdArgs.push_back(Saver.save("-output=" + *TempFileOrErr));
@@ -827,11 +816,10 @@ bundleCuda(ArrayRef<OffloadingImage> Images, const 
ArgList &Args) {
 
 Expected<SmallVector<std::unique_ptr<MemoryBuffer>>>
 bundleHIP(ArrayRef<OffloadingImage> Images, const ArgList &Args) {
-  SmallVector<std::tuple<StringRef, StringRef, StringRef>, 4> InputFiles;
+  SmallVector<std::pair<StringRef, StringRef>, 4> InputFiles;
   for (const OffloadingImage &Image : Images)
-    InputFiles.emplace_back(std::make_tuple(Image.Image->getBufferIdentifier(),
-                                            Image.StringData.lookup("triple"),
-                                            Image.StringData.lookup("arch")));
+    InputFiles.emplace_back(std::make_pair(Image.Image->getBufferIdentifier(),
+                                           Image.StringData.lookup("arch")));
 
   auto FileOrErr = amdgcn::fatbinary(InputFiles, Args);
   if (!FileOrErr)


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

Reply via email to