[llvm] [AMDGPU] Use an X-macro to define ELF machine types and names. NFCI. (PR #185882)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 11 06:55:31 PDT 2026


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

>From 58b00386962763d49ccd5c1411240d53ab879c5d Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Wed, 11 Mar 2026 10:59:53 +0000
Subject: [PATCH 1/2] [AMDGPU] Use an X-macro to define ELF machine types and
 names. NFCI.

This reduces the number of files that need to be touched when adding a
new CPU type.
---
 llvm/include/llvm/BinaryFormat/ELF.h  | 175 +++++++++++++-------------
 llvm/lib/Object/ELFObjectFile.cpp     | 175 +-------------------------
 llvm/tools/llvm-readobj/ELFDumper.cpp |  77 +-----------
 3 files changed, 92 insertions(+), 335 deletions(-)

diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h
index af466e82c2bd4..6e318533519d1 100644
--- a/llvm/include/llvm/BinaryFormat/ELF.h
+++ b/llvm/include/llvm/BinaryFormat/ELF.h
@@ -763,6 +763,80 @@ enum {
 };
 
 // AMDGPU specific e_flags.
+#define AMDGPU_MACH_LIST(X)                                                    \
+  X(0x01, EF_AMDGPU_MACH_R600_R600, "r600")                                    \
+  X(0x02, EF_AMDGPU_MACH_R600_R630, "r630")                                    \
+  X(0x03, EF_AMDGPU_MACH_R600_RS880, "rs880")                                  \
+  X(0x04, EF_AMDGPU_MACH_R600_RV670, "rv670")                                  \
+  X(0x05, EF_AMDGPU_MACH_R600_RV710, "rv710")                                  \
+  X(0x06, EF_AMDGPU_MACH_R600_RV730, "rv730")                                  \
+  X(0x07, EF_AMDGPU_MACH_R600_RV770, "rv770")                                  \
+  X(0x08, EF_AMDGPU_MACH_R600_CEDAR, "cedar")                                  \
+  X(0x09, EF_AMDGPU_MACH_R600_CYPRESS, "cypress")                              \
+  X(0x0a, EF_AMDGPU_MACH_R600_JUNIPER, "juniper")                              \
+  X(0x0b, EF_AMDGPU_MACH_R600_REDWOOD, "redwood")                              \
+  X(0x0c, EF_AMDGPU_MACH_R600_SUMO, "sumo")                                    \
+  X(0x0d, EF_AMDGPU_MACH_R600_BARTS, "barts")                                  \
+  X(0x0e, EF_AMDGPU_MACH_R600_CAICOS, "caicos")                                \
+  X(0x0f, EF_AMDGPU_MACH_R600_CAYMAN, "cayman")                                \
+  X(0x10, EF_AMDGPU_MACH_R600_TURKS, "turks")                                  \
+  X(0x20, EF_AMDGPU_MACH_AMDGCN_GFX600, "gfx600")                              \
+  X(0x21, EF_AMDGPU_MACH_AMDGCN_GFX601, "gfx601")                              \
+  X(0x22, EF_AMDGPU_MACH_AMDGCN_GFX700, "gfx700")                              \
+  X(0x23, EF_AMDGPU_MACH_AMDGCN_GFX701, "gfx701")                              \
+  X(0x24, EF_AMDGPU_MACH_AMDGCN_GFX702, "gfx702")                              \
+  X(0x25, EF_AMDGPU_MACH_AMDGCN_GFX703, "gfx703")                              \
+  X(0x26, EF_AMDGPU_MACH_AMDGCN_GFX704, "gfx704")                              \
+  X(0x28, EF_AMDGPU_MACH_AMDGCN_GFX801, "gfx801")                              \
+  X(0x29, EF_AMDGPU_MACH_AMDGCN_GFX802, "gfx802")                              \
+  X(0x2a, EF_AMDGPU_MACH_AMDGCN_GFX803, "gfx803")                              \
+  X(0x2b, EF_AMDGPU_MACH_AMDGCN_GFX810, "gfx810")                              \
+  X(0x2c, EF_AMDGPU_MACH_AMDGCN_GFX900, "gfx900")                              \
+  X(0x2d, EF_AMDGPU_MACH_AMDGCN_GFX902, "gfx902")                              \
+  X(0x2e, EF_AMDGPU_MACH_AMDGCN_GFX904, "gfx904")                              \
+  X(0x2f, EF_AMDGPU_MACH_AMDGCN_GFX906, "gfx906")                              \
+  X(0x30, EF_AMDGPU_MACH_AMDGCN_GFX908, "gfx908")                              \
+  X(0x31, EF_AMDGPU_MACH_AMDGCN_GFX909, "gfx909")                              \
+  X(0x32, EF_AMDGPU_MACH_AMDGCN_GFX90C, "gfx90c")                              \
+  X(0x33, EF_AMDGPU_MACH_AMDGCN_GFX1010, "gfx1010")                            \
+  X(0x34, EF_AMDGPU_MACH_AMDGCN_GFX1011, "gfx1011")                            \
+  X(0x35, EF_AMDGPU_MACH_AMDGCN_GFX1012, "gfx1012")                            \
+  X(0x36, EF_AMDGPU_MACH_AMDGCN_GFX1030, "gfx1030")                            \
+  X(0x37, EF_AMDGPU_MACH_AMDGCN_GFX1031, "gfx1031")                            \
+  X(0x38, EF_AMDGPU_MACH_AMDGCN_GFX1032, "gfx1032")                            \
+  X(0x39, EF_AMDGPU_MACH_AMDGCN_GFX1033, "gfx1033")                            \
+  X(0x3a, EF_AMDGPU_MACH_AMDGCN_GFX602, "gfx602")                              \
+  X(0x3b, EF_AMDGPU_MACH_AMDGCN_GFX705, "gfx705")                              \
+  X(0x3c, EF_AMDGPU_MACH_AMDGCN_GFX805, "gfx805")                              \
+  X(0x3d, EF_AMDGPU_MACH_AMDGCN_GFX1035, "gfx1035")                            \
+  X(0x3e, EF_AMDGPU_MACH_AMDGCN_GFX1034, "gfx1034")                            \
+  X(0x3f, EF_AMDGPU_MACH_AMDGCN_GFX90A, "gfx90a")                              \
+  X(0x41, EF_AMDGPU_MACH_AMDGCN_GFX1100, "gfx1100")                            \
+  X(0x42, EF_AMDGPU_MACH_AMDGCN_GFX1013, "gfx1013")                            \
+  X(0x43, EF_AMDGPU_MACH_AMDGCN_GFX1150, "gfx1150")                            \
+  X(0x44, EF_AMDGPU_MACH_AMDGCN_GFX1103, "gfx1103")                            \
+  X(0x45, EF_AMDGPU_MACH_AMDGCN_GFX1036, "gfx1036")                            \
+  X(0x46, EF_AMDGPU_MACH_AMDGCN_GFX1101, "gfx1101")                            \
+  X(0x47, EF_AMDGPU_MACH_AMDGCN_GFX1102, "gfx1102")                            \
+  X(0x48, EF_AMDGPU_MACH_AMDGCN_GFX1200, "gfx1200")                            \
+  X(0x49, EF_AMDGPU_MACH_AMDGCN_GFX1250, "gfx1250")                            \
+  X(0x4a, EF_AMDGPU_MACH_AMDGCN_GFX1151, "gfx1151")                            \
+  X(0x4c, EF_AMDGPU_MACH_AMDGCN_GFX942, "gfx942")                              \
+  X(0x4e, EF_AMDGPU_MACH_AMDGCN_GFX1201, "gfx1201")                            \
+  X(0x4f, EF_AMDGPU_MACH_AMDGCN_GFX950, "gfx950")                              \
+  X(0x50, EF_AMDGPU_MACH_AMDGCN_GFX1310, "gfx1310")                            \
+  X(0x51, EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC, "gfx9-generic")                  \
+  X(0x52, EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, "gfx10-1-generic")            \
+  X(0x53, EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC, "gfx10-3-generic")            \
+  X(0x54, EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC, "gfx11-generic")                \
+  X(0x55, EF_AMDGPU_MACH_AMDGCN_GFX1152, "gfx1152")                            \
+  X(0x58, EF_AMDGPU_MACH_AMDGCN_GFX1153, "gfx1153")                            \
+  X(0x59, EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC, "gfx12-generic")                \
+  X(0x5a, EF_AMDGPU_MACH_AMDGCN_GFX1251, "gfx1251")                            \
+  X(0x5b, EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC, "gfx12-5-generic")            \
+  X(0x5d, EF_AMDGPU_MACH_AMDGCN_GFX1170, "gfx1170")                            \
+  X(0x5f, EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, "gfx9-4-generic")
+
 enum : unsigned {
   // Processor selection mask for EF_AMDGPU_MACH_* values.
   EF_AMDGPU_MACH = 0x0ff,
@@ -770,102 +844,21 @@ enum : unsigned {
   // Not specified processor.
   EF_AMDGPU_MACH_NONE = 0x000,
 
-  // R600-based processors.
-
-  // Radeon HD 2000/3000 Series (R600).
-  EF_AMDGPU_MACH_R600_R600 = 0x001,
-  EF_AMDGPU_MACH_R600_R630 = 0x002,
-  EF_AMDGPU_MACH_R600_RS880 = 0x003,
-  EF_AMDGPU_MACH_R600_RV670 = 0x004,
-  // Radeon HD 4000 Series (R700).
-  EF_AMDGPU_MACH_R600_RV710 = 0x005,
-  EF_AMDGPU_MACH_R600_RV730 = 0x006,
-  EF_AMDGPU_MACH_R600_RV770 = 0x007,
-  // Radeon HD 5000 Series (Evergreen).
-  EF_AMDGPU_MACH_R600_CEDAR = 0x008,
-  EF_AMDGPU_MACH_R600_CYPRESS = 0x009,
-  EF_AMDGPU_MACH_R600_JUNIPER = 0x00a,
-  EF_AMDGPU_MACH_R600_REDWOOD = 0x00b,
-  EF_AMDGPU_MACH_R600_SUMO = 0x00c,
-  // Radeon HD 6000 Series (Northern Islands).
-  EF_AMDGPU_MACH_R600_BARTS = 0x00d,
-  EF_AMDGPU_MACH_R600_CAICOS = 0x00e,
-  EF_AMDGPU_MACH_R600_CAYMAN = 0x00f,
-  EF_AMDGPU_MACH_R600_TURKS = 0x010,
-
-  // Reserved for R600-based processors.
+#define X(NUM, ENUM, NAME) ENUM = NUM,
+  AMDGPU_MACH_LIST(X)
+#undef X
+
   EF_AMDGPU_MACH_R600_RESERVED_FIRST = 0x011,
   EF_AMDGPU_MACH_R600_RESERVED_LAST = 0x01f,
-
-  // First/last R600-based processors.
   EF_AMDGPU_MACH_R600_FIRST = EF_AMDGPU_MACH_R600_R600,
   EF_AMDGPU_MACH_R600_LAST = EF_AMDGPU_MACH_R600_TURKS,
 
-  // AMDGCN-based processors.
-  // clang-format off
-  EF_AMDGPU_MACH_AMDGCN_GFX600          = 0x020,
-  EF_AMDGPU_MACH_AMDGCN_GFX601          = 0x021,
-  EF_AMDGPU_MACH_AMDGCN_GFX700          = 0x022,
-  EF_AMDGPU_MACH_AMDGCN_GFX701          = 0x023,
-  EF_AMDGPU_MACH_AMDGCN_GFX702          = 0x024,
-  EF_AMDGPU_MACH_AMDGCN_GFX703          = 0x025,
-  EF_AMDGPU_MACH_AMDGCN_GFX704          = 0x026,
-  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X27   = 0x027,
-  EF_AMDGPU_MACH_AMDGCN_GFX801          = 0x028,
-  EF_AMDGPU_MACH_AMDGCN_GFX802          = 0x029,
-  EF_AMDGPU_MACH_AMDGCN_GFX803          = 0x02a,
-  EF_AMDGPU_MACH_AMDGCN_GFX810          = 0x02b,
-  EF_AMDGPU_MACH_AMDGCN_GFX900          = 0x02c,
-  EF_AMDGPU_MACH_AMDGCN_GFX902          = 0x02d,
-  EF_AMDGPU_MACH_AMDGCN_GFX904          = 0x02e,
-  EF_AMDGPU_MACH_AMDGCN_GFX906          = 0x02f,
-  EF_AMDGPU_MACH_AMDGCN_GFX908          = 0x030,
-  EF_AMDGPU_MACH_AMDGCN_GFX909          = 0x031,
-  EF_AMDGPU_MACH_AMDGCN_GFX90C          = 0x032,
-  EF_AMDGPU_MACH_AMDGCN_GFX1010         = 0x033,
-  EF_AMDGPU_MACH_AMDGCN_GFX1011         = 0x034,
-  EF_AMDGPU_MACH_AMDGCN_GFX1012         = 0x035,
-  EF_AMDGPU_MACH_AMDGCN_GFX1030         = 0x036,
-  EF_AMDGPU_MACH_AMDGCN_GFX1031         = 0x037,
-  EF_AMDGPU_MACH_AMDGCN_GFX1032         = 0x038,
-  EF_AMDGPU_MACH_AMDGCN_GFX1033         = 0x039,
-  EF_AMDGPU_MACH_AMDGCN_GFX602          = 0x03a,
-  EF_AMDGPU_MACH_AMDGCN_GFX705          = 0x03b,
-  EF_AMDGPU_MACH_AMDGCN_GFX805          = 0x03c,
-  EF_AMDGPU_MACH_AMDGCN_GFX1035         = 0x03d,
-  EF_AMDGPU_MACH_AMDGCN_GFX1034         = 0x03e,
-  EF_AMDGPU_MACH_AMDGCN_GFX90A          = 0x03f,
-  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X40   = 0x040,
-  EF_AMDGPU_MACH_AMDGCN_GFX1100         = 0x041,
-  EF_AMDGPU_MACH_AMDGCN_GFX1013         = 0x042,
-  EF_AMDGPU_MACH_AMDGCN_GFX1150         = 0x043,
-  EF_AMDGPU_MACH_AMDGCN_GFX1103         = 0x044,
-  EF_AMDGPU_MACH_AMDGCN_GFX1036         = 0x045,
-  EF_AMDGPU_MACH_AMDGCN_GFX1101         = 0x046,
-  EF_AMDGPU_MACH_AMDGCN_GFX1102         = 0x047,
-  EF_AMDGPU_MACH_AMDGCN_GFX1200         = 0x048,
-  EF_AMDGPU_MACH_AMDGCN_GFX1250         = 0x049,
-  EF_AMDGPU_MACH_AMDGCN_GFX1151         = 0x04a,
-  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4B   = 0x04b,
-  EF_AMDGPU_MACH_AMDGCN_GFX942          = 0x04c,
-  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4D   = 0x04d,
-  EF_AMDGPU_MACH_AMDGCN_GFX1201         = 0x04e,
-  EF_AMDGPU_MACH_AMDGCN_GFX950          = 0x04f,
-  EF_AMDGPU_MACH_AMDGCN_GFX1310         = 0x050,
-  EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC    = 0x051,
-  EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC = 0x052,
-  EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC = 0x053,
-  EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC   = 0x054,
-  EF_AMDGPU_MACH_AMDGCN_GFX1152         = 0x055,
-  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X56   = 0x056,
-  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X57   = 0x057,
-  EF_AMDGPU_MACH_AMDGCN_GFX1153         = 0x058,
-  EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC   = 0x059,
-  EF_AMDGPU_MACH_AMDGCN_GFX1251         = 0x05a,
-  EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC = 0x05b,
-  EF_AMDGPU_MACH_AMDGCN_GFX1170         = 0x05d,
-  EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC  = 0x05f,
-  // clang-format on
+  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X27 = 0x027,
+  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X40 = 0x040,
+  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4B = 0x04b,
+  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4D = 0x04d,
+  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X56 = 0x056,
+  EF_AMDGPU_MACH_AMDGCN_RESERVED_0X57 = 0x057,
 
   // First/last AMDGCN-based processors.
   EF_AMDGPU_MACH_AMDGCN_FIRST = EF_AMDGPU_MACH_AMDGCN_GFX600,
diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp
index ca1a644926bd4..dba22bd54af2d 100644
--- a/llvm/lib/Object/ELFObjectFile.cpp
+++ b/llvm/lib/Object/ELFObjectFile.cpp
@@ -458,175 +458,12 @@ StringRef ELFObjectFileBase::getAMDGPUCPUName() const {
   unsigned CPU = getPlatformFlags() & ELF::EF_AMDGPU_MACH;
 
   switch (CPU) {
-  // Radeon HD 2000/3000 Series (R600).
-  case ELF::EF_AMDGPU_MACH_R600_R600:
-    return "r600";
-  case ELF::EF_AMDGPU_MACH_R600_R630:
-    return "r630";
-  case ELF::EF_AMDGPU_MACH_R600_RS880:
-    return "rs880";
-  case ELF::EF_AMDGPU_MACH_R600_RV670:
-    return "rv670";
-
-  // Radeon HD 4000 Series (R700).
-  case ELF::EF_AMDGPU_MACH_R600_RV710:
-    return "rv710";
-  case ELF::EF_AMDGPU_MACH_R600_RV730:
-    return "rv730";
-  case ELF::EF_AMDGPU_MACH_R600_RV770:
-    return "rv770";
-
-  // Radeon HD 5000 Series (Evergreen).
-  case ELF::EF_AMDGPU_MACH_R600_CEDAR:
-    return "cedar";
-  case ELF::EF_AMDGPU_MACH_R600_CYPRESS:
-    return "cypress";
-  case ELF::EF_AMDGPU_MACH_R600_JUNIPER:
-    return "juniper";
-  case ELF::EF_AMDGPU_MACH_R600_REDWOOD:
-    return "redwood";
-  case ELF::EF_AMDGPU_MACH_R600_SUMO:
-    return "sumo";
-
-  // Radeon HD 6000 Series (Northern Islands).
-  case ELF::EF_AMDGPU_MACH_R600_BARTS:
-    return "barts";
-  case ELF::EF_AMDGPU_MACH_R600_CAICOS:
-    return "caicos";
-  case ELF::EF_AMDGPU_MACH_R600_CAYMAN:
-    return "cayman";
-  case ELF::EF_AMDGPU_MACH_R600_TURKS:
-    return "turks";
-
-  // AMDGCN GFX6.
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX600:
-    return "gfx600";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX601:
-    return "gfx601";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX602:
-    return "gfx602";
-
-  // AMDGCN GFX7.
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX700:
-    return "gfx700";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX701:
-    return "gfx701";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX702:
-    return "gfx702";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX703:
-    return "gfx703";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX704:
-    return "gfx704";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX705:
-    return "gfx705";
-
-  // AMDGCN GFX8.
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX801:
-    return "gfx801";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX802:
-    return "gfx802";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX803:
-    return "gfx803";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX805:
-    return "gfx805";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX810:
-    return "gfx810";
-
-  // AMDGCN GFX9.
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX900:
-    return "gfx900";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX902:
-    return "gfx902";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX904:
-    return "gfx904";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX906:
-    return "gfx906";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX908:
-    return "gfx908";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX909:
-    return "gfx909";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX90A:
-    return "gfx90a";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX90C:
-    return "gfx90c";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX942:
-    return "gfx942";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX950:
-    return "gfx950";
-
-  // AMDGCN GFX10.
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1010:
-    return "gfx1010";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1011:
-    return "gfx1011";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1012:
-    return "gfx1012";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1013:
-    return "gfx1013";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1030:
-    return "gfx1030";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1031:
-    return "gfx1031";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1032:
-    return "gfx1032";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1033:
-    return "gfx1033";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1034:
-    return "gfx1034";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1035:
-    return "gfx1035";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1036:
-    return "gfx1036";
-
-  // AMDGCN GFX11.
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1100:
-    return "gfx1100";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1101:
-    return "gfx1101";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1102:
-    return "gfx1102";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1103:
-    return "gfx1103";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1150:
-    return "gfx1150";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1151:
-    return "gfx1151";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1152:
-    return "gfx1152";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1153:
-    return "gfx1153";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1170:
-    return "gfx1170";
-
-  // AMDGCN GFX12.
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1200:
-    return "gfx1200";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1201:
-    return "gfx1201";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1250:
-    return "gfx1250";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1251:
-    return "gfx1251";
-
-  // AMDGCN GFX13.
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1310:
-    return "gfx1310";
-
-  // Generic AMDGCN targets
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC:
-    return "gfx9-generic";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC:
-    return "gfx9-4-generic";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC:
-    return "gfx10-1-generic";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC:
-    return "gfx10-3-generic";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC:
-    return "gfx11-generic";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC:
-    return "gfx12-generic";
-  case ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC:
-    return "gfx12-5-generic";
+#define X(NUM, ENUM, NAME)                                                     \
+  case ELF::ENUM:                                                              \
+    return NAME;
+    AMDGPU_MACH_LIST(X)
+#undef X
+
   default:
     llvm_unreachable("Unknown EF_AMDGPU_MACH value");
   }
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 7a97e09060990..bcb580119fb85 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -1623,82 +1623,9 @@ const EnumEntry<unsigned> ElfHeaderMipsFlags[] = {
   ENUM_ENT(EF_MIPS_ARCH_64R6, "mips64r6")
 };
 
-// clang-format off
+#define X(NUM, ENUM, NAME) ENUM_ENT(ENUM, NAME),
 #define AMDGPU_MACH_ENUM_ENTS                                                  \
-  ENUM_ENT(EF_AMDGPU_MACH_NONE, "none"),                                       \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_R600, "r600"),                                  \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_R630, "r630"),                                  \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_RS880, "rs880"),                                \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_RV670, "rv670"),                                \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_RV710, "rv710"),                                \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_RV730, "rv730"),                                \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_RV770, "rv770"),                                \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_CEDAR, "cedar"),                                \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_CYPRESS, "cypress"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_JUNIPER, "juniper"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_REDWOOD, "redwood"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_SUMO, "sumo"),                                  \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_BARTS, "barts"),                                \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_CAICOS, "caicos"),                              \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_CAYMAN, "cayman"),                              \
-  ENUM_ENT(EF_AMDGPU_MACH_R600_TURKS, "turks"),                                \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX600, "gfx600"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX601, "gfx601"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX602, "gfx602"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX700, "gfx700"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX701, "gfx701"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX702, "gfx702"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX703, "gfx703"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX704, "gfx704"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX705, "gfx705"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX801, "gfx801"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX802, "gfx802"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX803, "gfx803"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX805, "gfx805"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX810, "gfx810"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX900, "gfx900"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX902, "gfx902"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX904, "gfx904"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX906, "gfx906"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX908, "gfx908"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX909, "gfx909"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX90A, "gfx90a"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX90C, "gfx90c"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX942, "gfx942"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX950, "gfx950"),                            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1010, "gfx1010"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1011, "gfx1011"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1012, "gfx1012"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1013, "gfx1013"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1030, "gfx1030"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1031, "gfx1031"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1032, "gfx1032"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1033, "gfx1033"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1034, "gfx1034"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1035, "gfx1035"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1036, "gfx1036"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1100, "gfx1100"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1101, "gfx1101"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1102, "gfx1102"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1103, "gfx1103"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1150, "gfx1150"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1151, "gfx1151"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1152, "gfx1152"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1153, "gfx1153"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1170, "gfx1170"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1200, "gfx1200"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1201, "gfx1201"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1250, "gfx1250"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1251, "gfx1251"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1310, "gfx1310"),                          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC, "gfx9-generic"),                \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, "gfx9-4-generic"),            \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, "gfx10-1-generic"),          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC, "gfx10-3-generic"),          \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC, "gfx11-generic"),              \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC, "gfx12-generic"),              \
-  ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC, "gfx12-5-generic")
-// clang-format on
+  AMDGPU_MACH_LIST(X) ENUM_ENT(EF_AMDGPU_MACH_NONE, "none")
 
 const EnumEntry<unsigned> ElfHeaderAMDGPUFlagsABIVersion3[] = {
     AMDGPU_MACH_ENUM_ENTS,

>From 086152b506d28688152afbed245ae0faed77c036 Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Wed, 11 Mar 2026 13:51:25 +0000
Subject: [PATCH 2/2] Also update ELFYAML

---
 llvm/lib/ObjectYAML/ELFYAML.cpp | 75 ++-------------------------------
 1 file changed, 3 insertions(+), 72 deletions(-)

diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp
index db5c8ce282d7e..f61ad8089c71b 100644
--- a/llvm/lib/ObjectYAML/ELFYAML.cpp
+++ b/llvm/lib/ObjectYAML/ELFYAML.cpp
@@ -590,78 +590,9 @@ void ScalarBitSetTraits<ELFYAML::ELF_EF>::bitset(IO &IO,
     break;
   case ELF::EM_AMDGPU:
     BCaseMask(EF_AMDGPU_MACH_NONE, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_R600, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_R630, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_RS880, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_RV670, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_RV710, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_RV730, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_RV770, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_CEDAR, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_CYPRESS, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_JUNIPER, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_REDWOOD, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_SUMO, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_BARTS, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_CAICOS, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_CAYMAN, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_R600_TURKS, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX600, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX601, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX602, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX700, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX701, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX702, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX703, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX704, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX705, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX801, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX802, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX803, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX805, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX810, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX900, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX902, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX904, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX906, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX908, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX909, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX90A, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX90C, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX942, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX950, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1010, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1011, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1012, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1013, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1030, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1031, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1032, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1033, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1034, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1035, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1036, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1100, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1101, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1102, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1103, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1150, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1151, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1152, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1153, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1170, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1200, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1201, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1250, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1251, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1310, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC, EF_AMDGPU_MACH);
-    BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC, EF_AMDGPU_MACH);
+#define X(NUM, ENUM, NAME) BCaseMask(ENUM, EF_AMDGPU_MACH);
+    AMDGPU_MACH_LIST(X)
+#undef X
     switch (Object->Header.ABIVersion) {
     default:
       // ELFOSABI_AMDGPU_PAL, ELFOSABI_AMDGPU_MESA3D support *_V3 flags.



More information about the llvm-commits mailing list