[clang] Revert "[clang][Driver] Support for the SPIR-V backend when compiling HIP (#167543)" (PR #169528)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 25 09:20:45 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
@llvm/pr-subscribers-clang-driver
Author: Manuel Carrasco (mgcarrasco)
<details>
<summary>Changes</summary>
This reverts commit 1a036732d210c2b78404067a1aa0b3a3bba3eaf8.
Reverted due to a failure in hip-spirv-backend-opt.c for fuchsia-x86_64-linux.
---
Patch is 25.69 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/169528.diff
7 Files Affected:
- (modified) clang/include/clang/Options/Options.td (-10)
- (modified) clang/lib/Driver/Driver.cpp (+3-41)
- (modified) clang/lib/Driver/ToolChains/Clang.cpp (+1-9)
- (modified) clang/lib/Driver/ToolChains/HIPAMD.cpp (+13-35)
- (removed) clang/test/Driver/hip-spirv-backend-bindings.c (-57)
- (removed) clang/test/Driver/hip-spirv-backend-opt.c (-61)
- (removed) clang/test/Driver/hip-spirv-backend-phases.c (-80)
``````````diff
diff --git a/clang/include/clang/Options/Options.td b/clang/include/clang/Options/Options.td
index 00200055cce7e..a8fc1c4326cc5 100644
--- a/clang/include/clang/Options/Options.td
+++ b/clang/include/clang/Options/Options.td
@@ -1427,16 +1427,6 @@ def fhip_emit_relocatable : Flag<["-"], "fhip-emit-relocatable">,
HelpText<"Compile HIP source to relocatable">;
def fno_hip_emit_relocatable : Flag<["-"], "fno-hip-emit-relocatable">,
HelpText<"Do not override toolchain to compile HIP source to relocatable">;
-def use_spirv_backend
- : Flag<["-"], "use-spirv-backend">,
- Group<hip_Group>,
- Flags<[HelpHidden]>,
- HelpText<"Use the SPIRV backend for compilation ">;
-def no_use_spirv_backend
- : Flag<["-"], "no-use-spirv-backend">,
- Group<hip_Group>,
- Flags<[HelpHidden]>,
- HelpText<"Do not use the SPIRV backend for compilation ">;
}
// Clang specific/exclusive options for OpenACC.
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index c66ba73fc1f47..de8d4601210ae 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -5024,24 +5024,15 @@ Action *Driver::BuildOffloadingActions(Compilation &C,
// Compiling HIP in device-only non-RDC mode requires linking each action
// individually.
for (Action *&A : DeviceActions) {
+ // Special handling for the HIP SPIR-V toolchain because it doesn't use
+ // the SPIR-V backend yet doesn't report the output as an object.
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 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 = IsAMDGCNSPIRV && UseSPIRVBackend;
-
if ((A->getType() != types::TY_Object && !IsAMDGCNSPIRV &&
A->getType() != types::TY_LTO_BC) ||
- HIPRelocatableObj || !HIPNoRDC || !offloadDeviceOnly() ||
- (IsAMDGCNSPIRVWithBackend && offloadDeviceOnly()))
+ HIPRelocatableObj || !HIPNoRDC || !offloadDeviceOnly())
continue;
ActionList LinkerInput = {A};
A = C.MakeAction<LinkJobAction>(LinkerInput, types::TY_Image);
@@ -5267,28 +5258,12 @@ Action *Driver::ConstructPhaseAction(
Args.hasArg(options::OPT_S) ? types::TY_LTO_IR : types::TY_LTO_BC;
return C.MakeAction<BackendJobAction>(Input, Output);
}
- bool UseSPIRVBackend = Args.hasFlag(options::OPT_use_spirv_backend,
- options::OPT_no_use_spirv_backend,
- /*Default=*/false);
-
- auto OffloadingToolChain = Input->getOffloadingToolChain();
- // For AMD SPIRV, if offloadDeviceOnly(), we call the SPIRV backend unless
- // LLVM bitcode was requested explicitly or RDC is set. If
- // !offloadDeviceOnly, we emit LLVM bitcode, and clang-linker-wrapper will
- // compile it to SPIRV.
- bool UseSPIRVBackendForHipDeviceOnlyNoRDC =
- TargetDeviceOffloadKind == Action::OFK_HIP && OffloadingToolChain &&
- OffloadingToolChain->getTriple().isSPIRV() && UseSPIRVBackend &&
- offloadDeviceOnly() &&
- !Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc, false);
-
if (Args.hasArg(options::OPT_emit_llvm) ||
TargetDeviceOffloadKind == Action::OFK_SYCL ||
(((Input->getOffloadingToolChain() &&
Input->getOffloadingToolChain()->getTriple().isAMDGPU() &&
TargetDeviceOffloadKind != Action::OFK_None) ||
TargetDeviceOffloadKind == Action::OFK_HIP) &&
- !UseSPIRVBackendForHipDeviceOnlyNoRDC &&
((Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc,
false) ||
(Args.hasFlag(options::OPT_offload_new_driver,
@@ -5310,19 +5285,6 @@ Action *Driver::ConstructPhaseAction(
: types::TY_LLVM_BC;
return C.MakeAction<BackendJobAction>(Input, Output);
}
-
- // The SPIRV backend compilation path for HIP must avoid external
- // dependencies. The default compilation path assembles and links its
- // output, but the SPIRV assembler and linker are external tools. This code
- // ensures the backend emits binary SPIRV directly to bypass those steps and
- // avoid failures. Without -save-temps, the compiler may already skip
- // assembling and linking. With -save-temps, these steps must be explicitly
- // disabled, as done here. We also force skipping these steps regardless of
- // -save-temps to avoid relying on optimizations (unless -S is set).
- // The current HIP bundling expects the type to be types::TY_Image
- if (UseSPIRVBackendForHipDeviceOnlyNoRDC && !Args.hasArg(options::OPT_S))
- return C.MakeAction<BackendJobAction>(Input, types::TY_Image);
-
return C.MakeAction<BackendJobAction>(Input, types::TY_PP_Asm);
}
case phases::Assemble:
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 03796c7d0fe4a..c5d40c9825fab 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -5057,10 +5057,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
Args.ClaimAllArgs(options::OPT_femit_dwarf_unwind_EQ);
}
- bool IsAMDSPIRVForHIPDevice =
- IsHIPDevice && getToolChain().getTriple().isSPIRV() &&
- getToolChain().getTriple().getVendor() == llvm::Triple::AMD;
-
if (isa<AnalyzeJobAction>(JA)) {
assert(JA.getType() == types::TY_Plist && "Invalid output type.");
CmdArgs.push_back("-analyze");
@@ -5158,8 +5154,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
rewriteKind = RK_Fragile;
} else if (JA.getType() == types::TY_CIR) {
CmdArgs.push_back("-emit-cir");
- } else if (JA.getType() == types::TY_Image && IsAMDSPIRVForHIPDevice) {
- CmdArgs.push_back("-emit-obj");
} else {
assert(JA.getType() == types::TY_PP_Asm && "Unexpected output type!");
}
@@ -9090,9 +9084,7 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
OPT_fno_lto,
OPT_flto,
OPT_flto_partitions_EQ,
- OPT_flto_EQ,
- OPT_use_spirv_backend};
-
+ OPT_flto_EQ};
const llvm::DenseSet<unsigned> LinkerOptions{OPT_mllvm, OPT_Zlinker_input};
auto ShouldForwardForToolChain = [&](Arg *A, const ToolChain &TC) {
// Don't forward -mllvm to toolchains that don't support LLVM.
diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp b/clang/lib/Driver/ToolChains/HIPAMD.cpp
index c7f8ca1a7f520..231a38c2d3717 100644
--- a/clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -159,9 +159,10 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
// For SPIR-V the inputs for the job are device AMDGCN SPIR-V flavoured bitcode
// and the output is either a compiled SPIR-V binary or bitcode (-emit-llvm). It
-// calls llvm-link and then the llvm-spirv translator or the SPIR-V BE.
-// TODO: consider if we want to run any targeted optimisations over IR here,
-// over generic SPIR-V.
+// calls llvm-link and then the llvm-spirv translator. Once the SPIR-V BE will
+// be promoted from experimental, we will switch to using that. TODO: consider
+// if we want to run any targeted optimisations over IR here, over generic
+// SPIR-V.
void AMDGCN::Linker::constructLinkAndEmitSpirvCommand(
Compilation &C, const JobAction &JA, const InputInfoList &Inputs,
const InputInfo &Output, const llvm::opt::ArgList &Args) const {
@@ -172,40 +173,17 @@ void AMDGCN::Linker::constructLinkAndEmitSpirvCommand(
const char *LinkedBCFilePath = HIP::getTempFile(C, LinkedBCFilePrefix, "bc");
InputInfo LinkedBCFile(&JA, LinkedBCFilePath, Output.getBaseInput());
- bool UseSPIRVBackend =
- Args.hasFlag(options::OPT_use_spirv_backend,
- options::OPT_no_use_spirv_backend, /*Default=*/false);
-
constructLlvmLinkCommand(C, JA, Inputs, LinkedBCFile, Args);
- if (UseSPIRVBackend) {
- // This code handles the case in the new driver when --offload-device-only
- // is unset and clang-linker-wrapper forwards the bitcode that must be
- // compiled to SPIR-V.
-
- llvm::opt::ArgStringList CmdArgs;
- const char *Triple =
- C.getArgs().MakeArgString("-triple=spirv64-amd-amdhsa");
-
- CmdArgs.append({"-cc1", Triple, "-emit-obj", "-disable-llvm-optzns",
- LinkedBCFile.getFilename(), "-o", Output.getFilename()});
-
- const char *Exec = getToolChain().getDriver().getClangProgramPath();
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::None(), Exec,
- CmdArgs, LinkedBCFile, Output));
- } else {
- // Emit SPIR-V binary using the translator
- llvm::opt::ArgStringList TrArgs{
- "--spirv-max-version=1.6",
- "--spirv-ext=+all",
- "--spirv-allow-unknown-intrinsics",
- "--spirv-lower-const-expr",
- "--spirv-preserve-auxdata",
- "--spirv-debug-info-version=nonsemantic-shader-200"};
- SPIRV::constructTranslateCommand(C, *this, JA, Output, LinkedBCFile,
- TrArgs);
- }
+ // Emit SPIR-V binary.
+ llvm::opt::ArgStringList TrArgs{
+ "--spirv-max-version=1.6",
+ "--spirv-ext=+all",
+ "--spirv-allow-unknown-intrinsics",
+ "--spirv-lower-const-expr",
+ "--spirv-preserve-auxdata",
+ "--spirv-debug-info-version=nonsemantic-shader-200"};
+ SPIRV::constructTranslateCommand(C, *this, JA, Output, LinkedBCFile, TrArgs);
}
// For amdgcn the inputs of the linker job are device bitcode and output is
diff --git a/clang/test/Driver/hip-spirv-backend-bindings.c b/clang/test/Driver/hip-spirv-backend-bindings.c
deleted file mode 100644
index 59b3f4fb54d4c..0000000000000
--- a/clang/test/Driver/hip-spirv-backend-bindings.c
+++ /dev/null
@@ -1,57 +0,0 @@
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -x hip %s -save-temps \
-// RUN: -use-spirv-backend -ccc-print-bindings \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-BASE,CHECK-SPIRV
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -x hip %s -save-temps \
-// RUN: -use-spirv-backend -fgpu-rdc -ccc-print-bindings \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-BASE,CHECK-SPIRV-RDC
-
-// CHECK-SPIRV-BASE: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI:.+\.hipi]]"
-// CHECK-SPIRV-BASE: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], output: "[[SPV_BC:.+\.bc]]"
-// CHECK-SPIRV: # "spirv64-amd-amdhsa" - "Offload::Packager", inputs: ["[[SPV_BC]]"], output: "[[HIP_OUT:.+\.out]]"
-// CHECK-SPIRV: # "spirv64-amd-amdhsa" - "Offload::Linker", inputs: ["[[HIP_OUT]]"], output: "[[HIPFB:.+\.hipfb]]"
-// CHECK-SPIRV-RDC: # "x86_64-unknown-linux-gnu" - "Offload::Packager", inputs: ["[[SPV_BC]]"], output: "[[HIP_OUT:.+\.out]]"
-// CHECK-SPIRV-BASE: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[INPUT]]"], output: "[[HIPI:.+\.hipi]]"
-// CHECK-SPIRV: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[HIPI]]", "[[HIPFB]]"], output: "[[x86_BC:.+\.bc]]"
-// CHECK-SPIRV-RDC: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[HIPI]]", "[[HIP_OUT]]"], output: "[[x86_BC:.+\.bc]]"
-// CHECK-SPIRV-BASE: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[x86_BC]]"], output: "[[x86_S:.+\.s]]"
-// CHECK-SPIRV-BASE: # "x86_64-unknown-linux-gnu" - "clang::as", inputs: ["[[x86_S]]"], output: "[[x86_O:.+\.o]]"
-// CHECK-SPIRV-BASE: # "x86_64-unknown-linux-gnu" - "Offload::Linker", inputs: ["[[x86_O]]"], output: "{{.+\.out}}"
-
-// CHECK-SPIRV # "x86_64-unknown-linux-gnu" - "Offload::Linker", inputs: ["[[x86_O]]"], output: "[[x86_O:.+\.o]]"
-// CHECK-SPIRV # "x86_64-unknown-linux-gnu" - "GNU::Linker", inputs: ["[[x86_O]]"], output: "{{.+\.out}}"
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -x hip %s -save-temps \
-// RUN: -use-spirv-backend --offload-device-only -ccc-print-bindings \
-// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-SPIRV-OFFLOAD-DEVICE-ONLY
-
-// CHECK-SPIRV-OFFLOAD-DEVICE-ONLY: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI:.+\.hipi]]"
-// CHECK-SPIRV-OFFLOAD-DEVICE-ONLY: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], output: "[[SPV_BC:.+\.bc]]"
-// CHECK-SPIRV-OFFLOAD-DEVICE-ONLY: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[SPV_BC]]"], output: "[[SPV_OUT:.+\.out]]"
-// CHECK-SPIRV-OFFLOAD-DEVICE-ONLY: # "spirv64-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[SPV_OUT]]"], output: "{{.+\.hipfb}}"
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -x hip %s -save-temps \
-// RUN: -use-spirv-backend --offload-device-only -fgpu-rdc -ccc-print-bindings \
-// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-SPIRV-OFFLOAD-DEVICE-ONLY-RDC
-
-// CHECK-SPIRV-OFFLOAD-DEVICE-ONLY-RDC: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI:.+\.hipi]]"
-// CHECK-SPIRV-OFFLOAD-DEVICE-ONLY-RDC: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], output: "[[SPV_BC:.+\.bc]]"
-// CHECK-SPIRV-OFFLOAD-DEVICE-ONLY-RDC: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[SPV_BC]]"], output: "{{.+}}"
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -x hip %s -save-temps \
-// RUN: -use-spirv-backend --offload-device-only -S -fgpu-rdc -ccc-print-bindings \
-// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-SPIRV-OFFLOAD-DEVICE-ONLY-RDC
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -x hip %s -save-temps \
-// RUN: -use-spirv-backend --offload-device-only -S -ccc-print-bindings \
-// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-SPIRV-TEXTUAL-OFFLOAD-DEVICE-ONLY
-
-// CHECK-SPIRV-TEXTUAL-OFFLOAD-DEVICE-ONLY: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI:.+\.hipi]]"
-// CHECK-SPIRV-TEXTUAL-OFFLOAD-DEVICE-ONLY: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], output: "[[SPV_BC:.+\.bc]]"
-// CHECK-SPIRV-TEXTUAL-OFFLOAD-DEVICE-ONLY: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[SPV_BC]]"], output: "{{.+\.s}}"
diff --git a/clang/test/Driver/hip-spirv-backend-opt.c b/clang/test/Driver/hip-spirv-backend-opt.c
deleted file mode 100644
index 88c4a848d5760..0000000000000
--- a/clang/test/Driver/hip-spirv-backend-opt.c
+++ /dev/null
@@ -1,61 +0,0 @@
-// This test case validates the behavior of -use-spirv-backend
-
-// --offload-device-only is always set --- testing interactions with -S and -fgpu-rdc
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -### -x hip %s -save-temps \
-// RUN: -use-spirv-backend --offload-device-only -S \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-TEXTUAL
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -### -x hip %s -save-temps \
-// RUN: -use-spirv-backend --offload-device-only \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-BINARY
-
-// The new driver's behavior is to emit LLVM IR for --offload-device-only and -fgpu-rdc (independently of SPIR-V).
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -### -nogpuinc -nogpulib -x hip %s -save-temps \
-// RUN: -use-spirv-backend --offload-device-only -S -fgpu-rdc \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-LL,CHECK-FGPU-RDC
-
-// The new driver's behavior is to emit LLVM IR for --offload-device-only and -fgpu-rdc (independently of SPIR-V).
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -### -x hip %s -save-temps \
-// RUN: -use-spirv-backend --offload-device-only -fgpu-rdc \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-BC,CHECK-FGPU-RDC
-
-// --offload-device-only is always unset --- testing interactions with -S and -fgpu-rdc
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -### -x hip %s -save-temps \
-// RUN: -use-spirv-backend -S -fgpu-rdc \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-BC,CHECK-FGPU-RDC
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -### -x hip %s -save-temps \
-// RUN: -use-spirv-backend -S \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-BC
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -### -x hip %s -save-temps \
-// RUN: -use-spirv-backend -fgpu-rdc \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-BC,CHECK-CLANG-LINKER-WRAPPER
-
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -### -x hip %s -save-temps \
-// RUN: -use-spirv-backend \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-BC,CHECK-CLANG-LINKER-WRAPPER
-
-// RUN: %clang --no-offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -### -x hip %s -save-temps \
-// RUN: -use-spirv-backend \
-// RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-BC,CHECK-SPIRV-BACKEND-BINARY-EQ-TRIPLE
-
-// CHECK-SPIRV-TRANSLATOR-NOT: "{{.*llvm-spirv.*}}"
-// CHECK-SPIRV-BACKEND-TEXTUAL: "{{.*}}clang{{.*}}" "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}} "-S"
-// CHECK-SPIRV-BACKEND-BINARY: "{{.*}}clang{{.*}}" "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}} "-emit-obj"
-// CHECK-SPIRV-BACKEND-BC: "{{.*}}clang{{.*}}" "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}} "-emit-llvm-bc"
-// CHECK-SPIRV-BACKEND-LL: "{{.*}}clang{{.*}}" "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}} "-emit-llvm"
-// CHECK-SPIRV-BACKEND-BINARY-EQ-TRIPLE: "{{.*}}clang{{.*}}" "-cc1" {{.*}}"-triple=spirv64-amd-amdhsa" {{.*}}"-emit-obj"
-// CHECK-FGPU-RDC-SAME: {{.*}} "-fgpu-rdc"
-// CHECK-CLANG-LINKER-WRAPPER: "{{.*}}clang-linker-wrapper" "--should-extract=amdgcnspirv" {{.*}} "--device-compiler=spirv64-amd-amdhsa=-use-spirv-backend"
diff --git a/clang/test/Driver/hip-spirv-backend-phases.c b/clang/test/Driver/hip-spirv-backend-phases.c
deleted file mode 100644
index d743b8cd50c40..0000000000000
--- a/clang/test/Driver/hip-spirv-backend-phases.c
+++ /dev/null
@@ -1,80 +0,0 @@
-// RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu --offload-arch=amdgcnspirv \
-// RUN: -nogpuinc -nogpulib -x hip %s -save-temps \
-// RUN: -use-spirv-backend -ccc-print-phases \
-// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-SPIRV-BINARY
-
-// CHECK-SPIRV-BINARY: [[P0:[0-9]+]]: input, "[[INPUT:.*]].c", hip, (host-hip)
-// CHECK-SPIRV-BINARY: [[P1:[0-9]+]]: preprocessor, {[[P0]]}, hip-cpp-output, (...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/169528
More information about the cfe-commits
mailing list