[v2,2/4] Add AMDGPU generic targets

Message ID 20260507194615.943267-3-simon.marchi@efficios.com
State New
Headers
Series Add support for new AMDGPU architectures |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply

Commit Message

Simon Marchi May 7, 2026, 7:43 p.m. UTC
  Add the following generic AMDGPU architectures:

  - gfx9-generic
  - gfx9-4-generic
  - gfx10-1-generic
  - gfx10-3-generic
  - gfx11-generic
  - gfx12-generic
  - gfx12-5-generic

Change-Id: Ibf600d7c70ba8499f8ef75d8d57a71929f1cd4d4
Co-Authored-By: Simon Marchi <simon.marchi@efficios.com>
---
 bfd/archures.c       | 7 +++++++
 bfd/bfd-in2.h        | 7 +++++++
 bfd/cpu-amdgcn.c     | 9 ++++++++-
 binutils/readelf.c   | 7 +++++++
 include/elf/amdgpu.h | 7 +++++++
 5 files changed, 36 insertions(+), 1 deletion(-)
  

Patch

diff --git a/bfd/archures.c b/bfd/archures.c
index 5d5abdb30e71..8cfc81eebb96 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -560,19 +560,24 @@  DESCRIPTION
 .#define bfd_mach_loongarch64	2
 .  bfd_arch_amdgcn,     {* AMDGCN *}
 .#define bfd_mach_amdgcn_unknown 0x000
+.#define bfd_mach_amdgcn_gfx9_generic    0x051
 .#define bfd_mach_amdgcn_gfx900          0x02c
 .#define bfd_mach_amdgcn_gfx904          0x02e
 .#define bfd_mach_amdgcn_gfx906          0x02f
 .#define bfd_mach_amdgcn_gfx908          0x030
 .#define bfd_mach_amdgcn_gfx90a          0x03f
+.#define bfd_mach_amdgcn_gfx9_4_generic  0x05f
 .#define bfd_mach_amdgcn_gfx942          0x04c
 .#define bfd_mach_amdgcn_gfx950          0x04f
+.#define bfd_mach_amdgcn_gfx10_1_generic 0x052
 .#define bfd_mach_amdgcn_gfx1010         0x033
 .#define bfd_mach_amdgcn_gfx1011         0x034
 .#define bfd_mach_amdgcn_gfx1012         0x035
+.#define bfd_mach_amdgcn_gfx10_3_generic 0x053
 .#define bfd_mach_amdgcn_gfx1030         0x036
 .#define bfd_mach_amdgcn_gfx1031         0x037
 .#define bfd_mach_amdgcn_gfx1032         0x038
+.#define bfd_mach_amdgcn_gfx11_generic   0x054
 .#define bfd_mach_amdgcn_gfx1100         0x041
 .#define bfd_mach_amdgcn_gfx1101         0x046
 .#define bfd_mach_amdgcn_gfx1102         0x047
@@ -580,8 +585,10 @@  DESCRIPTION
 .#define bfd_mach_amdgcn_gfx1151         0x04a
 .#define bfd_mach_amdgcn_gfx1152         0x055
 .#define bfd_mach_amdgcn_gfx1153         0x058
+.#define bfd_mach_amdgcn_gfx12_generic   0x059
 .#define bfd_mach_amdgcn_gfx1200         0x048
 .#define bfd_mach_amdgcn_gfx1201         0x04e
+.#define bfd_mach_amdgcn_gfx12_5_generic 0x05b
 .#define bfd_mach_amdgcn_gfx1250         0x049
 .  bfd_arch_last
 .  };
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 066aea12bbf4..54d2e746a8ff 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1804,19 +1804,24 @@  enum bfd_architecture
 #define bfd_mach_loongarch64   2
   bfd_arch_amdgcn,     /* AMDGCN */
 #define bfd_mach_amdgcn_unknown         0x000
+#define bfd_mach_amdgcn_gfx9_generic    0x051
 #define bfd_mach_amdgcn_gfx900          0x02c
 #define bfd_mach_amdgcn_gfx904          0x02e
 #define bfd_mach_amdgcn_gfx906          0x02f
 #define bfd_mach_amdgcn_gfx908          0x030
 #define bfd_mach_amdgcn_gfx90a          0x03f
+#define bfd_mach_amdgcn_gfx9_4_generic  0x05f
 #define bfd_mach_amdgcn_gfx942          0x04c
 #define bfd_mach_amdgcn_gfx950          0x04f
+#define bfd_mach_amdgcn_gfx10_1_generic 0x052
 #define bfd_mach_amdgcn_gfx1010         0x033
 #define bfd_mach_amdgcn_gfx1011         0x034
 #define bfd_mach_amdgcn_gfx1012         0x035
