[flang-commits] [flang] c0125a7 - clang: Start using new amdgpu subarch triples (#206482)
via flang-commits
flang-commits at lists.llvm.org
Thu Aug 20 05:28:44 PDT 2026
Author: Matt Arsenault
Date: 2026-08-20T14:28:39+02:00
New Revision: c0125a7bf833b6cf0d5b4a085b63094e0893c85a
URL: https://github.com/llvm/llvm-project/commit/c0125a7bf833b6cf0d5b4a085b63094e0893c85a
DIFF: https://github.com/llvm/llvm-project/commit/c0125a7bf833b6cf0d5b4a085b63094e0893c85a.diff
LOG: clang: Start using new amdgpu subarch triples (#206482)
Added:
clang/test/CodeGen/amdgpu-builtin-is-invocable-subarch.c
clang/test/CodeGen/amdgpu-builtin-processor-is-subarch.c
clang/test/Driver/Inputs/resource_dir_amdgpu_legacy_triple/lib/amdgcn-amd-amdhsa/libclang_rt.builtins.a
clang/test/Driver/Inputs/resource_dir_amdgpu_major_version/lib/amdgpu9-amd-amdhsa-llvm/libclc.bc
clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclang_rt.profile.a
clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclang_rt.ubsan_minimal.a
clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclc.bc
clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libflang_rt.runtime.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/gfx90a/libclc.bc
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclang_rt.profile.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclang_rt.ubsan_minimal.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclc.bc
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libflang_rt.runtime.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/gfx90a/libclc.bc
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclang_rt.profile.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclang_rt.ubsan_minimal.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclc.bc
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libflang_rt.runtime.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclang_rt.profile.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclang_rt.ubsan_minimal.a
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclc.bc
clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libflang_rt.runtime.a
clang/test/Driver/amdgpu-openmp-targets-triple-compat.c
clang/test/Driver/amdgpu-subarch-diag.hip
clang/test/Driver/amdgpu-subarch-library-paths.cl
clang/test/Driver/amdgpu-subarch-march-diag.cl
clang/test/Driver/amdgpu-subarch-resource-dir.cl
clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-amdgpu-triple-compat.c
clang/test/SemaHIP/amdgpu-processor-is-invalid-subarch-arg-list.hip
Modified:
clang/include/clang/Basic/OffloadArch.h
clang/include/clang/Driver/ToolChain.h
clang/lib/Basic/OffloadArch.cpp
clang/lib/Driver/Driver.cpp
clang/lib/Driver/ToolChain.cpp
clang/lib/Driver/ToolChains/AMDGPU.cpp
clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
clang/lib/Driver/ToolChains/Arch/AMDGPU.h
clang/lib/Driver/ToolChains/CommonArgs.cpp
clang/lib/Driver/ToolChains/HIPUtility.cpp
clang/test/Driver/amdgpu-hip-system-arch.c
clang/test/Driver/amdgpu-multilib.yaml
clang/test/Driver/amdgpu-openmp-gpu-max-threads-per-block.c
clang/test/Driver/amdgpu-openmp-sanitize-options.c
clang/test/Driver/amdgpu-openmp-system-arch-fail.c
clang/test/Driver/amdgpu-openmp-toolchain.c
clang/test/Driver/amdgpu-unwind.cl
clang/test/Driver/amdgpu-validate-sanitize.cl
clang/test/Driver/amdgpu-xnack-sramecc-flags.c
clang/test/Driver/atomic-options.hip
clang/test/Driver/cl-denorms-are-zero.cl
clang/test/Driver/cl-offload.cu
clang/test/Driver/ftime-trace-offload.cpp
clang/test/Driver/gpu-exceptions.cpp
clang/test/Driver/gpu-libc.c
clang/test/Driver/hip-autolink.hip
clang/test/Driver/hip-binding.hip
clang/test/Driver/hip-code-object-version.hip
clang/test/Driver/hip-cuid.hip
clang/test/Driver/hip-device-compile.hip
clang/test/Driver/hip-device-libs-llvm-env.hip
clang/test/Driver/hip-fpie-option-freebsd.hip
clang/test/Driver/hip-fpie-option.hip
clang/test/Driver/hip-gz-options.hip
clang/test/Driver/hip-host-cpu-features.hip
clang/test/Driver/hip-include-path.hip
clang/test/Driver/hip-link-bc-to-bc.hip
clang/test/Driver/hip-link-bundle-archive.hip
clang/test/Driver/hip-link-offload-binary.c
clang/test/Driver/hip-link-save-temps.hip
clang/test/Driver/hip-link-shared-library.hip
clang/test/Driver/hip-link-static-library.hip
clang/test/Driver/hip-offload-arch.hip
clang/test/Driver/hip-offload-compress-zlib.hip
clang/test/Driver/hip-offload-compress-zstd.hip
clang/test/Driver/hip-options.hip
clang/test/Driver/hip-phases.hip
clang/test/Driver/hip-rdc-device-only.hip
clang/test/Driver/hip-sanitize-options.hip
clang/test/Driver/hip-save-temps.hip
clang/test/Driver/hip-target-id.hip
clang/test/Driver/hip-thinlto.hip
clang/test/Driver/hip-toolchain-device-only.hip
clang/test/Driver/hip-toolchain-mllvm.hip
clang/test/Driver/hip-toolchain-no-rdc.hip
clang/test/Driver/hip-toolchain-opt.hip
clang/test/Driver/hip-toolchain-rdc-separate.hip
clang/test/Driver/hip-toolchain-rdc-static-lib.hip
clang/test/Driver/hip-toolchain-rdc.hip
clang/test/Driver/hip-windows-filename.hip
clang/test/Driver/hipstdpar.c
clang/test/Driver/offload-Xarch.c
clang/test/Driver/offload-arch-translation-amdgpu.cu
clang/test/Driver/offload-darwin-host.hip
clang/test/Driver/offload-target.c
clang/test/Driver/offload.f90
clang/test/Driver/openmp-Xopenmp-target-forward-args.c
clang/test/Driver/openmp-offload-gpu.c
clang/test/Driver/openmp-offload-infer.c
clang/test/Driver/openmp-system-arch.c
clang/test/Driver/rocm-detect.cl
clang/test/Driver/rocm-detect.hip
clang/test/Driver/rocm-device-libs.cl
clang/test/OpenMP/amdgpu-arch-compat.c
clang/test/SemaHIP/amdgpu-processor-is.hip
clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
clang/unittests/Basic/OffloadArchTest.cpp
flang/test/Driver/code-object-version.f90
flang/test/Driver/offload-device.f90
flang/test/Driver/omp-driver-offload.f90
flang/test/Driver/target-cpu-features.f90
flang/test/Driver/target-gpu-features.f90
flang/test/Driver/xoffload-linker.f90
llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/OffloadArch.h b/clang/include/clang/Basic/OffloadArch.h
index 1d8f6434547d5..1c28b4487a64a 100644
--- a/clang/include/clang/Basic/OffloadArch.h
+++ b/clang/include/clang/Basic/OffloadArch.h
@@ -10,11 +10,11 @@
#define LLVM_CLANG_BASIC_OFFLOADARCH_H
#include "llvm/ADT/StringRef.h"
+#include "llvm/TargetParser/Triple.h"
#include <cstdint>
#include <tuple>
namespace llvm {
-class Triple;
template <typename T> class SmallVectorImpl;
namespace NVPTX {
enum GPUKind : uint8_t;
@@ -116,6 +116,9 @@ OffloadArch StringToOffloadArch(llvm::StringRef S);
/// Append the canonical names of all NVIDIA and AMDGPU GPUs.
void fillValidOffloadArchList(llvm::SmallVectorImpl<llvm::StringRef> &Values);
+OffloadArch getSubArchOffloadArch(llvm::Triple::SubArchType SubArch);
+llvm::Triple::SubArchType getOffloadArchSubArch(OffloadArch ID);
+
llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
OffloadArch ID);
diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h
index c5633e10933e8..59c93459c64b9 100644
--- a/clang/include/clang/Driver/ToolChain.h
+++ b/clang/include/clang/Driver/ToolChain.h
@@ -915,7 +915,9 @@ class ToolChain {
return;
}
- if (TT.isAMDGPU()) {
+ if (TT.isAMDGCN()) {
+ // Fixup legacy "amdgcn" triples to "amdgpu"
+ TT.setArch(llvm::Triple::amdgpu, TT.getSubArch());
if (TT.getVendor() == llvm::Triple::UnknownVendor)
TT.setVendor(llvm::Triple::AMD);
if (TT.getOS() == llvm::Triple::UnknownOS)
diff --git a/clang/lib/Basic/OffloadArch.cpp b/clang/lib/Basic/OffloadArch.cpp
index 55a0564cff89d..b16b845c4b29f 100644
--- a/clang/lib/Basic/OffloadArch.cpp
+++ b/clang/lib/Basic/OffloadArch.cpp
@@ -95,6 +95,19 @@ void fillValidOffloadArchList(llvm::SmallVectorImpl<llvm::StringRef> &Values) {
llvm::AMDGPU::fillValidArchListAMDGCN(Values, llvm::Triple::NoSubArch);
}
+OffloadArch getSubArchOffloadArch(llvm::Triple::SubArchType SubArch) {
+ llvm::AMDGPU::GPUKind AK = llvm::AMDGPU::getGPUKindFromSubArch(SubArch);
+ if (AK == llvm::AMDGPU::GK_NONE)
+ return OffloadArch::getUnknown();
+ return OffloadArch::getAMDGPU(AK);
+}
+
+llvm::Triple::SubArchType getOffloadArchSubArch(OffloadArch ID) {
+ if (!ID.isAMDGPU())
+ return llvm::Triple::NoSubArch;
+ return llvm::AMDGPU::getSubArch(ID.amdgpuKind());
+}
+
llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
OffloadArch ID) {
if (ID.isSPIRV())
@@ -110,7 +123,8 @@ llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
}
if (ID.isAMDGPU())
- return llvm::Triple("amdgcn-amd-amdhsa");
+ return llvm::Triple(llvm::Triple::amdgpu, llvm::Triple::NoSubArch,
+ llvm::Triple::AMD, llvm::Triple::AMDHSA);
return {};
}
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index c2b670d8edd11..2b79cb9d12c2a 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -989,9 +989,11 @@ static TripleSet inferOffloadToolchains(Compilation &C,
TripleSet Triples;
for (llvm::StringRef Arch : Archs) {
OffloadArch ID = StringToOffloadArch(Arch);
- if (ID.isUnknown())
- ID = StringToOffloadArch(
- getProcessorFromTargetID(llvm::Triple("amdgcn-amd-amdhsa"), Arch));
+ if (ID.isUnknown()) {
+ llvm::Triple AMDGPUTriple(llvm::Triple::amdgpu, llvm::Triple::NoSubArch,
+ llvm::Triple::AMD, llvm::Triple::AMDHSA);
+ ID = StringToOffloadArch(getProcessorFromTargetID(AMDGPUTriple, Arch));
+ }
bool UsesLLVMOffloading =
C.getArgs().hasFlag(options::OPT_foffload_via_llvm,
@@ -1042,9 +1044,10 @@ static TripleSet inferOffloadToolchains(Compilation &C,
}
// Infer the default target triple if no specific architectures are given.
- if (Archs.empty() && Kind == Action::OFK_HIP)
- Triples.insert(llvm::Triple("amdgcn-amd-amdhsa"));
- else if (Archs.empty() && Kind == Action::OFK_Cuda) {
+ if (Archs.empty() && Kind == Action::OFK_HIP) {
+ Triples.insert(llvm::Triple(llvm::Triple::amdgpu, llvm::Triple::NoSubArch,
+ llvm::Triple::AMD, llvm::Triple::AMDHSA));
+ } else if (Archs.empty() && Kind == Action::OFK_Cuda) {
llvm::Triple::ArchType Arch =
C.getDefaultToolChain().getTriple().isArch64Bit()
? llvm::Triple::nvptx64
@@ -4914,11 +4917,22 @@ static StringRef getCanonicalArchString(Compilation &C,
C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
<< "CUDA" << ArchStr;
return StringRef();
- } else if (Triple.isAMDGPU() &&
- (Arch.isUnknown() || (!Arch.isAMDGPU() && !Arch.isSPIRV()))) {
- C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
- << "HIP" << ArchStr;
- return StringRef();
+ } else if (Triple.isAMDGPU()) {
+ if (Arch.isUnknown() || (!Arch.isAMDGPU() && !Arch.isSPIRV())) {
+ C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
+ << "HIP" << ArchStr;
+ return StringRef();
+ }
+
+ if (Triple.getSubArch() != llvm::Triple::NoSubArch) {
+ llvm::Triple::SubArchType ArchSubArch = getOffloadArchSubArch(Arch);
+ if (ArchSubArch != Triple.getSubArch() &&
+ llvm::AMDGPU::getMajorSubArch(ArchSubArch) != Triple.getSubArch()) {
+ C.getDriver().Diag(clang::diag::err_target_unsupported_arch)
+ << ArchStr << Triple.getArchName();
+ return StringRef();
+ }
+ }
}
if (Arch.isNVPTX())
@@ -5016,7 +5030,9 @@ Driver::getOffloadArchs(Compilation &C, const llvm::opt::DerivedArgList &Args,
<< ConflictingArchs->first << ConflictingArchs->second;
// Fill in the default architectures if not provided explicitly.
- if (Archs.empty()) {
+ bool HasSubArch = TC.getTriple().isAMDGCN() &&
+ TC.getTriple().getSubArch() != llvm::Triple::NoSubArch;
+ if (Archs.empty() && !HasSubArch) {
if (Kind == Action::OFK_Cuda) {
Archs.insert(OffloadArchToString(TC.getTriple().isSPIRV()
? OffloadArch::getUnused()
@@ -5046,7 +5062,22 @@ Driver::getOffloadArchs(Compilation &C, const llvm::opt::DerivedArgList &Args,
}
}
}
+ } else if (Archs.empty() && HasSubArch) {
+ // Use default CPU if we have a subarch in the triple.
+ //
+ // TODO: We ought to be able to get away with the empty string here, but
+ // many tests require removal of redundant -target-cpu arguments
+ OffloadArch TripleOffloadArch =
+ getSubArchOffloadArch(TC.getTriple().getSubArch());
+ llvm::StringRef ArchStr = TripleOffloadArch.isUnknown()
+ ? ""
+ : OffloadArchToString(TripleOffloadArch);
+ StringRef CanonicalStr =
+ getCanonicalArchString(C, Args, ArchStr, TC.getTriple());
+ if (!CanonicalStr.empty())
+ Archs.insert(CanonicalStr);
}
+
Args.ClaimAllArgs(options::OPT_offload_arch_EQ);
Args.ClaimAllArgs(options::OPT_no_offload_arch_EQ);
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 37db75a1bfc14..a0124e2cbe781 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -45,6 +45,7 @@
#include "llvm/Support/VersionTuple.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/AArch64TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/RISCVISAInfo.h"
#include "llvm/TargetParser/TargetParser.h"
#include "llvm/TargetParser/Triple.h"
@@ -1124,11 +1125,17 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
if (auto Path = getPathForTriple(T))
return *Path;
- // Handle the legacy AMDGPU triple case as well.
- if (T.getArchName() == "amdgcn") {
- llvm::Triple Canon(T);
- Canon.setArchName("amdgpu");
- if (auto Path = getPathForTriple(Canon))
+ if (T.isAMDGCN()) {
+ // Clear the subarch as a fallback.
+ // TODO: Remove this when libc and compiler-rt builds are migrated.
+ llvm::Triple AMDGPUTriple = T;
+ AMDGPUTriple.setArch(Triple::amdgpu);
+ if (auto Path = getPathForTriple(AMDGPUTriple))
+ return *Path;
+
+ // Try legacy architecture name.
+ AMDGPUTriple.setArchName("amdgcn");
+ if (auto Path = getPathForTriple(AMDGPUTriple))
return *Path;
}
@@ -1226,11 +1233,19 @@ ToolChain::path_list ToolChain::getArchSpecificLibPaths() const {
AddPath({getTriple().str()});
- // Handle the legacy AMDGPU triple case as well.
- if (getTriple().getArchName() == "amdgcn") {
+ // For AMDGPU, fall back to the subarch-stripped triple path, trying both the
+ // canonical "amdgpu" name and the legacy "amdgcn" name.
+ //
+ // TODO: Also try major subarch?
+ // TODO: Remove this when libc and compiler-rt builds are migrated.
+ if (getTriple().isAMDGCN()) {
llvm::Triple Canon(getTriple());
- Canon.setArchName("amdgpu");
- AddPath({Canon.str()});
+ for (StringRef ArchName : {"amdgpu", "amdgcn"}) {
+ if (ArchName == getTriple().getArchName())
+ continue;
+ Canon.setArchName(ArchName);
+ AddPath({Canon.str()});
+ }
}
AddPath({getOSLibName(), llvm::Triple::getArchTypeName(getArch())});
@@ -1502,7 +1517,8 @@ std::string ToolChain::ComputeLLVMTriple(const ArgList &Args, BoundArch BA,
return getTripleString().str();
case llvm::Triple::amdgpu: {
llvm::Triple Triple = getTriple();
- tools::AMDGPU::setArchNameInTriple(getDriver(), Args, InputType, Triple);
+ tools::AMDGPU::setArchNameInTriple(getDriver(), Args, BA, InputType,
+ Triple);
return Triple.getTriple();
}
case llvm::Triple::arm:
@@ -2138,6 +2154,12 @@ void ToolChain::TranslateXarchArgs(
static bool isXArchCompatibleTripleArch(const llvm::Triple &TT,
StringRef XArchVal) {
llvm::Triple ParsedTriple(XArchVal);
+
+ // Accept -Xarch_amdgcn for all amdgpu subarches, and -Xarch_amdgpu9 for
+ // amdgpu9.xx
+ if (TT.isAMDGCN() && ParsedTriple.isAMDGCN())
+ return llvm::AMDGPU::isSubArchCompatible(TT, ParsedTriple);
+
return TT.getArch() == ParsedTriple.getArch() &&
TT.getSubArch() == ParsedTriple.getSubArch();
}
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index 50eacfc2f1baf..4f81c8d00d731 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -1059,6 +1059,21 @@ AMDGPUToolChain::checkTargetID(const llvm::opt::ArgList &DriverArgs) const {
if (PTID.OptionalTargetID && !PTID.OptionalGPUArch) {
getDriver().Diag(clang::diag::err_drv_bad_target_id)
<< *PTID.OptionalTargetID;
+ return PTID;
+ }
+
+ if (getTriple().getSubArch() != llvm::Triple::NoSubArch &&
+ PTID.OptionalGPUArch) {
+ llvm::AMDGPU::GPUKind Kind =
+ llvm::AMDGPU::parseArchAMDGCN(*PTID.OptionalGPUArch);
+ llvm::Triple::SubArchType KindSubArch =
+ static_cast<llvm::Triple::SubArchType>(llvm::AMDGPU::getSubArch(Kind));
+ if (getTriple().getSubArch() != KindSubArch &&
+ getTriple().getSubArch() !=
+ llvm::AMDGPU::getMajorSubArch(KindSubArch)) {
+ getDriver().Diag(clang::diag::err_target_unsupported_arch)
+ << *PTID.OptionalGPUArch << getTriple().getArchName();
+ }
}
return PTID;
}
diff --git a/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp b/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
index 266f9859ac88f..c3aebe952c87e 100644
--- a/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
@@ -7,8 +7,10 @@
//===----------------------------------------------------------------------===//
#include "AMDGPU.h"
+#include "clang/Basic/TargetID.h"
#include "clang/Driver/Driver.h"
#include "clang/Options/Options.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace clang::driver;
using namespace clang::driver::tools;
@@ -16,14 +18,27 @@ using namespace clang;
using namespace llvm::opt;
void AMDGPU::setArchNameInTriple(const Driver &D, const ArgList &Args,
- types::ID InputType, llvm::Triple &Triple) {
- StringRef MArch;
- AMDGPU::getAMDGPUArchCPUFromArgs(Triple, Args, MArch);
+ BoundArch BA, types::ID InputType,
+ llvm::Triple &Triple) {
+ StringRef MArch = BA.ArchName;
+ if (MArch.empty())
+ AMDGPU::getAMDGPUArchCPUFromArgs(Triple, Args, MArch);
if (MArch == "amdgcnspirv") {
Triple.setArch(llvm::Triple::ArchType::spirv64);
return;
}
+
+ StringRef ProcName = getProcessorFromTargetID(Triple, MArch);
+ llvm::AMDGPU::GPUKind GK = llvm::AMDGPU::parseArchAMDGCN(ProcName);
+ if (GK == llvm::AMDGPU::GPUKind::GK_NONE) {
+ // Normalize legacy "amdgcn" triples to "amdgpu"
+ Triple.setArch(Triple.getArch(), Triple.getSubArch());
+ return;
+ }
+
+ Triple.setArch(Triple.getArch(), static_cast<llvm::Triple::SubArchType>(
+ llvm::AMDGPU::getSubArch(GK)));
}
void AMDGPU::getAMDGPUArchCPUFromArgs(const llvm::Triple &Triple,
diff --git a/clang/lib/Driver/ToolChains/Arch/AMDGPU.h b/clang/lib/Driver/ToolChains/Arch/AMDGPU.h
index 14605213b5ef7..0218dcffccf55 100644
--- a/clang/lib/Driver/ToolChains/Arch/AMDGPU.h
+++ b/clang/lib/Driver/ToolChains/Arch/AMDGPU.h
@@ -12,7 +12,6 @@
#include "clang/Driver/ToolChain.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Option/Option.h"
-#include <string>
namespace clang {
namespace driver {
@@ -20,7 +19,8 @@ namespace tools {
namespace AMDGPU {
void setArchNameInTriple(const Driver &D, const llvm::opt::ArgList &Args,
- types::ID InputType, llvm::Triple &Triple);
+ BoundArch BA, types::ID InputType,
+ llvm::Triple &Triple);
void getAMDGPUArchCPUFromArgs(const llvm::Triple &Triple,
const llvm::opt::ArgList &Args,
llvm::StringRef &Arch);
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 7db070699b23f..74e27bf8b9cde 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -3208,14 +3208,21 @@ bool tools::addOpenCLBuiltinsLib(const Driver &D, const llvm::Triple &TT,
}
// The OpenCL libraries are stored in <ResourceDir>/lib/<triple>.
- SmallString<128> BasePath(D.ResourceDir);
- llvm::sys::path::append(BasePath, "lib");
- llvm::sys::path::append(BasePath, D.getTargetTriple());
-
- // First check for a CPU-specific library in <ResourceDir>/lib/<triple>/<CPU>.
- // TODO: Factor this into common logic that checks for valid subtargets.
- if (const Arg *CPUArg = DriverArgs.getLastArg(options::OPT_mcpu_EQ)) {
- StringRef CPU = CPUArg->getValue();
+ SmallString<128> ResourceLibPath(D.ResourceDir);
+ llvm::sys::path::append(ResourceLibPath, "lib");
+
+ StringRef CPU;
+ if (const Arg *CPUArg = DriverArgs.getLastArg(options::OPT_mcpu_EQ))
+ CPU = CPUArg->getValue();
+
+ // Helper to check for libclc.bc in a specific triple directory.
+ auto TryTriplePath = [&](StringRef TripleStr) -> bool {
+ SmallString<128> BasePath(ResourceLibPath);
+ llvm::sys::path::append(BasePath, TripleStr);
+
+ // First check for a CPU-specific library in
+ // <ResourceDir>/lib/<triple>/<CPU>.
+ // TODO: Factor this into common logic that checks for valid subtargets.
if (!CPU.empty()) {
SmallString<128> CPUPath(BasePath);
llvm::sys::path::append(CPUPath, CPU, "libclc.bc");
@@ -3225,15 +3232,42 @@ bool tools::addOpenCLBuiltinsLib(const Driver &D, const llvm::Triple &TT,
return true;
}
}
- }
- // Fall back to the generic library for the triple.
- SmallString<128> GenericPath(BasePath);
- llvm::sys::path::append(GenericPath, "libclc.bc");
- if (D.getVFS().exists(GenericPath)) {
- CC1Args.push_back("-mlink-builtin-bitcode");
- CC1Args.push_back(DriverArgs.MakeArgString(GenericPath));
+ // Fall back to the generic library for the triple.
+ SmallString<128> GenericPath(BasePath);
+ llvm::sys::path::append(GenericPath, "libclc.bc");
+ if (D.getVFS().exists(GenericPath)) {
+ CC1Args.push_back("-mlink-builtin-bitcode");
+ CC1Args.push_back(DriverArgs.MakeArgString(GenericPath));
+ return true;
+ }
+ return false;
+ };
+
+ // First, try the exact target triple.
+ if (TryTriplePath(TT.str()))
return true;
+
+ llvm::Triple::SubArchType SubArch = TT.getSubArch();
+ if (TT.isAMDGCN() && SubArch != llvm::Triple::NoSubArch) {
+ // For AMDGPU with a subarch, try major version and generic fallbacks.
+ // 1. Specific subarch (e.g., amdgpu9.0a-amd-amdhsa)
+ // 2. Major subarch (e.g., amdgpu9-amd-amdhsa)
+ // 3. Generic triple (e.g., amdgpu-amd-amdhsa)
+ llvm::Triple::SubArchType MajorSubArch =
+ llvm::AMDGPU::getMajorSubArch(SubArch);
+ if (MajorSubArch != SubArch) {
+ llvm::Triple MajorTT(TT);
+ MajorTT.setArch(TT.getArch(), MajorSubArch);
+ if (TryTriplePath(MajorTT.str()))
+ return true;
+ }
+
+ // Try generic amdgpu triple without any subarch.
+ llvm::Triple NoSubArchTT(TT);
+ NoSubArchTT.setArch(TT.getArch(), llvm::Triple::NoSubArch);
+ if (TryTriplePath(NoSubArchTT.str()))
+ return true;
}
D.Diag(diag::err_drv_libclc_not_found) << "libclc.bc";
diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 001f9f3400a06..e59cdaaf78f37 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -7,6 +7,8 @@
//===----------------------------------------------------------------------===//
#include "HIPUtility.h"
+#include "clang/Basic/OffloadArch.h"
+#include "clang/Basic/TargetID.h"
#include "clang/Driver/CommonArgs.h"
#include "clang/Driver/Compilation.h"
#include "clang/Options/Options.h"
@@ -39,8 +41,16 @@ const unsigned HIPCodeObjectAlign = 4096;
} // namespace
// Constructs a triple string for clang offload bundler.
-static std::string normalizeForBundler(const llvm::Triple &T,
- bool HasTargetID) {
+static std::string normalizeForBundler(const llvm::Triple &OrigT,
+ StringRef BoundArch) {
+ llvm::Triple T(OrigT);
+ bool HasTargetID = !BoundArch.empty();
+ if (T.getSubArch() == llvm::Triple::NoSubArch && HasTargetID) {
+ llvm::Triple::SubArchType SubArch = getOffloadArchSubArch(
+ StringToOffloadArch(getProcessorFromTargetID(T, BoundArch)));
+ T.setArch(T.getArch(), SubArch);
+ }
+
return HasTargetID ? (T.getArchName() + "-" + T.getVendorName() + "-" +
T.getOSName() + "-" + T.getEnvironmentName())
.str()
@@ -311,10 +321,9 @@ void HIP::constructHIPFatbinCommand(Compilation &C, const JobAction &JA,
BoundArch BA = A->getOffloadingArch();
BundlerTargetArg += ',' + OffloadKind + '-';
if (BA.ArchName == "amdgcnspirv")
- BundlerTargetArg +=
- normalizeForBundler(llvm::Triple("spirv64-amd-amdhsa"), true);
+ BundlerTargetArg += "spirv64-amd-amdhsa-";
else
- BundlerTargetArg += normalizeForBundler(InputTriple, !BA.empty());
+ BundlerTargetArg += normalizeForBundler(InputTriple, BA.ArchName);
if (BA)
BundlerTargetArg += '-' + BA.ArchName.str();
}
diff --git a/clang/test/CodeGen/amdgpu-builtin-is-invocable-subarch.c b/clang/test/CodeGen/amdgpu-builtin-is-invocable-subarch.c
new file mode 100644
index 0000000000000..5539286404d94
--- /dev/null
+++ b/clang/test/CodeGen/amdgpu-builtin-is-invocable-subarch.c
@@ -0,0 +1,40 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals all --version 6
+// RUN: %clang_cc1 -triple amdgpu9.00-amd-amdhsa -emit-llvm %s -o - | FileCheck --check-prefix=AMDGPU900 %s
+// RUN: %clang_cc1 -triple amdgpu10.10-amd-amdhsa -emit-llvm %s -o - | FileCheck --check-prefix=AMDGPU1010 %s
+
+// Test that __builtin_amdgcn_is_invocable resolves from the triple's subarch
+// alone, with no -target-cpu:
+// 1) for amdgpu9.00 (gfx900) we emit an empty kernel (lacks feature)
+// 2) for amdgpu10.10 (gfx1010) we emit a call to trap (has feature)
+// AMDGPU900-LABEL: define dso_local void @foo(
+// AMDGPU900-SAME: ) #[[ATTR0:[0-9]+]] {
+// AMDGPU900-NEXT: [[ENTRY:.*:]]
+// AMDGPU900-NEXT: ret void
+//
+// AMDGPU1010-LABEL: define dso_local void @foo(
+// AMDGPU1010-SAME: ) #[[ATTR0:[0-9]+]] {
+// AMDGPU1010-NEXT: [[ENTRY:.*:]]
+// AMDGPU1010-NEXT: call void @llvm.trap() #[[ATTR2:[0-9]+]]
+// AMDGPU1010-NEXT: unreachable
+// AMDGPU1010: [[BB0:.*:]]
+// AMDGPU1010-NEXT: ret void
+//
+void foo() {
+ if (__builtin_amdgcn_is_invocable(__builtin_amdgcn_permlanex16) ||
+ (__builtin_amdgcn_is_invocable(__builtin_amdgcn_permlanex16_var)) ||
+ (__builtin_amdgcn_is_invocable(__builtin_amdgcn_ashr_pk_i8_i32)))
+ return __builtin_trap();
+}
+//.
+// AMDGPU900: attributes #[[ATTR0]] = { convergent noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
+//.
+// AMDGPU1010: attributes #[[ATTR0]] = { convergent noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
+// AMDGPU1010: attributes #[[ATTR1:[0-9]+]] = { cold noreturn nounwind memory(inaccessiblemem: write) }
+// AMDGPU1010: attributes #[[ATTR2]] = { noreturn nounwind }
+//.
+// AMDGPU900: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 600}
+// AMDGPU900: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
+//.
+// AMDGPU1010: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 600}
+// AMDGPU1010: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
+//.
diff --git a/clang/test/CodeGen/amdgpu-builtin-processor-is-subarch.c b/clang/test/CodeGen/amdgpu-builtin-processor-is-subarch.c
new file mode 100644
index 0000000000000..0a2871b32ca02
--- /dev/null
+++ b/clang/test/CodeGen/amdgpu-builtin-processor-is-subarch.c
@@ -0,0 +1,54 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals all --version 6
+// RUN: %clang_cc1 -triple amdgpu9.00-amd-amdhsa -emit-llvm %s -o - | FileCheck --check-prefix=AMDGPU900 %s
+// RUN: %clang_cc1 -triple amdgpu9-amd-amdhsa -emit-llvm %s -o - | FileCheck --check-prefix=AMDGPU9_NOCPU %s
+// RUN: %clang_cc1 -triple amdgpu9-amd-amdhsa -target-cpu gfx900 -emit-llvm %s -o - | FileCheck --check-prefix=AMDGPU900_CPU %s
+
+// Test that __builtin_amdgcn_processor_is works when the target is specified
+// only by the subarch without -target-cpu.
+
+// AMDGPU900-LABEL: define dso_local void @gfx900_name(
+// AMDGPU900-SAME: ) #[[ATTR0:[0-9]+]] {
+// AMDGPU900-NEXT: [[ENTRY:.*:]]
+// AMDGPU900-NEXT: call void @llvm.trap() #[[ATTR2:[0-9]+]]
+// AMDGPU900-NEXT: unreachable
+// AMDGPU900: [[BB0:.*:]]
+// AMDGPU900-NEXT: ret void
+//
+// AMDGPU9_NOCPU-LABEL: define dso_local void @gfx900_name(
+// AMDGPU9_NOCPU-SAME: ) #[[ATTR0:[0-9]+]] {
+// AMDGPU9_NOCPU-NEXT: [[ENTRY:.*:]]
+// AMDGPU9_NOCPU-NEXT: ret void
+//
+// AMDGPU900_CPU-LABEL: define dso_local void @gfx900_name(
+// AMDGPU900_CPU-SAME: ) #[[ATTR0:[0-9]+]] {
+// AMDGPU900_CPU-NEXT: [[ENTRY:.*:]]
+// AMDGPU900_CPU-NEXT: call void @llvm.trap() #[[ATTR2:[0-9]+]]
+// AMDGPU900_CPU-NEXT: unreachable
+// AMDGPU900_CPU: [[BB0:.*:]]
+// AMDGPU900_CPU-NEXT: ret void
+//
+void gfx900_name() {
+ if (__builtin_amdgcn_processor_is("gfx900"))
+ return __builtin_trap();
+}
+
+//.
+// AMDGPU900: attributes #[[ATTR0]] = { convergent noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
+// AMDGPU900: attributes #[[ATTR1:[0-9]+]] = { cold noreturn nounwind memory(inaccessiblemem: write) }
+// AMDGPU900: attributes #[[ATTR2]] = { noreturn nounwind }
+//.
+// AMDGPU9_NOCPU: attributes #[[ATTR0]] = { convergent noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
+//.
+// AMDGPU900_CPU: attributes #[[ATTR0]] = { convergent noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="gfx900" }
+// AMDGPU900_CPU: attributes #[[ATTR1:[0-9]+]] = { cold noreturn nounwind memory(inaccessiblemem: write) }
+// AMDGPU900_CPU: attributes #[[ATTR2]] = { noreturn nounwind }
+//.
+// AMDGPU900: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 600}
+// AMDGPU900: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
+//.
+// AMDGPU9_NOCPU: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 600}
+// AMDGPU9_NOCPU: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
+//.
+// AMDGPU900_CPU: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 600}
+// AMDGPU900_CPU: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
+//.
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_legacy_triple/lib/amdgcn-amd-amdhsa/libclang_rt.builtins.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_legacy_triple/lib/amdgcn-amd-amdhsa/libclang_rt.builtins.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_major_version/lib/amdgpu9-amd-amdhsa-llvm/libclc.bc b/clang/test/Driver/Inputs/resource_dir_amdgpu_major_version/lib/amdgpu9-amd-amdhsa-llvm/libclc.bc
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclang_rt.profile.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclang_rt.profile.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclang_rt.ubsan_minimal.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclang_rt.ubsan_minimal.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclc.bc b/clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libclc.bc
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libflang_rt.runtime.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_subarch_triples/lib/amdgpu10.30-amd-amdhsa-llvm/libflang_rt.runtime.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/gfx90a/libclc.bc b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/gfx90a/libclc.bc
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclang_rt.profile.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclang_rt.profile.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclang_rt.ubsan_minimal.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclang_rt.ubsan_minimal.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclc.bc b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libclc.bc
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libflang_rt.runtime.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa-llvm/libflang_rt.runtime.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/gfx90a/libclc.bc b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/gfx90a/libclc.bc
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclang_rt.profile.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclang_rt.profile.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclang_rt.ubsan_minimal.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclang_rt.ubsan_minimal.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclc.bc b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libclc.bc
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libflang_rt.runtime.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu-amd-amdhsa/libflang_rt.runtime.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclang_rt.profile.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclang_rt.profile.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclang_rt.ubsan_minimal.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclang_rt.ubsan_minimal.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclc.bc b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libclc.bc
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libflang_rt.runtime.a b/clang/test/Driver/Inputs/resource_dir_amdgpu_triples/lib/amdgpu10.30-amd-amdhsa/libflang_rt.runtime.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/amdgpu-hip-system-arch.c b/clang/test/Driver/amdgpu-hip-system-arch.c
index 972105143debf..a6e298cd37b20 100644
--- a/clang/test/Driver/amdgpu-hip-system-arch.c
+++ b/clang/test/Driver/amdgpu-hip-system-arch.c
@@ -29,7 +29,7 @@
// RUN: | FileCheck %s --check-prefix=ARCH-GFX906
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib --offload-new-driver --offload-arch=native --amdgpu-arch-tool=%t/amdgpu_arch_gfx906 -x hip %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=ARCH-GFX906
-// ARCH-GFX906: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
+// ARCH-GFX906: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
// case when CLANG_TOOLCHAIN_PROGRAM_TIMEOUT is malformed.
// RUN: env CLANG_TOOLCHAIN_PROGRAM_TIMEOUT=foo \
diff --git a/clang/test/Driver/amdgpu-multilib.yaml b/clang/test/Driver/amdgpu-multilib.yaml
index 8c5714aa29c25..d3913a8e0269e 100644
--- a/clang/test/Driver/amdgpu-multilib.yaml
+++ b/clang/test/Driver/amdgpu-multilib.yaml
@@ -4,7 +4,7 @@
# RUN: %clang --multi-lib-config=%s -no-canonical-prefixes -x c %s -### -o /dev/null 2>&1 \
# RUN: --target=amdgcn-amd-amdhsa -mcpu=gfx1030 -fmultilib-flag=debug -nogpulib \
# RUN: | FileCheck --check-prefix=CHECK-DEBUG %s
-# CHECK-DEBUG: "-cc1" "-triple" "amdgcn-amd-amdhsa"
+# CHECK-DEBUG: "-cc1" "-triple" "amdgpu10.30-amd-amdhsa"
# CHECK-DEBUG: "-L{{[^"]*}}/debug"
# Default behavior where no variant path is prepended.
diff --git a/clang/test/Driver/amdgpu-openmp-gpu-max-threads-per-block.c b/clang/test/Driver/amdgpu-openmp-gpu-max-threads-per-block.c
index 85bf4fc75dca3..fbb0d81723efd 100644
--- a/clang/test/Driver/amdgpu-openmp-gpu-max-threads-per-block.c
+++ b/clang/test/Driver/amdgpu-openmp-gpu-max-threads-per-block.c
@@ -2,5 +2,5 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa \
// RUN: --offload-arch=gfx906 -nogpulib --gpu-max-threads-per-block=256 %s 2>&1 | FileCheck %s
-// CHECK: "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"
// CHECK-SAME: "--gpu-max-threads-per-block=256"
diff --git a/clang/test/Driver/amdgpu-openmp-sanitize-options.c b/clang/test/Driver/amdgpu-openmp-sanitize-options.c
index 5171963e48e37..9d2d4a27bf334 100644
--- a/clang/test/Driver/amdgpu-openmp-sanitize-options.c
+++ b/clang/test/Driver/amdgpu-openmp-sanitize-options.c
@@ -91,29 +91,29 @@
// RUN: | FileCheck -check-prefixes=ERRSANCOV %s
-// NOTSUPPORTED-DAG: warning: ignoring 'leak' in '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
-// INVALIDCOMBINATION1: warning: ignoring 'fuzzer' in '-fsanitize=address,fuzzer' option as it is not currently supported for target 'amdgcn-amd-amdhsa' [-Woption-ignored]
-// INVALIDCOMBINATION2: warning: ignoring 'fuzzer' in '-fsanitize=fuzzer,address' option as it is not currently supported for target 'amdgcn-amd-amdhsa' [-Woption-ignored]
+// NOTSUPPORTED-DAG: warning: ignoring 'leak' in '-fsanitize=leak' option as it is not currently supported for target 'amdgpu-amd-amdhsa'
+// INVALIDCOMBINATION1: warning: ignoring 'fuzzer' in '-fsanitize=address,fuzzer' option as it is not currently supported for target 'amdgpu-amd-amdhsa' [-Woption-ignored]
+// INVALIDCOMBINATION2: warning: ignoring 'fuzzer' in '-fsanitize=fuzzer,address' option as it is not currently supported for target 'amdgpu-amd-amdhsa' [-Woption-ignored]
// FAIL-DAG: error: cannot find ROCm device library for ABI version 5; provide its path via '--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to build without ROCm device library
// NOXNACK: warning: ignoring '-fsanitize=address' option for offload arch 'gfx908' as it is not currently supported there. Use it with an offload arch containing 'xnack+' instead
// XNACKNEG: warning: ignoring '-fsanitize=address' option for offload arch 'gfx908:xnack-' as it is not currently supported there. Use it with an offload arch containing 'xnack+' instead
-// HOSTSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address".* "--offload-targets=amdgcn-amd-amdhsa".* "-x" "c".*}}
-// HOSTSANCOMBINATION: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address,fuzzer,fuzzer-no-link".* "--offload-targets=amdgcn-amd-amdhsa".* "-x" "c".*}}
-// HOSTSANCOMBINATION2: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address,fuzzer,fuzzer-no-link,leak".* "--offload-targets=amdgcn-amd-amdhsa".* "-x" "c".*}}
+// HOSTSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address".* "--offload-targets=amdgpu-amd-amdhsa".* "-x" "c".*}}
+// HOSTSANCOMBINATION: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address,fuzzer,fuzzer-no-link".* "--offload-targets=amdgpu-amd-amdhsa".* "-x" "c".*}}
+// HOSTSANCOMBINATION2: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address,fuzzer,fuzzer-no-link,leak".* "--offload-targets=amdgpu-amd-amdhsa".* "-x" "c".*}}
-// GPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc" "-flto=full" "-flto-unit".* "-mlink-bitcode-file" "[^"]*asanrtl.bc".* "-mlink-builtin-bitcode" "[^"]*ockl.bc".* "-target-cpu" "(gfx908|gfx900|gfx1250|gfx1251)".* "-fopenmp".* "-fsanitize=address".* "-x" "c".*}}
-// NOGPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc" "-flto=full" "-flto-unit".* "-target-cpu" "(gfx908|gfx900)".* "-fopenmp".* "-x" "c".*}}
+// GPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgpu.+-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc" "-flto=full" "-flto-unit".* "-mlink-bitcode-file" "[^"]*asanrtl.bc".* "-mlink-builtin-bitcode" "[^"]*ockl.bc".* "-target-cpu" "(gfx908|gfx900|gfx1250|gfx1251)".* "-fopenmp".* "-fsanitize=address".* "-x" "c".*}}
+// NOGPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgpu.+-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc" "-flto=full" "-flto-unit".* "-target-cpu" "(gfx908|gfx900)".* "-fopenmp".* "-x" "c".*}}
-// SAN: {{"[^"]*llvm-offload-binary[^"]*" "-o".* "--image=file=.*.o,triple=amdgcn-amd-amdhsa,arch=(gfx908|gfx1250|gfx1251)(:xnack\-|:xnack\+)?,kind=openmp(,feature=(\-xnack|\+xnack))?"}}
-// SAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address".* "--offload-targets=amdgcn-amd-amdhsa".* "-x" "ir".*}}
+// SAN: {{"[^"]*llvm-offload-binary[^"]*" "-o".* "--image=file=.*.o,triple=amdgpu.*-amd-amdhsa,arch=(gfx908|gfx1250|gfx1251)(:xnack\-|:xnack\+)?,kind=openmp(,feature=(\-xnack|\+xnack))?"}}
+// SAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address".* "--offload-targets=amdgpu-amd-amdhsa".* "-x" "ir".*}}
// SAN: {{"[^"]*clang-linker-wrapper[^"]*".* "--host-triple=x86_64-unknown-linux-gnu".* "--linker-path=[^"]*".* "--whole-archive" "[^"]*(libclang_rt.asan_static.a|libclang_rt.asan_static-x86_64.a)".* "--whole-archive" "[^"]*(libclang_rt.asan.a|libclang_rt.asan-x86_64.a)".*}}
-// UNSUPPORTEDERROR: error: 'leak' in '-fsanitize=leak' option is not currently supported for target 'amdgcn-amd-amdhsa'
+// UNSUPPORTEDERROR: error: 'leak' in '-fsanitize=leak' option is not currently supported for target 'amdgpu-amd-amdhsa'
// XNACKERROR: error: '-fsanitize=address' option for offload arch 'gfx908:xnack-' is not currently supported there. Use it with an offload arch containing 'xnack+' instead
-// INVALIDCOMBINATIONERROR: error: 'fuzzer' in '-fsanitize=fuzzer,address' option is not currently supported for target 'amdgcn-amd-amdhsa'
+// INVALIDCOMBINATIONERROR: error: 'fuzzer' in '-fsanitize=fuzzer,address' option is not currently supported for target 'amdgpu-amd-amdhsa'
-// WARNSANCOV: warning: ignoring '-fsanitize-coverage=inline-bool-flag' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
-// ERRSANCOV: error: '-fsanitize-coverage-stack-depth-callback-min=42' option is not currently supported for target 'amdgcn-amd-amdhsa'
+// WARNSANCOV: warning: ignoring '-fsanitize-coverage=inline-bool-flag' option as it is not currently supported for target 'amdgpu-amd-amdhsa'
+// ERRSANCOV: error: '-fsanitize-coverage-stack-depth-callback-min=42' option is not currently supported for target 'amdgpu-amd-amdhsa'
diff --git a/clang/test/Driver/amdgpu-openmp-system-arch-fail.c b/clang/test/Driver/amdgpu-openmp-system-arch-fail.c
index 8973d66afbae4..78512cf45d1b5 100644
--- a/clang/test/Driver/amdgpu-openmp-system-arch-fail.c
+++ b/clang/test/Driver/amdgpu-openmp-system-arch-fail.c
@@ -13,9 +13,9 @@
// case when amdgpu_arch returns nothing or fails
// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -nogpulib --amdgpu-arch-tool=%t/amdgpu_arch_fail %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=NO-OUTPUT-ERROR
-// NO-OUTPUT-ERROR: error: cannot determine amdgcn architecture{{.*}}; consider passing it via '--offload-arch'
+// NO-OUTPUT-ERROR: error: cannot determine amdgpu architecture{{.*}}; consider passing it via '--offload-arch'
// case when amdgpu_arch does not return anything with successful execution
// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -nogpulib --amdgpu-arch-tool=%t/amdgpu_arch_empty %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=EMPTY-OUTPUT
-// EMPTY-OUTPUT: error: cannot determine amdgcn architecture: No AMD GPU detected in the system; consider passing it via '--offload-arch'
+// EMPTY-OUTPUT: error: cannot determine amdgpu architecture: No AMD GPU detected in the system; consider passing it via '--offload-arch'
diff --git a/clang/test/Driver/amdgpu-openmp-targets-triple-compat.c b/clang/test/Driver/amdgpu-openmp-targets-triple-compat.c
new file mode 100644
index 0000000000000..075ee1d2c6067
--- /dev/null
+++ b/clang/test/Driver/amdgpu-openmp-targets-triple-compat.c
@@ -0,0 +1,39 @@
+/// Check amdgpu triples with a subarch respect -Xopenmp-target
+// RUN: %clang -### -no-canonical-prefixes -nogpulib -fopenmp=libomp -fopenmp-targets=amdgpu9-amd-amdhsa -Xopenmp-target=amdgpu9-amd-amdhsa -ffinite-math-only %s 2>&1 \
+// RUN: | FileCheck -check-prefixes=CHECK,GFX9 %s
+
+// RUN: %clang -### -no-canonical-prefixes -nogpulib -fopenmp=libomp -fopenmp-targets=amdgpu9-amd-amdhsa -Xopenmp-target=amdgpu-amd-amdhsa -ffinite-math-only %s 2>&1 \
+// RUN: | FileCheck -check-prefixes=CHECK,GFX9 %s
+
+// RUN: %clang -### -no-canonical-prefixes -nogpulib -fopenmp=libomp -fopenmp-targets=amdgpu9.00-amd-amdhsa -Xopenmp-target=amdgpu9-amd-amdhsa -ffinite-math-only %s 2>&1 \
+// RUN: | FileCheck -check-prefixes=CHECK,GFX900 %s
+
+
+// Check the same, with -Xarch instead of -Xopenmp-target
+// RUN: %clang -### -no-canonical-prefixes -nogpulib -fopenmp=libomp -fopenmp-targets=amdgpu9-amd-amdhsa -Xarch_amdgpu9 -ffinite-math-only %s 2>&1 \
+// RUN: | FileCheck -check-prefixes=CHECK,GFX9 %s
+
+// RUN: %clang -### -no-canonical-prefixes -nogpulib -fopenmp=libomp -fopenmp-targets=amdgpu9-amd-amdhsa -Xarch_amdgpu -ffinite-math-only %s 2>&1 \
+// RUN: | FileCheck -check-prefixes=CHECK,GFX9 %s
+
+// RUN: %clang -### -no-canonical-prefixes -nogpulib -fopenmp=libomp -fopenmp-targets=amdgpu9.00-amd-amdhsa -Xarch_amdgpu9 -ffinite-math-only %s 2>&1 \
+// RUN: | FileCheck -check-prefixes=CHECK,GFX900 %s
+
+
+// GFX9: clang{{.*}} "-cc1" "-triple" "amdgpu9-amd-amdhsa"
+// GFX900: clang{{.*}} "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
+
+// CHECK-SAME: "-ffinite-math-only"
+// CHECK-SAME: "-fopenmp-is-target-device"
+
+/// ###########################################################################
+
+/// Check amdgpu triples with a subarch do not forward to an incompatible subarch
+// RUN: %clang -### -no-canonical-prefixes -nogpulib -fopenmp=libomp -fopenmp-targets=amdgpu9.00-amd-amdhsa -Xopenmp-target=amdgpu9.08-amd-amdhsa -ffinite-math-only %s 2>&1 \
+// RUN: | FileCheck -check-prefix=MISMATCH-SUBARCH %s
+
+// RUN: %clang -### -no-canonical-prefixes -nogpulib -fopenmp=libomp -fopenmp-targets=amdgpu10.1-amd-amdhsa -Xopenmp-target=amdgpu9.08-amd-amdhsa -ffinite-math-only %s 2>&1 \
+// RUN: | FileCheck -check-prefix=MISMATCH-SUBARCH %s
+
+// MISMATCH-SUBARCH-NOT: "-ffinite-math-only"
+
diff --git a/clang/test/Driver/amdgpu-openmp-toolchain.c b/clang/test/Driver/amdgpu-openmp-toolchain.c
index 49671710133ea..7a6f927d95e48 100644
--- a/clang/test/Driver/amdgpu-openmp-toolchain.c
+++ b/clang/test/Driver/amdgpu-openmp-toolchain.c
@@ -7,9 +7,9 @@
// verify the tools invocations
// CHECK: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-emit-llvm-bc"{{.*}}"-x" "c"
-// CHECK: "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-flto=full" "-flto-unit"{{.*}}"-target-cpu" "gfx906"
+// CHECK: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-flto=full" "-flto-unit"{{.*}}"-target-cpu" "gfx906"
// CHECK: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-emit-obj"
-// CHECK: clang-linker-wrapper{{.*}}"--device-compiler=amdgcn-amd-amdhsa=-flto=full"{{.*}} "-o" "a.out"
+// CHECK: clang-linker-wrapper{{.*}}"--device-compiler=amdgpu-amd-amdhsa=-flto=full"{{.*}} "-o" "a.out"
// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906 %s 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-PHASES %s
@@ -19,9 +19,9 @@
// CHECK-PHASES: 3: input, "[[INPUT]]", c, (device-openmp, gfx906)
// CHECK-PHASES: 4: preprocessor, {3}, cpp-output, (device-openmp, gfx906)
// CHECK-PHASES: 5: compiler, {4}, ir, (device-openmp, gfx906)
-// CHECK-PHASES: 6: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, "device-openmp (amdgcn-amd-amdhsa:gfx906)" {5}, ir
+// CHECK-PHASES: 6: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, "device-openmp (amdgpu-amd-amdhsa:gfx906)" {5}, ir
// CHECK-PHASES: 7: backend, {6}, lto-bc, (device-openmp, gfx906)
-// CHECK-PHASES: 8: offload, "device-openmp (amdgcn-amd-amdhsa:gfx906)" {7}, lto-bc
+// CHECK-PHASES: 8: offload, "device-openmp (amdgpu-amd-amdhsa:gfx906)" {7}, lto-bc
// CHECK-PHASES: 9: llvm-offload-binary, {8}, image, (device-openmp)
// CHECK-PHASES: 10: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, "device-openmp (x86_64-unknown-linux-gnu)" {9}, ir
// CHECK-PHASES: 11: backend, {10}, assembler, (host-openmp)
@@ -31,7 +31,7 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -ccc-print-bindings -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-BINDINGS
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -ccc-print-bindings -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa --offload-arch=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-BINDINGS
// CHECK-BINDINGS: "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HOST_BC:.+]]"
-// CHECK-BINDINGS: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[DEVICE_BC:.+]]"
+// CHECK-BINDINGS: "amdgpu8.03-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[DEVICE_BC:.+]]"
// CHECK-BINDINGS: "x86_64-unknown-linux-gnu" - "Offload::Packager", inputs: ["[[DEVICE_BC]]"], output: "[[BINARY:.+]]"
// CHECK-BINDINGS: "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[HOST_BC]]", "[[BINARY]]"], output: "[[HOST_OBJ:.+]]"
// CHECK-BINDINGS: "x86_64-unknown-linux-gnu" - "Offload::Linker", inputs: ["[[HOST_OBJ]]"], output: "a.out"
@@ -40,16 +40,16 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -ccc-print-bindings -save-temps -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa --offload-arch=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-BINDINGS-TEMPS
// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HOST_PP:.+]]"
// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[HOST_PP]]"], output: "[[HOST_BC:.+]]"
-// CHECK-BINDINGS-TEMPS: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[DEVICE_PP:.+]]"
-// CHECK-BINDINGS-TEMPS: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[DEVICE_PP]]", "[[HOST_BC]]"], output: "[[DEVICE_TEMP_BC:.+]]"
-// CHECK-BINDINGS-TEMPS: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[DEVICE_TEMP_BC]]"], output: "[[DEVICE_BC:.+]]"
+// CHECK-BINDINGS-TEMPS: "amdgpu8.03-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[DEVICE_PP:.+]]"
+// CHECK-BINDINGS-TEMPS: "amdgpu8.03-amd-amdhsa" - "clang", inputs: ["[[DEVICE_PP]]", "[[HOST_BC]]"], output: "[[DEVICE_TEMP_BC:.+]]"
+// CHECK-BINDINGS-TEMPS: "amdgpu8.03-amd-amdhsa" - "clang", inputs: ["[[DEVICE_TEMP_BC]]"], output: "[[DEVICE_BC:.+]]"
// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "Offload::Packager", inputs: ["[[DEVICE_BC]]"], output: "[[DEVICE_IMAGE:.+]]"
// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[HOST_BC]]", "[[DEVICE_IMAGE]]"], output: "[[HOST_ASM:.+]]"
// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang::as", inputs: ["[[HOST_ASM]]"], output: "[[HOST_OBJ:.+]]"
// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "Offload::Linker", inputs: ["[[HOST_OBJ]]"], output: "a.out"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -emit-llvm -S -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-EMIT-LLVM-IR
-// CHECK-EMIT-LLVM-IR: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-emit-llvm"
+// CHECK-EMIT-LLVM-IR: "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"{{.*}}"-emit-llvm"
// RUN: %clang -### -target x86_64-pc-linux-gnu -fopenmp --offload-arch=gfx803 \
// RUN: --no-offloadlib --offloadlib --rocm-device-lib-path=%S/Inputs/rocm/amdgcn/bitcode %s 2>&1 | \
@@ -63,7 +63,7 @@
// RUN: %clang -### -target x86_64-pc-linux-gnu -fopenmp --offload-arch=gfx90a:sramecc-:xnack+ \
// RUN: -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-TARGET-ID
-// CHECK-TARGET-ID: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a" "-mxnack" "-mno-sramecc"
+// CHECK-TARGET-ID: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a" "-mxnack" "-mno-sramecc"
// CHECK-TARGET-ID: llvm-offload-binary{{.*}}arch=gfx90a:sramecc-:xnack+,kind=openmp
// RUN: not %clang -### -target x86_64-pc-linux-gnu -fopenmp --offload-arch=gfx90a,gfx90a:xnack+ \
@@ -72,11 +72,11 @@
// RUN: %clang -### -target x86_64-pc-linux-gnu -fopenmp --offload-arch=gfx90a \
// RUN: -O3 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-OPT
-// CHECK-OPT: clang-linker-wrapper{{.*}}"--device-compiler=amdgcn-amd-amdhsa=-O3"
+// CHECK-OPT: clang-linker-wrapper{{.*}}"--device-compiler=amdgpu-amd-amdhsa=-O3"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -emit-llvm -S -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-WARN-ATOMIC
// CHECK-WARN-ATOMIC-NOT: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-Werror=atomic-alignment"
-// CHECK-WARN-ATOMIC: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-Werror=atomic-alignment"
+// CHECK-WARN-ATOMIC: "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"{{.*}}"-Werror=atomic-alignment"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -emit-llvm -S -fopenmp --offload-arch=gfx803 \
// RUN: -stdlib=libc++ -nogpulib %s 2>&1 | FileCheck %s --check-prefix=LIBCXX
@@ -84,4 +84,4 @@
// RUN: %clang -### -target x86_64-pc-linux-gnu -nogpulib -fopenmp --offload-arch=gfx90a \
// RUN: -ftime-report %s 2>&1 | FileCheck %s --check-prefix=CHECK-TIME-REPORT
-// CHECK-TIME-REPORT: clang-linker-wrapper{{.*}}"--device-compiler=amdgcn-amd-amdhsa=-ftime-report"
+// CHECK-TIME-REPORT: clang-linker-wrapper{{.*}}"--device-compiler=amdgpu-amd-amdhsa=-ftime-report"
diff --git a/clang/test/Driver/amdgpu-subarch-diag.hip b/clang/test/Driver/amdgpu-subarch-diag.hip
new file mode 100644
index 0000000000000..e83cd619bdff7
--- /dev/null
+++ b/clang/test/Driver/amdgpu-subarch-diag.hip
@@ -0,0 +1,13 @@
+// RUN: not %clang -### --target=x86_64-pc-linux-gnu --offload-targets=amdgpu9-amd-amdhsa --offload-arch=gfx1030 -nogpulib -nogpuinc -c %s 2>&1 | FileCheck -check-prefix=ERR0 %s
+
+// RUN: not %clang -### --target=x86_64-pc-linux-gnu --offload-targets=amdgpu9.00-amd-amdhsa --offload-arch=gfx902 -nogpulib -nogpuinc -c %s 2>&1 | FileCheck -check-prefix=ERR1 %s
+
+// RUN: %clang -### --target=x86_64-pc-linux-gnu --offload-targets=amdgpu9-amd-amdhsa --offload-arch=gfx900 -nogpulib -nogpuinc -c %s 2>&1 | FileCheck --allow-empty -check-prefix=NO-ERR %s
+// RUN: %clang -### --target=x86_64-pc-linux-gnu --offload-targets=amdgpu9-amd-amdhsa -nogpulib -nogpuinc -c %s 2>&1 | FileCheck --allow-empty -check-prefix=NO-ERR %s
+// RUN: %clang -### --target=x86_64-pc-linux-gnu --offload-targets=amdgpu9-amd-amdhsa --offload-arch=gfx902 -nogpulib -nogpuinc -c %s 2>&1 | FileCheck --allow-empty -check-prefix=NO-ERR %s
+
+
+// ERR0: error: the target architecture 'gfx1030' is not supported by the target 'amdgpu9'
+// ERR1: error: the target architecture 'gfx902' is not supported by the target 'amdgpu9.00'
+
+// NO-ERR: {{^$}}
diff --git a/clang/test/Driver/amdgpu-subarch-library-paths.cl b/clang/test/Driver/amdgpu-subarch-library-paths.cl
new file mode 100644
index 0000000000000..4d505cd5712db
--- /dev/null
+++ b/clang/test/Driver/amdgpu-subarch-library-paths.cl
@@ -0,0 +1,25 @@
+// Test that the AMDGPU toolchain emits a resource-directory -L for the
+// arch-specific library path when using a subarch triple. The current triple's
+// directory is searched first, then the subarch-stripped "amdgpu" and legacy
+// "amdgcn" directories.
+
+// The directory named for the current triple is searched.
+// RUN: %clang -### --target=amdgpu10.30-amd-amdhsa -nogpulib \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_triples %s 2>&1 \
+// RUN: | FileCheck -check-prefix=CURRENT-TRIPLE %s
+
+// A subarch triple falls back to the subarch-stripped "amdgpu" directory.
+// RUN: %clang -### --target=amdgpu9.0a-amd-amdhsa -nogpulib \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_amdgpu_per_target_subdir %s 2>&1 \
+// RUN: | FileCheck -check-prefix=FALLBACK-AMDGPU %s
+
+// A subarch triple falls back to the legacy "amdgcn" directory.
+// RUN: %clang -### --target=amdgpu9.0a-amd-amdhsa -nogpulib \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_legacy_triple %s 2>&1 \
+// RUN: | FileCheck -check-prefix=FALLBACK-AMDGCN %s
+
+// CURRENT-TRIPLE: "-L{{.*}}resource_dir_amdgpu_triples{{[/\\]+}}lib{{[/\\]+}}amdgpu10.30-amd-amdhsa"
+
+// FALLBACK-AMDGPU: "-L{{.*}}resource_dir_with_amdgpu_per_target_subdir{{[/\\]+}}lib{{[/\\]+}}amdgpu-amd-amdhsa"
+
+// FALLBACK-AMDGCN: "-L{{.*}}resource_dir_amdgpu_legacy_triple{{[/\\]+}}lib{{[/\\]+}}amdgcn-amd-amdhsa"
diff --git a/clang/test/Driver/amdgpu-subarch-march-diag.cl b/clang/test/Driver/amdgpu-subarch-march-diag.cl
new file mode 100644
index 0000000000000..f9adf321a06d2
--- /dev/null
+++ b/clang/test/Driver/amdgpu-subarch-march-diag.cl
@@ -0,0 +1,12 @@
+// Check that -mcpu with a mismatched subarch from the triple are rejected
+// RUN: not %clang -### --target=amdgpu7-amd-amdhsa -mcpu=gfx600 -nogpulib -c %s 2>&1 | FileCheck -check-prefix=ERR0 %s
+// RUN: not %clang -### --target=amdgpu6.00-amd-amdhsa -mcpu=gfx601 -nogpulib -c %s 2>&1 | FileCheck -check-prefix=ERR1 %s
+// RUN: not %clang -### --target=amdgpu11-amd-amdhsa -mcpu=gfx900 -nogpulib -c %s 2>&1 | FileCheck -check-prefix=ERR2 %s
+// RUN: not %clang -### --target=amdgpu11-amd-amdhsa -mcpu=gfx900:xnack+ -nogpulib -c %s 2>&1 | FileCheck -check-prefix=ERR2 %s
+// RUN: not %clang -### --target=amdgpu12.50-amd-amdhsa -mcpu=gfx900 -nogpulib -c %s 2>&1 | FileCheck -check-prefix=ERR3 %s
+// RUN: not %clang -### --target=amdgpu12.50-amd-amdhsa -march=gfx900 -nogpulib -c %s 2>&1 | FileCheck -check-prefix=ERR3 %s
+
+// ERR0: error: the target architecture 'gfx600' is not supported by the target 'amdgpu7'
+// ERR1: error: the target architecture 'gfx601' is not supported by the target 'amdgpu6.00'
+// ERR2: error: the target architecture 'gfx900' is not supported by the target 'amdgpu11'
+// ERR3: error: the target architecture 'gfx900' is not supported by the target 'amdgpu12.50'
diff --git a/clang/test/Driver/amdgpu-subarch-resource-dir.cl b/clang/test/Driver/amdgpu-subarch-resource-dir.cl
new file mode 100644
index 0000000000000..2f5c57aad55da
--- /dev/null
+++ b/clang/test/Driver/amdgpu-subarch-resource-dir.cl
@@ -0,0 +1,42 @@
+// RUN: %clang -### --target=amdgpu10.30-amd-amdhsa-llvm \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_subarch_triples %s 2>&1 \
+// RUN: | FileCheck -check-prefix=TOPLEVEL-SUBARCH %s
+
+
+// RUN: %clang -### --target=amdgpu9.0a-amd-amdhsa-llvm -mcpu=gfx90a \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_triples %s 2>&1 \
+// RUN: | FileCheck -check-prefix=CPU_NAME_SUBDIR %s
+
+// Test that with a subarch triple, we can fall back to finding libraries
+// in the generic (no-subarch) directory.
+// RUN: %clang -### --target=amdgpu9.0a-amd-amdhsa-llvm \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_triples %s 2>&1 \
+// RUN: | FileCheck -check-prefix=FALLBACK-NO-SUBARCH %s
+
+// Test that with a specific subarch triple, we can fall back to finding
+// libraries in a compatible major version directory (e.g., amdgpu9.00 -> amdgpu9).
+// RUN: %clang -### --target=amdgpu9.00-amd-amdhsa-llvm \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_major_version %s 2>&1 \
+// RUN: | FileCheck -check-prefix=FALLBACK-MAJOR-VERSION %s
+
+// RUN: %clang -### --target=amdgpu9-amd-amdhsa-llvm \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_major_version %s 2>&1 \
+// RUN: | FileCheck -check-prefix=DIRECT-MAJOR-VERSION %s
+
+// gfx90a is its own major subarch, so it does not fall back to the amdgpu9
+// directory and no library is found.
+// RUN: not %clang -### --target=amdgpu9.0a-amd-amdhsa-llvm \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_major_version %s 2>&1 \
+// RUN: | FileCheck -check-prefix=NO-FALLBACK-MAJOR-VERSION %s
+
+// TOPLEVEL-SUBARCH: "-cc1" "-triple" "amdgpu10.30-amd-amdhsa-llvm" "{{.*}}resource_dir_amdgpu_subarch_triples{{[/\\]+}}lib{{[/\\]+}}amdgpu10.30-amd-amdhsa-llvm{{[/\\]+}}libclc.bc"
+
+// CPU_NAME_SUBDIR: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa-llvm" "{{.*}}resource_dir_amdgpu_triples{{[/\\]+}}lib{{[/\\]+}}amdgpu-amd-amdhsa-llvm{{[/\\]+}}gfx90a{{[/\\]+}}libclc.bc"
+
+// FALLBACK-NO-SUBARCH: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa-llvm" "{{.*}}resource_dir_amdgpu_triples{{[/\\]+}}lib{{[/\\]+}}amdgpu-amd-amdhsa-llvm{{[/\\]+}}libclc.bc"
+
+// FALLBACK-MAJOR-VERSION: "-cc1" "-triple" "amdgpu9.00-amd-amdhsa-llvm" "{{.*}}resource_dir_amdgpu_major_version{{[/\\]+}}lib{{[/\\]+}}amdgpu9-amd-amdhsa-llvm{{[/\\]+}}libclc.bc"
+
+// DIRECT-MAJOR-VERSION: "-cc1" "-triple" "amdgpu9-amd-amdhsa-llvm" "{{.*}}resource_dir_amdgpu_major_version{{[/\\]+}}lib{{[/\\]+}}amdgpu9-amd-amdhsa-llvm{{[/\\]+}}libclc.bc"
+
+// NO-FALLBACK-MAJOR-VERSION: no libclc library 'libclc.bc' found in the clang resource directory
diff --git a/clang/test/Driver/amdgpu-unwind.cl b/clang/test/Driver/amdgpu-unwind.cl
index 881782028f14f..52867b0c80ed6 100644
--- a/clang/test/Driver/amdgpu-unwind.cl
+++ b/clang/test/Driver/amdgpu-unwind.cl
@@ -21,6 +21,6 @@
// RUN: %clang -### -fopenmp=libomp --offload-arch=gfx90a --offload-device-only --no-offloadlib -c -emit-llvm -fno-asynchronous-unwind-tables -nogpuinc %s 2>&1 | FileCheck -check-prefix=NO-TABLES %s
-// ASYNC-TABLES: "-triple" "amdgcn-amd-amdhsa" {{.*}} "-funwind-tables=2"
-// SYNC-TABLES: "-triple" "amdgcn-amd-amdhsa" {{.*}} "-funwind-tables=1"
-// NO-TABLES-NOT: "-triple" "amdgcn-amd-amdhsa" {{.*}} "-funwind-tables={{.*}}"
+// ASYNC-TABLES: "-triple" "amdgpu{{(9.0a)?}}-amd-amdhsa" {{.*}} "-funwind-tables=2"
+// SYNC-TABLES: "-triple" "amdgpu{{(9.0a)?}}-amd-amdhsa" {{.*}} "-funwind-tables=1"
+// NO-TABLES-NOT: "-triple" "amdgpu{{.*}}-amd-amdhsa" {{.*}} "-funwind-tables={{.*}}"
diff --git a/clang/test/Driver/amdgpu-validate-sanitize.cl b/clang/test/Driver/amdgpu-validate-sanitize.cl
index 907ad201b15b3..91131b8cf8ddb 100644
--- a/clang/test/Driver/amdgpu-validate-sanitize.cl
+++ b/clang/test/Driver/amdgpu-validate-sanitize.cl
@@ -28,7 +28,7 @@
// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \
// RUN: %s 2>&1 | FileCheck -check-prefix=ERR %s
-// CHECK: "-triple" "amdgcn-amd-amdhsa"
+// CHECK: "-triple" "amdgpu{{[0-9.]+}}-amd-amdhsa"
// CHECK-SAME: "-mlink-bitcode-file" "{{.*}}asanrtl.bc"
// CHECK-SAME: "-fsanitize=address"
diff --git a/clang/test/Driver/amdgpu-xnack-sramecc-flags.c b/clang/test/Driver/amdgpu-xnack-sramecc-flags.c
index 58b3c2c6ba612..3fcc459124abd 100644
--- a/clang/test/Driver/amdgpu-xnack-sramecc-flags.c
+++ b/clang/test/Driver/amdgpu-xnack-sramecc-flags.c
@@ -74,7 +74,7 @@
// Test offload with target ID features synthesized from --offload-arch
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a:xnack+:sramecc- \
// RUN: -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-TARGETID %s
-// OMP-TARGETID: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-TARGETID: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
// OMP-TARGETID-SAME: "-mxnack"
// OMP-TARGETID-SAME: "-mno-sramecc"
@@ -82,7 +82,7 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa \
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx908:xnack-:sramecc+ \
// RUN: -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-MARCH %s
-// OMP-MARCH: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx908"
+// OMP-MARCH: "-cc1" "-triple" "amdgpu9.08-amd-amdhsa" {{.*}} "-target-cpu" "gfx908"
// OMP-MARCH-SAME: "-mno-xnack"
// OMP-MARCH-SAME: "-msramecc"
@@ -92,7 +92,7 @@
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -mxnack \
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -mno-sramecc \
// RUN: -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-FLAGS %s
-// OMP-FLAGS: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-FLAGS: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
// OMP-FLAGS-SAME: "-mxnack"
// OMP-FLAGS-SAME: "-mno-sramecc"
@@ -101,7 +101,7 @@
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a:xnack- \
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -mxnack \
// RUN: -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-TARGETID-WINS %s
-// OMP-TARGETID-WINS: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-TARGETID-WINS: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
// OMP-TARGETID-WINS-SAME: "-mno-xnack"
// Test offload using base architecture gfx90a with -mxnack flag for xnack+
@@ -109,7 +109,7 @@
// RUN: --offload-arch=gfx90a \
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -mxnack \
// RUN: -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-GFX90A-XNACK-ON %s
-// OMP-GFX90A-XNACK-ON: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-GFX90A-XNACK-ON: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
// OMP-GFX90A-XNACK-ON-SAME: "-mxnack"
// Test offload using base architecture gfx90a with -mno-xnack flag for xnack-
@@ -117,7 +117,7 @@
// RUN: --offload-arch=gfx90a \
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -mno-xnack \
// RUN: -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-GFX90A-XNACK-OFF %s
-// OMP-GFX90A-XNACK-OFF: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-GFX90A-XNACK-OFF: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
// OMP-GFX90A-XNACK-OFF-SAME: "-mno-xnack"
// Test offload with multiple device compilations for same base architecture.
@@ -126,9 +126,9 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp \
// RUN: --offload-arch=gfx90a:xnack+ --offload-arch=gfx90a:xnack- -mxnack \
// RUN: -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-MULTI-XNACK %s
-// OMP-MULTI-XNACK: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-MULTI-XNACK: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
// OMP-MULTI-XNACK-SAME: "-mxnack"
-// OMP-MULTI-XNACK: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-MULTI-XNACK: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
// OMP-MULTI-XNACK-SAME: "-mno-xnack"
// Test that -Xopenmp-target flags apply to all targets with matching triple.
@@ -138,9 +138,9 @@
// RUN: --offload-arch=gfx906 --offload-arch=gfx90a \
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -mxnack \
// RUN: -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-MULTI-ARCH %s
-// OMP-MULTI-ARCH: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx906"
+// OMP-MULTI-ARCH: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-target-cpu" "gfx906"
// OMP-MULTI-ARCH-SAME: "-mxnack"
-// OMP-MULTI-ARCH: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-MULTI-ARCH: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
// OMP-MULTI-ARCH-SAME: "-mxnack"
// Test that top-level -mxnack flags (not specified to the device are ignored).
diff --git a/clang/test/Driver/atomic-options.hip b/clang/test/Driver/atomic-options.hip
index e44dac308a35f..7afbdc3424e86 100644
--- a/clang/test/Driver/atomic-options.hip
+++ b/clang/test/Driver/atomic-options.hip
@@ -2,5 +2,5 @@
// RUN: -fatomic-fine-grained-memory -fno-atomic-remote-memory -fatomic-ignore-denormal-mode \
// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-VALID
-// CHECK-VALID: "-cc1" {{.*}}"-triple" "amdgcn-amd-amdhsa" {{.*}}"-fatomic-fine-grained-memory" "-fatomic-ignore-denormal-mode"
+// CHECK-VALID: "-cc1" {{.*}}"-triple" "amdgpu9.06-amd-amdhsa" {{.*}}"-fatomic-fine-grained-memory" "-fatomic-ignore-denormal-mode"
// CHECK-VALID: "-cc1" {{.*}}"-triple" {{.*}}"-fatomic-fine-grained-memory" "-fatomic-ignore-denormal-mode"
diff --git a/clang/test/Driver/cl-denorms-are-zero.cl b/clang/test/Driver/cl-denorms-are-zero.cl
index 85c268436bea3..953d9d3e33b9b 100644
--- a/clang/test/Driver/cl-denorms-are-zero.cl
+++ b/clang/test/Driver/cl-denorms-are-zero.cl
@@ -18,7 +18,7 @@
// RUN: %clang -### -target amdgcn--amdhsa -nogpulib -c %s 2>&1 | FileCheck -check-prefixes=AMDGCN,AMDGCN-DENORM %s
// RUN: %clang -### -cl-denorms-are-zero -o - -target amdgcn--amdhsa -nogpulib -c %s 2>&1 | FileCheck -check-prefixes=AMDGCN,AMDGCN-FLUSH %s
-// AMDGCN: "-triple" "amdgcn-unknown-amdhsa"
+// AMDGCN: "-triple" "amdgpu{{([0-9].)*}}-unknown-amdhsa"
// AMDGCN-FLUSH: "-fdenormal-fp-math-f32=preserve-sign,preserve-sign"
// This should be omitted and default to ieee
diff --git a/clang/test/Driver/cl-offload.cu b/clang/test/Driver/cl-offload.cu
index 8f1200f173359..59249b91db621 100644
--- a/clang/test/Driver/cl-offload.cu
+++ b/clang/test/Driver/cl-offload.cu
@@ -18,9 +18,9 @@
// CUDA-SAME: "-Weverything"
// CUDA: link
-// HIP: "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-pc-windows-msvc"
+// HIP: "-cc1" "-triple" "amdgpu10.10-amd-amdhsa" "-aux-triple" "x86_64-pc-windows-msvc"
// HIP-SAME: "-Weverything"
-// HIP: "-cc1" "-triple" "x86_64-pc-windows-msvc{{.*}}" "-aux-triple" "amdgcn-amd-amdhsa"
+// HIP: "-cc1" "-triple" "x86_64-pc-windows-msvc{{.*}}" "-aux-triple" "amdgpu-amd-amdhsa"
// HIP-SAME: "-Weverything"
// HIP: {{link.* "amdhip64.lib"}}
diff --git a/clang/test/Driver/ftime-trace-offload.cpp b/clang/test/Driver/ftime-trace-offload.cpp
index 2305d7bf4e04d..a7c26ce923774 100644
--- a/clang/test/Driver/ftime-trace-offload.cpp
+++ b/clang/test/Driver/ftime-trace-offload.cpp
@@ -5,8 +5,8 @@
// RUN: %clang -### -ftime-trace -ftime-trace-granularity=0 -x hip d/a.cpp --offload-arch=gfx906 --offload-arch=gfx90a \
// RUN: -nogpulib -nogpuinc -c -o e/a.o --target=x86_64-linux-gnu 2>&1 \
// RUN: | FileCheck %s --check-prefix=HIP
-// HIP: -cc1{{.*}} "-triple" "amdgcn-amd-amdhsa"{{.*}} "-ftime-trace=e{{/|\\\\}}a-hip-amdgcn-amd-amdhsa-gfx906.json"
-// HIP: -cc1{{.*}} "-triple" "amdgcn-amd-amdhsa"{{.*}} "-ftime-trace=e{{/|\\\\}}a-hip-amdgcn-amd-amdhsa-gfx90a.json"
+// HIP: -cc1{{.*}} "-triple" "amdgpu9.06-amd-amdhsa"{{.*}} "-ftime-trace=e{{/|\\\\}}a-hip-amdgpu9.06-amd-amdhsa-gfx906.json"
+// HIP: -cc1{{.*}} "-triple" "amdgpu9.0a-amd-amdhsa"{{.*}} "-ftime-trace=e{{/|\\\\}}a-hip-amdgpu9.0a-amd-amdhsa-gfx90a.json"
// HIP: -cc1{{.*}} "-triple" "x86_64{{.*}}"{{.*}} "-ftime-trace=e{{/|\\\\}}a.json"
/// Test HIP offloading with new driver: same output as above.
@@ -18,14 +18,14 @@
// RUN: %clang -### -ftime-trace=f -ftime-trace-granularity=0 -x hip d/a.cpp --offload-arch=gfx906 \
// RUN: -nogpulib -nogpuinc -c -o e/a.o --target=x86_64-linux-gnu 2>&1 \
// RUN: | FileCheck %s --check-prefix=HIP-DIR
-// HIP-DIR: -cc1{{.*}} "-triple" "amdgcn-amd-amdhsa"{{.*}} "-ftime-trace=f{{/|\\\\}}a-hip-amdgcn-amd-amdhsa-gfx906.json"
+// HIP-DIR: -cc1{{.*}} "-triple" "amdgpu9.06-amd-amdhsa"{{.*}} "-ftime-trace=f{{/|\\\\}}a-hip-amdgpu9.06-amd-amdhsa-gfx906.json"
// HIP-DIR: -cc1{{.*}} "-triple" "x86_64{{.*}}"{{.*}} "-ftime-trace=f{{/|\\\\}}a.json"
/// Test HIP offloading with --save-temps: both host and device get unique trace files.
// RUN: %clang -### -ftime-trace -ftime-trace-granularity=0 -x hip d/a.cpp --offload-arch=gfx906 \
// RUN: -nogpulib -nogpuinc -c -o e/a.o --target=x86_64-linux-gnu --save-temps 2>&1 \
// RUN: | FileCheck %s --check-prefix=HIP-SAVE-TEMPS
-// HIP-SAVE-TEMPS: -cc1{{.*}} "-triple" "amdgcn-amd-amdhsa"{{.*}} "-ftime-trace=e{{/|\\\\}}a-hip-amdgcn-amd-amdhsa-gfx906.json"
+// HIP-SAVE-TEMPS: -cc1{{.*}} "-triple" "amdgpu9.06-amd-amdhsa"{{.*}} "-ftime-trace=e{{/|\\\\}}a-hip-amdgpu9.06-amd-amdhsa-gfx906.json"
// HIP-SAVE-TEMPS: -cc1{{.*}} "-triple" "x86_64{{.*}}"{{.*}} "-ftime-trace=e{{/|\\\\}}a-host-x86_64-unknown-linux-gnu.json"
/// Test CUDA offloading: -ftime-trace should generate traces for both host and device.
diff --git a/clang/test/Driver/gpu-exceptions.cpp b/clang/test/Driver/gpu-exceptions.cpp
index 08965bd82561d..af8d1e313e51f 100644
--- a/clang/test/Driver/gpu-exceptions.cpp
+++ b/clang/test/Driver/gpu-exceptions.cpp
@@ -20,7 +20,7 @@
// EXC: "-fcxx-exceptions"
// EXC: "-fexceptions"
-// OPENMP: "-cc1"{{.*}}"-triple" "amdgcn-amd-amdhsa"
+// OPENMP: "-cc1"{{.*}}"-triple" "amdgpu9.0a-amd-amdhsa"
// OPENMP-SAME: "-fcxx-exceptions"
int main() { return 0; }
diff --git a/clang/test/Driver/gpu-libc.c b/clang/test/Driver/gpu-libc.c
index 88f346f32e0b8..733cee2c5b567 100644
--- a/clang/test/Driver/gpu-libc.c
+++ b/clang/test/Driver/gpu-libc.c
@@ -17,7 +17,7 @@
// RUN: %clang -### -fopenmp=libomp --target=x86_64-unknown-linux-gnu \
// RUN: --offload-arch=gfx908 --rocm-path=%S/Inputs/rocm --sysroot=%S/Inputs/basic_gpu_tree \
// RUN: -ccc-install-dir %S/Inputs/basic_gpu_tree/bin %s 2>&1 | FileCheck %s --check-prefix=OPENMP-AMDGPU
-// OPENMP-AMDGPU: clang-linker-wrapper{{.*}}"--device-linker=amdgcn-amd-amdhsa=-lc"
+// OPENMP-AMDGPU: clang-linker-wrapper{{.*}}"--device-linker=amdgpu-amd-amdhsa=-lc"
// RUN: %clang -### -fopenmp=libomp --target=x86_64-unknown-linux-gnu -foffload-lto \
// RUN: --offload-arch=sm_52 --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda --sysroot=%S/Inputs/basic_gpu_tree \
// RUN: -ccc-install-dir %S/Inputs/basic_gpu_tree/bin %s 2>&1 | FileCheck %s --check-prefix=OPENMP-NVPTX
diff --git a/clang/test/Driver/hip-autolink.hip b/clang/test/Driver/hip-autolink.hip
index cce3977375d2e..272bf76e27e33 100644
--- a/clang/test/Driver/hip-autolink.hip
+++ b/clang/test/Driver/hip-autolink.hip
@@ -3,7 +3,7 @@
// RUN: %clang --target=i386-pc-windows-msvc --cuda-gpu-arch=gfx906 -nogpulib -nogpuinc \
// RUN: --cuda-host-only %s -### 2>&1 | FileCheck --check-prefix=HOST %s
-// DEV: "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// DEV: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"
// DEV-SAME: "-fno-autolink"
// HOST: "-cc1" "-triple" "i386-pc-windows-msvc{{.*}}"
diff --git a/clang/test/Driver/hip-binding.hip b/clang/test/Driver/hip-binding.hip
index b0839021aa1d9..e60e02014466c 100644
--- a/clang/test/Driver/hip-binding.hip
+++ b/clang/test/Driver/hip-binding.hip
@@ -4,26 +4,26 @@
// RUN: %clang -ccc-print-bindings --target=x86_64-linux-gnu --offload-new-driver \
// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 %s \
// RUN: --no-offload-new-driver -c 2>&1 | FileCheck -check-prefix=NRDCS %s
-// NRDCS: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[IN:.*hip-binding.hip]]"], output: "[[OBJ1:.*o]]"
-// NRDCS: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[OBJ1]]"], output: "[[IMG1:.*]]"
-// NRDCS: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[IN:.*hip-binding.hip]]"], output: "[[OBJ2:.*o]]"
-// NRDCS: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[OBJ2]]"], output: "[[IMG2:.*]]"
-// NRDCS: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[IMG1]]", "[[IMG2]]"], output: "[[FATBIN:.*]]"
+// NRDCS: # "amdgpu8.03-amd-amdhsa" - "clang", inputs: ["[[IN:.*hip-binding.hip]]"], output: "[[OBJ1:.*o]]"
+// NRDCS: # "amdgpu8.03-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[OBJ1]]"], output: "[[IMG1:.*]]"
+// NRDCS: # "amdgpu9.00-amd-amdhsa" - "clang", inputs: ["[[IN:.*hip-binding.hip]]"], output: "[[OBJ2:.*o]]"
+// NRDCS: # "amdgpu9.00-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[OBJ2]]"], output: "[[IMG2:.*]]"
+// NRDCS: # "amdgpu-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[IMG1]]", "[[IMG2]]"], output: "[[FATBIN:.*]]"
// NRDCS: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[IN]]", "[[FATBIN]]"], output: "{{.*}}"
// RUN: %clang -ccc-print-bindings --target=x86_64-linux-gnu \
// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 %s \
// RUN: --no-offload-new-driver -c -fgpu-rdc 2>&1 | FileCheck -check-prefix=RDCS %s
-// RDCS: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[IN:.*hip-binding.hip]]"], output: "[[OBJ1:.*o]]"
-// RDCS: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[IN:.*hip-binding.hip]]"], output: "[[OBJ2:.*o]]"
+// RDCS: # "amdgpu8.03-amd-amdhsa" - "clang", inputs: ["[[IN:.*hip-binding.hip]]"], output: "[[OBJ1:.*o]]"
+// RDCS: # "amdgpu9.00-amd-amdhsa" - "clang", inputs: ["[[IN:.*hip-binding.hip]]"], output: "[[OBJ2:.*o]]"
// RDCS: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[IN]]"], output: "[[HOSTOBJ:.*o]]"
// RDCS: # "x86_64-unknown-linux-gnu" - "offload bundler", inputs: ["[[OBJ1]]", "[[OBJ2]]", "[[HOSTOBJ]]"], output: "{{.*}}"
// RUN: %clang -ccc-print-bindings --target=x86_64-linux-gnu --offload-new-driver \
// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 %s \
// RUN: -c -fgpu-rdc 2>&1 | FileCheck -check-prefix=RDCS-NEW %s
-// RDCS-NEW: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIP803:.*o]]"
-// RDCS-NEW: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[HIP900:.*o]]"
+// RDCS-NEW: # "amdgpu8.03-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIP803:.*o]]"
+// RDCS-NEW: # "amdgpu9.00-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[HIP900:.*o]]"
// RDCS-NEW: # "x86_64-unknown-linux-gnu" - "Offload::Packager", inputs: ["[[HIP803]]", "[[HIP900]]"], output: "[[HIPFB:.+]]"
// RDCS-NEW: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[INPUT]]", "[[HIPFB]]"], output: "{{.*}}"
@@ -33,12 +33,12 @@
// RUN: 2>&1 | FileCheck %s
// CHECK: # "x86_64-unknown-linux-gnu" - "offload bundler", inputs: ["[[IN:.*o]]"], outputs: ["[[HOSTOBJ:.*o]]", "{{.*o}}", "{{.*o}}"]
-// CHECK: # "amdgcn-amd-amdhsa" - "offload bundler", inputs: ["[[IN]]"], outputs: ["{{.*o}}", "[[DOBJ1:.*o]]", "[[DOBJ2:.*o]]"]
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ1]]"], output: "[[IMG1:.*out]]"
+// CHECK: # "amdgpu8.03-amd-amdhsa" - "offload bundler", inputs: ["[[IN]]"], outputs: ["{{.*o}}", "[[DOBJ1:.*o]]", "[[DOBJ2:.*o]]"]
+// CHECK: # "amdgpu8.03-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ1]]"], output: "[[IMG1:.*out]]"
// CHECK-NOT: offload bundler
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ2]]"], output: "[[IMG2:.*out]]"
+// CHECK: # "amdgpu9.00-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ2]]"], output: "[[IMG2:.*out]]"
// CHECK-NOT: offload bundler
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[IMG1]]", "[[IMG2]]"], output: "[[FATBINOBJ:.*o]]"
+// CHECK: # "amdgpu-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[IMG1]]", "[[IMG2]]"], output: "[[FATBINOBJ:.*o]]"
// CHECK-NOT: offload bundler
// CHECK: # "x86_64-unknown-linux-gnu" - "GNU::Linker", inputs: ["[[HOSTOBJ]]", "[[FATBINOBJ]]"], output: "a.out"
@@ -56,11 +56,11 @@
// RUN: %clang -### --target=x86_64-linux-gnu --offload-new-driver -ccc-print-bindings -nogpulib -nogpuinc \
// RUN: --offload-arch=gfx90a --offload-arch=gfx908 --offload-device-only -c %s 2>&1 \
// RUN: | FileCheck -check-prefix=MULTI-D-ONLY %s
-// MULTI-D-ONLY: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[GFX908:.+]]"
-// MULTI-D-ONLY-NEXT: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908]]"], output: "[[GFX908_OUT:.+]]"
-// MULTI-D-ONLY-NEXT: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[GFX90a:.+]]"
-// MULTI-D-ONLY-NEXT: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX90a]]"], output: "[[GFX90a_OUT:.+]]"
-// MULTI-D-ONLY-NEXT: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908_OUT]]", "[[GFX90a_OUT]]"], output: "{{.+}}"
+// MULTI-D-ONLY: # "amdgpu9.08-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[GFX908:.+]]"
+// MULTI-D-ONLY-NEXT: # "amdgpu9.08-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908]]"], output: "[[GFX908_OUT:.+]]"
+// MULTI-D-ONLY-NEXT: # "amdgpu9.0a-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[GFX90a:.+]]"
+// MULTI-D-ONLY-NEXT: # "amdgpu9.0a-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX90a]]"], output: "[[GFX90a_OUT:.+]]"
+// MULTI-D-ONLY-NEXT: # "amdgpu-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908_OUT]]", "[[GFX90a_OUT]]"], output: "{{.+}}"
//
// RUN: not %clang -### --target=x86_64-linux-gnu --offload-new-driver -ccc-print-bindings -nogpulib -nogpuinc -emit-llvm \
// RUN: --no-gpu-bundle-output --offload-arch=gfx90a --offload-arch=gfx908 --offload-device-only -c -o %t %s 2>&1 \
@@ -70,28 +70,28 @@
// RUN: %clang -### --target=x86_64-linux-gnu --offload-new-driver -ccc-print-bindings -nogpulib -nogpuinc \
// RUN: --gpu-bundle-output --offload-arch=gfx90a --offload-arch=gfx908 --offload-device-only -c -o a.out %s 2>&1 \
// RUN: | FileCheck -check-prefix=MULTI-D-ONLY-O %s
-// MULTI-D-ONLY-O: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[GFX908_OBJ:.+]]"
-// MULTI-D-ONLY-O-NEXT: "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908_OBJ]]"], output: "[[GFX908:.+]]"
-// MULTI-D-ONLY-O-NEXT: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[GFX90A_OBJ:.+]]"
-// MULTI-D-ONLY-O-NEXT: "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX90A_OBJ]]"], output: "[[GFX90A:.+]]"
-// MULTI-D-ONLY-O-NEXT: "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908]]", "[[GFX90A]]"], output: "a.out"
+// MULTI-D-ONLY-O: "amdgpu9.08-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[GFX908_OBJ:.+]]"
+// MULTI-D-ONLY-O-NEXT: "amdgpu9.08-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908_OBJ]]"], output: "[[GFX908:.+]]"
+// MULTI-D-ONLY-O-NEXT: "amdgpu9.0a-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[GFX90A_OBJ:.+]]"
+// MULTI-D-ONLY-O-NEXT: "amdgpu9.0a-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX90A_OBJ]]"], output: "[[GFX90A:.+]]"
+// MULTI-D-ONLY-O-NEXT: "amdgpu-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908]]", "[[GFX90A]]"], output: "a.out"
// RUN: %clang -### --target=x86_64-linux-gnu --offload-new-driver -ccc-print-bindings -nogpulib -nogpuinc -emit-llvm \
// RUN: --gpu-bundle-output --offload-arch=gfx90a --offload-arch=gfx908 --offload-device-only -c -o a.out %s 2>&1 \
// RUN: | FileCheck -check-prefix=MULTI-D-ONLY-BC %s
-// MULTI-D-ONLY-BC: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[GFX908:.+]]"
-// MULTI-D-ONLY-BC-NEXT: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[GFX90A:.+]]"
-// MULTI-D-ONLY-BC-NEXT: "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908]]", "[[GFX90A]]"], output: "a.out"
+// MULTI-D-ONLY-BC: "amdgpu9.08-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[GFX908:.+]]"
+// MULTI-D-ONLY-BC-NEXT: "amdgpu9.0a-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[GFX90A:.+]]"
+// MULTI-D-ONLY-BC-NEXT: "amdgpu-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[GFX908]]", "[[GFX90A]]"], output: "a.out"
//
// Check to ensure that we can use '-fsyntax-only' for HIP output with the new
// driver.
-//
+//
// RUN: %clang -### --target=x86_64-unknown-linux-gnu --offload-new-driver -nogpulib -nogpuinc \
// RUN: -fsyntax-only --offload-arch=gfx90a --offload-arch=gfx908 -c %s 2>&1 \
// RUN: | FileCheck -check-prefix=SYNTAX-ONLY %s
-// SYNTAX-ONLY: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-fsyntax-only"
-// SYNTAX-ONLY: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-fsyntax-only"
+// SYNTAX-ONLY: "-cc1" "-triple" "amdgpu9.08-amd-amdhsa"{{.*}}"-fsyntax-only"
+// SYNTAX-ONLY: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa"{{.*}}"-fsyntax-only"
// SYNTAX-ONLY: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-fsyntax-only"
//
@@ -100,8 +100,8 @@
// RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc --offload-new-driver -ccc-print-bindings \
// RUN: -nogpulib -nogpuinc -foffload-lto --offload-arch=gfx90a --offload-arch=gfx908 -c %s 2>&1 \
// RUN: | FileCheck -check-prefix=LTO-NO-RDC %s
-// LTO-NO-RDC: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[LTO_908:.+]]"
-// LTO-NO-RDC-NEXT: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[LTO_90A:.+]]"
-// LTO-NO-RDC-NEXT: # "amdgcn-amd-amdhsa" - "Offload::Packager", inputs: ["[[LTO_908]]", "[[LTO_90A]]"], output: "[[PKG:.+]]"
-// LTO-NO-RDC-NEXT: # "amdgcn-amd-amdhsa" - "Offload::Linker", inputs: ["[[PKG]]"], output: "[[HIPFB:.+]]"
+// LTO-NO-RDC: # "amdgpu9.08-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[LTO_908:.+]]"
+// LTO-NO-RDC-NEXT: # "amdgpu9.0a-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], output: "[[LTO_90A:.+]]"
+// LTO-NO-RDC-NEXT: # "amdgpu-amd-amdhsa" - "Offload::Packager", inputs: ["[[LTO_908]]", "[[LTO_90A]]"], output: "[[PKG:.+]]"
+// LTO-NO-RDC-NEXT: # "amdgpu-amd-amdhsa" - "Offload::Linker", inputs: ["[[PKG]]"], output: "[[HIPFB:.+]]"
// LTO-NO-RDC-NEXT: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[INPUT]]", "[[HIPFB]]"], output: "hip-binding.o"
diff --git a/clang/test/Driver/hip-code-object-version.hip b/clang/test/Driver/hip-code-object-version.hip
index c57593a4ec478..a563351c33139 100644
--- a/clang/test/Driver/hip-code-object-version.hip
+++ b/clang/test/Driver/hip-code-object-version.hip
@@ -34,7 +34,7 @@
// RUN: --offload-arch=gfx906 -nogpuinc -nogpulib \
// RUN: %s 2>&1 | FileCheck -check-prefix=VD %s
-// VD: "-targets=host-x86_64-unknown-linux-gnu,hipv4-amdgcn-amd-amdhsa--gfx906"
+// VD: "-targets=host-x86_64-unknown-linux-gnu,hipv4-amdgpu9.06-amd-amdhsa--gfx906"
// Check invalid code object version option.
@@ -69,4 +69,4 @@
// RUN: %s 2>&1 | FileCheck -check-prefix=CC1 %s
// CC1: "-cc1" {{.*}}"-mcode-object-version=5" {{.*}}"-mllvm" "--amdhsa-code-object-version=5"
-// CC1: clang-linker-wrapper{{.*}}"--device-compiler=amdgcn-amd-amdhsa=-mcode-object-version=5"
+// CC1: clang-linker-wrapper{{.*}}"--device-compiler=amdgpu-amd-amdhsa=-mcode-object-version=5"
diff --git a/clang/test/Driver/hip-cuid.hip b/clang/test/Driver/hip-cuid.hip
index 78c391c966e2a..858fc64a0328c 100644
--- a/clang/test/Driver/hip-cuid.hip
+++ b/clang/test/Driver/hip-cuid.hip
@@ -103,13 +103,13 @@
// INVALID: invalid value 'invalid' in '-fuse-cuid=invalid'
-// COMMON: "-cc1"{{.*}} "-triple" "[[TRIP:(amdgcn-amd-amdhsa|nvptx64-nvidia-cuda)]]"
+// COMMON: "-cc1"{{.*}} "-triple" "[[TRIP0:(amdgpu9.00-amd-amdhsa|nvptx64-nvidia-cuda)]]"
// COMMON-SAME: "-target-cpu" "[[G1:(gfx900|sm_60)]]"
// HEX-SAME: "-cuid=[[CUID:[0-9a-f]+]]"
// FIXED-SAME: "-cuid=[[CUID:xyz_123]]"
// COMMON-SAME: "{{.*}}a.cu"
-// COMMON: "-cc1"{{.*}} "-triple" "[[TRIP]]"
+// COMMON: "-cc1"{{.*}} "-triple" "[[TRIP1:(amdgpu9.06-amd-amdhsa|nvptx64-nvidia-cuda)]]"
// COMMON-SAME: "-target-cpu" "[[G2:(gfx906|sm_70)]]"
// COMMON-SAME: "-cuid=[[CUID]]"
// COMMON-SAME: "{{.*}}a.cu"
@@ -118,14 +118,14 @@
// COMMON-SAME: "-cuid=[[CUID]]"
// COMMON-SAME: "{{.*}}a.cu"
-// COMMON: "-cc1"{{.*}} "-triple" "[[TRIP]]"
+// COMMON: "-cc1"{{.*}} "-triple" "[[TRIP0]]"
// COMMON-SAME: "-target-cpu" "[[G1]]"
// HEX-NOT: "-cuid=[[CUID]]"
// HEX-SAME: "-cuid=[[CUID2:[0-9a-f]+]]"
// FIXED-SAME: "-cuid=[[CUID2:xyz_123]]"
// COMMON-SAME: "{{.*}}b.hip"
-// COMMON: "-cc1"{{.*}} "-triple" "[[TRIP]]"
+// COMMON: "-cc1"{{.*}} "-triple" "[[TRIP1]]"
// COMMON-SAME: "-target-cpu" "[[G2]]"
// HEX-NOT: "-cuid=[[CUID]]"
// COMMON-SAME: "-cuid=[[CUID2]]"
@@ -144,12 +144,12 @@
// HOST-SAME: "-cuid=[[CUID]]"
// HOST-SAME: "{{.*}}b.hip"
-// DEVICE: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa"
+// DEVICE: "-cc1"{{.*}} "-triple" "amdgpu9.00-amd-amdhsa"
// DEVICE-SAME: "-target-cpu" "gfx900"
// DEVICE-SAME: "-cuid=[[CUID:xyz_123]]"
// DEVICE-SAME: "{{.*}}a.cu"
-// DEVICE: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa"
+// DEVICE: "-cc1"{{.*}} "-triple" "amdgpu9.00-amd-amdhsa"
// DEVICE-SAME: "-target-cpu" "gfx900"
// DEVICE-SAME: "-cuid=[[CUID]]"
// DEVICE-SAME: "{{.*}}b.hip"
diff --git a/clang/test/Driver/hip-device-compile.hip b/clang/test/Driver/hip-device-compile.hip
index efc9345f63d28..dc21ba60869d3 100644
--- a/clang/test/Driver/hip-device-compile.hip
+++ b/clang/test/Driver/hip-device-compile.hip
@@ -58,7 +58,7 @@
// RUN: %S/Inputs/hip_multiple_inputs/a.cu --gpu-bundle-output \
// RUN: 2>&1 | FileCheck -check-prefixes=CHECK,ASMBUN %s
-// CHECK: {{".*clang.*"}} "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: {{".*clang.*"}} "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// BC-SAME: "-emit-llvm-bc"
// LL-SAME: "-emit-llvm"
@@ -137,8 +137,8 @@
// RUN: %S/Inputs/hip_multiple_inputs/a.cu \
// RUN: 2>&1 | FileCheck -check-prefixes=NOLTO %s
-// NOLTO: {{".*clang.*"}} "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// NOLTO: {{".*clang.*"}} "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// NOLTO-SAME: "-S"
// NOLTO-NOT: "-flto
// NOLTO-SAME: "-target-cpu" "gfx900"
-// NOLTO-SAME: "-o" "a-hip-amdgcn-amd-amdhsa-gfx900.s"
+// NOLTO-SAME: "-o" "a-hip-amdgpu9.00-amd-amdhsa-gfx900.s"
diff --git a/clang/test/Driver/hip-device-libs-llvm-env.hip b/clang/test/Driver/hip-device-libs-llvm-env.hip
index ab80dae4ef451..2253edf3414b2 100644
--- a/clang/test/Driver/hip-device-libs-llvm-env.hip
+++ b/clang/test/Driver/hip-device-libs-llvm-env.hip
@@ -24,7 +24,7 @@
// RUN: %S/Inputs/hip_multiple_inputs/b.hip \
// RUN: 2>&1 | FileCheck --check-prefix=INC %s
-// INC: "-cc1" "-triple" "amdgcn-amd-amdhsa-llvm"
+// INC: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa-llvm"
// INC-SAME: "-internal-isystem" "{{.*}}hip_wrappers"
// RUN: %clang -### --target=x86_64-linux-gnu -nogpuinc --rocm-path=%S/Inputs/rocm \
diff --git a/clang/test/Driver/hip-fpie-option-freebsd.hip b/clang/test/Driver/hip-fpie-option-freebsd.hip
index a1a0a45318481..fb5772ade5566 100644
--- a/clang/test/Driver/hip-fpie-option-freebsd.hip
+++ b/clang/test/Driver/hip-fpie-option-freebsd.hip
@@ -1,5 +1,5 @@
// -fPIC and -fPIE only affects host relocation model.
-// device compilation always uses PIC.
+// device compilation always uses PIC.
// RUN: %clang -### --target=x86_64-unknown-freebsd \
// RUN: --offload-arch=gfx906 %s -nogpulib -nogpuinc \
@@ -19,7 +19,7 @@
// RUN: -fPIC \
// RUN: 2>&1 | FileCheck -check-prefixes=DEV,HOST-PIC %s
-// DEV-DAG: {{".*clang.*".* "-triple" "amdgcn-amd-amdhsa".* "-mrelocation-model" "pic" "-pic-level" "[1|2]".* "-mframe-pointer=all"}}
+// DEV-DAG: {{".*clang.*".* "-triple" "amdgpu9.06-amd-amdhsa".* "-mrelocation-model" "pic" "-pic-level" "[1|2]".* "-mframe-pointer=all"}}
// HOST-PIC-DAG: {{".*clang.*".* "-triple" "x86_64-unknown-freebsd".* "-mrelocation-model" "pic" "-pic-level" "2"}}
// HOST-PIC-NOT: "-pic-is-pie"
// HOST-PIE-DAG: {{".*clang.*".* "-triple" "x86_64-unknown-freebsd".* "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie"}}
diff --git a/clang/test/Driver/hip-fpie-option.hip b/clang/test/Driver/hip-fpie-option.hip
index 426564b67066e..5535a86447698 100644
--- a/clang/test/Driver/hip-fpie-option.hip
+++ b/clang/test/Driver/hip-fpie-option.hip
@@ -1,7 +1,7 @@
// REQUIRES: default-pie-on-linux
// -fPIC and -fPIE only affects host relocation model.
-// device compilation always uses PIC.
+// device compilation always uses PIC.
// RUN: %clang -### --target=x86_64-unknown-linux-gnu \
// RUN: --offload-arch=gfx906 %s -nogpulib -nogpuinc \
@@ -31,8 +31,8 @@
// RUN: -fPIE \
// RUN: 2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE %s
-// DEV-DAG: {{".*clang.*".* "-triple" "amdgcn-amd-amdhsa".* "-mrelocation-model" "pic" "-pic-level" "[1|2]".* "-mframe-pointer=all"}}
+// DEV-DAG: {{".*clang.*".* "-triple" "amdgpu9.06-amd-amdhsa".* "-mrelocation-model" "pic" "-pic-level" "[1|2]".* "-mframe-pointer=all"}}
// HOST-PIC-DAG: {{".*clang.*".* "-triple" "x86_64-unknown-linux-gnu".* "-mrelocation-model" "pic" "-pic-level" "2"}}
// HOST-PIC-NOT: "-pic-is-pie"
// HOST-PIE-DAG: {{".*clang.*".* "-triple" "x86_64-unknown-linux-gnu".* "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie"}}
-// DEV-NOT: {{".*clang.*".* "-triple" "amdgcn-amd-amdhsa".* "-pic-is-pie"}}
+// DEV-NOT: {{".*clang.*".* "-triple" "amdgpu{{.*}}-amd-amdhsa".* "-pic-is-pie"}}
diff --git a/clang/test/Driver/hip-gz-options.hip b/clang/test/Driver/hip-gz-options.hip
index 6d2709a172784..0733c782d3ae2 100644
--- a/clang/test/Driver/hip-gz-options.hip
+++ b/clang/test/Driver/hip-gz-options.hip
@@ -8,6 +8,6 @@
// RUN: -fgpu-rdc --offload-arch=gfx906 %s -nogpulib -nogpuinc \
// RUN: -ggdb -gz=zlib 2>&1 | FileCheck %s
-// CHECK-DAG: {{".*clang(-[0-9]+)?(.exe)?" .* "-triple" "amdgcn-amd-amdhsa" .* "--compress-debug-sections=zlib"}}
+// CHECK-DAG: {{".*clang(-[0-9]+)?(.exe)?" .* "-triple" "amdgpu9.06-amd-amdhsa" .* "--compress-debug-sections=zlib"}}
// CHECK-DAG: {{".*clang(-[0-9]+)?(.exe)?" .* "-triple" "x86_64-unknown-linux-gnu".* "--compress-debug-sections=zlib"}}
// CHECK: "--compress-debug-sections=zlib"
diff --git a/clang/test/Driver/hip-host-cpu-features.hip b/clang/test/Driver/hip-host-cpu-features.hip
index 7318ed2080a9b..677f98a238b4f 100644
--- a/clang/test/Driver/hip-host-cpu-features.hip
+++ b/clang/test/Driver/hip-host-cpu-features.hip
@@ -2,14 +2,14 @@
// RUN: %clang -### -c --target=x86_64-linux-gnu -msse3 --cuda-gpu-arch=gfx803 -nogpuinc -nogpulib %s 2>&1 | FileCheck %s -check-prefix=HOSTSSE3
// RUN: %clang -### -c --target=x86_64-linux-gnu --gpu-use-aux-triple-only -march=znver2 --cuda-gpu-arch=gfx803 -nogpuinc -nogpulib %s 2>&1 | FileCheck %s -check-prefix=NOHOSTCPU
-// HOSTCPU: "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// HOSTCPU: "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// HOSTCPU-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// HOSTCPU-SAME: "-aux-target-cpu" "znver2"
-// HOSTSSE3: "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// HOSTSSE3: "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// HOSTSSE3-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// HOSTSSE3-SAME: "-aux-target-feature" "+sse3"
-// NOHOSTCPU: "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// NOHOSTCPU: "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// NOHOSTCPU-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// NOHOSTCPU-NOT: "-aux-target-cpu" "znver2"
diff --git a/clang/test/Driver/hip-include-path.hip b/clang/test/Driver/hip-include-path.hip
index 8ad978c917173..63a83007c5a96 100644
--- a/clang/test/Driver/hip-include-path.hip
+++ b/clang/test/Driver/hip-include-path.hip
@@ -71,5 +71,5 @@
// RUN: --sysroot=%S/Inputs/basic_linux_tree %s 2>&1 \
// RUN: | FileCheck -check-prefixes=HOSTINC %s
-// HOSTINC-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// HOSTINC-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// HOSTINC: "-internal-externc-isystem" "{{[^"]*}}Inputs/basic_linux_tree/usr/include"
diff --git a/clang/test/Driver/hip-link-bc-to-bc.hip b/clang/test/Driver/hip-link-bc-to-bc.hip
index b372551e200e3..8c9976fedfd86 100644
--- a/clang/test/Driver/hip-link-bc-to-bc.hip
+++ b/clang/test/Driver/hip-link-bc-to-bc.hip
@@ -8,13 +8,13 @@
// RUN: --no-offload-new-driver %t/bundle1.bc %t/bundle2.bc \
// RUN: 2>&1 | FileCheck -check-prefix=BITCODE %s
-// BITCODE: "{{.*}}clang-offload-bundler" "-type=bc" "-targets=host-x86_64-unknown-linux-gnu,hip-amdgcn-amd-amdhsa-unknown-gfx906" "-input={{.*}}bundle1.bc" "-output=[[B1HOST:.*\.bc]]" "-output=[[B1DEV1:.*\.bc]]" "-unbundle" "-allow-missing-bundles"
+// BITCODE: "{{.*}}clang-offload-bundler" "-type=bc" "-targets=host-x86_64-unknown-linux-gnu,hip-amdgpu9.06-amd-amdhsa-unknown-gfx906" "-input={{.*}}bundle1.bc" "-output=[[B1HOST:.*\.bc]]" "-output=[[B1DEV1:.*\.bc]]" "-unbundle" "-allow-missing-bundles"
// BITCODE: "{{.*}}clang{{.*}}" "-o" "[[B1DEV2:.*bundle1-gfx906-.*\.bc]]" "-x" "ir" "[[B1DEV1]]"
-// BITCODE: "{{.*}}clang-offload-bundler" "-type=bc" "-targets=host-x86_64-unknown-linux-gnu,hip-amdgcn-amd-amdhsa-unknown-gfx906" "-input={{.*}}bundle2.bc" "-output=[[B2HOST:.*\.bc]]" "-output=[[B2DEV1:.*\.bc]]" "-unbundle" "-allow-missing-bundles"
+// BITCODE: "{{.*}}clang-offload-bundler" "-type=bc" "-targets=host-x86_64-unknown-linux-gnu,hip-amdgpu9.06-amd-amdhsa-unknown-gfx906" "-input={{.*}}bundle2.bc" "-output=[[B2HOST:.*\.bc]]" "-output=[[B2DEV1:.*\.bc]]" "-unbundle" "-allow-missing-bundles"
// BITCODE: "{{.*}}clang{{.*}}" "-o" "[[B2DEV2:.*bundle2-gfx906-.*\.bc]]" "-x" "ir" "[[B2DEV1]]"
-// BITCODE: "{{.*}}llvm-link" "-o" "bundle1-hip-amdgcn-amd-amdhsa-gfx906.bc" "[[B1DEV2]]" "[[B2DEV2]]"
+// BITCODE: "{{.*}}llvm-link" "-o" "bundle1-hip-amdgpu9.06-amd-amdhsa-gfx906.bc" "[[B1DEV2]]" "[[B2DEV2]]"
// Check that clang unbundles the bitcode and archive and links via llvm-link
// RUN: llvm-ar rc %t/libhipbundle.a
@@ -25,9 +25,9 @@
// RUN: --no-offload-new-driver %t/bundle.bc -L%t -lhipbundle \
// RUN: 2>&1 | FileCheck -check-prefix=ARCHIVE %s
-// ARCHIVE: "{{.*}}clang-offload-bundler" "-type=bc" "-targets=host-x86_64-unknown-linux-gnu,hip-amdgcn-amd-amdhsa-unknown-gfx906" "-input={{.*}}bundle.bc" "-output=[[HOST:.*\.bc]]" "-output=[[DEV1:.*\.bc]]" "-unbundle" "-allow-missing-bundles"
+// ARCHIVE: "{{.*}}clang-offload-bundler" "-type=bc" "-targets=host-x86_64-unknown-linux-gnu,hip-amdgpu9.06-amd-amdhsa-unknown-gfx906" "-input={{.*}}bundle.bc" "-output=[[HOST:.*\.bc]]" "-output=[[DEV1:.*\.bc]]" "-unbundle" "-allow-missing-bundles"
// ARCHIVE: "{{.*}}clang{{.*}}" "-o" "[[DEV2:.*\.bc]]" "-x" "ir" "[[DEV1]]"
-// ARCHIVE: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libhipbundle.a" "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx906" "-output=[[AR:.*\.a]]" "-allow-missing-bundles" "-hip-openmp-compatible"
+// ARCHIVE: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libhipbundle.a" "-targets=hip-amdgpu9.06-amd-amdhsa-unknown-gfx906" "-output=[[AR:.*\.a]]" "-allow-missing-bundles" "-hip-openmp-compatible"
-// ARCHIVE: "{{.*}}llvm-link" "-o" "bundle-hip-amdgcn-amd-amdhsa-gfx906.bc" "[[DEV2]]" "[[AR]]"
+// ARCHIVE: "{{.*}}llvm-link" "-o" "bundle-hip-amdgpu9.06-amd-amdhsa-gfx906.bc" "[[DEV2]]" "[[AR]]"
diff --git a/clang/test/Driver/hip-link-bundle-archive.hip b/clang/test/Driver/hip-link-bundle-archive.hip
index f1902957fbc13..45d4039e82577 100644
--- a/clang/test/Driver/hip-link-bundle-archive.hip
+++ b/clang/test/Driver/hip-link-bundle-archive.hip
@@ -68,10 +68,10 @@
// RUN: -nogpuinc -nogpulib %s -fgpu-rdc %t/hipBundled2.lib \
// RUN: 2>&1 | FileCheck -check-prefix=MSVC %s
-// GNU1: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}[[LIB:libhipBundled\.a]]" "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
-// GNU2: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}[[LIB:libhipBundled\.a\.5\.2]]" "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
+// GNU1: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}[[LIB:libhipBundled\.a]]" "-targets=hip-amdgpu9.06-amd-amdhsa-unknown-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
+// GNU2: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}[[LIB:libhipBundled\.a\.5\.2]]" "-targets=hip-amdgpu9.06-amd-amdhsa-unknown-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
// GNU: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx906" {{.*}} "[[A906]]"
-// GNU: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}[[LIB]]" "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx1030" "-output=[[A1030:.*\.a]]" "-allow-missing-bundles"
+// GNU: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}[[LIB]]" "-targets=hip-amdgpu10.30-amd-amdhsa-unknown-gfx1030" "-output=[[A1030:.*\.a]]" "-allow-missing-bundles"
// GNU: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx1030" {{.*}} "[[A1030]]"
// GNU-L: "{{.*}}ld{{.*}}" {{.*}}"-o" "a.out" {{.*}}"-lhipBundled"
// GNU-LA: "{{.*}}ld{{.*}}" {{.*}}"-o" "a.out" {{.*}}"-l:libhipBundled.a"
@@ -79,8 +79,8 @@
// NONARCHIVE-NOT: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*libNonArchive\.a}}"
// NONE-NOT: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*NoneExist\.a}}"
-// MSVC: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}hipBundled2.lib" "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
+// MSVC: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}hipBundled2.lib" "-targets=hip-amdgpu9.06-amd-amdhsa-unknown-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
// MSVC: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx906" {{.*}} "[[A906]]"
-// MSVC: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}hipBundled2.lib" "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx1030" "-output=[[A1030:.*\.a]]" "-allow-missing-bundles"
+// MSVC: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}hipBundled2.lib" "-targets=hip-amdgpu10.30-amd-amdhsa-unknown-gfx1030" "-output=[[A1030:.*\.a]]" "-allow-missing-bundles"
// MSVC: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx1030" {{.*}} "[[A1030]]"
// MSVC: "{{.*}}link{{.*}}" {{.*}}"-out:a.exe" {{.*}}hipBundled2.lib"
diff --git a/clang/test/Driver/hip-link-offload-binary.c b/clang/test/Driver/hip-link-offload-binary.c
index b318074130abd..37756f6629593 100644
--- a/clang/test/Driver/hip-link-offload-binary.c
+++ b/clang/test/Driver/hip-link-offload-binary.c
@@ -26,7 +26,7 @@
// RUN: --offload-arch=gfx906 %t.x.bundle.bc -o %t.hipfb 2>&1 \
// RUN: | FileCheck %s --check-prefix=VERBOSE
// VERBOSE: "{{.*}}clang-linker-wrapper"
-// VERBOSE-SAME: "--device-compiler=amdgcn-amd-amdhsa=-v"
+// VERBOSE-SAME: "--device-compiler=amdgpu-amd-amdhsa=-v"
// VERBOSE-SAME: "--wrapper-verbose"
// VERBOSE-SAME: "--emit-fatbin-only"
diff --git a/clang/test/Driver/hip-link-save-temps.hip b/clang/test/Driver/hip-link-save-temps.hip
index e321970274bb4..aa0e0d342bf13 100644
--- a/clang/test/Driver/hip-link-save-temps.hip
+++ b/clang/test/Driver/hip-link-save-temps.hip
@@ -33,15 +33,15 @@
// RUN: --offload-arch=gfx906 %t/obj1.o %t/obj2.o 2>&1 | \
// RUN: FileCheck -check-prefixes=CHECK,SLNO %s
-// CHECK: "{{.*clang-offload-bundler.*}}" {{.*}} "-output=obj1-host-x86_64-unknown-linux-gnu.o" "-output=obj1-hip-amdgcn-amd-amdhsa-gfx900.o" "-output=obj1-hip-amdgcn-amd-amdhsa-gfx906.o" "-unbundle"
-// CHECK: "{{.*clang-offload-bundler.*}}" {{.*}} "-output=obj2-host-x86_64-unknown-linux-gnu.o" "-output=obj2-hip-amdgcn-amd-amdhsa-gfx900.o" "-output=obj2-hip-amdgcn-amd-amdhsa-gfx906.o" "-unbundle"
+// CHECK: "{{.*clang-offload-bundler.*}}" {{.*}} "-output=obj1-host-x86_64-unknown-linux-gnu.o" "-output=obj1-hip-amdgpu-amd-amdhsa-gfx900.o" "-output=obj1-hip-amdgpu-amd-amdhsa-gfx906.o" "-unbundle"
+// CHECK: "{{.*clang-offload-bundler.*}}" {{.*}} "-output=obj2-host-x86_64-unknown-linux-gnu.o" "-output=obj2-hip-amdgpu-amd-amdhsa-gfx900.o" "-output=obj2-hip-amdgpu-amd-amdhsa-gfx906.o" "-unbundle"
// CHECK-NOT: {{".*/llvm-link"}}
// CHECK-NOT: {{".*/opt"}}
// CHECK-NOT: {{".*/llc"}}
// CHECK: "{{.*lld.*}}" {{.*}} "-plugin-opt=-amdgpu-internalize-symbols"
-// CHECK-SAME: "-o" "[[HIPFB1:.+]]" "obj1-hip-amdgcn-amd-amdhsa-gfx900.o" "obj2-hip-amdgcn-amd-amdhsa-gfx900.o"
+// CHECK-SAME: "-o" "[[HIPFB1:.+]]" "obj1-hip-amdgpu-amd-amdhsa-gfx900.o" "obj2-hip-amdgpu-amd-amdhsa-gfx900.o"
// CHECK: "{{.*lld.*}}" {{.*}} "-plugin-opt=-amdgpu-internalize-symbols"
-// CHECK-SAME: "-o" "[[HIPFB2:.+]]" "obj1-hip-amdgcn-amd-amdhsa-gfx906.o" "obj2-hip-amdgcn-amd-amdhsa-gfx906.o"
+// CHECK-SAME: "-o" "[[HIPFB2:.+]]" "obj1-hip-amdgpu-amd-amdhsa-gfx906.o" "obj2-hip-amdgpu-amd-amdhsa-gfx906.o"
// CHECK: "{{.*clang.*}}" "-target" "x86_64-unknown-linux-gnu" "-o" "[[OBJBUNDLE:.+.o]]" "-x" "assembler" "{{.*}}.mcin" "-c"
// OUT: "{{.*ld.*}}" {{.*}} "-o" "executable" {{.*}} "[[OBJBUNDLE]]"
// NOUT: "{{.*ld.*}}" {{.*}} "-o" "a.out" {{.*}} "[[OBJBUNDLE]]"
diff --git a/clang/test/Driver/hip-link-shared-library.hip b/clang/test/Driver/hip-link-shared-library.hip
index a075ee82dda1c..a354b0de430e0 100644
--- a/clang/test/Driver/hip-link-shared-library.hip
+++ b/clang/test/Driver/hip-link-shared-library.hip
@@ -5,11 +5,11 @@
// RUN: --no-offload-new-driver -fgpu-rdc 2>&1 | FileCheck %s
// CHECK: # "x86_64-unknown-linux-gnu" - "offload bundler", inputs: ["[[IN:.*o]]"], outputs: ["[[HOSTOBJ:.*o]]", "{{.*o}}", "{{.*o}}"]
-// CHECK: # "amdgcn-amd-amdhsa" - "offload bundler", inputs: ["[[IN]]"], outputs: ["{{.*o}}", "[[DOBJ1:.*o]]", "[[DOBJ2:.*o]]"]
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ1]]"], output: "[[IMG1:.*out]]"
+// CHECK: # "amdgpu8.03-amd-amdhsa" - "offload bundler", inputs: ["[[IN]]"], outputs: ["{{.*o}}", "[[DOBJ1:.*o]]", "[[DOBJ2:.*o]]"]
+// CHECK: # "amdgpu8.03-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ1]]"], output: "[[IMG1:.*out]]"
// CHECK-NOT: offload bundler
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ2]]"], output: "[[IMG2:.*out]]"
+// CHECK: # "amdgpu9.00-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ2]]"], output: "[[IMG2:.*out]]"
// CHECK-NOT: offload bundler
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[IMG1]]", "[[IMG2]]"], output: "[[FATBINOBJ:.*o]]"
+// CHECK: # "amdgpu-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[IMG1]]", "[[IMG2]]"], output: "[[FATBINOBJ:.*o]]"
// CHECK-NOT: offload bundler
// CHECK: # "x86_64-unknown-linux-gnu" - "GNU::Linker", inputs: ["[[HOSTOBJ]]", "{{.*}}.so", "[[FATBINOBJ]]"], output: "a.out"
diff --git a/clang/test/Driver/hip-link-static-library.hip b/clang/test/Driver/hip-link-static-library.hip
index dcdc26af3b36b..6f281b8a9e0f4 100644
--- a/clang/test/Driver/hip-link-static-library.hip
+++ b/clang/test/Driver/hip-link-static-library.hip
@@ -5,12 +5,12 @@
// RUN: 2>&1 | FileCheck %s
// CHECK: # "x86_64-unknown-linux-gnu" - "offload bundler", inputs: ["[[IN:.*o]]"], outputs: ["[[HOSTOBJ:.*o]]", "{{.*o}}", "{{.*o}}"]
-// CHECK: # "amdgcn-amd-amdhsa" - "offload bundler", inputs: ["[[IN]]"], outputs: ["{{.*o}}", "[[DOBJ1:.*o]]", "[[DOBJ2:.*o]]"]
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ1]]"], output: "[[IMG1:.*out]]"
+// CHECK: # "amdgpu8.03-amd-amdhsa" - "offload bundler", inputs: ["[[IN]]"], outputs: ["{{.*o}}", "[[DOBJ1:.*o]]", "[[DOBJ2:.*o]]"]
+// CHECK: # "amdgpu8.03-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ1]]"], output: "[[IMG1:.*out]]"
// CHECK-NOT: offload bundler
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ2]]"], output: "[[IMG2:.*out]]"
+// CHECK: # "amdgpu9.00-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[DOBJ2]]"], output: "[[IMG2:.*out]]"
// CHECK-NOT: offload bundler
-// CHECK: # "amdgcn-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[IMG1]]", "[[IMG2]]"], output: "[[FATBINOBJ:.*o]]"
+// CHECK: # "amdgpu-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[IMG1]]", "[[IMG2]]"], output: "[[FATBINOBJ:.*o]]"
// CHECK-NOT: offload bundler
// CHECK: # "x86_64-unknown-linux-gnu" - "GNU::StaticLibTool", inputs: ["[[HOSTOBJ]]", "[[FATBINOBJ]]"], output: "a.out"
diff --git a/clang/test/Driver/hip-offload-arch.hip b/clang/test/Driver/hip-offload-arch.hip
index 1af53baf63da7..a467d900aa564 100644
--- a/clang/test/Driver/hip-offload-arch.hip
+++ b/clang/test/Driver/hip-offload-arch.hip
@@ -4,5 +4,35 @@
// RUN: -nogpuinc -nogpulib \
// RUN: %s 2>&1 | FileCheck %s
-// CHECK: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx1030"
-// CHECK: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx1031"
+
+// CHECK: "-cc1" "-triple" "amdgpu10.30-amd-amdhsa"{{.*}}"-target-cpu" "gfx1030"
+// CHECK: "-cc1" "-triple" "amdgpu10.31-amd-amdhsa"{{.*}}"-target-cpu" "gfx1031"
+
+// RUN: %clang -### --target=x86_64-linux-gnu --offload-targets=amdgpu9-amd-amdhsa \
+// RUN: --offload-arch=gfx900 \
+// RUN: --offload-arch=gfx906 \
+// RUN: -nogpuinc -nogpulib \
+// RUN: %s 2>&1 | FileCheck -check-prefix=SUBARCH-TRIPLE %s
+
+// SUBARCH-TRIPLE-NOT: "-cc1"
+// SUBARCH-TRIPLE: "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"{{.*}}"-target-cpu" "gfx900"
+// SUBARCH-TRIPLE-NEXT: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
+// SUBARCH-TRIPLE-NOT: "-cc1"
+// SUBARCH-TRIPLE: "-cc1" "-triple" "x86_64-unknown-linux-gnu"
+// SUBARCH-TRIPLE-NOT: "-cc1"
+
+// gfx90a is its own major subarch, so it is not covered by the amdgpu9 target.
+// RUN: not %clang -### --target=x86_64-linux-gnu --offload-targets=amdgpu9-amd-amdhsa \
+// RUN: --offload-arch=gfx90a \
+// RUN: -nogpuinc -nogpulib \
+// RUN: %s 2>&1 | FileCheck -check-prefix=GFX90A-NOT-IN-GFX9 %s
+
+// GFX90A-NOT-IN-GFX9: clang: error: the target architecture 'gfx90a' is not supported by the target 'amdgpu9'
+
+// RUN: not %clang -### --target=x86_64-linux-gnu --offload-targets=amdgpu12-amd-amdhsa \
+// RUN: --offload-arch=gfx900 \
+// RUN: --offload-arch=gfx90a \
+// RUN: -nogpuinc -nogpulib \
+// RUN: %s 2>&1 | FileCheck -check-prefix=OTHER-SUBARCH-TRIPLE-ERR %s
+
+// OTHER-SUBARCH-TRIPLE-ERR: clang: error: the target architecture 'gfx900' is not supported by the target 'amdgpu12'
diff --git a/clang/test/Driver/hip-offload-compress-zlib.hip b/clang/test/Driver/hip-offload-compress-zlib.hip
index df63c527a3e0b..f9a708724fd51 100644
--- a/clang/test/Driver/hip-offload-compress-zlib.hip
+++ b/clang/test/Driver/hip-offload-compress-zlib.hip
@@ -13,7 +13,7 @@
// RUN: 2>&1 | FileCheck %s
// CHECK: clang-offload-bundler{{.*}} -type=o
-// CHECK-SAME: -targets={{.*}}hip-amdgcn-amd-amdhsa-unknown-gfx1100,hip-amdgcn-amd-amdhsa-unknown-gfx1101
+// CHECK-SAME: -targets={{.*}}hip-amdgpu11.00-amd-amdhsa-unknown-gfx1100,hip-amdgpu11.01-amd-amdhsa-unknown-gfx1101
// CHECK-SAME: --compress --verbose --compression-level=9
// CHECK: Compressed bundle format
@@ -26,7 +26,7 @@
// RUN: 2>&1 | FileCheck -check-prefix=UNBUNDLE %s
// UNBUNDLE: clang-offload-bundler{{.*}} "-type=bc"
-// UNBUNDLE-SAME: -targets={{.*}}hip-amdgcn-amd-amdhsa-unknown-gfx1100,hip-amdgcn-amd-amdhsa-unknown-gfx1101
+// UNBUNDLE-SAME: -targets={{.*}}hip-amdgpu11.00-amd-amdhsa-unknown-gfx1100,hip-amdgpu11.01-amd-amdhsa-unknown-gfx1101
// UNBUNDLE-SAME: -unbundle
// UNBUNDLE-SAME: -verbose
@@ -40,5 +40,5 @@
// RUN: 2>&1 | FileCheck -check-prefix=CO %s
// CO: clang-offload-bundler{{.*}} "-type=o"
-// CO-SAME: -targets={{.*}}hipv4-amdgcn-amd-amdhsa--gfx1100,hipv4-amdgcn-amd-amdhsa--gfx1101
+// CO-SAME: -targets={{.*}}hipv4-amdgpu11.00-amd-amdhsa--gfx1100,hipv4-amdgpu11.01-amd-amdhsa--gfx1101
// CO-SAME: "--compress" "--verbose"
diff --git a/clang/test/Driver/hip-offload-compress-zstd.hip b/clang/test/Driver/hip-offload-compress-zstd.hip
index bffeb38afebac..36ca2f7263a11 100644
--- a/clang/test/Driver/hip-offload-compress-zstd.hip
+++ b/clang/test/Driver/hip-offload-compress-zstd.hip
@@ -13,7 +13,7 @@
// RUN: 2>&1 | FileCheck %s
// CHECK: clang-offload-bundler{{.*}} -type=o
-// CHECK-SAME: -targets={{.*}}hip-amdgcn-amd-amdhsa-unknown-gfx1100,hip-amdgcn-amd-amdhsa-unknown-gfx1101
+// CHECK-SAME: -targets={{.*}}hip-amdgpu11.00-amd-amdhsa-unknown-gfx1100,hip-amdgpu11.01-amd-amdhsa-unknown-gfx1101
// CHECK-SAME: --compress --verbose --compression-level=9
// CHECK: Compressed bundle format
@@ -26,7 +26,7 @@
// RUN: 2>&1 | FileCheck -check-prefix=UNBUNDLE %s
// UNBUNDLE: clang-offload-bundler{{.*}} "-type=bc"
-// UNBUNDLE-SAME: -targets={{.*}}hip-amdgcn-amd-amdhsa-unknown-gfx1100,hip-amdgcn-amd-amdhsa-unknown-gfx1101
+// UNBUNDLE-SAME: -targets={{.*}}hip-amdgpu11.00-amd-amdhsa-unknown-gfx1100,hip-amdgpu11.01-amd-amdhsa-unknown-gfx1101
// UNBUNDLE-SAME: -unbundle
// UNBUNDLE-SAME: -verbose
@@ -40,7 +40,7 @@
// RUN: 2>&1 | FileCheck -check-prefix=CO %s
// CO: clang-offload-bundler{{.*}} "-type=o"
-// CO-SAME: -targets={{.*}}hipv4-amdgcn-amd-amdhsa--gfx1100,hipv4-amdgcn-amd-amdhsa--gfx1101
+// CO-SAME: -targets={{.*}}hipv4-amdgpu11.00-amd-amdhsa--gfx1100,hipv4-amdgpu11.01-amd-amdhsa--gfx1101
// CO-SAME: "--compress" "--verbose"
// RUN: rm -rf %t.bc
diff --git a/clang/test/Driver/hip-options.hip b/clang/test/Driver/hip-options.hip
index 25d5d7f7673d1..90cd051c98271 100644
--- a/clang/test/Driver/hip-options.hip
+++ b/clang/test/Driver/hip-options.hip
@@ -20,15 +20,15 @@
// Check -mprintf-kind=hostcall
// RUN: %clang -### -nogpulib -nogpuinc --target=x86_64-unknown-linux-gnu -mprintf-kind=hostcall %s -save-temps 2>&1 | FileCheck -check-prefix=HOSTC %s
-// HOSTC: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-mprintf-kind=hostcall" "-Werror=format-invalid-specifier"{{.*}}"-E" {{.*}}
-// HOSTC: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}} "-mprintf-kind=hostcall" "-Werror=format-invalid-specifier" {{.*}}"-x" "hip-cpp-output"
+// HOSTC: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}} "-mprintf-kind=hostcall" "-Werror=format-invalid-specifier"{{.*}}"-E" {{.*}}
+// HOSTC: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}} "-mprintf-kind=hostcall" "-Werror=format-invalid-specifier" {{.*}}"-x" "hip-cpp-output"
// HOSTC: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}} "-E" {{.*}}
// HOSTC: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-x" "ir"
// Check -mprintf-kind=buffered
// RUN: %clang -### -nogpulib -nogpuinc --target=x86_64-unknown-linux-gnu -mprintf-kind=buffered %s -save-temps 2>&1 | FileCheck -check-prefix=BUFF %s
-// BUFF: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-mprintf-kind=buffered" "-Werror=format-invalid-specifier"{{.*}}"-E" {{.*}}
-// BUFF: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}} "-mprintf-kind=buffered" "-Werror=format-invalid-specifier" {{.*}}"-x" "hip-cpp-output"
+// BUFF: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}} "-mprintf-kind=buffered" "-Werror=format-invalid-specifier"{{.*}}"-E" {{.*}}
+// BUFF: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}} "-mprintf-kind=buffered" "-Werror=format-invalid-specifier" {{.*}}"-x" "hip-cpp-output"
// BUFF: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}} "-E" {{.*}}
// BUFF: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-x" "ir"
@@ -52,15 +52,15 @@
// RUN: %clang -### -nogpuinc -nogpulib -munsafe-fp-atomics \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=UNSAFE-FP-ATOMICS %s
-// UNSAFE-FP-ATOMICS: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fatomic-ignore-denormal-mode"
+// UNSAFE-FP-ATOMICS: clang{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-fatomic-ignore-denormal-mode"
// RUN: %clang -### -nogpuinc -nogpulib \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=DEFAULT-UNSAFE-FP-ATOMICS %s
-// DEFAULT-UNSAFE-FP-ATOMICS-NOT: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fatomic-ignore-denormal-mode"
+// DEFAULT-UNSAFE-FP-ATOMICS-NOT: clang{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-fatomic-ignore-denormal-mode"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib -fgpu-exclude-wrong-side-overloads \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=FIX-OVERLOAD %s
-// FIX-OVERLOAD: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fgpu-exclude-wrong-side-overloads" "-fgpu-defer-diag"
+// FIX-OVERLOAD: "-cc1"{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-fgpu-exclude-wrong-side-overloads" "-fgpu-defer-diag"
// FIX-OVERLOAD: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-fgpu-exclude-wrong-side-overloads" "-fgpu-defer-diag"
// Check -mconstructor-aliases is not passed to device compilation.
@@ -68,11 +68,11 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=CTA %s
// CTA: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-mconstructor-aliases"
-// CTA-NOT: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-mconstructor-aliases"
+// CTA-NOT: "-cc1"{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-mconstructor-aliases"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: --offload-arch=gfx906 -fgpu-inline-threshold=1000 %s 2>&1 | FileCheck -check-prefix=THRESH %s
-// THRESH: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-mllvm" "-inline-threshold=1000"
+// THRESH: "-cc1"{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-mllvm" "-inline-threshold=1000"
// THRESH-NOT: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-inline-threshold=1000"
// Check -foffload-lto=thin translated correctly.
@@ -84,9 +84,9 @@
// Ensure we don't error about -fwhole-program-vtables for the non-device offload compile.
// HIPTHINLTO-NOT: error: invalid argument '-fwhole-program-vtables' only allowed with '-flto'
// HIPTHINLTO-NOT: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-flto-unit"
-// HIPTHINLTO: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-flto=thin" "-flto-unit" {{.*}} "-fwhole-program-vtables"
+// HIPTHINLTO: "-cc1"{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-flto=thin" "-flto-unit" {{.*}} "-fwhole-program-vtables"
// HIPTHINLTO-NOT: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-flto-unit"
-// HIPTHINLTO: clang-linker-wrapper{{.*}} "--device-compiler=amdgcn-amd-amdhsa=-flto=thin"
+// HIPTHINLTO: clang-linker-wrapper{{.*}} "--device-compiler=amdgpu-amd-amdhsa=-flto=thin"
// Check -no-canonical-prefixes is propagated correctly.
@@ -96,7 +96,7 @@
// Ensure that we invoke clang-linker-wrapper with --no-canonical-prefixes and
// pass -no-canonical-prefixes as a device compiler flag.
-// HIPTHINLTO-NO-CANON-PREFIXES: clang-linker-wrapper{{.*}} "--device-compiler=amdgcn-amd-amdhsa=-no-canonical-prefixes" {{.*}} "--no-canonical-prefixes"
+// HIPTHINLTO-NO-CANON-PREFIXES: clang-linker-wrapper{{.*}} "--device-compiler=amdgpu-amd-amdhsa=-no-canonical-prefixes" {{.*}} "--no-canonical-prefixes"
// Check that -flto=thin is handled correctly, particularly with -fwhole-program-vtables.
//
@@ -108,15 +108,15 @@
// drop -fwhole-program-vtables for the device offload compile and pass it through for the
// non-device offload compile along with -flto=thin.
// THINLTO-NOT: error: invalid argument '-fwhole-program-vtables' only allowed with '-flto'
-// THINLTO-NOT: "-cc1"{{.*}}" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fwhole-program-vtables"
+// THINLTO-NOT: "-cc1"{{.*}}" "-triple" "amdgpu9-amd-amdhsa" {{.*}} "-fwhole-program-vtables"
// THINLTO: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-flto=thin" {{.*}} "-fwhole-program-vtables"
-// THINLTO-NOT: "-cc1"{{.*}}" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fwhole-program-vtables"
+// THINLTO-NOT: "-cc1"{{.*}}" "-triple" "amdgpu9-amd-amdhsa" {{.*}} "-fwhole-program-vtables"
// Check -fopenmp=libomp is allowed with HIP but -fopenmp-targets= is not allowed.
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: --offload-arch=gfx906 -fopenmp=libomp %s 2>&1 | FileCheck -check-prefix=OMP %s
-// OMP-NOT: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fopenmp"
+// OMP-NOT: "-cc1"{{.*}} "-triple" "amdgpu9-amd-amdhsa" {{.*}} "-fopenmp"
// OMP: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-fopenmp"
// Check -Xoffload-linker option is passed to lld.
@@ -129,7 +129,7 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: --offload-arch=gfx906 -fhip-kernel-arg-name %s 2>&1 \
// RUN: | FileCheck -check-prefix=KAN %s
-// KAN: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fhip-kernel-arg-name"
+// KAN: "-cc1"{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-fhip-kernel-arg-name"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: --offload-arch=gfx906 %s 2>&1 \
@@ -138,22 +138,22 @@
// RUN: %clang -### -nogpuinc -nogpulib -mno-amdgpu-ieee -mamdgpu-ieee \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=IEEE-ON %s
-// IEEE-ON-NOT: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-m{{(no-)?}}amdgpu-ieee"
+// IEEE-ON-NOT: clang{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-m{{(no-)?}}amdgpu-ieee"
// RUN: %clang -### -nogpuinc -nogpulib -mamdgpu-ieee -mno-amdgpu-ieee -ffast-math \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefixes=IEEE-OFF %s
-// IEEE-OFF: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-mno-amdgpu-ieee"
+// IEEE-OFF: clang{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-mno-amdgpu-ieee"
// RUN: %clang -### -nogpuinc -nogpulib -mamdgpu-ieee -mno-amdgpu-ieee -ffast-math \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefixes=IEEE-OFF-NEG %s
-// IEEE-OFF-NEG-NOT: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-mamdgpu-ieee"
+// IEEE-OFF-NEG-NOT: clang{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-mamdgpu-ieee"
// Check -fno-hip-fp32-correctly-rounded-divide-sqrt is passed to -cc1 but
// (default) -fhip-fp32-correctly-rounded-divide-sqrt is not.
// RUN: %clang -### -nogpuinc -nogpulib -fno-hip-fp32-correctly-rounded-divide-sqrt \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefixes=NOCRDS %s
-// NOCRDS: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fno-hip-fp32-correctly-rounded-divide-sqrt"
+// NOCRDS: clang{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-fno-hip-fp32-correctly-rounded-divide-sqrt"
// RUN: %clang -### -nogpuinc -nogpulib \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefixes=CRDS %s
@@ -174,7 +174,7 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib -ffast-math \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=APPROX %s
-// APPROX: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fgpu-approx-transcendentals"
+// APPROX: "-cc1"{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-fgpu-approx-transcendentals"
// APPROX: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-fgpu-approx-transcendentals"
// RUN: %clang -### -nogpuinc -nogpulib -fno-gpu-approx-transcendentals \
@@ -204,13 +204,13 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib -fno-offload-uniform-block \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=NOUNIBLK %s
-// NOUNIBLK: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fno-offload-uniform-block"
+// NOUNIBLK: "-cc1"{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-fno-offload-uniform-block"
// NOUNIBLK: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-fno-offload-uniform-block"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib -foffload-uniform-block \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=UNIBLK %s
-// UNIBLK: "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-foffload-uniform-block"
+// UNIBLK: "-cc1"{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-foffload-uniform-block"
// UNIBLK: "-cc1"{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-foffload-uniform-block"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
@@ -227,7 +227,7 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefix=WARN-ATOMIC %s
-// WARN-ATOMIC: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-Werror=atomic-alignment"
+// WARN-ATOMIC: clang{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-Werror=atomic-alignment"
// WARN-ATOMIC-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-Werror=atomic-alignment"
// Check the default -Werror=atomic-alignment can be overridden.
@@ -235,7 +235,7 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: --cuda-gpu-arch=gfx906 -Xarch_device -Wno-error=atomic-alignment %s \
// RUN: 2>&1 | FileCheck -check-prefix=NO-WARN-ATOMIC %s
-// NO-WARN-ATOMIC: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-Werror=atomic-alignment" {{.*}} "-Wno-error=atomic-alignment"
+// NO-WARN-ATOMIC: clang{{.*}} "-triple" "amdgpu9.06-amd-amdhsa" {{.*}} "-Werror=atomic-alignment" {{.*}} "-Wno-error=atomic-alignment"
// NO-WARN-ATOMIC-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-Werror=atomic-alignment"
// NO-WARN-ATOMIC-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-Wno-error=atomic-alignment"
@@ -268,7 +268,7 @@
// RUN: --offload-arch=gfx1100 --offload-new-driver \
// RUN: -fprofile-instr-generate -fcoverage-mapping %s 2>&1 | \
// RUN: FileCheck -check-prefix=COV %s
-// COV: clang-linker-wrapper{{.*}} "--device-compiler=amdgcn-amd-amdhsa=-fprofile-instr-generate" "--device-compiler=amdgcn-amd-amdhsa=-fcoverage-mapping"
+// COV: clang-linker-wrapper{{.*}} "--device-compiler=amdgpu-amd-amdhsa=-fprofile-instr-generate" "--device-compiler=amdgpu-amd-amdhsa=-fcoverage-mapping"
// RUN: %clang -### -Werror --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
@@ -276,7 +276,7 @@
// RUN: -fprofile-instr-generate -fcoverage-mapping \
// RUN: -fcoverage-compilation-dir=/src %s 2>&1 | \
// RUN: FileCheck -check-prefix=COV-DIR %s
-// COV-DIR: clang-linker-wrapper{{.*}} "--device-compiler=amdgcn-amd-amdhsa=-fcoverage-compilation-dir=/src"
+// COV-DIR: clang-linker-wrapper{{.*}} "--device-compiler=amdgpu-amd-amdhsa=-fcoverage-compilation-dir=/src"
// RUN: %clang -### -Werror --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
// RUN: -resource-dir=%S/Inputs/resource_dir \
diff --git a/clang/test/Driver/hip-phases.hip b/clang/test/Driver/hip-phases.hip
index 8fb58dc98cefc..c410c357ea899 100644
--- a/clang/test/Driver/hip-phases.hip
+++ b/clang/test/Driver/hip-phases.hip
@@ -35,22 +35,22 @@
// OLDN-DAG: [[P6:[0-9]+]]: backend, {[[P5]]}, assembler, (device-[[T]], [[ARCH]])
// OLDN-DAG: [[P7:[0-9]+]]: assembler, {[[P6]]}, object, (device-[[T]], [[ARCH]])
// OLDN-DAG: [[P8:[0-9]+]]: linker, {[[P7]]}, image, (device-[[T]], [[ARCH]])
-// OLDN-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P8]]}, image
+// OLDN-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P8]]}, image
// OLDN-DAG: [[P10:[0-9]+]]: linker, {[[P9]]}, hip-fatbin, (device-[[T]])
// OLDR-DAG: [[P6:[0-9]+]]: backend, {[[P5]]}, lto-bc, (device-[[T]], [[ARCH]])
// OLDR-DAG: [[P7:[0-9]+]]: linker, {[[P6]]}, image, (device-[[T]], [[ARCH]])
-// OLDR-DAG: [[P8:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P7]]}, image
+// OLDR-DAG: [[P8:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P7]]}, image
// OLDR-DAG: [[P9:[0-9]+]]: linker, {[[P8]]}, object, (device-[[T]])
-// OLDR-DAG: [[P10:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P9]]}, object
+// OLDR-DAG: [[P10:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P9]]}, object
// NEW-DAG: [[P6:[0-9]+]]: backend, {[[P5]]}, lto-bc, (device-[[T]], [[ARCH]])
-// NEW-DAG: [[P7:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P6]]}, lto-bc
+// NEW-DAG: [[P7:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P6]]}, lto-bc
// NEW-DAG: [[P8:[0-9]+]]: llvm-offload-binary, {[[P7]]}, image, (device-[[T]])
// NEWN-DAG: [[P9:[0-9]+]]: clang-linker-wrapper, {[[P8]]}, hip-fatbin, (device-[[T]])
// NEWLTO-DAG: [[P9:[0-9]+]]: clang-linker-wrapper, {[[P8]]}, hip-fatbin, (device-[[T]])
-// OLDN-DAG: [[P11:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P10]]}, ir
-// NEWN-DAG: [[P10:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P9]]}, ir
-// NEWLTO-DAG: [[P10:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P9]]}, ir
+// OLDN-DAG: [[P11:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P10]]}, ir
+// NEWN-DAG: [[P10:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P9]]}, ir
+// NEWLTO-DAG: [[P10:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P9]]}, ir
// NEWR-DAG: [[P9:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (x86_64-unknown-linux-gnu)" {[[P8]]}, ir
// OLDR-DAG: [[P14:[0-9]+]]: linker, {[[P13]], [[P10]]}, image, (host-[[T]])
// OLDN-DAG: [[P12:[0-9]+]]: backend, {[[P11]]}, assembler, (host-[[T]])
@@ -104,7 +104,7 @@
// NRD2-DAG: [[P6:[0-9]+]]: backend, {[[P5]]}, assembler, (device-[[T]], [[ARCH1]])
// NRD2-DAG: [[P7:[0-9]+]]: assembler, {[[P6]]}, object, (device-[[T]], [[ARCH1]])
// NRD2-DAG: [[P8:[0-9]+]]: linker, {[[P7]]}, image, (device-[[T]], [[ARCH1]])
-// NRD2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH1]])" {[[P8]]}, image
+// NRD2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH1]])" {[[P8]]}, image
// NRD2-DAG: [[P10:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T]], (device-[[T]], [[ARCH2:gfx900]])
// NRD2-DAG: [[P11:[0-9]+]]: preprocessor, {[[P10]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH2]])
@@ -112,9 +112,9 @@
// NRD2-DAG: [[P13:[0-9]+]]: backend, {[[P12]]}, assembler, (device-[[T]], [[ARCH2]])
// NRD2-DAG: [[P14:[0-9]+]]: assembler, {[[P13]]}, object, (device-[[T]], [[ARCH2]])
// NRD2-DAG: [[P15:[0-9]+]]: linker, {[[P14]]}, image, (device-[[T]], [[ARCH2]])
-// NRD2-DAG: [[P16:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P15]]}, image
+// NRD2-DAG: [[P16:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P15]]}, image
// NRD2-DAG: [[P17:[0-9]+]]: linker, {[[P9]], [[P16]]}, hip-fatbin, (device-[[T]])
-// NRD2-DAG: [[P18:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P17]]}, ir
+// NRD2-DAG: [[P18:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P17]]}, ir
// NRD2-DAG: [[P19:[0-9]+]]: backend, {[[P18]]}, assembler, (host-[[T]])
// NRD2-DAG: [[P20:[0-9]+]]: assembler, {[[P19]]}, object, (host-[[T]])
// NCL2-DAG: [[P21:[0-9]+]]: linker, {[[P20]]}, image, (host-[[T]])
@@ -141,16 +141,16 @@
// RDC2-DAG: [[P5:[0-9]+]]: compiler, {[[P4]]}, ir, (device-[[T]], [[ARCH1]])
// RDC2-DAG: [[P6:[0-9]+]]: backend, {[[P5]]}, lto-bc, (device-[[T]], [[ARCH1]])
// RCL2-DAG: [[P8:[0-9]+]]: linker, {[[P6]]}, image, (device-[[T]], [[ARCH1]])
-// RCL2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH1]])" {[[P8]]}, image
-// RC2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH1]])" {[[P6]]}, lto-bc
+// RCL2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH1]])" {[[P8]]}, image
+// RC2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH1]])" {[[P6]]}, lto-bc
// RDC2-DAG: [[P10:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T]], (device-[[T]], [[ARCH2:gfx900]])
// RDC2-DAG: [[P11:[0-9]+]]: preprocessor, {[[P10]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH2]])
// RDC2-DAG: [[P12:[0-9]+]]: compiler, {[[P11]]}, ir, (device-[[T]], [[ARCH2]])
// RDC2-DAG: [[P13:[0-9]+]]: backend, {[[P12]]}, lto-bc, (device-[[T]], [[ARCH2]])
// RCL2-DAG: [[P15:[0-9]+]]: linker, {[[P13]]}, image, (device-[[T]], [[ARCH2]])
-// RCL2-DAG: [[P16:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P15]]}, image
-// RC2-DAG: [[P16:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P13]]}, lto-bc
+// RCL2-DAG: [[P16:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P15]]}, image
+// RC2-DAG: [[P16:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P13]]}, lto-bc
// RC2-DAG: [[P0:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T:hip]], (host-[[T]])
// RC2-DAG: [[P1:[0-9]+]]: preprocessor, {[[P0]]}, [[T]]-cpp-output, (host-[[T]])
@@ -159,7 +159,7 @@
// RC2-DAG: [[P20:[0-9]+]]: assembler, {[[P19]]}, object, (host-[[T]])
// RCL2-DAG: [[P17:[0-9]+]]: linker, {[[P9]], [[P16]]}, object, (device-[[T]])
-// RCL2-DAG: [[P22:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P17]]}, object
+// RCL2-DAG: [[P22:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P17]]}, object
// RCL2-DAG: [[P23:[0-9]+]]: linker, {[[P20]], [[P22]]}, image, (host-[[T]])
// RC2-DAG: [[P23:[0-9]+]]: clang-offload-bundler, {[[P9]], [[P16]], [[P20]]}, object, (host-[[T]])
@@ -256,9 +256,9 @@
// DBIN-DAG: [[P3:[0-9]+]]: backend, {[[P2]]}, assembler, (device-[[T]], [[ARCH]])
// DBIN-DAG: [[P4:[0-9]+]]: assembler, {[[P3]]}, object, (device-[[T]], [[ARCH]])
// DBIN-DAG: [[P5:[0-9]+]]: linker, {[[P4]]}, image, (device-[[T]], [[ARCH]])
-// DBIN-DAG: [[P6:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P5]]}, image
+// DBIN-DAG: [[P6:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P5]]}, image
// DBIN-DAG: [[P7:[0-9]+]]: linker, {[[P6]]}, hip-fatbin, (device-hip)
-// DBIN-DAG: [[P8:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P7]]}, hip-fatbin
+// DBIN-DAG: [[P8:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P7]]}, hip-fatbin
// DBIN-NOT: host
//
@@ -272,7 +272,7 @@
// DASM-DAG: [[P1:[0-9]+]]: preprocessor, {[[P0]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH]])
// DASM-DAG: [[P2:[0-9]+]]: compiler, {[[P1]]}, ir, (device-[[T]], [[ARCH]])
// DASM-DAG: [[P3:[0-9]+]]: backend, {[[P2]]}, assembler, (device-[[T]], [[ARCH]])
-// DASM-DAG: [[P4:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P3]]}, assembler
+// DASM-DAG: [[P4:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P3]]}, assembler
// DASM-NOT: clang-offload-bundler
// DASM-NOT: host
@@ -300,7 +300,7 @@
// RELOC-DAG: [[P3:[0-9]+]]: backend, {[[P2]]}, assembler, (device-[[T]], [[ARCH]])
// RELOC-DAG: [[P4:[0-9]+]]: assembler, {[[P3]]}, object, (device-[[T]], [[ARCH]])
// RELOC-NOT: linker
-// RELOC-DAG: [[P5:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P4]]}
+// RELOC-DAG: [[P5:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P4]]}
// RELOC-NOT: host
//
@@ -321,14 +321,14 @@
// RELOC2-DAG: [[P3:[0-9]+]]: backend, {[[P2]]}, assembler, (device-[[T]], [[ARCH]])
// RELOC2-DAG: [[P4:[0-9]+]]: assembler, {[[P3]]}, object, (device-[[T]], [[ARCH]])
// RELOC2-NOT: linker
-// RELOC2-DAG: [[P5:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P4]]}, object
+// RELOC2-DAG: [[P5:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P4]]}, object
// RELOC2-DAG: [[P6:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T:hip]], (device-[[T]], [[ARCH2:gfx900]])
// RELOC2-DAG: [[P7:[0-9]+]]: preprocessor, {[[P6]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH2]])
// RELOC2-DAG: [[P8:[0-9]+]]: compiler, {[[P7]]}, ir, (device-[[T]], [[ARCH2]])
// RELOC2-DAG: [[P9:[0-9]+]]: backend, {[[P8]]}, assembler, (device-[[T]], [[ARCH2]])
// RELOC2-DAG: [[P10:[0-9]+]]: assembler, {[[P9]]}, object, (device-[[T]], [[ARCH2]])
// RELOC2-NOT: linker
-// RELOC2-DAG: [[P11:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P10]]}, object
+// RELOC2-DAG: [[P11:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P10]]}, object
// RELOC2-NOT: host
//
@@ -352,16 +352,16 @@
// DBIN2-DAG: [[P3:[0-9]+]]: backend, {[[P2]]}, assembler, (device-[[T]], [[ARCH]])
// DBIN2-DAG: [[P4:[0-9]+]]: assembler, {[[P3]]}, object, (device-[[T]], [[ARCH]])
// DBIN2-DAG: [[P5:[0-9]+]]: linker, {[[P4]]}, image, (device-[[T]], [[ARCH]])
-// DBIN2-DAG: [[P6:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P5]]}, image
+// DBIN2-DAG: [[P6:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P5]]}, image
// DBIN2-DAG: [[P7:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T]], (device-[[T]], [[ARCH2:gfx900]])
// DBIN2-DAG: [[P8:[0-9]+]]: preprocessor, {[[P7]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH2]])
// DBIN2-DAG: [[P9:[0-9]+]]: compiler, {[[P8]]}, ir, (device-[[T]], [[ARCH2]])
// DBIN2-DAG: [[P10:[0-9]+]]: backend, {[[P9]]}, assembler, (device-[[T]], [[ARCH2]])
// DBIN2-DAG: [[P11:[0-9]+]]: assembler, {[[P10]]}, object, (device-[[T]], [[ARCH2]])
// DBIN2-DAG: [[P12:[0-9]+]]: linker, {[[P11]]}, image, (device-[[T]], [[ARCH2]])
-// DBIN2-DAG: [[P13:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P12]]}, image
+// DBIN2-DAG: [[P13:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P12]]}, image
// DBIN2-DAG: [[P14:[0-9]+]]: linker, {[[P6]], [[P13]]}, hip-fatbin, (device-hip)
-// DBIN2-DAG: [[P15:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P14]]}, hip-fatbin
+// DBIN2-DAG: [[P15:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P14]]}, hip-fatbin
// DBIN2-NOT: host
//
@@ -388,12 +388,12 @@
// DASM2-DAG: [[P1:[0-9]+]]: preprocessor, {[[P0]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH]])
// DASM2-DAG: [[P2:[0-9]+]]: compiler, {[[P1]]}, ir, (device-[[T]], [[ARCH]])
// DASM2-DAG: [[P3:[0-9]+]]: backend, {[[P2]]}, assembler, (device-[[T]], [[ARCH]])
-// DASM2-DAG: [[P4:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P3]]}, assembler
+// DASM2-DAG: [[P4:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P3]]}, assembler
// DASM2-DAG: [[P5:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T]], (device-[[T]], [[ARCH2:gfx900]])
// DASM2-DAG: [[P6:[0-9]+]]: preprocessor, {[[P5]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH2]])
// DASM2-DAG: [[P7:[0-9]+]]: compiler, {[[P6]]}, ir, (device-[[T]], [[ARCH2]])
// DASM2-DAG: [[P8:[0-9]+]]: backend, {[[P7]]}, assembler, (device-[[T]], [[ARCH2]])
-// DASM2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P8]]}, assembler
+// DASM2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P8]]}, assembler
// DASM2-BUNDLE: [[P10:[0-9]+]]: clang-offload-bundler, {[[P4]], [[P9]]}, assembler, (device-hip)
// DASM2-NOBUNDLE-NOT: clang-offload-bundler, {[[P4]], [[P9]]}, assembler, (device-hip)
// DASM2-NOT: host
@@ -437,13 +437,13 @@
// RL2-DAG: [[P3:[0-9]+]]: clang-offload-unbundler, {[[P2]]}, object
// RL2-DAG: [[P4:[0-9]+]]: linker, {[[P1]], [[P3]]}, image, (device-[[T:hip]], [[ARCH1:gfx803]])
-// RL2-DAG: [[P5:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH1]])" {[[P4]]}, image
+// RL2-DAG: [[P5:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH1]])" {[[P4]]}, image
// RL2-DAG: [[P6:[0-9]+]]: linker, {[[P1]], [[P3]]}, image, (device-[[T]], [[ARCH2:gfx900]])
-// RL2-DAG: [[P7:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P6]]}, image
+// RL2-DAG: [[P7:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P6]]}, image
// RL2-DEV-DAG: [[P8:[0-9]+]]: linker, {[[P5]], [[P7]]}, hip-fatbin, (device-[[T]])
-// RL2-DEV-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P8]]}, hip-fatbin
+// RL2-DEV-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P8]]}, hip-fatbin
// RL2-EM-DAG: [[P8:[0-9]+]]: linker, {[[P5]], [[P7]]}, object, (device-[[T]])
-// RL2-EM-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P8]]}, object
+// RL2-EM-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa)" {[[P8]]}, object
// RL2-NB-NOT: linker
// RL2-NB-NOT: offload
@@ -520,17 +520,17 @@
// PPE-DAG: [[P0:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T:hip]], (device-[[T]], [[ARCH:gfx803]])
// PPE-DAG: [[P1:[0-9]+]]: preprocessor, {[[P0]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH]])
-// PPE-DAG: [[P2:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P1]]}, [[T]]-cpp-output
+// PPE-DAG: [[P2:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P1]]}, [[T]]-cpp-output
// PPEB-DAG: [[P3:[0-9]+]]: clang-offload-bundler, {[[P2]]}, [[T]]-cpp-output, (device-hip)
// PPEN-NOT: clang-offload-bundler, {{.*}}, [[T]]-cpp-output, (device-hip)
// PPE-NOT: host
// PPE2-DAG: [[P0:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T:hip]], (device-[[T]], [[ARCH:gfx803]])
// PPE2-DAG: [[P1:[0-9]+]]: preprocessor, {[[P0]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH]])
-// PPE2-DAG: [[P2:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P1]]}, [[T]]-cpp-output
+// PPE2-DAG: [[P2:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P1]]}, [[T]]-cpp-output
// PPE2-DAG: [[P5:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T]], (device-[[T]], [[ARCH2:gfx900]])
// PPE2-DAG: [[P6:[0-9]+]]: preprocessor, {[[P5]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH2]])
-// PPE2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P6]]}, [[T]]-cpp-output
+// PPE2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P6]]}, [[T]]-cpp-output
// PPE2B-DAG: [[P10:[0-9]+]]: clang-offload-bundler, {[[P2]], [[P9]]}, [[T]]-cpp-output, (device-hip)
// PPE2N-NOT: clang-offload-bundler, {{.*}}, [[T]]-cpp-output, (device-hip)
// PPE2-NOT: host
@@ -546,12 +546,12 @@
// LLVM2-DAG: [[P1:[0-9]+]]: preprocessor, {[[P0]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH]])
// LLVM2-DAG: [[P2:[0-9]+]]: compiler, {[[P1]]}, ir, (device-[[T]], [[ARCH]])
// LLVM2-DAG: [[P3:[0-9]+]]: backend, {[[P2]]}, ir, (device-[[T]], [[ARCH]])
-// LLVM2-DAG: [[P4:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P3]]}, ir
+// LLVM2-DAG: [[P4:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P3]]}, ir
// LLVM2-DAG: [[P5:[0-9]+]]: input, "{{.*}}hip-phases.hip", [[T]], (device-[[T]], [[ARCH2:gfx900]])
// LLVM2-DAG: [[P6:[0-9]+]]: preprocessor, {[[P5]]}, [[T]]-cpp-output, (device-[[T]], [[ARCH2]])
// LLVM2-DAG: [[P7:[0-9]+]]: compiler, {[[P6]]}, ir, (device-[[T]], [[ARCH2]])
// LLVM2-DAG: [[P8:[0-9]+]]: backend, {[[P7]]}, ir, (device-[[T]], [[ARCH2]])
-// LLVM2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P8]]}, ir
+// LLVM2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P8]]}, ir
// LLVM2-DAG: [[P10:[0-9]+]]: clang-offload-bundler, {[[P4]], [[P9]]}, ir, (device-hip)
// LLVM2-NOT: host
@@ -559,10 +559,10 @@
// PPELLVM2-DAG: [[P1:[0-9]+]]: clang-offload-unbundler, {[[P0]]}, hip-cpp-output
// PPELLVM2-DAG: [[P2:[0-9]+]]: compiler, {[[P1]]}, ir, (device-[[T]], [[ARCH:gfx803]])
// PPELLVM2-DAG: [[P3:[0-9]+]]: backend, {[[P2]]}, ir, (device-[[T]], [[ARCH]])
-// PPELLVM2-DAG: [[P4:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH]])" {[[P3]]}, ir
+// PPELLVM2-DAG: [[P4:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH]])" {[[P3]]}, ir
// PPELLVM2-DAG: [[P7:[0-9]+]]: compiler, {[[P1]]}, ir, (device-[[T]], [[ARCH2:gfx900]])
// PPELLVM2-DAG: [[P8:[0-9]+]]: backend, {[[P7]]}, ir, (device-[[T]], [[ARCH2]])
-// PPELLVM2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa:[[ARCH2]])" {[[P8]]}, ir
+// PPELLVM2-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] (amdgpu-amd-amdhsa:[[ARCH2]])" {[[P8]]}, ir
// PPELLVM2-DAG: [[P10:[0-9]+]]: clang-offload-bundler, {[[P4]], [[P9]]}, ir, (device-hip)
// PPELLVM2-NOT: host
@@ -651,7 +651,7 @@
// CHECK: [[B3:[0-9]+]]: backend, {[[B2]]}, ir, (device-hip, [[ARCH]])
// CHECK: [[L0:[0-9]+]]: linker, {[[A3]], [[B3]]}, ir, (device-hip, [[ARCH]])
-// CHECK: offload, "device-hip (amdgcn-amd-amdhsa:[[ARCH]])" {[[L0]]}, ir
+// CHECK: offload, "device-hip (amdgpu-amd-amdhsa:[[ARCH]])" {[[L0]]}, ir
//
// Test the bindings using the new driver in LTO-mode.
@@ -666,12 +666,12 @@
// LTO-NEXT: 4: preprocessor, {3}, hip-cpp-output, (device-hip, gfx908)
// LTO-NEXT: 5: compiler, {4}, ir, (device-hip, gfx908)
// LTO-NEXT: 6: backend, {5}, lto-bc, (device-hip, gfx908)
-// LTO-NEXT: 7: offload, "device-hip (amdgcn-amd-amdhsa:gfx908)" {6}, lto-bc
+// LTO-NEXT: 7: offload, "device-hip (amdgpu-amd-amdhsa:gfx908)" {6}, lto-bc
// LTO-NEXT: 8: input, "[[INPUT]]", hip, (device-hip, gfx90a)
// LTO-NEXT: 9: preprocessor, {8}, hip-cpp-output, (device-hip, gfx90a)
// LTO-NEXT: 10: compiler, {9}, ir, (device-hip, gfx90a)
// LTO-NEXT: 11: backend, {10}, lto-bc, (device-hip, gfx90a)
-// LTO-NEXT: 12: offload, "device-hip (amdgcn-amd-amdhsa:gfx90a)" {11}, lto-bc
+// LTO-NEXT: 12: offload, "device-hip (amdgpu-amd-amdhsa:gfx90a)" {11}, lto-bc
// LTO-NEXT: 13: llvm-offload-binary, {7, 12}, image, (device-hip)
// LTO-NEXT: 14: offload, "host-hip (x86_64-unknown-linux-gnu)" {2}, "device-hip (x86_64-unknown-linux-gnu)" {13}, ir
// LTO-NEXT: 15: backend, {14}, assembler, (host-hip)
@@ -687,7 +687,7 @@
// DEVICE-ONLY-NEXT: 1: preprocessor, {0}, hip-cpp-output, (device-hip, gfx90a)
// DEVICE-ONLY-NEXT: 2: compiler, {1}, ir, (device-hip, gfx90a)
// DEVICE-ONLY-NEXT: 3: backend, {2}, ir, (device-hip, gfx90a)
-// DEVICE-ONLY-NEXT: 4: offload, "device-hip (amdgcn-amd-amdhsa:gfx90a)" {3}, none
+// DEVICE-ONLY-NEXT: 4: offload, "device-hip (amdgpu-amd-amdhsa:gfx90a)" {3}, none
//
// Test the new driver bundling SPIR-V targets.
@@ -702,7 +702,7 @@
// SPIRV-ONLY-NEXT: 3: backend, {2}, assembler, (device-hip, gfx1030)
// SPIRV-ONLY-NEXT: 4: assembler, {3}, object, (device-hip, gfx1030)
// SPIRV-ONLY-NEXT: 5: linker, {4}, image, (device-hip, gfx1030)
-// SPIRV-ONLY-NEXT: 6: offload, "device-hip (amdgcn-amd-amdhsa:gfx1030)" {5}, image
+// SPIRV-ONLY-NEXT: 6: offload, "device-hip (amdgpu-amd-amdhsa:gfx1030)" {5}, image
// SPIRV-ONLY-NEXT: 7: input, "[[INPUT]]", hip, (device-hip, amdgcnspirv)
// SPIRV-ONLY-NEXT: 8: preprocessor, {7}, hip-cpp-output, (device-hip, amdgcnspirv)
// SPIRV-ONLY-NEXT: 9: compiler, {8}, ir, (device-hip, amdgcnspirv)
@@ -710,4 +710,4 @@
// SPIRV-ONLY-NEXT: 11: linker, {10}, image, (device-hip, amdgcnspirv)
// SPIRV-ONLY-NEXT: 12: offload, "device-hip (spirv64-amd-amdhsa:amdgcnspirv)" {11}, image
// SPIRV-ONLY-NEXT: 13: linker, {6, 12}, hip-fatbin, (device-hip)
-// SPIRV-ONLY-NEXT: 14: offload, "device-hip (amdgcn-amd-amdhsa)" {13}, none
+// SPIRV-ONLY-NEXT: 14: offload, "device-hip (amdgpu-amd-amdhsa)" {13}, none
diff --git a/clang/test/Driver/hip-rdc-device-only.hip b/clang/test/Driver/hip-rdc-device-only.hip
index b946f198160a2..921f1d3c8b4e7 100644
--- a/clang/test/Driver/hip-rdc-device-only.hip
+++ b/clang/test/Driver/hip-rdc-device-only.hip
@@ -61,7 +61,7 @@
// RUN: %S/Inputs/hip_multiple_inputs/a.cu -o %t.s --no-gpu-bundle-output \
// RUN: 2>&1 | FileCheck -check-prefix=FAIL %s
-// COMMON: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// COMMON: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// COMMON-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// EMITBC-SAME: "-emit-llvm-bc"
// EMITLL-SAME: "-emit-llvm"
@@ -74,7 +74,7 @@
// EMITLL-SAME: {{.*}} "-o" {{".*a.*\.(s|ll)"}} "-x" "hip"
// CHECK-SAME: {{.*}} {{".*a.cu"}}
-// COMMON: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// COMMON: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// COMMON-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// EMITBC-SAME: "-emit-llvm-bc"
// EMITLL-SAME: "-emit-llvm"
@@ -88,10 +88,10 @@
// COMMON-SAME: {{.*}} {{".*a.cu"}}
// COMMON: "{{.*}}clang-offload-bundler" "-type={{(bc|ll|o|s)}}"
-// COMMON-SAME: "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900"
-// COMMON-SAME: "-output=a-hip-amdgcn-amd-amdhsa.{{(bc|ll|o|s)}}"
+// COMMON-SAME: "-targets=hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900"
+// COMMON-SAME: "-output=a-hip-amdgpu-amd-amdhsa.{{(bc|ll|o|s)}}"
-// COMMON: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// COMMON: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// COMMON-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// EMITBC-SAME: "-emit-llvm-bc"
// EMITLL-SAME: "-emit-llvm"
@@ -104,7 +104,7 @@
// EMITLL-SAME: {{.*}} "-o" {{".*b.*\.(s|ll)"}} "-x" "hip"
// COMMON-SAME: {{.*}} {{".*b.hip"}}
-// COMMON: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// COMMON: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// COMMON-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// EMITBC-SAME: "-emit-llvm-bc"
// EMITLL-SAME: "-emit-llvm"
@@ -118,67 +118,67 @@
// COMMON-SAME: {{.*}} {{".*b.hip"}}
// COMMON: "{{.*}}clang-offload-bundler" "-type={{(bc|ll|o|s)}}"
-// COMMON-SAME: "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900"
-// COMMON-SAME: "-output=b-hip-amdgcn-amd-amdhsa.{{(bc|ll|o|s)}}"
+// COMMON-SAME: "-targets=hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900"
+// COMMON-SAME: "-output=b-hip-amdgpu-amd-amdhsa.{{(bc|ll|o|s)}}"
-// SAVETEMP: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-E"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx803"
// SAVETEMP-SAME: {{.*}} "-o" [[A_GFX803_CUI:"a.*hipi"]] "-x" "hip" {{".*a.cu"}}
-// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-emit-llvm-bc"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx803"
// SAVETEMP-SAME: {{.*}} "-o" [[A_GFX803_TMP_BC:"a.*tmp.bc"]] "-x" "hip-cpp-output" [[A_GFX803_CUI]]
-// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-emit-llvm"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx803"
// SAVETEMP-SAME: {{.*}} "-o" {{"a.*\.s"}} "-x" "ir" [[A_GFX803_TMP_BC]]
-// SAVETEMP: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-E"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx900"
// SAVETEMP-SAME: {{.*}} "-o" [[A_GFX900_CUI:"a.*hipi"]] "-x" "hip" {{".*a.cu"}}
-// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-emit-llvm-bc"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx900"
// SAVETEMP-SAME: {{.*}} "-o" [[A_GFX900_TMP_BC:"a.*tmp.bc"]] "-x" "hip-cpp-output" [[A_GFX900_CUI]]
-// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-emit-llvm"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx900"
// SAVETEMP-SAME: {{.*}} "-o" {{"a.*\.s"}} "-x" "ir" [[A_GFX900_TMP_BC]]
// SAVETEMP: "{{.*}}clang-offload-bundler" "-type=s"
-// SAVETEMP-SAME: "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900"
-// SAVETEMP-SAME: "-output=a-hip-amdgcn-amd-amdhsa.s"
+// SAVETEMP-SAME: "-targets=hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900"
+// SAVETEMP-SAME: "-output=a-hip-amdgpu-amd-amdhsa.s"
-// SAVETEMP: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-E"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx803"
// SAVETEMP-SAME: {{.*}} "-o" [[B_GFX803_CUI:"b.*hipi"]] "-x" "hip" {{".*b.hip"}}
-// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-emit-llvm-bc"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx803"
// SAVETEMP-SAME: {{.*}} "-o" [[B_GFX803_TMP_BC:"b.*tmp.bc"]] "-x" "hip-cpp-output" [[B_GFX803_CUI]]
-// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-emit-llvm"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx803"
// SAVETEMP-SAME: {{.*}} "-o" {{"b.*\.s"}} "-x" "ir" [[B_GFX803_TMP_BC]]
-// SAVETEMP: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-E"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx900"
// SAVETEMP-SAME: {{.*}} "-o" [[B_GFX900_CUI:"b.*hipi"]] "-x" "hip" {{".*b.hip"}}
-// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-emit-llvm-bc"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx900"
// SAVETEMP-SAME: {{.*}} "-o" [[B_GFX900_TMP_BC:"b.*tmp.bc"]] "-x" "hip-cpp-output" [[B_GFX900_CUI]]
-// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
+// SAVETEMP-NEXT: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"
// SAVETEMP-SAME: "-emit-llvm"
// SAVETEMP-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx900"
// SAVETEMP-SAME: {{.*}} "-o" {{"b.*\.s"}} "-x" "ir" [[B_GFX900_TMP_BC]]
// SAVETEMP: "{{.*}}clang-offload-bundler" "-type=s"
-// SAVETEMP-SAME: "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900"
-// SAVETEMP-SAME: "-output=b-hip-amdgcn-amd-amdhsa.s"
+// SAVETEMP-SAME: "-targets=hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900"
+// SAVETEMP-SAME: "-output=b-hip-amdgpu-amd-amdhsa.s"
// FAIL: error: cannot specify -o when generating multiple output files
diff --git a/clang/test/Driver/hip-sanitize-options.hip b/clang/test/Driver/hip-sanitize-options.hip
index 964d89a609bb9..45724eb305fe4 100644
--- a/clang/test/Driver/hip-sanitize-options.hip
+++ b/clang/test/Driver/hip-sanitize-options.hip
@@ -115,7 +115,7 @@
// FAIL: error: cannot find ROCm device library for ABI version 5; provide its path via '--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to build without ROCm device library
-// XNACK: warning: ignoring 'leak' in '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
+// XNACK: warning: ignoring 'leak' in '-fsanitize=leak' option as it is not currently supported for target 'amdgpu-amd-amdhsa'
// XNACK: warning: ignoring '-fsanitize=address' option for offload arch 'gfx900:xnack-' as it is not currently supported there. Use it with an offload arch containing 'xnack+' instead
// XNACK: warning: ignoring '-fsanitize=address' option for offload arch 'gfx906' as it is not currently supported there. Use it with an offload arch containing 'xnack+' instead
// XNACK-DAG: {{"[^"]*clang[^"]*".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-target-cpu" "gfx900".* "-mxnack".* "-fsanitize=address"}}
@@ -135,7 +135,7 @@
// NOGPU-DAG: {{"[^"]*clang[^"]*".* "-target-cpu" "gfx900".* "-mno-xnack"}}
// NOGPU-DAG: {{"[^"]*clang[^"]*".* "-target-cpu" "gfx906"}}
// NOGPU-DAG: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address,leak"}}
-// NOGPUNEG-NOT: warning: ignoring '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
+// NOGPUNEG-NOT: warning: ignoring '-fsanitize=leak' option as it is not currently supported for target 'amdgpu9-amd-amdhsa'
// NOGPUNEG-NOT: warning: ignoring '-fsanitize=address' option for offload arch 'gfx900:xnack-' as it is not currently supported there. Use it with an offload arch containing 'xnack+' instead
// NOGPUNEG-NOT: warning: ignoring '-fsanitize=address' option for offload arch 'gfx906' as it is not currently supported there. Use it with an offload arch containing 'xnack+' instead
// NOGPUNEG-NOT: {{"[^"]*clang[^"]*".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-target-cpu" "gfx900".* "-mxnack".* "-fsanitize=address"}}
@@ -150,30 +150,28 @@
// NOGPUNEG-NOT: {{"[^"]*clang[^"]*".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-target-cpu" "gfx906"}}
// NOGPUNEG-NOT: {{"[^"]*lld(\.exe){0,1}".* ".*hip.bc"}}
-// INVALIDCOMBINATION1-DAG: warning: ignoring 'fuzzer' in '-fsanitize=address,fuzzer' option as it is not currently supported for target 'amdgcn-amd-amdhsa' [-Woption-ignored]
-// INVALIDCOMBINATION2-DAG: warning: ignoring 'fuzzer' in '-fsanitize=fuzzer,address' option as it is not currently supported for target 'amdgcn-amd-amdhsa' [-Woption-ignored]
+// INVALIDCOMBINATION1-DAG: warning: ignoring 'fuzzer' in '-fsanitize=address,fuzzer' option as it is not currently supported for target 'amdgpu-amd-amdhsa' [-Woption-ignored]
+// INVALIDCOMBINATION2-DAG: warning: ignoring 'fuzzer' in '-fsanitize=fuzzer,address' option as it is not currently supported for target 'amdgpu-amd-amdhsa' [-Woption-ignored]
// INVALIDCOMBINATION-DAG: {{"[^"]*clang[^"]*".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-target-cpu" "gfx900".* "-mxnack".* "-fsanitize=address"}}
// INVALIDCOMBINATION-DAG: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address,fuzzer,fuzzer-no-link"}}
-// MULT1: warning: ignoring 'leak' in '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa' [-Woption-ignored]
-// MULT1: warning: ignoring 'fuzzer' in '-fsanitize=address,fuzzer' option as it is not currently supported for target 'amdgcn-amd-amdhsa' [-Woption-ignored]
+// MULT1: warning: ignoring 'leak' in '-fsanitize=leak' option as it is not currently supported for target 'amdgpu-amd-amdhsa' [-Woption-ignored]
+// MULT1: warning: ignoring 'fuzzer' in '-fsanitize=address,fuzzer' option as it is not currently supported for target 'amdgpu-amd-amdhsa' [-Woption-ignored]
// FIXME: This should produce a separate warning for address and fuzzer. The xnack+ hint only applies to the address part
// MULT1: warning: ignoring '-fsanitize=address,fuzzer' option for offload arch 'gfx908:xnack-' as it is not currently supported there. Use it with an offload arch containing 'xnack+' instead [-Woption-ignored]
-// MULT2: warning: ignoring 'leak' in '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa' [-Woption-ignored]
-// MULT2: warning: ignoring 'fuzzer' in '-fsanitize=fuzzer,address' option as it is not currently supported for target 'amdgcn-amd-amdhsa' [-Woption-ignored]
-
-// FIXME: This should produce a separate warning for address and fuzzer. The xnack+ hint only applies to the address part
+// MULT2: warning: ignoring 'leak' in '-fsanitize=leak' option as it is not currently supported for target 'amdgpu-amd-amdhsa' [-Woption-ignored]
+// MULT2: warning: ignoring 'fuzzer' in '-fsanitize=fuzzer,address' option as it is not currently supported for target 'amdgpu-amd-amdhsa' [-Woption-ignored]
// MULT2: warning: ignoring '-fsanitize=fuzzer,address' option for offload arch 'gfx908:xnack-' as it is not currently supported there. Use it with an offload arch containing 'xnack+' instead [-Woption-ignored]
// XNACK2-DAG: {{"[^"]*clang[^"]*".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-target-cpu" "gfx900".* "-mxnack".* "-fsanitize=address"}}
// XNACK2-DAG: {{"[^"]*clang[^"]*".* "-target-cpu" "gfx908"}}
// XNACK2-DAG: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address,fuzzer,fuzzer-no-link,leak"}}
-// UNSUPPORTEDERROR: error: 'leak' in '-fsanitize=leak' option is not currently supported for target 'amdgcn-amd-amdhsa'
+// UNSUPPORTEDERROR: error: 'leak' in '-fsanitize=leak' option is not currently supported for target 'amdgpu-amd-amdhsa'
// XNACKERROR: error: '-fsanitize=address' option for offload arch 'gfx900:xnack-' is not currently supported there. Use it with an offload arch containing 'xnack+' instead
-// INVALIDCOMBINATIONERROR: error: 'fuzzer' in '-fsanitize=fuzzer,address' option is not currently supported for target 'amdgcn-amd-amdhsa'
+// INVALIDCOMBINATIONERROR: error: 'fuzzer' in '-fsanitize=fuzzer,address' option is not currently supported for target 'amdgpu-amd-amdhsa'
-// WARNSANCOV: warning: ignoring '-fsanitize-coverage=inline-bool-flag' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
-// ERRSANCOV: error: '-fsanitize-coverage-stack-depth-callback-min=42' option is not currently supported for target 'amdgcn-amd-amdhsa'
+// WARNSANCOV: warning: ignoring '-fsanitize-coverage=inline-bool-flag' option as it is not currently supported for target 'amdgpu-amd-amdhsa'
+// ERRSANCOV: error: '-fsanitize-coverage-stack-depth-callback-min=42' option is not currently supported for target 'amdgpu-amd-amdhsa'
diff --git a/clang/test/Driver/hip-save-temps.hip b/clang/test/Driver/hip-save-temps.hip
index a9af44062c0fd..b17a149e5d11d 100644
--- a/clang/test/Driver/hip-save-temps.hip
+++ b/clang/test/Driver/hip-save-temps.hip
@@ -35,23 +35,23 @@
// RDCL: "{{.*clang.*}}" "-cc1as" {{.*}} "-o" "hip-save-temps-host-x86_64-unknown-linux-gnu.o"
// device object paths
-// CHECK: {{".*clang.*"}} "-cc1" {{.*}} "-E" {{.*}} [[CPU:"-target-cpu" "gfx900"]] {{.*}} "-o" "hip-save-temps-hip-amdgcn-amd-amdhsa-gfx900.hipi"
-// NORDC: {{".*clang.*"}} "-cc1" {{.*}} "-emit-llvm-bc" {{.*}} [[CPU]] {{.*}} "-disable-llvm-passes" {{.*}} "-o" "hip-save-temps-hip-amdgcn-amd-amdhsa-gfx900.bc"
-// RDC: {{".*clang.*"}} "-cc1" {{.*}} "-emit-llvm-bc" {{.*}} [[CPU]] {{.*}} "-disable-llvm-passes" {{.*}} "-o" "hip-save-temps-hip-amdgcn-amd-amdhsa-gfx900.tmp.bc"
+// CHECK: {{".*clang.*"}} "-cc1" {{.*}} "-E" {{.*}} [[CPU:"-target-cpu" "gfx900"]] {{.*}} "-o" "hip-save-temps-hip-amdgpu9.00-amd-amdhsa-gfx900.hipi"
+// NORDC: {{".*clang.*"}} "-cc1" {{.*}} "-emit-llvm-bc" {{.*}} [[CPU]] {{.*}} "-disable-llvm-passes" {{.*}} "-o" "hip-save-temps-hip-amdgpu9.00-amd-amdhsa-gfx900.bc"
+// RDC: {{".*clang.*"}} "-cc1" {{.*}} "-emit-llvm-bc" {{.*}} [[CPU]] {{.*}} "-disable-llvm-passes" {{.*}} "-o" "hip-save-temps-hip-amdgpu9.00-amd-amdhsa-gfx900.tmp.bc"
-// RDC: {{".*clang.*"}} "-cc1" {{.*}} "-emit-llvm-bc" {{.*}} [[CPU]] {{.*}} "-o" "hip-save-temps-hip-amdgcn-amd-amdhsa-gfx900.{{(bc|o)}}"
+// RDC: {{".*clang.*"}} "-cc1" {{.*}} "-emit-llvm-bc" {{.*}} [[CPU]] {{.*}} "-o" "hip-save-temps-hip-amdgpu9.00-amd-amdhsa-gfx900.{{(bc|o)}}"
// CHECK-NOT: "{{.*}}llvm-link"
// CHECK-NOT: "{{.*}}opt"
// CHECK-NOT: "{{.*}}llc"
-// NORDC: {{.*lld.*}}"-o" "hip-save-temps-hip-amdgcn-amd-amdhsa-gfx900.out"
+// NORDC: {{.*lld.*}}"-o" "hip-save-temps-hip-amdgpu9.00-amd-amdhsa-gfx900.out"
// RDCL: "{{.*lld.*}}" {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" {{.*}}"-save-temps"
-// RDCL-SAME: "-o" "a.out-hip-amdgcn-amd-amdhsa-gfx900"
+// RDCL-SAME: "-o" "a.out-hip-amdgpu9.00-amd-amdhsa-gfx900"
// RDCC: "{{.*clang.*}}" "-cc1" {{.*}} "-E" {{.*}} "-o" "hip-save-temps-host-x86_64-unknown-linux-gnu.hipi"
// RDCC: "{{.*clang.*}}" "-cc1" {{.*}} "-emit-llvm-bc" {{.*}} "-o" "hip-save-temps-host-x86_64-unknown-linux-gnu.bc"
// RDCC: "{{.*clang.*}}" "-cc1" {{.*}} "-S" {{.*}} "-o" "hip-save-temps-host-x86_64-unknown-linux-gnu.s"
// RDCC: "{{.*clang.*}}" "-cc1as" {{.*}} "-o" "hip-save-temps-host-x86_64-unknown-linux-gnu.o"
// RDCC: "{{.*clang-offload-bundler.*}}" {{.*}} "-output=hip-save-temps.o"
-// RDCL: "{{.*clang-offload-bundler.*}}" {{.*}} "-output=hip-save-temps-hip-amdgcn-amd-amdhsa.hipfb"
+// RDCL: "{{.*clang-offload-bundler.*}}" {{.*}} "-output=hip-save-temps-hip-amdgpu-amd-amdhsa.hipfb"
// RDCL: "{{.*clang.*}}" "-target" "x86_64-unknown-linux-gnu" "-o" "{{.*}}.o" "-x" "assembler" "{{.*}}.mcin" "-c"
// -fno-gpu-rdc host object path
@@ -68,17 +68,35 @@
// RUN: %clang -### -ccc-print-bindings --target=x86_64-linux-gnu -nogpulib \
// RUN: -save-temps -fno-gpu-rdc -nogpuinc --offload-arch=gfx906 -c %s 2>&1 | \
// RUN: FileCheck -check-prefixes=NORDC-BINDINGS %s
-// NORDC-BINDINGS: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI:.+]]"
-// NORDC-BINDINGS-NEXT: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], output: "[[TMP_BC:.+]]"
-// NORDC-BINDINGS-NEXT: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[TMP_BC]]"], output: "[[BC:.+]]"
-// NORDC-BINDINGS-NEXT: "amdgcn-amd-amdhsa" - "Offload::Packager", inputs: ["[[BC]]"], output: "[[OUTPUT:.+]]"
-// NORDC-BINDINGS-NEXT: "amdgcn-amd-amdhsa" - "Offload::Linker", inputs: ["[[OUTPUT]]"], output: "[[FATBIN:.+]]"
+// NORDC-BINDINGS: "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI:.+]]"
+// NORDC-BINDINGS-NEXT: "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], output: "[[TMP_BC:.+]]"
+// NORDC-BINDINGS-NEXT: "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[TMP_BC]]"], output: "[[BC:.+]]"
+// NORDC-BINDINGS-NEXT: "amdgpu-amd-amdhsa" - "Offload::Packager", inputs: ["[[BC]]"], output: "[[OUTPUT:.+]]"
+// NORDC-BINDINGS-NEXT: "amdgpu-amd-amdhsa" - "Offload::Linker", inputs: ["[[OUTPUT]]"], output: "[[FATBIN:.+]]"
+
+
+
// Check to ensure we have a .tmp for unoptimized bitcode with -fgpu-rdc.
// RUN: %clang -### -ccc-print-bindings --target=x86_64-linux-gnu -nogpulib \
// RUN: -save-temps -fgpu-rdc -nogpuinc --offload-arch=gfx906 -c %s 2>&1 | \
// RUN: FileCheck -check-prefixes=RDC-BINDINGS %s
-// RDC-BINDINGS: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI:.+]]"
-// RDC-BINDINGS-NEXT: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], output: "[[TMP_BC:.+]]"
-// RDC-BINDINGS-NEXT: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[TMP_BC]]"], output: "[[BC:.+]]"
+// RDC-BINDINGS: # "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI:.+]]"
+// RDC-BINDINGS-NEXT: # "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], output: "[[TMP_BC:.+]]"
+// RDC-BINDINGS-NEXT: # "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[TMP_BC]]"], output: "[[BC:.+]]"
// RDC-BINDINGS-NEXT: # "x86_64-unknown-linux-gnu" - "Offload::Packager", inputs: ["[[BC]]"], output: "[[OUTPUT:.+]]"
+
+
+
+// RUN: %clang -### -ccc-print-bindings --target=x86_64-linux-gnu -nogpulib \
+// RUN: -save-temps -fno-gpu-rdc -nogpuinc --offload-arch=gfx906 --offload-arch=gfx1030 -c %s 2>&1 | \
+// RUN: FileCheck -check-prefixes=NORDC-BINDINGS-MULTIARCH %s
+//
+// NORDC-BINDINGS-MULTIARCH: "amdgpu10.30-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI_0:.+]]"
+// NORDC-BINDINGS-MULTIARCH-NEXT: "amdgpu10.30-amd-amdhsa" - "clang", inputs: ["[[HIPI_0]]"], output: "[[TMP_BC_0:.+]]"
+// NORDC-BINDINGS-MULTIARCH-NEXT: "amdgpu10.30-amd-amdhsa" - "clang", inputs: ["[[TMP_BC_0]]"], output: "[[BC_0:.+]]"
+// NORDC-BINDINGS-MULTIARCH-NEXT: "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HIPI_1:.+]]"
+// NORDC-BINDINGS-MULTIARCH-NEXT: "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[HIPI_1]]"], output: "[[TMP_BC_1:.+]]"
+// NORDC-BINDINGS-MULTIARCH-NEXT: "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[TMP_BC_1]]"], output: "[[BC_1:.+]]"
+// NORDC-BINDINGS-MULTIARCH-NEXT: "amdgpu-amd-amdhsa" - "Offload::Packager", inputs: ["[[BC_0]]", "[[BC_1]]"], output: "[[OUTPUT:.+]]"
+// NORDC-BINDINGS-MULTIARCH-NEXT: "amdgpu-amd-amdhsa" - "Offload::Linker", inputs: ["[[OUTPUT]]"], output: "[[FATBIN:.+]]"
diff --git a/clang/test/Driver/hip-target-id.hip b/clang/test/Driver/hip-target-id.hip
index b9ff07cbe68d0..f00a09e549f7b 100644
--- a/clang/test/Driver/hip-target-id.hip
+++ b/clang/test/Driver/hip-target-id.hip
@@ -21,7 +21,7 @@
// RUN: --no-offload-new-driver -fgpu-rdc \
// RUN: %s 2>&1 | FileCheck --check-prefixes=CHECK %s
-// CHECK: [[CLANG:"[^"]*clang[^"]*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:"[^"]*clang[^"]*"]] "-cc1" "-triple" "amdgpu9.08-amd-amdhsa"
// CHECK-SAME: "-target-cpu" "gfx908"
// CHECK-SAME: "-mxnack"
// CHECK-SAME: "-msramecc"
@@ -31,9 +31,14 @@
// TMP-SAME: "-mxnack"
// TMP-SAME: "-msramecc"
+// TMP: [[CLANG:"[^"]*clang[^"]*"]] "-cc1as" "-triple" "amdgpu9.08-amd-amdhsa"
+// TMP-SAME: "-target-cpu" "gfx908"
+// TMP-SAME: "-target-feature" "+sramecc"
+// TMP-SAME: "-target-feature" "+xnack"
+
// CHECK: [[LLD:"[^"]*lld[^"]*"]] {{.*}} "-plugin-opt=mcpu=gfx908"
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu9.08-amd-amdhsa"
// CHECK-SAME: "-target-cpu" "gfx908"
// CHECK-SAME: "-mxnack"
// CHECK-SAME: "-mno-sramecc"
@@ -41,7 +46,7 @@
// CHECK: [[LLD]] {{.*}} "-plugin-opt=mcpu=gfx908"
// CHECK: {{"[^"]*clang-offload-bundler[^"]*"}}
-// CHECK-SAME: "-targets=host-x86_64-unknown-linux-gnu,hipv4-amdgcn-amd-amdhsa--gfx908:sramecc+:xnack+,hipv4-amdgcn-amd-amdhsa--gfx908:sramecc-:xnack+"
+// CHECK-SAME: "-targets=host-x86_64-unknown-linux-gnu,hipv4-amdgpu9.08-amd-amdhsa--gfx908:sramecc+:xnack+,hipv4-amdgpu9.08-amd-amdhsa--gfx908:sramecc-:xnack+"
// Check canonicalization and repeating of target ID.
@@ -52,10 +57,10 @@
// RUN: --offload-arch=fiji \
// RUN: --no-offload-new-driver --rocm-path=%S/Inputs/rocm \
// RUN: %s 2>&1 | FileCheck -check-prefix=FIJI %s
-// FIJI: "-targets=host-x86_64-unknown-linux-gnu,hipv4-amdgcn-amd-amdhsa--gfx803"
+// FIJI: "-targets=host-x86_64-unknown-linux-gnu,hipv4-amdgpu8.03-amd-amdhsa--gfx803"
-// RUN: not %clang -### --target=x86_64-linux-gnu \
-// RUN: -x hip \
+// RUN: %clang -### --target=x86_64-linux-gnu \
+// RUN: -x hip -nogpulib \
// RUN: --offload-arch=gfx900:xnack- \
// RUN: --offload-arch=gfx900:xnack+ \
// RUN: --offload-arch=gfx908:sramecc+ \
@@ -63,4 +68,4 @@
// RUN: --offload-arch=gfx906 \
// RUN: --no-offload-new-driver --rocm-path=%S/Inputs/rocm \
// RUN: %s 2>&1 | FileCheck -check-prefix=MULTI %s
-// MULTI: "-targets=host-x86_64-unknown-linux-gnu,hipv4-amdgcn-amd-amdhsa--gfx900:xnack+,hipv4-amdgcn-amd-amdhsa--gfx900:xnack-,hipv4-amdgcn-amd-amdhsa--gfx908:sramecc+,hipv4-amdgcn-amd-amdhsa--gfx908:sramecc-,hipv4-amdgcn-amd-amdhsa--gfx906"
+// MULTI: "-targets=host-x86_64-unknown-linux-gnu,hipv4-amdgpu9.00-amd-amdhsa--gfx900:xnack+,hipv4-amdgpu9.00-amd-amdhsa--gfx900:xnack-,hipv4-amdgpu9.08-amd-amdhsa--gfx908:sramecc+,hipv4-amdgpu9.08-amd-amdhsa--gfx908:sramecc-,hipv4-amdgpu9.06-amd-amdhsa--gfx906"
diff --git a/clang/test/Driver/hip-thinlto.hip b/clang/test/Driver/hip-thinlto.hip
index 53fd0485cb16b..8ec0ff5130fcc 100644
--- a/clang/test/Driver/hip-thinlto.hip
+++ b/clang/test/Driver/hip-thinlto.hip
@@ -1,9 +1,9 @@
// RUN: %clang -foffload-lto=thin -nogpulib -nogpuinc %s -### 2>&1 | FileCheck %s
-// CHECK: "--device-compiler=amdgcn-amd-amdhsa=-flto=thin"
-// CHECK-SAME: "--device-linker=amdgcn-amd-amdhsa=-plugin-opt=-force-import-all"
-// CHECK-SAME: "--device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-to-local"
-// CHECK-SAME: "--device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3"
+// CHECK: "--device-compiler=amdgpu-amd-amdhsa=-flto=thin"
+// CHECK-SAME: "--device-linker=amdgpu-amd-amdhsa=-plugin-opt=-force-import-all"
+// CHECK-SAME: "--device-linker=amdgpu-amd-amdhsa=-plugin-opt=-avail-extern-to-local"
+// CHECK-SAME: "--device-linker=amdgpu-amd-amdhsa=-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3"
int main(int, char *[]) {
return 0;
}
diff --git a/clang/test/Driver/hip-toolchain-device-only.hip b/clang/test/Driver/hip-toolchain-device-only.hip
index c0621854f17ce..651292c03a6f1 100644
--- a/clang/test/Driver/hip-toolchain-device-only.hip
+++ b/clang/test/Driver/hip-toolchain-device-only.hip
@@ -5,7 +5,7 @@
// CHECK-NOT: error:
-// CHECK: [[CLANG:".*clang.*"]] "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1"{{.*}} "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-fcuda-is-device"
// CHECK-SAME: "-target-cpu" "gfx803"
// CHECK-SAME: {{.*}} "-o" [[OBJ_DEV_A_803:".*o"]] "-x" "hip"
@@ -13,7 +13,7 @@
// CHECK: [[LLD: ".*lld.*"]] "-flavor" "gnu" "-m" "elf64_amdgpu" "--no-undefined" "-shared"
// CHECK-SAME: "-o" "[[IMG_DEV_A_803:.*out]]" [[OBJ_DEV_A_803]]
-// CHECK: [[CLANG:".*clang.*"]] "-cc1"{{.*}} "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1"{{.*}} "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: "-fcuda-is-device"
// CHECK-SAME: "-target-cpu" "gfx900"
diff --git a/clang/test/Driver/hip-toolchain-mllvm.hip b/clang/test/Driver/hip-toolchain-mllvm.hip
index bedb053b9006c..36c9a4774d5da 100644
--- a/clang/test/Driver/hip-toolchain-mllvm.hip
+++ b/clang/test/Driver/hip-toolchain-mllvm.hip
@@ -26,12 +26,12 @@
// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \
// RUN: %s 2>&1 | FileCheck -check-prefix=NEG %s
-// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: {{.*}} "-target-cpu" "gfx803"
// CHECK-SAME: {{.*}} "-mllvm" "-unroll-count=10" {{.*}}
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: {{.*}} "-target-cpu" "gfx900"
// CHECK-SAME: {{.*}} "-mllvm" "-unroll-count=10" {{.*}}
diff --git a/clang/test/Driver/hip-toolchain-no-rdc.hip b/clang/test/Driver/hip-toolchain-no-rdc.hip
index f0e582b669558..5976db9182630 100644
--- a/clang/test/Driver/hip-toolchain-no-rdc.hip
+++ b/clang/test/Driver/hip-toolchain-no-rdc.hip
@@ -50,7 +50,7 @@
// Compile device code in a.cu to code object for gfx803.
//
-// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// OLD-SAME: "-emit-obj"
// NEW-SAME: "-emit-llvm-bc"
@@ -74,7 +74,7 @@
// Compile device code in a.cu to code object for gfx900.
//
-// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-{{(obj|llvm-bc)}}"
// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
@@ -99,21 +99,21 @@
// OLD: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
// OLD-SAME: "-bundle-align=4096"
-// OLD-SAME: "-targets={{.*}},hipv4-amdgcn-amd-amdhsa--gfx803,hipv4-amdgcn-amd-amdhsa--gfx900"
+// OLD-SAME: "-targets={{.*}},hipv4-amdgpu8.03-amd-amdhsa--gfx803,hipv4-amdgpu9.00-amd-amdhsa--gfx900"
// OLD-SAME: "-input={{.*}}" "-input=[[IMG_DEV_A_803]]" "-input=[[IMG_DEV_A_900]]" "-output=[[BUNDLE_A:.*hipfb]]"
// NEW: [[PACKAGER:".*llvm-offload-binary"]] "-o" "[[PACKAGE_A:.*.out]]"
-// NEW-SAME: "--image=file=[[OBJ_DEV_A_803]],triple=amdgcn-amd-amdhsa,arch=gfx803,kind=hip"
-// NEW-SAME: "--image=file=[[OBJ_DEV_A_900]],triple=amdgcn-amd-amdhsa,arch=gfx900,kind=hip"
+// NEW-SAME: "--image=file=[[OBJ_DEV_A_803]],triple=amdgpu8.03-amd-amdhsa,arch=gfx803,kind=hip"
+// NEW-SAME: "--image=file=[[OBJ_DEV_A_900]],triple=amdgpu9.00-amd-amdhsa,arch=gfx900,kind=hip"
// NEW: [[WRAPPER:".*clang-linker-wrapper]]"
-// NEW-SAME: "--device-compiler=amdgcn-amd-amdhsa=-flto=full"
+// NEW-SAME: "--device-compiler=amdgpu-amd-amdhsa=-flto=full"
// NEW-SAME: "--host-triple=x86_64-unknown-linux-gnu"
// NEW-SAME: "--emit-fatbin-only"
// NEW-SAME: "-o" "[[HIPFB_A:.*.hipfb]]" "[[PACKAGE_A]]"
// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
-// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK-SAME: "-aux-triple" "amdgpu-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
// OLD-SAME: {{.*}} "-foffload-include-binary" "[[BUNDLE_A]]"
@@ -125,7 +125,7 @@
// Compile device code in b.hip to code object for gfx803.
//
-// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-{{(obj|llvm-bc)}}"
// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
@@ -148,7 +148,7 @@
// Compile device code in b.hip to code object for gfx900.
//
-// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-{{(obj|llvm-bc)}}"
// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
@@ -173,20 +173,20 @@
// OLD: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
// OLD-SAME: "-bundle-align=4096"
-// OLD-SAME: "-targets={{.*}},hipv4-amdgcn-amd-amdhsa--gfx803,hipv4-amdgcn-amd-amdhsa--gfx900"
+// OLD-SAME: "-targets={{.*}},hipv4-amdgpu8.03-amd-amdhsa--gfx803,hipv4-amdgpu9.00-amd-amdhsa--gfx900"
// OLD-SAME: "-input={{.*}}" "-input=[[IMG_DEV_B_803]]" "-input=[[IMG_DEV_B_900]]" "-output=[[BUNDLE_B:.*hipfb]]"
// NEW: [[PACKAGER:".*llvm-offload-binary"]] "-o" "[[PACKAGE_B:.*.out]]"
-// NEW-SAME: "--image=file=[[OBJ_DEV_B_803]],triple=amdgcn-amd-amdhsa,arch=gfx803,kind=hip"
-// NEW-SAME: "--image=file=[[OBJ_DEV_B_900]],triple=amdgcn-amd-amdhsa,arch=gfx900,kind=hip"
+// NEW-SAME: "--image=file=[[OBJ_DEV_B_803]],triple=amdgpu8.03-amd-amdhsa,arch=gfx803,kind=hip"
+// NEW-SAME: "--image=file=[[OBJ_DEV_B_900]],triple=amdgpu9.00-amd-amdhsa,arch=gfx900,kind=hip"
// NEW: [[WRAPPER:".*clang-linker-wrapper]]"
-// NEW-SAME: "--device-compiler=amdgcn-amd-amdhsa=-flto=full"
+// NEW-SAME: "--device-compiler=amdgpu-amd-amdhsa=-flto=full"
// NEW-SAME: "--emit-fatbin-only"
// NEW-SAME: "-o" "[[HIPFB_B:.*.hipfb]]" "[[PACKAGE_B]]"
// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
-// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK-SAME: "-aux-triple" "amdgpu-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
// OLD-SAME: {{.*}} "-foffload-include-binary" "[[BUNDLE_B]]"
@@ -214,13 +214,13 @@
// Check mixed AMDGCNSPIRV and concrete GPU arch.
//
-// AMDGCNSPIRV: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}}"-emit-obj" {{.*}} "-target-cpu" "gfx900"{{.*}} "-o" "[[GFX900_OBJ:.*o]]"
+// AMDGCNSPIRV: "-cc1" "-triple" "amdgpu9.00-amd-amdhsa" {{.*}}"-emit-obj" {{.*}} "-target-cpu" "gfx900"{{.*}} "-o" "[[GFX900_OBJ:.*o]]"
// AMDGCNSPIRV: {{".*lld.*"}} {{.*}}"-plugin-opt=mcpu=gfx900" {{.*}} "-o" "[[GFX900_CO:.*out]]" {{.*}}"[[GFX900_OBJ]]"
// AMDGCNSPIRV: "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}}"-emit-llvm-bc" {{.*}}"-flto=full"{{.*}} "-fembed-bitcode=marker" "-disable-llvm-optzns" {{.*}} "-o" "[[AMDGCNSPV_BC:.*bc]]"
// AMDGCNSPIRV: {{".*llvm-link.*"}} "-o" "[[AMDGCNSPV_TMP:.*bc]]" "[[AMDGCNSPV_BC]]"
// AMDGCNSPIRV: {{".*llvm-spirv.*"}} "--spirv-max-version=1.6" "--spirv-ext=+all" {{.*}} "[[AMDGCNSPV_TMP]]" {{.*}}"-o" "[[AMDGCNSPV_CO:.*out]]"
// AMDGCNSPIRV: {{".*clang-offload-bundler.*"}} "-type=o"
-// AMDGCNSPIRV-SAME: "-targets={{.*}}hipv4-amdgcn-amd-amdhsa--gfx900,hipv4-spirv64-amd-amdhsa--amdgcnspirv"
+// AMDGCNSPIRV-SAME: "-targets={{.*}}hipv4-amdgpu9.00-amd-amdhsa--gfx900,hipv4-spirv64-amd-amdhsa--amdgcnspirv"
// AMDGCNSPIRV-SAME: "-input=[[GFX900_CO]]" "-input=[[AMDGCNSPV_CO]]"
// AMDGCNSPIRV-NEW: "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}}"-emit-llvm-bc" {{.*}} "-o" "[[AMDGCNSPV_BC:[^"]*]]"
@@ -228,5 +228,5 @@
// RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc -nogpulib -nogpuinc \
// RUN: --offload-new-driver --offload-arch=gfx908 -v %s 2>&1 | FileCheck %s --check-prefix=VERBOSE
// VERBOSE: clang-linker-wrapper
-// VERBOSE-NOT: --device-compiler=amdgcn-amd-amdhsa=-v {{.*}}-o {{.*}}.hipfb
+// VERBOSE-NOT: --device-compiler=amdgpu{{.*}}-amd-amdhsa=-v {{.*}}-o {{.*}}.hipfb
// VERBOSE-NOT: --wrapper-verbose {{.*}}-o {{.*}}.hipfb
diff --git a/clang/test/Driver/hip-toolchain-opt.hip b/clang/test/Driver/hip-toolchain-opt.hip
index 22edf4107004e..b0d06e239fc57 100644
--- a/clang/test/Driver/hip-toolchain-opt.hip
+++ b/clang/test/Driver/hip-toolchain-opt.hip
@@ -62,7 +62,7 @@
// RUN: %S/Inputs/hip_multiple_inputs/b.hip \
// RUN: 2>&1 | FileCheck --check-prefixes=ALL,O0-CGO2 %s
-// ALL: "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// ALL: "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// DEFAULT-NOT: "-O{{.}}"
// O0-SAME: "-O0"
// O1-SAME: "-O1"
@@ -76,14 +76,14 @@
// ALL: "{{.*}}clang-linker-wrapper{{.*}}" "--should-extract=gfx900"
// DEFAULT-NOT: "--device-compiler=amdgcn-amd-amdhsa=-O{{.*}}"
-// O0-SAME: "--device-compiler=amdgcn-amd-amdhsa=-O0"
-// O1-SAME: "--device-compiler=amdgcn-amd-amdhsa=-O1"
-// O2-SAME: "--device-compiler=amdgcn-amd-amdhsa=-O2"
-// O3-SAME: "--device-compiler=amdgcn-amd-amdhsa=-O3"
-// Os-SAME: "--device-compiler=amdgcn-amd-amdhsa=-Os"
-// Oz-SAME: "--device-compiler=amdgcn-amd-amdhsa=-Oz"
-// Og-SAME: "--device-compiler=amdgcn-amd-amdhsa=-Og"
-// O0-CGO2-SAME: "--device-compiler=amdgcn-amd-amdhsa=-O0"
+// O0-SAME: "--device-compiler=amdgpu-amd-amdhsa=-O0"
+// O1-SAME: "--device-compiler=amdgpu-amd-amdhsa=-O1"
+// O2-SAME: "--device-compiler=amdgpu-amd-amdhsa=-O2"
+// O3-SAME: "--device-compiler=amdgpu-amd-amdhsa=-O3"
+// Os-SAME: "--device-compiler=amdgpu-amd-amdhsa=-Os"
+// Oz-SAME: "--device-compiler=amdgpu-amd-amdhsa=-Oz"
+// Og-SAME: "--device-compiler=amdgpu-amd-amdhsa=-Og"
+// O0-CGO2-SAME: "--device-compiler=amdgpu-amd-amdhsa=-O0"
// ALL: "-cc1" "-triple" "x86_64-unknown-linux-gnu"
// DEFAULT-NOT: "-O{{.}}"
diff --git a/clang/test/Driver/hip-toolchain-rdc-separate.hip b/clang/test/Driver/hip-toolchain-rdc-separate.hip
index b515050b36305..63399eb2f0c8f 100644
--- a/clang/test/Driver/hip-toolchain-rdc-separate.hip
+++ b/clang/test/Driver/hip-toolchain-rdc-separate.hip
@@ -9,7 +9,7 @@
// RUN: %S/Inputs/hip_multiple_inputs/b.hip \
// RUN: 2>&1 | FileCheck %s
-// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -22,7 +22,7 @@
// CHECK-SAME: {{.*}} "-o" "[[A_BC1:.*o]]" "-x" "hip"
// CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]]
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -35,7 +35,7 @@
// CHECK-SAME: {{.*}} [[A_SRC]]
// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
-// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK-SAME: "-aux-triple" "amdgpu-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
// CHECK-SAME: "-fgpu-rdc"
@@ -43,10 +43,10 @@
// CHECK-SAME: {{.*}} [[A_SRC]]
// CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
-// CHECK-SAME: "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900,host-x86_64-unknown-linux-gnu"
+// CHECK-SAME: "-targets=hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900,host-x86_64-unknown-linux-gnu"
// CHECK-SAME: "-output=[[A_O:.*a.o]]" "-input=[[A_BC1]]" "-input=[[A_BC2]]" "-input=[[A_OBJ_HOST]]"
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -59,7 +59,7 @@
// CHECK-SAME: {{.*}} "-o" "[[B_BC1:.*o]]" "-x" "hip"
// CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]]
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -72,7 +72,7 @@
// CHECK-SAME: {{.*}} [[B_SRC]]
// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
-// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK-SAME: "-aux-triple" "amdgpu-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
// CHECK-SAME: "-fgpu-rdc"
@@ -80,7 +80,7 @@
// CHECK-SAME: {{.*}} [[B_SRC]]
// CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
-// CHECK-SAME: "-targets=hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900,host-x86_64-unknown-linux-gnu"
+// CHECK-SAME: "-targets=hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900,host-x86_64-unknown-linux-gnu"
// CHECK-SAME: "-output=[[B_O:.*b.o]]" "-input=[[B_BC1]]" "-input=[[B_BC2]]" "-input=[[B_OBJ_HOST]]"
// RUN: touch %t/a.o %t/b.o
@@ -103,22 +103,22 @@
// RUN: 2>&1 | FileCheck -check-prefixes=LINK,LLD-FIN,LINK-NOBUNDLE,LINK-NOEMBED %s
// LINK-HOST-UNBUNDLE: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
-// LINK-HOST-UNBUNDLE-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900"
+// LINK-HOST-UNBUNDLE-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900"
// LINK-HOST-UNBUNDLE-SAME: "-input=[[A_O:.*a.o]]" "-output=[[A_OBJ_HOST:.*o]]" "-output={{.*o}}" "-output={{.*o}}"
// LINK-HOST-UNBUNDLE: "-unbundle" "-allow-missing-bundles"
// LINK-HOST-UNBUNDLE: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
-// LINK-HOST-UNBUNDLE-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900"
+// LINK-HOST-UNBUNDLE-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900"
// LINK-HOST-UNBUNDLE-SAME: "-input=[[B_O:.*b.o]]" "-output=[[B_OBJ_HOST:.*o]]" "-output={{.*o}}" "-output={{.*o}}"
// LINK-HOST-UNBUNDLE: "-unbundle" "-allow-missing-bundles"
// LINK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
-// LINK-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900"
+// LINK-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900"
// LINK-SAME: "-input=[[A_O:.*a.o]]" "-output={{.*o}}" "-output=[[A_BC1:.*o]]" "-output=[[A_BC2:.*o]]"
// LINK-SAME: "-unbundle" "-allow-missing-bundles"
// LINK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
-// LINK-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-amdgcn-amd-amdhsa-unknown-gfx803,hip-amdgcn-amd-amdhsa-unknown-gfx900"
+// LINK-SAME: "-targets=host-x86_64-unknown-linux-gnu,hip-amdgpu8.03-amd-amdhsa-unknown-gfx803,hip-amdgpu9.00-amd-amdhsa-unknown-gfx900"
// LINK-SAME: "-input=[[B_O:.*b.o]]" "-output={{.*o}}" "-output=[[B_BC1:.*o]]" "-output=[[B_BC2:.*o]]"
// LINK-SAME: "-unbundle" "-allow-missing-bundles"
@@ -145,7 +145,7 @@
// LINK-SAME: "--no-whole-archive"
// LINK-BUNDLE: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
-// LINK-BUNDLE-SAME: "-targets={{.*}},hipv4-amdgcn-amd-amdhsa--gfx803,hipv4-amdgcn-amd-amdhsa--gfx900"
+// LINK-BUNDLE-SAME: "-targets={{.*}},hipv4-amdgpu8.03-amd-amdhsa--gfx803,hipv4-amdgpu9.00-amd-amdhsa--gfx900"
// LINK-BUNDLE-SAME: "-input={{.*}}" "-input=[[IMG_DEV1]]" "-input=[[IMG_DEV2]]" "-output=[[BUNDLE:.*]]"
// LINK-NOBUNDLE-NOT: {{".*clang-offload-bundler"}} "-type=o"
diff --git a/clang/test/Driver/hip-toolchain-rdc-static-lib.hip b/clang/test/Driver/hip-toolchain-rdc-static-lib.hip
index 71ac901b69299..3aa6caf3b805a 100644
--- a/clang/test/Driver/hip-toolchain-rdc-static-lib.hip
+++ b/clang/test/Driver/hip-toolchain-rdc-static-lib.hip
@@ -9,7 +9,7 @@
// emit objects for host side path
// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
-// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK-SAME: "-aux-triple" "amdgpu-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
// CHECK-SAME: "-fgpu-rdc"
@@ -17,7 +17,7 @@
// CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]]
// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
-// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK-SAME: "-aux-triple" "amdgpu-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
// CHECK-SAME: "-fgpu-rdc"
@@ -25,7 +25,7 @@
// CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]]
// generate image for device side path on gfx803
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -36,7 +36,7 @@
// CHECK-SAME: {{.*}} "-o" [[A_BC1:".*o"]] "-x" "hip"
// CHECK-SAME: {{.*}} [[A_SRC]]
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -56,7 +56,7 @@
// CHECK-SAME: "-o" "[[IMG_DEV1:.*out]]" [[A_BC1]] [[B_BC1]]
// generate image for device side path on gfx900
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -67,7 +67,7 @@
// CHECK-SAME: {{.*}} "-o" [[A_BC2:".*o"]] "-x" "hip"
// CHECK-SAME: {{.*}} [[A_SRC]]
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -90,7 +90,7 @@
// combine images generated into hip fat binary object
// CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
-// CHECK-SAME: "-targets={{.*}},hipv4-amdgcn-amd-amdhsa--gfx803,hipv4-amdgcn-amd-amdhsa--gfx900"
+// CHECK-SAME: "-targets={{.*}},hipv4-amdgpu8.03-amd-amdhsa--gfx803,hipv4-amdgpu9.00-amd-amdhsa--gfx900"
// CHECK-SAME: "-input=[[IMG_DEV1]]" "-input=[[IMG_DEV2]]" "-output=[[BUNDLE:.*hipfb]]"
// CHECK: [[MC:".*clang.*"]] "-o" [[OBJBUNDLE:".*o"]] "{{.*}}.mcin"
diff --git a/clang/test/Driver/hip-toolchain-rdc.hip b/clang/test/Driver/hip-toolchain-rdc.hip
index 7e100c521441d..3c8d7922f3e7a 100644
--- a/clang/test/Driver/hip-toolchain-rdc.hip
+++ b/clang/test/Driver/hip-toolchain-rdc.hip
@@ -75,7 +75,7 @@
// emit objects for host side path
// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" [[HOST:"x86_64-[^"]+"]]
-// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK-SAME: "-aux-triple" "amdgpu-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
// CHECK-SAME: "-fgpu-rdc"
@@ -83,7 +83,7 @@
// CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]]
// CHECK: [[CLANG]] "-cc1" "-triple" [[HOST]]
-// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK-SAME: "-aux-triple" "amdgpu-amd-amdhsa"
// CHECK-SAME: "-emit-obj"
// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
// CHECK-SAME: "-fgpu-rdc"
@@ -91,7 +91,7 @@
// CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]]
// generate image for device side path on gfx803
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" [[HOST:"x86_64-[^"]+"]]
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -104,7 +104,7 @@
// CHECK-SAME: {{.*}} "-o" [[A_BC1:".*o"]] "-x" "hip"
// CHECK-SAME: {{.*}} [[A_SRC]]
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu8.03-amd-amdhsa"
// CHECK-SAME: "-aux-triple" [[HOST]]
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -125,7 +125,7 @@
// CHECK-SAME: "-o" "[[IMG_DEV1:.*.out]]" [[A_BC1]] [[B_BC1]]
// generate image for device side path on gfx900
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" [[HOST]]
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -136,7 +136,7 @@
// CHECK-SAME: {{.*}} "-o" [[A_BC2:".*o"]] "-x" "hip"
// CHECK-SAME: {{.*}} [[A_SRC]]
-// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
+// CHECK: [[CLANG]] "-cc1" "-triple" "amdgpu9.00-amd-amdhsa"
// CHECK-SAME: "-aux-triple" [[HOST]]
// CHECK-SAME: "-emit-llvm-bc"
// CHECK-SAME: "-flto=full" "-flto-unit"
@@ -159,7 +159,7 @@
// combine images generated into hip fat binary object
// CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
// CHECK-SAME: "-bundle-align=4096"
-// CHECK-SAME: "-targets={{.*}},hipv4-amdgcn-amd-amdhsa--gfx803,hipv4-amdgcn-amd-amdhsa--gfx900"
+// CHECK-SAME: "-targets={{.*}},hipv4-amdgpu8.03-amd-amdhsa--gfx803,hipv4-amdgpu9.00-amd-amdhsa--gfx900"
// CHECK-SAME: "-input={{.*}}" "-input=[[IMG_DEV1]]" "-input=[[IMG_DEV2]]" "-output=[[BUNDLE]]"
// CHECK: [[MC:".*clang.*"]] "-target" [[HOST]] "-o" [[OBJBUNDLE:".*o"]] "{{.*}}.mcin"
@@ -178,7 +178,7 @@
// RUN: %clang -### -fgpu-rdc --offload-arch=gfx90a -nogpulib -nogpuinc --offload-new-driver \
// RUN: -L. -foffload-lto %s 2>&1 | FileCheck -check-prefix=LTO_DEFAULT_NEW %s
// LTO_DEFAULT_NEW: clang-linker-wrapper
-// LTO_DEFAULT_NEW-NOT: "--device-compiler=amdgcn-amd-amdhsa=-flto-partitions=
+// LTO_DEFAULT_NEW-NOT: "--device-compiler=amdgpu-amd-amdhsa=-flto-partitions=
// RUN: %clang -### -fgpu-rdc --offload-arch=gfx90a -nogpulib -nogpuinc --no-offload-new-driver \
// RUN: -L. -foffload-lto -flto-partitions=42 %s 2>&1 | FileCheck -check-prefix=LTO_PARTS %s
diff --git a/clang/test/Driver/hip-windows-filename.hip b/clang/test/Driver/hip-windows-filename.hip
index 2d1207bb97b5d..3181b7b92f1a4 100644
--- a/clang/test/Driver/hip-windows-filename.hip
+++ b/clang/test/Driver/hip-windows-filename.hip
@@ -6,5 +6,5 @@
// RUN: -nogpuinc -nogpulib -save-temps \
// RUN: %s 2>&1 | FileCheck %s
-// CHECK: "-o" "hip-windows-filename-hip-amdgcn-amd-amdhsa-gfx908 at xnack+.hipi"
-// CHECK-NOT: "-o" "hip-windows-filename-hip-amdgcn-amd-amdhsa-gfx908:xnack+.hipi"
+// CHECK: "-o" "hip-windows-filename-hip-amdgpu9.08-amd-amdhsa-gfx908 at xnack+.hipi"
+// CHECK-NOT: "-o" "hip-windows-filename-hip-amdgpu9.08-amd-amdhsa-gfx908:xnack+.hipi"
diff --git a/clang/test/Driver/hipstdpar.c b/clang/test/Driver/hipstdpar.c
index a5edf4a027e71..caa27c568b26a 100644
--- a/clang/test/Driver/hipstdpar.c
+++ b/clang/test/Driver/hipstdpar.c
@@ -31,7 +31,7 @@
// RUN: -nogpulib -nogpuinc -c %s 2>&1 | \
// RUN: FileCheck --check-prefix=HIPSTDPAR-NEW-DRV %s
// HIPSTDPAR-NEW-DRV: {{".*clang-linker-wrapper"}}
-// HIPSTDPAR-NEW-DRV-SAME: "--device-compiler=amdgcn-amd-amdhsa=--hipstdpar"
+// HIPSTDPAR-NEW-DRV-SAME: "--device-compiler=amdgpu-amd-amdhsa=--hipstdpar"
// Check that the base AMDGPU toolchain translates --hipstdpar to the backend
// flag. This is the path taken by the inner clang invocation from the linker
diff --git a/clang/test/Driver/offload-Xarch.c b/clang/test/Driver/offload-Xarch.c
index 73943f3e9c7f8..d3cd8ccc10df7 100644
--- a/clang/test/Driver/offload-Xarch.c
+++ b/clang/test/Driver/offload-Xarch.c
@@ -20,8 +20,8 @@
// RUN: | FileCheck -check-prefix=OPENMP %s
// OPENMP: # "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HOST_BC:.+]]"
-// OPENMP: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[GFX1030_BC:.+]]"
-// OPENMP: # "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[GFX90A_BC:.+]]"
+// OPENMP: # "amdgpu10.30-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[GFX1030_BC:.+]]"
+// OPENMP: # "amdgpu9.0a-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[GFX90A_BC:.+]]"
// OPENMP: # "nvptx64-nvidia-cuda" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[SM52_PTX:.+]]"
// OPENMP: # "nvptx64-nvidia-cuda" - "NVPTX::Assembler", inputs: ["[[SM52_PTX]]"], output: "[[SM52_CUBIN:.+]]"
// OPENMP: # "nvptx64-nvidia-cuda" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[SM60_PTX:.+]]"
@@ -40,8 +40,16 @@
// Make sure that `-Xarch_amdgcn` forwards libraries to the device linker.
// RUN: %clang -fopenmp=libomp --offload-arch=gfx90a -nogpulib -nogpuinc \
// RUN: --target=x86_64-unknown-linux-gnu -Xarch_amdgcn -Wl,-lfoo -### %s 2>&1 \
-// RUN: | FileCheck -check-prefix=LIBS %s
+// RUN: | FileCheck -check-prefix=LIBS0 %s
+//
+// RUN: %clang -fopenmp=libomp --offload-arch=gfx90a -nogpulib -nogpuinc \
+// RUN: -Xoffload-linker-amdgpu9.0a-amd-amdhsa -lfoo -### %s 2>&1 \
+// RUN: | FileCheck -check-prefix=LIBS0_SUBARCH %s
+
+// LIBS0: "--device-linker=amdgpu-amd-amdhsa=-lfoo"
+// LIBS0_SUBARCH: "--device-linker=amdgpu9.0a-amd-amdhsa=-lfoo"
+
// RUN: %clang -fopenmp=libomp --offload-arch=gfx90a -nogpulib -nogpuinc \
// RUN: -Xoffload-linker-amdgcn-amd-amdhsa -lfoo -### %s 2>&1 \
-// RUN: | FileCheck -check-prefix=LIBS %s
-// LIBS: "--device-linker=amdgcn-amd-amdhsa=-lfoo"
+// RUN: | FileCheck -check-prefix=LIBS1 %s
+// LIBS1: "--device-linker=amdgpu-amd-amdhsa=-lfoo"
diff --git a/clang/test/Driver/offload-arch-translation-amdgpu.cu b/clang/test/Driver/offload-arch-translation-amdgpu.cu
index a5176315fbaf2..9cf1f4e42de11 100644
--- a/clang/test/Driver/offload-arch-translation-amdgpu.cu
+++ b/clang/test/Driver/offload-arch-translation-amdgpu.cu
@@ -80,66 +80,66 @@
// HIP: llvm-offload-binary
-// GFX600: triple=amdgcn-amd-amdhsa,arch=gfx600
-// GFX601: triple=amdgcn-amd-amdhsa,arch=gfx601
-// GFX602: triple=amdgcn-amd-amdhsa,arch=gfx602
-// GFX700: triple=amdgcn-amd-amdhsa,arch=gfx700
-// GFX701: triple=amdgcn-amd-amdhsa,arch=gfx701
-// GFX702: triple=amdgcn-amd-amdhsa,arch=gfx702
-// GFX703: triple=amdgcn-amd-amdhsa,arch=gfx703
-// GFX704: triple=amdgcn-amd-amdhsa,arch=gfx704
-// GFX705: triple=amdgcn-amd-amdhsa,arch=gfx705
-// GFX801: triple=amdgcn-amd-amdhsa,arch=gfx801
-// GFX802: triple=amdgcn-amd-amdhsa,arch=gfx802
-// GFX803: triple=amdgcn-amd-amdhsa,arch=gfx803
-// GFX805: triple=amdgcn-amd-amdhsa,arch=gfx805
-// GFX810: triple=amdgcn-amd-amdhsa,arch=gfx810
-// GFX900: triple=amdgcn-amd-amdhsa,arch=gfx900
-// GFX902: triple=amdgcn-amd-amdhsa,arch=gfx902
-// GFX906: triple=amdgcn-amd-amdhsa,arch=gfx906
-// GFX908: triple=amdgcn-amd-amdhsa,arch=gfx908
-// GFX90A: triple=amdgcn-amd-amdhsa,arch=gfx90a
-// GFX90C: triple=amdgcn-amd-amdhsa,arch=gfx90c
-// GFX942: triple=amdgcn-amd-amdhsa,arch=gfx942
-// GFX950: triple=amdgcn-amd-amdhsa,arch=gfx950
-// GFX1010: triple=amdgcn-amd-amdhsa,arch=gfx1010
-// GFX1011: triple=amdgcn-amd-amdhsa,arch=gfx1011
-// GFX1012: triple=amdgcn-amd-amdhsa,arch=gfx1012
-// GFX1030: triple=amdgcn-amd-amdhsa,arch=gfx1030
-// GFX1031: triple=amdgcn-amd-amdhsa,arch=gfx1031
-// GFX1032: triple=amdgcn-amd-amdhsa,arch=gfx1032
-// GFX1033: triple=amdgcn-amd-amdhsa,arch=gfx1033
-// GFX1034: triple=amdgcn-amd-amdhsa,arch=gfx1034
-// GFX1035: triple=amdgcn-amd-amdhsa,arch=gfx1035
-// GFX1036: triple=amdgcn-amd-amdhsa,arch=gfx1036
-// GFX1100: triple=amdgcn-amd-amdhsa,arch=gfx1100
-// GFX1101: triple=amdgcn-amd-amdhsa,arch=gfx1101
-// GFX1102: triple=amdgcn-amd-amdhsa,arch=gfx1102
-// GFX1103: triple=amdgcn-amd-amdhsa,arch=gfx1103
-// GFX1150: triple=amdgcn-amd-amdhsa,arch=gfx1150
-// GFX1151: triple=amdgcn-amd-amdhsa,arch=gfx1151
-// GFX1152: triple=amdgcn-amd-amdhsa,arch=gfx1152
-// GFX1153: triple=amdgcn-amd-amdhsa,arch=gfx1153
-// GFX1170: triple=amdgcn-amd-amdhsa,arch=gfx1170
-// GFX1171: triple=amdgcn-amd-amdhsa,arch=gfx1171
-// GFX1172: triple=amdgcn-amd-amdhsa,arch=gfx1172
-// GFX1200: triple=amdgcn-amd-amdhsa,arch=gfx1200
-// GFX1201: triple=amdgcn-amd-amdhsa,arch=gfx1201
-// GFX1250: triple=amdgcn-amd-amdhsa,arch=gfx1250
-// GFX1251: triple=amdgcn-amd-amdhsa,arch=gfx1251
-// GFX1310: triple=amdgcn-amd-amdhsa,arch=gfx1310
+// GFX600: triple=amdgpu6.00-amd-amdhsa,arch=gfx600
+// GFX601: triple=amdgpu6.01-amd-amdhsa,arch=gfx601
+// GFX602: triple=amdgpu6.02-amd-amdhsa,arch=gfx602
+// GFX700: triple=amdgpu7.00-amd-amdhsa,arch=gfx700
+// GFX701: triple=amdgpu7.01-amd-amdhsa,arch=gfx701
+// GFX702: triple=amdgpu7.02-amd-amdhsa,arch=gfx702
+// GFX703: triple=amdgpu7.03-amd-amdhsa,arch=gfx703
+// GFX704: triple=amdgpu7.04-amd-amdhsa,arch=gfx704
+// GFX705: triple=amdgpu7.05-amd-amdhsa,arch=gfx705
+// GFX801: triple=amdgpu8.01-amd-amdhsa,arch=gfx801
+// GFX802: triple=amdgpu8.02-amd-amdhsa,arch=gfx802
+// GFX803: triple=amdgpu8.03-amd-amdhsa,arch=gfx803
+// GFX805: triple=amdgpu8.05-amd-amdhsa,arch=gfx805
+// GFX810: triple=amdgpu8.10-amd-amdhsa,arch=gfx810
+// GFX900: triple=amdgpu9.00-amd-amdhsa,arch=gfx900
+// GFX902: triple=amdgpu9.02-amd-amdhsa,arch=gfx902
+// GFX906: triple=amdgpu9.06-amd-amdhsa,arch=gfx906
+// GFX908: triple=amdgpu9.08-amd-amdhsa,arch=gfx908
+// GFX90A: triple=amdgpu9.0a-amd-amdhsa,arch=gfx90a
+// GFX90C: triple=amdgpu9.0c-amd-amdhsa,arch=gfx90c
+// GFX942: triple=amdgpu9.42-amd-amdhsa,arch=gfx942
+// GFX950: triple=amdgpu9.50-amd-amdhsa,arch=gfx950
+// GFX1010: triple=amdgpu10.10-amd-amdhsa,arch=gfx1010
+// GFX1011: triple=amdgpu10.11-amd-amdhsa,arch=gfx1011
+// GFX1012: triple=amdgpu10.12-amd-amdhsa,arch=gfx1012
+// GFX1030: triple=amdgpu10.30-amd-amdhsa,arch=gfx1030
+// GFX1031: triple=amdgpu10.31-amd-amdhsa,arch=gfx1031
+// GFX1032: triple=amdgpu10.32-amd-amdhsa,arch=gfx1032
+// GFX1033: triple=amdgpu10.33-amd-amdhsa,arch=gfx1033
+// GFX1034: triple=amdgpu10.34-amd-amdhsa,arch=gfx1034
+// GFX1035: triple=amdgpu10.35-amd-amdhsa,arch=gfx1035
+// GFX1036: triple=amdgpu10.36-amd-amdhsa,arch=gfx1036
+// GFX1100: triple=amdgpu11.00-amd-amdhsa,arch=gfx1100
+// GFX1101: triple=amdgpu11.01-amd-amdhsa,arch=gfx1101
+// GFX1102: triple=amdgpu11.02-amd-amdhsa,arch=gfx1102
+// GFX1103: triple=amdgpu11.03-amd-amdhsa,arch=gfx1103
+// GFX1150: triple=amdgpu11.50-amd-amdhsa,arch=gfx1150
+// GFX1151: triple=amdgpu11.51-amd-amdhsa,arch=gfx1151
+// GFX1152: triple=amdgpu11.52-amd-amdhsa,arch=gfx1152
+// GFX1153: triple=amdgpu11.53-amd-amdhsa,arch=gfx1153
+// GFX1170: triple=amdgpu11.70-amd-amdhsa,arch=gfx1170
+// GFX1171: triple=amdgpu11.71-amd-amdhsa,arch=gfx1171
+// GFX1172: triple=amdgpu11.72-amd-amdhsa,arch=gfx1172
+// GFX1200: triple=amdgpu12.00-amd-amdhsa,arch=gfx1200
+// GFX1201: triple=amdgpu12.01-amd-amdhsa,arch=gfx1201
+// GFX1250: triple=amdgpu12.50-amd-amdhsa,arch=gfx1250
+// GFX1251: triple=amdgpu12.51-amd-amdhsa,arch=gfx1251
+// GFX1310: triple=amdgpu13.10-amd-amdhsa,arch=gfx1310
-// GFX90A_XNACK: triple=amdgcn-amd-amdhsa,arch=gfx90a:xnack+
-// GFX908_SRAM: triple=amdgcn-amd-amdhsa,arch=gfx908:sramecc-
+// GFX90A_XNACK: triple=amdgpu9.0a-amd-amdhsa,arch=gfx90a:xnack+
+// GFX908_SRAM: triple=amdgpu9.08-amd-amdhsa,arch=gfx908:sramecc-
-// GFX9_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx9-generic
-// GFX9_4_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx9-4-generic
-// GFX10_1_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx10-1-generic
-// GFX10_3_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx10-3-generic
-// GFX11_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx11-generic
-// GFX11_7_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx11-7-generic
-// GFX12_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx12-generic
-// GFX12_5_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx12-5-generic
-// GFX13_GENERIC: triple=amdgcn-amd-amdhsa,arch=gfx13-generic
+// GFX9_GENERIC: triple=amdgpu9-amd-amdhsa,arch=gfx9-generic
+// GFX9_4_GENERIC: triple=amdgpu9.4-amd-amdhsa,arch=gfx9-4-generic
+// GFX10_1_GENERIC: triple=amdgpu10.1-amd-amdhsa,arch=gfx10-1-generic
+// GFX10_3_GENERIC: triple=amdgpu10.3-amd-amdhsa,arch=gfx10-3-generic
+// GFX11_GENERIC: triple=amdgpu11-amd-amdhsa,arch=gfx11-generic
+// GFX11_7_GENERIC: triple=amdgpu11.7-amd-amdhsa,arch=gfx11-7-generic
+// GFX12_GENERIC: triple=amdgpu12-amd-amdhsa,arch=gfx12-generic
+// GFX12_5_GENERIC: triple=amdgpu12.5-amd-amdhsa,arch=gfx12-5-generic
+// GFX13_GENERIC: triple=amdgpu13-amd-amdhsa,arch=gfx13-generic
// SPIRV: triple=spirv64-amd-amdhsa,arch=amdgcnspirv
diff --git a/clang/test/Driver/offload-darwin-host.hip b/clang/test/Driver/offload-darwin-host.hip
index 3a3ab7267bd70..935bf62bad84a 100644
--- a/clang/test/Driver/offload-darwin-host.hip
+++ b/clang/test/Driver/offload-darwin-host.hip
@@ -4,5 +4,5 @@
// RUN: %clang -### --target=arm64-apple-darwin24.6.0 -mmacos-version-min=10.9 --offload-arch=gfx900 -nogpulib -nogpuinc %s 2>&1 | FileCheck %s
-// CHECK: "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "arm64-apple-darwin24.6.0"
-// CHECK: "-cc1" "-triple" "arm64-apple-macosx10.9.0" "-aux-triple" "amdgcn-amd-amdhsa"
+// CHECK: "-cc1" "-triple" "amdgpu9.00-amd-amdhsa" "-aux-triple" "arm64-apple-darwin24.6.0"
+// CHECK: "-cc1" "-triple" "arm64-apple-macosx10.9.0" "-aux-triple" "amdgpu-amd-amdhsa"
diff --git a/clang/test/Driver/offload-target.c b/clang/test/Driver/offload-target.c
index 76d506c3dcf9a..5ba248996832e 100644
--- a/clang/test/Driver/offload-target.c
+++ b/clang/test/Driver/offload-target.c
@@ -4,7 +4,7 @@
// RUN: %clang -### --offload-targets=amdgcn-amd-amdhsa -nogpulib -nogpuinc -x hip %s -ccc-print-bindings 2>&1 \
// RUN: | FileCheck %s -check-prefix=HIP
-// HIP: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[AMD_OBJ:.+]]"
+// HIP: "amdgpu9.06-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[AMD_OBJ:.+]]"
// RUN: %clang -### --offload-targets=nvptx64-nvidia-cuda -nogpulib -nogpuinc -x cuda %s -ccc-print-bindings 2>&1 \
// RUN: | FileCheck %s -check-prefix=CUDA
@@ -14,7 +14,7 @@
// RUN: -Xarch_amdgcn --offload-arch=gfx90a -Xarch_nvptx64 --offload-arch=sm_89 \
// RUN: -nogpulib -nogpuinc %s -ccc-print-bindings 2>&1 \
// RUN: | FileCheck %s -check-prefix=OPENMP
-// OPENMP: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[AMD_OBJ:.+]]"
+// OPENMP: "amdgpu9.0a-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[AMD_OBJ:.+]]"
// OPENMP: "nvptx64-nvidia-cuda" - "clang", inputs: ["[[INPUT]]"], output: "[[NV_OBJ:.+]]"
// RUN: %clang -### --offload-targets=spirv64-amd-amdhsa -nogpulib -nogpuinc -x hip %s -ccc-print-bindings 2>&1 \
diff --git a/clang/test/Driver/offload.f90 b/clang/test/Driver/offload.f90
index 5f49f69f4d8f8..53af52498a079 100644
--- a/clang/test/Driver/offload.f90
+++ b/clang/test/Driver/offload.f90
@@ -2,4 +2,4 @@
// RUN: -resource-dir %S/Inputs/resource_dir_with_per_target_subdir \
// RUN: --rocm-path=%S/Inputs/rocm -fopenmp --offload-arch=gfx908 \
// RUN: %s 2>&1 | FileCheck %s --check-prefix=CHECK-FLANG-RT
-// CHECK-FLANG-RT: clang-linker-wrapper{{.*}}"--device-linker=amdgcn-amd-amdhsa=-lflang_rt.runtime"{{.*}}"-lflang_rt.runtime"
+// CHECK-FLANG-RT: clang-linker-wrapper{{.*}}"--device-linker=amdgpu-amd-amdhsa=-lflang_rt.runtime"{{.*}}"-lflang_rt.runtime"
diff --git a/clang/test/Driver/openmp-Xopenmp-target-forward-args.c b/clang/test/Driver/openmp-Xopenmp-target-forward-args.c
index 5749df973ed78..00112256eeb20 100644
--- a/clang/test/Driver/openmp-Xopenmp-target-forward-args.c
+++ b/clang/test/Driver/openmp-Xopenmp-target-forward-args.c
@@ -6,5 +6,5 @@
// Flag should only apply to device, not the host.
// CHECK-NOT: -ffinite-math-only
-// CHECK: "-triple" "amdgcn-amd-amdhsa" {{.*}} "-ffinite-math-only"
+// CHECK: "-triple" "amdgpu9.00-amd-amdhsa" {{.*}} "-ffinite-math-only"
// CHECK-NOT: -ffinite-math-only
diff --git a/clang/test/Driver/openmp-offload-gpu.c b/clang/test/Driver/openmp-offload-gpu.c
index 4ad0aede8a50e..3c159130adeca 100644
--- a/clang/test/Driver/openmp-offload-gpu.c
+++ b/clang/test/Driver/openmp-offload-gpu.c
@@ -179,15 +179,15 @@
// RUN: | FileCheck -check-prefix=CUDA_MODE %s
// RUN: %clang -### -nogpulib -nogpuinc -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target -march=gfx906 %s -fno-openmp-cuda-mode -fopenmp-cuda-mode 2>&1 \
// RUN: | FileCheck -check-prefix=CUDA_MODE %s
-// CUDA_MODE: "-cc1"{{.*}}"-triple" "{{nvptx64-nvidia-cuda|amdgcn-amd-amdhsa}}"
+// CUDA_MODE: "-cc1"{{.*}}"-triple" "{{nvptx64-nvidia-cuda|amdgpu9.06-amd-amdhsa}}"
// CUDA_MODE-SAME: "-fopenmp-cuda-mode"
// RUN: %clang -### -nogpulib -nogpuinc -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -Xopenmp-target -march=sm_60 %s -fno-openmp-cuda-mode 2>&1 \
// RUN: | FileCheck -check-prefix=NO_CUDA_MODE %s
// RUN: %clang -### -nogpulib -nogpuinc -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -Xopenmp-target -march=sm_60 %s -fopenmp-cuda-mode -fno-openmp-cuda-mode 2>&1 \
// RUN: | FileCheck -check-prefix=NO_CUDA_MODE %s
-// RUN: %clang -### -nogpulib -nogpuinc -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target -march=gfx906 %s -fno-openmp-cuda-mode 2>&1 \
+// RUN: %clang -### -nogpulib -nogpuinc -fopenmp=libomp -fopenmp-targets=amdgpu9-amd-amdhsa -Xopenmp-target -march=gfx906 %s -fno-openmp-cuda-mode 2>&1 \
// RUN: | FileCheck -check-prefix=NO_CUDA_MODE %s
-// RUN: %clang -### -nogpulib -nogpuinc -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target -march=gfx906 %s -fopenmp-cuda-mode -fno-openmp-cuda-mode 2>&1 \
+// RUN: %clang -### -nogpulib -nogpuinc -fopenmp=libomp -fopenmp-targets=amdgpu9-amd-amdhsa -Xopenmp-target -march=gfx906 %s -fopenmp-cuda-mode -fno-openmp-cuda-mode 2>&1 \
// RUN: | FileCheck -check-prefix=NO_CUDA_MODE %s
// NO_CUDA_MODE-NOT: "-{{fno-|f}}openmp-cuda-mode"
@@ -277,7 +277,7 @@
// RUN: -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-NVIDIA-AMDGPU
// CHECK-NVIDIA-AMDGPU: "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HOST_BC:.+]]"
-// CHECK-NVIDIA-AMDGPU: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[AMD_BC:.+]]"
+// CHECK-NVIDIA-AMDGPU: "amdgpu9.08-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[AMD_BC:.+]]"
// CHECK-NVIDIA-AMDGPU: "nvptx64-nvidia-cuda" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[NVIDIA_PTX:.+]]"
// CHECK-NVIDIA-AMDGPU: "nvptx64-nvidia-cuda" - "NVPTX::Assembler", inputs: ["[[NVIDIA_PTX]]"], output: "[[NVIDIA_CUBIN:.+]]"
// CHECK-NVIDIA-AMDGPU: "x86_64-unknown-linux-gnu" - "Offload::Packager", inputs: ["[[AMD_BC]]", "[[NVIDIA_CUBIN]]"], output: "[[BINARY:.*]]"
@@ -391,11 +391,11 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
// RUN: --offload-arch=gfx906 -foffload-lto=thin -nogpulib -nogpuinc %s 2>&1 \
// RUN: | FileCheck --check-prefix=THINLTO-GFX906 %s
-// THINLTO-GFX906: --device-compiler=amdgcn-amd-amdhsa=-flto=thin
-// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-force-import-all
-// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-to-local
-// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3
-// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-amdgpu-internalize-symbols
+// THINLTO-GFX906: --device-compiler=amdgpu-amd-amdhsa=-flto=thin
+// THINLTO-GFX906-SAME: --device-linker=amdgpu-amd-amdhsa=-plugin-opt=-force-import-all
+// THINLTO-GFX906-SAME: --device-linker=amdgpu-amd-amdhsa=-plugin-opt=-avail-extern-to-local
+// THINLTO-GFX906-SAME: --device-linker=amdgpu-amd-amdhsa=-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3
+// THINLTO-GFX906-SAME: --device-linker=amdgpu-amd-amdhsa=-plugin-opt=-amdgpu-internalize-symbols
//
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
// RUN: --offload-arch=sm_52 -foffload-lto=thin -nogpulib -nogpuinc %s 2>&1 \
@@ -420,14 +420,30 @@
// RUN: --offload-arch=gfx906 -fprofile-generate -nogpulib -nogpuinc %s 2>&1 \
// RUN: | FileCheck --check-prefix=PROFILE %s
//
-// PROFILE: clang-linker-wrapper{{.*}}--device-compiler=amdgcn-amd-amdhsa=-fprofile-generate
-//
+// Check with new triple named directory structure
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_triples \
+// RUN: --offload-arch=gfx906 -fprofile-generate -nogpulib -nogpuinc %s 2>&1 \
+// RUN: | FileCheck --check-prefix=PROFILE %s
+//
+// PROFILE: clang-linker-wrapper{{.*}}--device-compiler=amdgpu-amd-amdhsa=-fprofile-generate
+//
+// Check with subarch directory name is respected when the toolchain triple is forced.
+// TODO: This does not work with just --offload-arch
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
+// RUN: -resource-dir=%S/Inputs/resource_dir_amdgpu_subarch_triples \
+// RUN: -fopenmp-targets=amdgpu10.30-amd-amdhsa-llvm -fprofile-generate -nogpulib -nogpuinc %s 2>&1 \
+// RUN: | FileCheck --check-prefix=PROFILE-SUBARCH %s
+//
+// PROFILE-SUBARCH: clang-linker-wrapper{{.*}}--device-compiler=amdgpu10.30-amd-amdhsa-llvm=-fprofile-generate
+
+
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
// RUN: -resource-dir=%S/Inputs/resource_dir \
// RUN: --offload-arch=gfx906 -fprofile-generate -nogpulib -nogpuinc %s 2>&1 \
// RUN: | FileCheck --check-prefix=NO-PROFILE %s
//
-// NO-PROFILE-NOT: --device-compiler=amdgcn-amd-amdhsa=-fprofile-generate
+// NO-PROFILE-NOT: --device-compiler=amd{{.*}}-amd-amdhsa=-fprofile-generate
//
// Check that `-fsanitize=` flags are forwarded to link in the runtime
@@ -439,8 +455,8 @@
// RUN: -fsanitize-minimal-runtime -nogpulib -nogpuinc %s 2>&1 \
// RUN: | FileCheck --check-prefix=UBSAN %s
//
-// UBSAN: clang-linker-wrapper{{.*}}--device-compiler=amdgcn-amd-amdhsa=-fsanitize=undefined
-// UBSAN-SAME: --device-compiler=amdgcn-amd-amdhsa=-fsanitize-minimal-runtime
+// UBSAN: clang-linker-wrapper{{.*}}--device-compiler=amdgpu-amd-amdhsa=-fsanitize=undefined
+// UBSAN-SAME: --device-compiler=amdgpu-amd-amdhsa=-fsanitize-minimal-runtime
//
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
// RUN: -resource-dir=%S/Inputs/resource_dir \
@@ -448,7 +464,7 @@
// RUN: -fsanitize-minimal-runtime -nogpulib -nogpuinc %s 2>&1 \
// RUN: | FileCheck --check-prefix=NO-UBSAN %s
//
-// NO-UBSAN-NOT: --device-compiler=amdgcn-amd-amdhsa=-fsanitize=undefined
+// NO-UBSAN-NOT: --device-compiler=amdgpu{{.*}}-amd-amdhsa=-fsanitize=undefined
// Check that --cuda-path and --rocm-path are forwarded unconditionally
//
diff --git a/clang/test/Driver/openmp-offload-infer.c b/clang/test/Driver/openmp-offload-infer.c
index 2a38a99c30518..336a7db59e10c 100644
--- a/clang/test/Driver/openmp-offload-infer.c
+++ b/clang/test/Driver/openmp-offload-infer.c
@@ -6,7 +6,7 @@
// verify the tools invocations
// CHECK: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-emit-llvm-bc"{{.*}}"-x" "c"
-// CHECK: "-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-target-cpu" "gfx803"
+// CHECK: "-cc1" "-triple" "amdgpu8.03-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-target-cpu" "gfx803"
// CHECK: "-cc1" "-triple" "nvptx64-nvidia-cuda" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-target-cpu" "sm_52"
// CHECK: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-emit-obj"
// CHECK: clang-linker-wrapper{{.*}} "-o" "a.out"
@@ -16,7 +16,7 @@
// RUN: -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-NVIDIA-AMDGPU
// CHECK-NVIDIA-AMDGPU: "x86_64-unknown-linux-gnu" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[HOST_BC:.+]]"
-// CHECK-NVIDIA-AMDGPU: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[AMD_BC:.+]]"
+// CHECK-NVIDIA-AMDGPU: "amdgpu9.08-amd-amdhsa" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[AMD_BC:.+]]"
// CHECK-NVIDIA-AMDGPU: "nvptx64-nvidia-cuda" - "clang", inputs: ["[[INPUT]]", "[[HOST_BC]]"], output: "[[NVIDIA_PTX:.+]]"
// CHECK-NVIDIA-AMDGPU: "nvptx64-nvidia-cuda" - "NVPTX::Assembler", inputs: ["[[NVIDIA_PTX]]"], output: "[[NVIDIA_CUBIN:.+]]"
// CHECK-NVIDIA-AMDGPU: "x86_64-unknown-linux-gnu" - "Offload::Packager", inputs: ["[[AMD_BC]]", "[[NVIDIA_CUBIN]]"], output: "[[BINARY:.+]]"
diff --git a/clang/test/Driver/openmp-system-arch.c b/clang/test/Driver/openmp-system-arch.c
index 1670fd30f4b59..6dd1776e2f851 100644
--- a/clang/test/Driver/openmp-system-arch.c
+++ b/clang/test/Driver/openmp-system-arch.c
@@ -34,7 +34,7 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa \
// RUN: --nvptx-arch-tool=%t/nvptx_arch_fail --amdgpu-arch-tool=%t/amdgpu_arch_gfx906 %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=ARCH-GFX906
-// ARCH-GFX906: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
+// ARCH-GFX906: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
// case when nvptx-arch succeeds.
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -fopenmp=libomp --offload-arch=native \
@@ -49,15 +49,15 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -fopenmp=libomp --offload-arch=native \
// RUN: --offload-arch-tool=%t/offload_arch_sm_70_gfx906 %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=ARCH-SM_70-GFX906
-// ARCH-SM_70-GFX906: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
+// ARCH-SM_70-GFX906: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
// ARCH-SM_70-GFX906: "-cc1" "-triple" "nvptx64-nvidia-cuda"{{.*}}"-target-cpu" "sm_70"
// case when both nvptx-arch and amdgpu-arch succeed with other archs.
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -fopenmp=libomp --offload-arch=native,sm_75,gfx1030 \
// RUN: --offload-arch-tool=%t/offload_arch_sm_70_gfx906 %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=ARCH-MULTIPLE
-// ARCH-MULTIPLE: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx1030"
-// ARCH-MULTIPLE: "-cc1" "-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
+// ARCH-MULTIPLE: "-cc1" "-triple" "amdgpu10.30-amd-amdhsa"{{.*}}"-target-cpu" "gfx1030"
+// ARCH-MULTIPLE: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
// ARCH-MULTIPLE: "-cc1" "-triple" "nvptx64-nvidia-cuda"{{.*}}"-target-cpu" "sm_70"
// ARCH-MULTIPLE: "-cc1" "-triple" "nvptx64-nvidia-cuda"{{.*}}"-target-cpu" "sm_75"
@@ -71,7 +71,7 @@
// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -fopenmp=libomp \
// RUN: -fopenmp-targets=amdgcn-amd-amdhsa --amdgpu-arch-tool=%t/amdgpu_arch_empty %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=AMDGPU
-// AMDGPU: error: cannot determine amdgcn architecture: No AMD GPU detected in the system; consider passing it via '--offload-arch'
+// AMDGPU: error: cannot determine amdgpu architecture: No AMD GPU detected in the system; consider passing it via '--offload-arch'
// case when CLANG_TOOLCHAIN_PROGRAM_TIMEOUT is malformed for nvptx-arch.
// RUN: env CLANG_TOOLCHAIN_PROGRAM_TIMEOUT=foo \
@@ -87,4 +87,4 @@
// RUN: -fopenmp-targets=amdgcn-amd-amdhsa -nogpulib \
// RUN: --amdgpu-arch-tool=%t/amdgpu_arch_gfx906 %s 2>&1 | \
// RUN: FileCheck %s --check-prefix=BAD-TIMEOUT-AMDGPU
-// BAD-TIMEOUT-AMDGPU: clang: error: cannot determine amdgcn architecture: CLANG_TOOLCHAIN_PROGRAM_TIMEOUT expected an integer, got ''; consider passing it via '--offload-arch'; environment variable CLANG_TOOLCHAIN_PROGRAM_TIMEOUT specifies the tool timeout (integer secs, <=0 is infinite)
+// BAD-TIMEOUT-AMDGPU: clang: error: cannot determine amdgpu architecture: CLANG_TOOLCHAIN_PROGRAM_TIMEOUT expected an integer, got ''; consider passing it via '--offload-arch'; environment variable CLANG_TOOLCHAIN_PROGRAM_TIMEOUT specifies the tool timeout (integer secs, <=0 is infinite)
diff --git a/clang/test/Driver/rocm-detect.cl b/clang/test/Driver/rocm-detect.cl
index 2d693e2afb04e..b14ee584102b2 100644
--- a/clang/test/Driver/rocm-detect.cl
+++ b/clang/test/Driver/rocm-detect.cl
@@ -16,4 +16,4 @@
// NODEFAULTLIBS-NOT: error: cannot find
-// COMMON: "-triple" "amdgcn-amd-amdhsa"
+// COMMON: "-triple" "amdgpu9.02-amd-amdhsa"
diff --git a/clang/test/Driver/rocm-detect.hip b/clang/test/Driver/rocm-detect.hip
index d7e0d4b1c0017..8005fb573bd77 100644
--- a/clang/test/Driver/rocm-detect.hip
+++ b/clang/test/Driver/rocm-detect.hip
@@ -98,7 +98,7 @@
// NODEFAULTLIBS-NOT: error: cannot find
-// COMMON: "-triple" "amdgcn-amd-amdhsa"
+// COMMON: "-triple" "amdgpu9.02-amd-amdhsa"
// ROCM-ENV: ROCm installation search path: [[ROCM_PATH:.*/Inputs/rocm]]
diff --git a/clang/test/Driver/rocm-device-libs.cl b/clang/test/Driver/rocm-device-libs.cl
index 232f36df38768..b5b009b2de909 100644
--- a/clang/test/Driver/rocm-device-libs.cl
+++ b/clang/test/Driver/rocm-device-libs.cl
@@ -162,7 +162,7 @@
// RUN: %s \
// RUN: 2>&1 | FileCheck --check-prefixes=NOASAN %s
-// COMMON: "-triple" "amdgcn-amd-amdhsa"
+// COMMON: "-triple" "amdgpu{{[0-9.]+}}-amd-amdhsa"
// COMMON-SAME: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/opencl.bc"
// ASAN-SAME: "-mlink-bitcode-file" "{{.*}}/amdgcn/bitcode/asanrtl.bc"
// COMMON-SAME: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/ocml.bc"
diff --git a/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-amdgpu-triple-compat.c b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-amdgpu-triple-compat.c
new file mode 100644
index 0000000000000..b3dc4b50f56ff
--- /dev/null
+++ b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-amdgpu-triple-compat.c
@@ -0,0 +1,30 @@
+// REQUIRES: amdgpu-registered-target, x86-registered-target
+
+// Check that --device-linker and --device-compiler forward arguments to triples
+// considered compatible, not only exact match.
+
+// RUN: %clang -cc1 %s -triple amdgpu9.00-amd-amdhsa -emit-llvm-bc -o %t.amdgpu9.00.bc
+// RUN: %clang -cc1 %s -triple amdgpu9-amd-amdhsa -emit-llvm-bc -o %t.amdgpu9.bc
+// RUN: %clang -cc1 %s -triple amdgpu10.3-amd-amdhsa -emit-llvm-bc -o %t.amdgpu10.3.bc
+
+// RUN: llvm-offload-binary -o %t.out \
+// RUN: --image=file=%t.amdgpu9.00.bc,kind=openmp,triple=amdgpu9.00-amd-amdhsa,arch=gfx900 \
+// RUN: --image=file=%t.amdgpu9.bc,kind=openmp,triple=amdgpu9-amd-amdhsa \
+// RUN: --image=file=%t.amdgpu10.3.bc,kind=openmp,triple=amdgpu10.3-amd-amdhsa
+//
+// RUN: %clang -cc1 %s -triple x86_64-unknown-linux-gnu -emit-obj -o %t.o -fembed-offload-object=%t.out
+//
+// RUN: clang-linker-wrapper --host-triple=x86_64-unknown-linux-gnu --dry-run --device-compiler=--save-temps \
+// RUN: --device-linker=amdgpu-amd-amdhsa=-ffinite-math-only \
+// RUN: --device-linker=amdgpu9-amd-amdhsa=-fno-signed-zeroes \
+// RUN: --device-linker=amdgpu10.3-amd-amdhsa=-fapprox-func \
+// RUN: --device-compiler=amdgpu-amd-amdhsa=-DALL_TRIPLES \
+// RUN: --device-compiler=amdgpu9-amd-amdhsa=-DAMDGPU9_TRIPLES \
+// RUN: --device-compiler=amdgpu10.3-amd-amdhsa=-DAMDGPU103_TRIPLES \
+// RUN: --linker-path=/usr/bin/ld %t.o -o a.out 2>&1 | FileCheck %s
+
+// CHECK: --target=amdgpu9.00-amd-amdhsa -mcpu=gfx900 {{.*}} -Xlinker -ffinite-math-only -Xlinker -fno-signed-zeroes --save-temps -DALL_TRIPLES -DAMDGPU9_TRIPLES
+// CHECK: --target=amdgpu9-amd-amdhsa {{.*}} -Xlinker -ffinite-math-only -Xlinker -fno-signed-zeroes --save-temps -DALL_TRIPLES -DAMDGPU9_TRIPLES
+// CHECK: --target=amdgpu10.3-amd-amdhsa {{.*}} -Xlinker -ffinite-math-only -Xlinker -fapprox-func --save-temps -DALL_TRIPLES -DAMDGPU103_TRIPLES
+
+__attribute__((visibility("protected"), used)) int x;
diff --git a/clang/test/OpenMP/amdgpu-arch-compat.c b/clang/test/OpenMP/amdgpu-arch-compat.c
index 363781e3c3c3f..31ea8597135b4 100644
--- a/clang/test/OpenMP/amdgpu-arch-compat.c
+++ b/clang/test/OpenMP/amdgpu-arch-compat.c
@@ -1,10 +1,13 @@
-// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -fopenmp -nogpulib -fopenmp-is-target-device -verify %s
+// RUN: %clang_cc1 -triple amdgpu9.00-amd-amdhsa -fopenmp -nogpulib -fopenmp-is-target-device -verify %s
+// RUN: %clang_cc1 -triple amdgpu9-amd-amdhsa -fopenmp -nogpulib -fopenmp-is-target-device -verify %s
// expected-no-diagnostics
#pragma omp begin declare variant match(device = {arch(amdgcn)})
void is_amdgcn();
#pragma omp end declare variant
+// TODO: This should also accept subarch names matched for compatibility against
+// the triple.
#pragma omp begin declare variant match(device = {arch(amdgpu)})
void is_amdgpu();
#pragma omp end declare variant
diff --git a/clang/test/SemaHIP/amdgpu-processor-is-invalid-subarch-arg-list.hip b/clang/test/SemaHIP/amdgpu-processor-is-invalid-subarch-arg-list.hip
new file mode 100644
index 0000000000000..6fa878708e3ef
--- /dev/null
+++ b/clang/test/SemaHIP/amdgpu-processor-is-invalid-subarch-arg-list.hip
@@ -0,0 +1,11 @@
+// REQUIRES: amdgpu-registered-target
+// RUN: %clang_cc1 -triple amdgpu10.10-amd-amdhsa -fsyntax-only -verify %s
+// RUN: %clang_cc1 -triple amdgpu9-amd-amdhsa -fsyntax-only -verify %s
+
+__attribute__((device)) void f() {
+ // The note lists all processors, not just those covered by the subarch.
+ if (__builtin_amdgcn_processor_is("not-a-gpu"))
+ // expected-error at -1 {{the argument to __builtin_amdgcn_processor_is must be a valid AMDGCN processor identifier; 'not-a-gpu' is not valid}}
+ // expected-note-re at -2 {{valid AMDGCN processor identifiers are: {{.*gfx900.*gfx902.*gfx1010.*gfx1100.*}}}}
+ return;
+}
diff --git a/clang/test/SemaHIP/amdgpu-processor-is.hip b/clang/test/SemaHIP/amdgpu-processor-is.hip
index b123016722d9e..ba5d4fd6712d1 100644
--- a/clang/test/SemaHIP/amdgpu-processor-is.hip
+++ b/clang/test/SemaHIP/amdgpu-processor-is.hip
@@ -5,6 +5,15 @@
// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64 -aux-triple amdgpu -Wno-unused-value %s
// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64 -aux-triple spirv64-amd-amdhsa -Wno-unused-value %s
+// The queried processor is accepted whenever it is a recognized AMDGCN
+// processor, independent of the target's own subarch. A processor that does not
+// match the target simply evaluates to false, so none of these error.
+// RUN: %clang_cc1 -fsyntax-only -verify -triple amdgpu9.00-amd-amdhsa -Wno-unused-value %s
+// RUN: %clang_cc1 -fsyntax-only -verify -triple amdgpu9-amd-amdhsa -Wno-unused-value %s
+// RUN: %clang_cc1 -fsyntax-only -verify -triple amdgpu9.02-amd-amdhsa -Wno-unused-value %s
+// RUN: %clang_cc1 -fsyntax-only -verify -triple amdgpu10.10-amd-amdhsa -Wno-unused-value %s
+// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64 -aux-triple amdgpu10.10-amd-amdhsa -Wno-unused-value %s
+
// expected-no-diagnostics
#define __device__ __attribute__((device))
@@ -13,6 +22,8 @@
__device__ void foo() {
if (__builtin_amdgcn_processor_is("gfx900"))
return __builtin_trap();
+ if (__builtin_amdgcn_processor_is("gfx1010"))
+ return __builtin_trap();
}
__global__ void bar() {
diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 399f07d7c0a70..60de4d4acccc4 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -1027,6 +1027,8 @@ DerivedArgList getLinkerArgs(ArrayRef<OffloadFile> Input,
if (llvm::all_of(Input, ContainsBitcode))
DAL.AddFlagArg(nullptr, Tbl.getOption(OPT_whole_program));
+ llvm::Triple CurrentTT(DAL.getLastArgValue(OPT_triple_EQ));
+
// Forward '-Xoffload-linker' options to the appropriate backend.
for (StringRef Arg : Args.getAllArgValues(OPT_device_linker_args_EQ)) {
auto [Triple, Value] = Arg.split('=');
@@ -1038,7 +1040,7 @@ DerivedArgList getLinkerArgs(ArrayRef<OffloadFile> Input,
else if (Value.empty())
DAL.AddJoinedArg(nullptr, Tbl.getOption(OPT_linker_arg_EQ),
Args.MakeArgString(Triple));
- else if (Triple == DAL.getLastArgValue(OPT_triple_EQ))
+ else if (TT.isCompatibleWith(CurrentTT))
DAL.AddJoinedArg(nullptr, Tbl.getOption(OPT_linker_arg_EQ),
Args.MakeArgString(Value));
}
@@ -1054,7 +1056,7 @@ DerivedArgList getLinkerArgs(ArrayRef<OffloadFile> Input,
else if (Value.empty())
DAL.AddJoinedArg(nullptr, Tbl.getOption(OPT_compiler_arg_EQ),
Args.MakeArgString(Triple));
- else if (Triple == DAL.getLastArgValue(OPT_triple_EQ))
+ else if (TT.isCompatibleWith(CurrentTT))
DAL.AddJoinedArg(nullptr, Tbl.getOption(OPT_compiler_arg_EQ),
Args.MakeArgString(Value));
}
diff --git a/clang/unittests/Basic/OffloadArchTest.cpp b/clang/unittests/Basic/OffloadArchTest.cpp
index aff308941be0a..514677dfb7d13 100644
--- a/clang/unittests/Basic/OffloadArchTest.cpp
+++ b/clang/unittests/Basic/OffloadArchTest.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include "clang/Basic/OffloadArch.h"
+#include "llvm/TargetParser/Triple.h"
#include "gtest/gtest.h"
using namespace clang;
@@ -67,3 +68,27 @@ TEST(OffloadArchTest, Defaults) {
EXPECT_STREQ(OffloadArchToString(OffloadArch::CudaDefault()), "sm_52");
EXPECT_STREQ(OffloadArchToString(OffloadArch::HIPDefault()), "gfx906");
}
+
+// Every AMDGPU gfx OffloadArch must round-trip through its subarch and
+// back. This guards against adding a GPU to the TargetParser data but
+// forgetting to update either getOffloadArchSubArch or the
+// getSubArchOffloadArch table (the two are position-sensitive and easy to leave
+// out of sync).
+TEST(OffloadArchTest, AMDGPUSubArchRoundTrip) {
+ for (int I = static_cast<int>(llvm::Triple::FirstAMDGPUSubArch);
+ I <= static_cast<int>(llvm::Triple::LastAMDGPUSubArch); ++I) {
+ auto SubArch = static_cast<llvm::Triple::SubArchType>(I);
+
+ // Some subarch slots are gaps with no associated GPU; skip them.
+ OffloadArch Arch = getSubArchOffloadArch(SubArch);
+ if (Arch.isUnknown())
+ continue;
+
+ EXPECT_TRUE(Arch.isAMDGPU());
+ EXPECT_EQ(getOffloadArchSubArch(Arch), SubArch)
+ << "subarch round-trip failed for " << OffloadArchToString(Arch);
+ }
+
+ EXPECT_EQ(getOffloadArchSubArch(OffloadArch::getSPIRV()),
+ llvm::Triple::NoSubArch);
+}
diff --git a/flang/test/Driver/code-object-version.f90 b/flang/test/Driver/code-object-version.f90
index 430cc864d03ec..c446b2546bf4f 100644
--- a/flang/test/Driver/code-object-version.f90
+++ b/flang/test/Driver/code-object-version.f90
@@ -11,6 +11,6 @@
! INVALID_VERSION: error: invalid integral value '3' in '-mcode-object-version=3'
! UNUSED_PARAM: warning: argument unused during compilation: '-mcode-object-version=3' [-Wunused-command-line-argument]
-! VALID_USE: "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! VALID_USE: "-fc1" "-triple" "amdgpu9.08-amd-amdhsa"
! VALID_USE-SAME: "-mcode-object-version=5"
! VALID_USE-SAME: "-mllvm" "--amdhsa-code-object-version=5"
diff --git a/flang/test/Driver/offload-device.f90 b/flang/test/Driver/offload-device.f90
index 13834171a9233..223d961ab2903 100644
--- a/flang/test/Driver/offload-device.f90
+++ b/flang/test/Driver/offload-device.f90
@@ -14,7 +14,7 @@
! Compiled as OpenMP, device-code is compiled after host-code compilation,
! once for each --offload-arch argument
-! OPENMP: {{(^|[\\/])flang(-[0-9]+)?(-bolt\.inst)?(\.exe)?}}" "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! OPENMP: {{(^|[\\/])flang(-[0-9]+)?(-bolt\.inst)?(\.exe)?}}" "-fc1" "-triple" "amdgpu9.0a-amd-amdhsa"
! OPENMP-SAME: "-foffload-device"
! OPENMP: {{(^|[\\/])flang(-[0-9]+)?(-bolt\.inst)?(\.exe)?}}" "-fc1" "-triple" "nvptx64-nvidia-cuda"
! OPENMP-SAME: "-foffload-device"
diff --git a/flang/test/Driver/omp-driver-offload.f90 b/flang/test/Driver/omp-driver-offload.f90
index fc9bbd7f968cb..fccd0771d040c 100644
--- a/flang/test/Driver/omp-driver-offload.f90
+++ b/flang/test/Driver/omp-driver-offload.f90
@@ -23,7 +23,7 @@
! RUN: | FileCheck %s --check-prefix=OFFLOAD-HOST-AND-DEVICE
! OFFLOAD-HOST-AND-DEVICE: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
-! OFFLOAD-HOST-AND-DEVICE-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! OFFLOAD-HOST-AND-DEVICE-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgpu9.0a-amd-amdhsa"
! OFFLOAD-HOST-AND-DEVICE-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "nvptx64-nvidia-cuda"
! OFFLOAD-HOST-AND-DEVICE: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
@@ -43,7 +43,7 @@
! RUN: | FileCheck %s --check-prefix=OFFLOAD-DEVICE
! OFFLOAD-DEVICE: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
-! OFFLOAD-DEVICE-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! OFFLOAD-DEVICE-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgpu9.0a-amd-amdhsa"
! OFFLOAD-DEVICE-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "nvptx64-nvidia-cuda"
! OFFLOAD-DEVICE-NOT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
@@ -57,11 +57,11 @@
! RUN: --target=aarch64-unknown-linux-gnu -nogpulib\
! RUN: | FileCheck %s --check-prefix=OPENMP-OFFLOAD-ARGS
! OPENMP-OFFLOAD-ARGS: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "aarch64-unknown-linux-gnu" {{.*}} "-fopenmp" {{.*}}.f90"
-! OPENMP-OFFLOAD-ARGS-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! OPENMP-OFFLOAD-ARGS-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgpu9.0a-amd-amdhsa"
! OPENMP-OFFLOAD-ARGS-SAME: "-fopenmp"
! OPENMP-OFFLOAD-ARGS-SAME: "-fopenmp-host-ir-file-path" "{{.*}}.bc" "-fopenmp-is-target-device"
! OPENMP-OFFLOAD-ARGS-SAME: {{.*}}.f90"
-! OPENMP-OFFLOAD-ARGS: "{{[^"]*}}llvm-offload-binary{{.*}}" {{.*}} "--image=file={{.*}}.s,triple=amdgcn-amd-amdhsa,arch=gfx90a,kind=openmp"
+! OPENMP-OFFLOAD-ARGS: "{{[^"]*}}llvm-offload-binary{{.*}}" {{.*}} "--image=file={{.*}}.s,triple=amdgpu9.0a-amd-amdhsa,arch=gfx90a,kind=openmp"
! OPENMP-OFFLOAD-ARGS-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
! OPENMP-OFFLOAD-ARGS-SAME: "-fopenmp"
! OPENMP-OFFLOAD-ARGS-SAME: "-fembed-offload-object={{.*}}.out" {{.*}}.bc"
@@ -203,14 +203,14 @@
! FORCE-USM-OFFLOAD: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
! FORCE-USM-OFFLOAD-SAME: "-fopenmp" "-fopenmp-force-usm"
-! FORCE-USM-OFFLOAD-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! FORCE-USM-OFFLOAD-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgpu9.0a-amd-amdhsa"
! FORCE-USM-OFFLOAD-SAME: "-fopenmp" "-fopenmp-force-usm"
! RUN: %flang -### -v --target=x86_64-unknown-linux-gnu -fopenmp \
! RUN: --offload-arch=gfx900 \
! RUN: --rocm-path=%S/Inputs/rocm %s 2>&1 \
! RUN: | FileCheck --check-prefix=MLINK-BUILTIN-BITCODE %s
-! MLINK-BUILTIN-BITCODE: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! MLINK-BUILTIN-BITCODE: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgpu9.00-amd-amdhsa"
! MLINK-BUILTIN-BITCODE-SAME: "-mlink-builtin-bitcode" {{.*Inputs.*rocm.*amdgcn.*bitcode.*}}oclc_isa_version_900.bc
! Test that the -fopenmp-targets option is added to host compilation invocations
@@ -225,8 +225,8 @@
! RUN: | FileCheck %s --check-prefix=OFFLOAD-TARGETS
! OFFLOAD-TARGETS: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "x86_64-unknown-linux-gnu"
-! OFFLOAD-TARGETS-SAME: "--offload-targets=amdgcn-amd-amdhsa"
-! OFFLOAD-TARGETS-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! OFFLOAD-TARGETS-SAME: "--offload-targets=amdgpu-amd-amdhsa"
+! OFFLOAD-TARGETS-NEXT: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "amdgpu9.0a-amd-amdhsa"
! OFFLOAD-TARGETS-NOT: --offload-targets
! OFFLOAD-TARGETS: "{{[^"]*}}flang{{[^"]*}}" "-fc1" "-triple" "x86_64-unknown-linux-gnu"
-! OFFLOAD-TARGETS-SAME: "--offload-targets=amdgcn-amd-amdhsa"
+! OFFLOAD-TARGETS-SAME: "--offload-targets=amdgpu-amd-amdhsa"
diff --git a/flang/test/Driver/target-cpu-features.f90 b/flang/test/Driver/target-cpu-features.f90
index 92ad12de781f2..97175b767e329 100644
--- a/flang/test/Driver/target-cpu-features.f90
+++ b/flang/test/Driver/target-cpu-features.f90
@@ -76,7 +76,7 @@
! CHECK-RV64: "-fc1" "-triple" "riscv64-unknown-linux-gnu"
! CHECK-RV64-SAME: "-target-cpu" "generic-rv64" "-target-feature" "+i" "-target-feature" "+m" "-target-feature" "+a" "-target-feature" "+f" "-target-feature" "+d" "-target-feature" "+c"
-! CHECK-AMDGPU: "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! CHECK-AMDGPU: "-fc1" "-triple" "amdgpu9.08-amd-amdhsa"
! CHECK-AMDGPU-SAME: "-target-cpu" "gfx908"
! CHECK-AMDGPU-R600: "-fc1" "-triple" "r600-unknown-unknown"
diff --git a/flang/test/Driver/target-gpu-features.f90 b/flang/test/Driver/target-gpu-features.f90
index b783574370a0f..577181bd1272f 100644
--- a/flang/test/Driver/target-gpu-features.f90
+++ b/flang/test/Driver/target-gpu-features.f90
@@ -6,5 +6,5 @@
! RUN: %flang --target=amdgcn-amd-amdhsa -mcpu=gfx902 -nogpulib -c %s -### 2>&1 \
! RUN: | FileCheck %s -check-prefix=CHECK-AMDGCN
-! CHECK-AMDGCN: "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! CHECK-AMDGCN: "-fc1" "-triple" "amdgpu9.02-amd-amdhsa"
! CHECK-AMDGCN-SAME: "-target-cpu" "gfx902"
diff --git a/flang/test/Driver/xoffload-linker.f90 b/flang/test/Driver/xoffload-linker.f90
index c8988de1fdec8..7c7f895aa8a1c 100644
--- a/flang/test/Driver/xoffload-linker.f90
+++ b/flang/test/Driver/xoffload-linker.f90
@@ -1,4 +1,4 @@
-! Test the -Xoffload-linker flag that forwards link commands to the clang-linker-wrapper used
+1! Test the -Xoffload-linker flag that forwards link commands to the clang-linker-wrapper used
! to help link offloading device libraries
! RUN: %flang -### %s -o %t 2>&1 -fopenmp --offload-arch=gfx90a --target=aarch64-unknown-linux-gnu -nogpulib -Xoffload-linker a | FileCheck %s --check-prefix=CHECK-XLINKER
@@ -7,4 +7,4 @@
! RUN: %flang -### %s -o %t 2>&1 -fopenmp --offload-arch=gfx90a --target=aarch64-unknown-linux-gnu -nogpulib -Xoffload-linker a -Xoffload-linker-amdgcn-amd-amdhsa b | FileCheck %s --check-prefix=CHECK-XLINKER-AMDGCN
-! CHECK-XLINKER-AMDGCN: "{{[^"]*}}clang-linker-wrapper{{.*}}"{{.*}}"--device-linker=a"{{.*}}"--device-linker=amdgcn-amd-amdhsa=b"{{.*}}
+! CHECK-XLINKER-AMDGCN: "{{[^"]*}}clang-linker-wrapper{{.*}}"{{.*}}"--device-linker=a"{{.*}}"--device-linker=amdgpu-amd-amdhsa=b"{{.*}}
diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
index ea1cef97900f5..8e2a386cf55e9 100644
--- a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
+++ b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
@@ -1282,6 +1282,7 @@ __OMP_TRAIT_PROPERTY(device, arch, ppc64)
__OMP_TRAIT_PROPERTY(device, arch, ppc64le)
__OMP_TRAIT_PROPERTY(device, arch, x86)
__OMP_TRAIT_PROPERTY(device, arch, x86_64)
+// TODO: Should also cover subarches
__OMP_TRAIT_PROPERTY(device, arch, amdgcn)
__OMP_TRAIT_PROPERTY(device, arch, amdgpu)
__OMP_TRAIT_PROPERTY(device, arch, nvptx)
More information about the flang-commits
mailing list