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