[flang-commits] [clang] [flang] [lld] [lldb] [llvm] AMDGPU: Introduce amdgpu triple arch (PR #206480)

Scott Linder via flang-commits flang-commits at lists.llvm.org
Wed Jul 8 08:02:50 PDT 2026


================
@@ -873,6 +879,24 @@ AMDGPUTargetMachine::AMDGPUTargetMachine(const Target &T, const Triple &TT,
       TLOF(createTLOF(getTargetTriple())) {
   initAsmInfo();
   if (TT.isAMDGCN()) {
+    // Triple is missing a representation for non-empty, but unrecognized
+    // subarches. Only permit no subarch for any subtarget if it was really
+    // empty.
+    bool IsUnknownSubArch =
+        TT.getSubArch() == Triple::NoSubArch && TT.getArchName().size() != 6;
+    if (IsUnknownSubArch)
+      reportFatalUsageError("unknown subarch " + TT.getArchName());
+
+    if (TT.getSubArch() != Triple::NoSubArch) {
+      AMDGPU::GPUKind Kind = AMDGPU::parseArchAMDGCN(CPU);
+      Triple::SubArchType GPUSubArch = AMDGPU::getSubArch(Kind);
+      if (Kind != AMDGPU::GK_NONE && GPUSubArch != TT.getSubArch() &&
+          TT.getSubArch() != AMDGPU::getMajorSubArch(GPUSubArch)) {
----------------
slinder1 wrote:

What is the benefit to being like the other targets, though? In many cases behaving differently is a surprise, but in this case I see the "warn and plow ahead" behavior as the surprising one.

An e.g. clang user that wants to start using amdgpu won't be confused that they cannot request nonsense (or just have a typo in their -mcpu??) and the compiler refuses to ignore them like it does for e.g. x86

We don't have to fix this here, but I wanted to point out that we could piggyback these kinds of other obvious improvements on the relatively big effort required to switch over from the "amdgcn" to "amdgpu<subarch>" world.

https://github.com/llvm/llvm-project/pull/206480


More information about the flang-commits mailing list