After spending some time with the debugger, I am now convinced that
ROCm 6.3.2 does not yet support generic. The amd-staging branch at
https://github.com/ROCm/ROCR-Runtime/ support does, albeit only after
the tag rocm-6.3.2. However, the released ROCm 6.3.2 does not match
that tagged commit as it seems to contain at least the much newer
commit eec21304 (but not the generic support that appeared in an
in-between commit.) [AOMP is also different; it seems as if 20.0-1
does not support it, but 20.0-2 might; AOMP does not seem to have
commit eec21304 to confuse things.]

* * *

The attached patch now adds gfx9-generic - alongside the existing
gfx{10-3,1}-generic and all gfx* that are enabled by those.

See previous thread for the related discussions.

OK for mainline?

(This patch depends on the just submitted patch:
"[Patch] [gcn] Fix gfx906's sramecc setting",
https://gcc.gnu.org/pipermail/gcc-patches/2025-February/675251.html )

* * *

RFC:
The patch currently does not document any gfx*-generic nor the
gfx902 etc. I wonder whether a follow-up patch should just add
the non-generic ones with "(Experimental)" to invoke.texi?

Or any better ideas regarding what to make available now
and what only later, once a generic-supporting ROCm is available?

In other words: What bits of:
https://gcc.gnu.org/pipermail/gcc-patches/2025-February/675200.html ?

Tobias
[gcn] Add gfx9-generic and generic-associated gfx*

This patch adds gfx9-generic, completing the gfx*-generic support.
It also adds all gfx* devices that are part of any of the gfx*-generic,
i.e. gfx902, gfx904, gfx909, gfx1031, gfx1032, gfx1033, gfx1034,
gfx1035, gfx1101, gfx1102, gfx1150, gfx1151, gfx1152, and gfx1153.

gcc/ChangeLog:

	* config/gcn/gcn-devices.def (GCN_DEVICE): Add gfx9-generic,
	gfx902, gfx904, gfx909, gfx1031, gfx1032, gfx1033, gfx1034,
	gfx1035, gfx1101, gfx1102, gfx1150, gfx1151, gfx1152, and gfx1153.
	Add a currently unused column linking, a specific ISA to a generic
	one (if it exists).
	* config/gcn/gcn-tables.opt: Regenerate

 gcc/config/gcn/gcn-devices.def | 202 ++++++++++++++++++++++++++++++++++++++---
 gcc/config/gcn/gcn-tables.opt  |  45 +++++++++
 2 files changed, 236 insertions(+), 11 deletions(-)

diff --git a/gcc/config/gcn/gcn-devices.def b/gcc/config/gcn/gcn-devices.def
index a8b21a358b4..af1420382e2 100644
--- a/gcc/config/gcn/gcn-devices.def
+++ b/gcc/config/gcn/gcn-devices.def
@@ -71,6 +71,10 @@
 	generated by the used llvm-mc assembler.
       10 "Architecture Family Name"  (string, external)
 	Used to #define '__GFX<...>__'.
+      11 "GENERIC NAME" (text, external)
+	The name of the generic ISA this device is compatible with or "NONE",
+	where the generic name is the NAME (field 2) of the associated
+	generic device.
 
     Fields marked "external", above, have values defined elsewhere (HSA, ROCM,
     LLVM, ELF, etc.) and must have matching definitions here.  Fields marked
@@ -86,7 +90,30 @@ GCN_DEVICE(gfx900, GFX900, 0x2c, ISA_GCN5,
 	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
 	   /* Max ISA VGPRs */ 256,
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX9
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ GFX9_GENERIC
+	   )
+
+GCN_DEVICE(gfx902, GFX902, 0x2d, ISA_GCN5,
+	   /* XNACK default */ HSACO_ATTR_OFF,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_UNSUPPORTED,
+	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
+	   /* Max ISA VGPRs */ 256,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ GFX9_GENERIC
+	   )
+
+GCN_DEVICE(gfx904, GFX904, 0x2e, ISA_GCN5,
+	   /* XNACK default */ HSACO_ATTR_OFF,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_UNSUPPORTED,
+	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
+	   /* Max ISA VGPRs */ 256,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ GFX9_GENERIC
 	   )
 
 GCN_DEVICE(gfx906, GFX906, 0x2f, ISA_GCN5,
@@ -96,7 +123,8 @@ GCN_DEVICE(gfx906, GFX906, 0x2f, ISA_GCN5,
 	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
 	   /* Max ISA VGPRs */ 256,
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX9
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ GFX9_GENERIC
 	   )
 
 GCN_DEVICE(gfx908, GFX908, 0x30, ISA_CDNA1,
@@ -106,7 +134,19 @@ GCN_DEVICE(gfx908, GFX908, 0x30, ISA_CDNA1,
 	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
 	   /* Max ISA VGPRs */ 256,
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX9
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ NONE
+	   )
+
+GCN_DEVICE(gfx909, GFX909, 0x31, ISA_GCN5,
+	   /* XNACK default */ HSACO_ATTR_ANY,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_UNSUPPORTED,
+	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
+	   /* Max ISA VGPRs */ 256,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ GFX9_GENERIC
 	   )
 
 GCN_DEVICE(gfx90a, GFX90A, 0x3f, ISA_CDNA2,
@@ -116,7 +156,8 @@ GCN_DEVICE(gfx90a, GFX90A, 0x3f, ISA_CDNA2,
 	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
 	   /* Max ISA VGPRs */ 512,
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX9
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ NONE
 	   )
 
 GCN_DEVICE(gfx90c, GFX90C, 0x32, ISA_GCN5,
@@ -126,7 +167,19 @@ GCN_DEVICE(gfx90c, GFX90C, 0x32, ISA_GCN5,
 	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
 	   /* Max ISA VGPRs */ 256,
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX9
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ GFX9_GENERIC
+	   )
+
+GCN_DEVICE(gfx9-generic, GFX9_GENERIC, 0x051, ISA_GCN5,
+	   /* XNACK default */ HSACO_ATTR_ANY,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_UNSUPPORTED,
+	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
+	   /* Max ISA VGPRs */ 256,
+	   /* Generic code obj version */ 1,
+	   /* Architecture Family */ GFX9,
+	   /* Generic Name */ NONE
 	   )
 
 /* GCN GFX10.3 (RDNA 2) */
@@ -138,7 +191,63 @@ GCN_DEVICE(gfx1030, GFX1030, 0x36, ISA_RDNA2,
 	   /* CU mode */ HSACO_ATTR_ON,
 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX10
+	   /* Architecture Family */ GFX10,
+	   /* Generic Name */ GFX10_3_GENERIC
+	   )
+
+GCN_DEVICE(gfx1031, GFX1031, 0x37, ISA_RDNA2,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX10,
+	   /* Generic Name */ GFX10_3_GENERIC
+	   )
+
+GCN_DEVICE(gfx1032, GFX1032, 0x38, ISA_RDNA2,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX10,
+	   /* Generic Name */ GFX10_3_GENERIC
+	   )
+
+GCN_DEVICE(gfx1033, GFX1033, 0x39, ISA_RDNA2,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX10,
+	   /* Generic Name */ GFX10_3_GENERIC
+	   )
+
+GCN_DEVICE(gfx1034, GFX1034, 0x3e, ISA_RDNA2,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX10,
+	   /* Generic Name */ GFX10_3_GENERIC
+	   )
+
+GCN_DEVICE(gfx1035, GFX1035, 0x3d, ISA_RDNA2,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX10,
+	   /* Generic Name */ GFX10_3_GENERIC
 	   )
 
 GCN_DEVICE(gfx1036, GFX1036, 0x45, ISA_RDNA2,
@@ -148,7 +257,8 @@ GCN_DEVICE(gfx1036, GFX1036, 0x45, ISA_RDNA2,
 	   /* CU mode */ HSACO_ATTR_ON,
 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX10
+	   /* Architecture Family */ GFX10,
+	   /* Generic Name */ GFX10_3_GENERIC
 	   )
 
 GCN_DEVICE(gfx10-3-generic, GFX10_3_GENERIC, 0x053, ISA_RDNA2,
@@ -158,7 +268,8 @@ GCN_DEVICE(gfx10-3-generic, GFX10_3_GENERIC, 0x053, ISA_RDNA2,
 	   /* CU mode */ HSACO_ATTR_ON,
 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
 	   /* Generic code obj version */ 1,
-	   /* Architecture Family */ GFX10
+	   /* Architecture Family */ GFX10,
+	   /* Generic Name */ NONE
 	   )
 
 /* GCN GFX11 (RDNA 3)  */
@@ -170,7 +281,30 @@ GCN_DEVICE(gfx1100, GFX1100, 0x41, ISA_RDNA3,
 	   /* CU mode */ HSACO_ATTR_ON,
 	   /* Max ISA VGPRs */ 1536, /* 1536 SIMD32 = 768 wavefrontsize64.  */
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX11
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ GFX11_GENERIC
+	   )
+
+GCN_DEVICE(gfx1101, GFX1101, 0x46, ISA_RDNA3,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 1536,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ GFX11_GENERIC
+	   )
+
+GCN_DEVICE(gfx1102, GFX1102, 0x47, ISA_RDNA3,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 1536,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ GFX11_GENERIC
 	   )
 
 GCN_DEVICE(gfx1103, GFX1103, 0x44, ISA_RDNA3,
@@ -180,7 +314,52 @@ GCN_DEVICE(gfx1103, GFX1103, 0x44, ISA_RDNA3,
 	   /* CU mode */ HSACO_ATTR_ON,
 	   /* Max ISA VGPRs */ 1536,
 	   /* Generic code obj version */ 0,  /* non-generic */
-	   /* Architecture Family */ GFX11
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ GFX11_GENERIC
+	   )
+
+GCN_DEVICE(gfx1150, GFX1150, 0x43, ISA_RDNA3,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 1536,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ GFX11_GENERIC
+	   )
+
+GCN_DEVICE(gfx1151, GFX1151, 0x4a, ISA_RDNA3,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 1536,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ GFX11_GENERIC
+	   )
+
+GCN_DEVICE(gfx1152, GFX1152, 0x55, ISA_RDNA3,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 1536,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ GFX11_GENERIC
+	   )
+
+GCN_DEVICE(gfx1153, GFX1153, 0x58, ISA_RDNA3,
+	   /* XNACK default */ HSACO_ATTR_UNSUPPORTED,
+	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+	   /* WAVE64 mode */ HSACO_ATTR_ON,
+	   /* CU mode */ HSACO_ATTR_ON,
+	   /* Max ISA VGPRs */ 1536,
+	   /* Generic code obj version */ 0,  /* non-generic */
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ GFX11_GENERIC
 	   )
 
 GCN_DEVICE(gfx11-generic, GFX11_GENERIC, 0x054, ISA_RDNA3,
@@ -190,7 +369,8 @@ GCN_DEVICE(gfx11-generic, GFX11_GENERIC, 0x054, ISA_RDNA3,
 	   /* CU mode */ HSACO_ATTR_ON,
 	   /* Max ISA VGPRs */ 1536,
 	   /* Generic code obj version */ 1,
-	   /* Architecture Family */ GFX11
+	   /* Architecture Family */ GFX11,
+	   /* Generic Name */ NONE
 	   )
 
 #undef GCN_DEVICE
diff --git a/gcc/config/gcn/gcn-tables.opt b/gcc/config/gcn/gcn-tables.opt
index be21af425e7..96ce9bd2df3 100644
--- a/gcc/config/gcn/gcn-tables.opt
+++ b/gcc/config/gcn/gcn-tables.opt
@@ -27,21 +27,48 @@ GCN GPU type to use:
 EnumValue
 Enum(gpu_type) String(gfx900) Value(PROCESSOR_GFX900)
 
+EnumValue
+Enum(gpu_type) String(gfx902) Value(PROCESSOR_GFX902)
+
+EnumValue
+Enum(gpu_type) String(gfx904) Value(PROCESSOR_GFX904)
+
 EnumValue
 Enum(gpu_type) String(gfx906) Value(PROCESSOR_GFX906)
 
 EnumValue
 Enum(gpu_type) String(gfx908) Value(PROCESSOR_GFX908)
 
+EnumValue
+Enum(gpu_type) String(gfx909) Value(PROCESSOR_GFX909)
+
 EnumValue
 Enum(gpu_type) String(gfx90a) Value(PROCESSOR_GFX90A)
 
 EnumValue
 Enum(gpu_type) String(gfx90c) Value(PROCESSOR_GFX90C)
 
+EnumValue
+Enum(gpu_type) String(gfx9-generic) Value(PROCESSOR_GFX9_GENERIC)
+
 EnumValue
 Enum(gpu_type) String(gfx1030) Value(PROCESSOR_GFX1030)
 
+EnumValue
+Enum(gpu_type) String(gfx1031) Value(PROCESSOR_GFX1031)
+
+EnumValue
+Enum(gpu_type) String(gfx1032) Value(PROCESSOR_GFX1032)
+
+EnumValue
+Enum(gpu_type) String(gfx1033) Value(PROCESSOR_GFX1033)
+
+EnumValue
+Enum(gpu_type) String(gfx1034) Value(PROCESSOR_GFX1034)
+
+EnumValue
+Enum(gpu_type) String(gfx1035) Value(PROCESSOR_GFX1035)
+
 EnumValue
 Enum(gpu_type) String(gfx1036) Value(PROCESSOR_GFX1036)
 
@@ -51,8 +78,26 @@ Enum(gpu_type) String(gfx10-3-generic) Value(PROCESSOR_GFX10_3_GENERIC)
 EnumValue
 Enum(gpu_type) String(gfx1100) Value(PROCESSOR_GFX1100)
 
+EnumValue
+Enum(gpu_type) String(gfx1101) Value(PROCESSOR_GFX1101)
+
+EnumValue
+Enum(gpu_type) String(gfx1102) Value(PROCESSOR_GFX1102)
+
 EnumValue
 Enum(gpu_type) String(gfx1103) Value(PROCESSOR_GFX1103)
 
+EnumValue
+Enum(gpu_type) String(gfx1150) Value(PROCESSOR_GFX1150)
+
+EnumValue
+Enum(gpu_type) String(gfx1151) Value(PROCESSOR_GFX1151)
+
+EnumValue
+Enum(gpu_type) String(gfx1152) Value(PROCESSOR_GFX1152)
+
+EnumValue
+Enum(gpu_type) String(gfx1153) Value(PROCESSOR_GFX1153)
+
 EnumValue
 Enum(gpu_type) String(gfx11-generic) Value(PROCESSOR_GFX11_GENERIC)

Reply via email to