[llvm] [TargetParser] Simplify getArchFamilyNameAMDGCN. NFC. (PR #186122)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 12 07:59:53 PDT 2026


https://github.com/jayfoad updated https://github.com/llvm/llvm-project/pull/186122

>From 7011078f544c443bf3ba348f954cf89337e40307 Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Thu, 12 Mar 2026 14:04:29 +0000
Subject: [PATCH 1/2] [TargetParser] Simplify getArchFamilyNameAMDGCN. NFC.

---
 llvm/lib/TargetParser/TargetParser.cpp | 21 +++++----------------
 1 file changed, 5 insertions(+), 16 deletions(-)

diff --git a/llvm/lib/TargetParser/TargetParser.cpp b/llvm/lib/TargetParser/TargetParser.cpp
index 3dcd0e9990021..c5c2fb6b70e09 100644
--- a/llvm/lib/TargetParser/TargetParser.cpp
+++ b/llvm/lib/TargetParser/TargetParser.cpp
@@ -205,23 +205,12 @@ const GPUInfo *getArchEntry(AMDGPU::GPUKind AK, ArrayRef<GPUInfo> Table) {
 } // namespace
 
 StringRef llvm::AMDGPU::getArchFamilyNameAMDGCN(GPUKind AK) {
-  switch (AK) {
-  case AMDGPU::GK_GFX9_GENERIC:
-  case AMDGPU::GK_GFX9_4_GENERIC:
-    return "gfx9";
-  case AMDGPU::GK_GFX10_1_GENERIC:
-  case AMDGPU::GK_GFX10_3_GENERIC:
-    return "gfx10";
-  case AMDGPU::GK_GFX11_GENERIC:
-    return "gfx11";
-  case AMDGPU::GK_GFX12_GENERIC:
-  case AMDGPU::GK_GFX12_5_GENERIC:
-    return "gfx12";
-  default: {
-    StringRef ArchName = getArchNameAMDGCN(AK);
-    return ArchName.empty() ? "" : ArchName.drop_back(2);
-  }
+  StringRef ArchName = getArchNameAMDGCN(AK);
+  if (ArchName.ends_with("-generic")) {
+    // Return the part before the first '-', e.g. "gfx9-4-generic" -> "gfx9".
+    return ArchName.take_front(ArchName.find('-'));
   }
+  return ArchName.empty() ? "" : ArchName.drop_back(2);
 }
 
 StringRef llvm::AMDGPU::getArchNameAMDGCN(GPUKind AK) {

>From 5f6f0985af76027ac67943bc08ed4b44d5c0a054 Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Thu, 12 Mar 2026 14:57:18 +0000
Subject: [PATCH 2/2] On second thoughts it's slicker to test the enum not the
 name

---
 llvm/lib/TargetParser/TargetParser.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/llvm/lib/TargetParser/TargetParser.cpp b/llvm/lib/TargetParser/TargetParser.cpp
index c5c2fb6b70e09..671787b48119e 100644
--- a/llvm/lib/TargetParser/TargetParser.cpp
+++ b/llvm/lib/TargetParser/TargetParser.cpp
@@ -206,7 +206,10 @@ const GPUInfo *getArchEntry(AMDGPU::GPUKind AK, ArrayRef<GPUInfo> Table) {
 
 StringRef llvm::AMDGPU::getArchFamilyNameAMDGCN(GPUKind AK) {
   StringRef ArchName = getArchNameAMDGCN(AK);
-  if (ArchName.ends_with("-generic")) {
+  assert((AK >= GK_AMDGCN_GENERIC_FIRST && AK <= GK_AMDGCN_GENERIC_LAST) ==
+             ArchName.ends_with("-generic") &&
+         "Generic AMDGCN arch not classified correctly!");
+  if (AK >= GK_AMDGCN_GENERIC_FIRST && AK <= GK_AMDGCN_GENERIC_LAST) {
     // Return the part before the first '-', e.g. "gfx9-4-generic" -> "gfx9".
     return ArchName.take_front(ArchName.find('-'));
   }



More information about the llvm-commits mailing list