+#define bfd_mach_amdgcn_gfx10_3_generic 0x053
 #define bfd_mach_amdgcn_gfx1030         0x036
 #define bfd_mach_amdgcn_gfx1031         0x037
 #define bfd_mach_amdgcn_gfx1032         0x038
+#define bfd_mach_amdgcn_gfx11_generic   0x054
 #define bfd_mach_amdgcn_gfx1100         0x041
 #define bfd_mach_amdgcn_gfx1101         0x046
 #define bfd_mach_amdgcn_gfx1102         0x047
@@ -1824,8 +1829,10 @@  enum bfd_architecture
 #define bfd_mach_amdgcn_gfx1151         0x04a
 #define bfd_mach_amdgcn_gfx1152         0x055
 #define bfd_mach_amdgcn_gfx1153         0x058
+#define bfd_mach_amdgcn_gfx12_generic   0x059
 #define bfd_mach_amdgcn_gfx1200         0x048
 #define bfd_mach_amdgcn_gfx1201         0x04e
+#define bfd_mach_amdgcn_gfx12_5_generic 0x05b
 #define bfd_mach_amdgcn_gfx1250         0x049
   bfd_arch_last
   };
diff --git a/bfd/cpu-amdgcn.c b/bfd/cpu-amdgcn.c
index 527a3b9c6d14..a1c691a51b1a 100644
--- a/bfd/cpu-amdgcn.c
+++ b/bfd/cpu-amdgcn.c
@@ -64,7 +64,14 @@  static const bfd_arch_info_type arch_info_struct[] =
   N (bfd_mach_amdgcn_gfx1153, "amdgcn:gfx1153", false, NN (19)),
   N (bfd_mach_amdgcn_gfx1200, "amdgcn:gfx1200", false, NN (20)),
   N (bfd_mach_amdgcn_gfx1201, "amdgcn:gfx1201", false, NN (21)),
-  N (bfd_mach_amdgcn_gfx1250, "amdgcn:gfx1250", false, NULL),
+  N (bfd_mach_amdgcn_gfx1250, "amdgcn:gfx1250", false, NN (22)),
+  N (bfd_mach_amdgcn_gfx9_generic, "amdgcn:gfx9-generic", false, NN (23)),
+  N (bfd_mach_amdgcn_gfx9_4_generic, "amdgcn:gfx9-4-generic", false, NN (24)),
+  N (bfd_mach_amdgcn_gfx10_1_generic, "amdgcn:gfx10-1-generic", false, NN (25)),
+  N (bfd_mach_amdgcn_gfx10_3_generic, "amdgcn:gfx10-3-generic", false, NN (26)),
+  N (bfd_mach_amdgcn_gfx11_generic, "amdgcn:gfx11-generic", false, NN (27)),
+  N (bfd_mach_amdgcn_gfx12_generic, "amdgcn:gfx12-generic", false, NN (28)),
+  N (bfd_mach_amdgcn_gfx12_5_generic, "amdgcn:gfx12-5-generic", false, NULL),
 };
 
 const bfd_arch_info_type bfd_amdgcn_arch =
diff --git a/binutils/readelf.c b/binutils/readelf.c
index b2084df5b818..8b565f085e5a 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -5319,6 +5319,13 @@  decode_AMDGPU_machine_flags (char *out, unsigned int e_flags, Filedata *filedata
     AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX950, "gfx950")
     AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX1013, "gfx1013")
     AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX1036, "gfx1036")
+    AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC, "gfx9-generic")
+    AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, "gfx10-1-generic")
+    AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC, "gfx10-3-generic")
+    AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC, "gfx11-generic")
+    AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, "gfx9-4-generic")
+    AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC, "gfx12-generic")
+    AMDGPU_CASE (EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC, "gfx12-5-generic")
     default:
       out += sprintf (out, _(", <unknown AMDGPU GPU type: %#x>"), mach);
       break;
diff --git a/include/elf/amdgpu.h b/include/elf/amdgpu.h
index 23ce145a1180..747a15c417d1 100644
--- a/include/elf/amdgpu.h
+++ b/include/elf/amdgpu.h
@@ -80,6 +80,13 @@ 
 #define EF_AMDGPU_MACH_AMDGCN_GFX942  0x04c
 #define EF_AMDGPU_MACH_AMDGCN_GFX1201 0x04e
 #define EF_AMDGPU_MACH_AMDGCN_GFX950  0x04f
+#define EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC 0x051
+#define EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC 0x052
+#define EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC 0x053
+#define EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC 0x054
+#define EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC 0x059
+#define EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC 0x05b
+#define EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC 0x05f
 
 /* Code object v3 machine flags.  */