https://gcc.gnu.org/g:b5a29a93ee29a882c9ed28cb0e6835f97d6f8182

commit r15-7406-gb5a29a93ee29a882c9ed28cb0e6835f97d6f8182
Author: Tobias Burnus <tbur...@baylibre.com>
Date:   Fri Feb 7 11:55:08 2025 +0100

    [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
            * doc/invoke.texi (AMD GCN): Add the the new gfc... and the older
            gfx{10-3,11}-generic to -march= as 'experimental'.

Diff:
---
 gcc/config/gcn/gcn-devices.def | 202 ++++++++++++++++++++++++++++++++++++++---
 gcc/config/gcn/gcn-tables.opt  |  45 +++++++++
 gcc/doc/invoke.texi            |  53 +++++++++++
 3 files changed, 289 insertions(+), 11 deletions(-)

diff --git a/gcc/config/gcn/gcn-devices.def b/gcc/config/gcn/gcn-devices.def
index a8b21a358b48..af1420382e2f 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 be21af425e73..96ce9bd2df33 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)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 6e2106d6ee42..c33eb4425de5 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -22289,30 +22289,83 @@ are
 @item gfx900
 Compile for GCN5 Vega 10 devices (gfx900).
 
+@item gfx902
+Compile for GCN5 Vega gfx902 devices. (Experimental)
+
+@item gfx904
+Compile for GCN5 Vega gfx904 devices. (Experimental)
+
 @item gfx906
 Compile for GCN5 Vega 20 devices (gfx906).
 
 @item gfx908
 Compile for CDNA1 Instinct MI100 series devices (gfx908).
 
+@item gfx909
+Compile for GCN5 Vega gfx909 devices. (Experimental)
+
 @item gfx90a
 Compile for CDNA2 Instinct MI200 series devices (gfx90a).
 
 @item gfx90c
 Compile for GCN5 Vega 7 devices (gfx90c).
 
+@item gfx9-generic
+Compile generic code for Vega devices, executable on the following subset of
+GFX9 devices: gfx900, gfx902, gfx904, gfx906, gfx909 and gfx90c. (Experimental)
+
 @item gfx1030
 Compile for RDNA2 gfx1030 devices (GFX10 series).
 
+@item gfx1031
+Compile for RDNA2 gfx1031 devices (GFX10 series). (Experimental)
+
+@item gfx1032
+Compile for RDNA2 gfx1032 devices (GFX10 series). (Experimental)
+
+@item gfx1033
+Compile for RDNA2 gfx1033 devices (GFX10 series). (Experimental)
+
+@item gfx1034
+Compile for RDNA2 gfx1034 devices (GFX10 series). (Experimental)
+
+@item gfx1035
+Compile for RDNA2 gfx1035 devices (GFX10 series). (Experimental)
+
 @item gfx1036
 Compile for RDNA2 gfx1036 devices (GFX10 series).
 
+@item gfx10-3-generic
+Compile generic code for GFX10-3 devices, executable on gfx1030,
+gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and gfx1036. (Experimental)
+
 @item gfx1100
 Compile for RDNA3 gfx1100 devices (GFX11 series).
 
+@item gfx1101
+Compile for RDNA3 gfx1101 devices (GFX11 series). (Experimental)
+
+@item gfx1102
+Compile for RDNA3 gfx1102 devices (GFX11 series). (Experimental)
+
 @item gfx1103
 Compile for RDNA3 gfx1103 devices (GFX11 series).
 
+@item gfx1150
+Compile for RDNA3 gfx1150 devices (GFX11 series). (Experimental)
+
+@item gfx1151
+Compile for RDNA3 gfx1151 devices (GFX11 series). (Experimental)
+
+@item gfx1152
+Compile for RDNA3 gfx1152 devices (GFX11 series). (Experimental)
+
+@item gfx1153
+Compile for RDNA3 gfx1153 devices (GFX11 series). (Experimental)
+
+@item gfx11-generic
+Compile generic code for GFX11 devices, executable on gfx1100, gfx1101,
+gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and gfx1153. (Experimental)
 @end table
 
 @opindex msram-ecc

Reply via email to