[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