]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
amdgcn: Add gfx908 support
authorAndrew Stubbs <ams@codesourcery.com>
Thu, 22 Oct 2020 20:23:48 +0000 (21:23 +0100)
committerKwok Cheung Yeung <kcy@codesourcery.com>
Thu, 25 Mar 2021 19:30:43 +0000 (12:30 -0700)
gcc/

* config/gcn/gcn-opts.h (enum processor_type): Add PROCESSOR_GFX908.
* config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): Add gfx908.
(output_file_start): Add gfx908.
* config/gcn/gcn.opt (gpu_type): Add gfx908.
* config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Add march=gfx908.
(MULTILIB_DIRNAMES): Add gfx908.
* config/gcn/mkoffload.c (EF_AMDGPU_MACH_AMDGCN_GFX908): New define.
(main): Recognize gfx908.
* config/gcn/t-omp-device: Add gfx908.

libgomp/

* plugin/plugin-gcn.c (EF_AMDGPU_MACH): Add
EF_AMDGPU_MACH_AMDGCN_GFX908.
(gcn_gfx908_s): New constant string.
(isa_hsa_name): Add gfx908.
(isa_code): Add gfx908.

(cherry picked from commit 3535402e20118655b2ad4085a6e1d4f1b9c46e92)

gcc/ChangeLog.omp
gcc/config/gcn/gcn-opts.h
gcc/config/gcn/gcn.c
gcc/config/gcn/gcn.opt
gcc/config/gcn/mkoffload.c
gcc/config/gcn/t-gcn-hsa
gcc/config/gcn/t-omp-device
libgomp/ChangeLog.omp
libgomp/plugin/plugin-gcn.c

index 374665d3fabbedec0c3f2f1ac8f7994115a797cb..d6566ce97a030436b8fa5983019a9b5ca3b8b72f 100644 (file)
@@ -1,3 +1,18 @@
+2021-03-25  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+       Backport from mainline
+       2020-10-22  Andrew Stubbs  <ams@codesourcery.com>
+
+       * config/gcn/gcn-opts.h (enum processor_type): Add PROCESSOR_GFX908.
+       * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): Add gfx908.
+       (output_file_start): Add gfx908.
+       * config/gcn/gcn.opt (gpu_type): Add gfx908.
+       * config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Add march=gfx908.
+       (MULTILIB_DIRNAMES): Add gfx908.
+       * config/gcn/mkoffload.c (EF_AMDGPU_MACH_AMDGCN_GFX908): New define.
+       (main): Recognize gfx908.
+       * config/gcn/t-omp-device: Add gfx908.
+
 2021-03-01  Kwok Cheung Yeung  <kcy@codesourcery.com>
 
        * omp-expand.c (expand_oacc_for): Convert .tile variable to
index 8eefb7a348a16a6acb19f7519ef1b813cff9c973..b4bd76e6fb080f8601892d8423e9bf2f87ff72cc 100644 (file)
@@ -22,7 +22,8 @@ enum processor_type
 {
   PROCESSOR_FIJI,    // gfx803
   PROCESSOR_VEGA10,  // gfx900
-  PROCESSOR_VEGA20   // gfx906
+  PROCESSOR_VEGA20,  // gfx906
+  PROCESSOR_GFX908   // as yet unnamed
 };
 
 /* Set in gcn_option_override.  */
index 095de6a2f7ec7d750b6ccd5e10168932db01e8db..225efc3f088db1a985743e868706e8c3840db537 100644 (file)
@@ -2613,6 +2613,8 @@ gcn_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait,
        return gcn_arch == PROCESSOR_VEGA10;
       if (strcmp (name, "gfx906") == 0)
        return gcn_arch == PROCESSOR_VEGA20;
+      if (strcmp (name, "gfx908") == 0)
+       return gcn_arch == PROCESSOR_GFX908;
       return 0;
     default:
       gcc_unreachable ();
@@ -5164,6 +5166,7 @@ output_file_start (void)
     case PROCESSOR_FIJI: cpu = "gfx803"; break;
     case PROCESSOR_VEGA10: cpu = "gfx900"; break;
     case PROCESSOR_VEGA20: cpu = "gfx906"; break;
+    case PROCESSOR_GFX908: cpu = "gfx908+sram-ecc"; break;
     default: gcc_unreachable ();
     }
 
index 57216983e4be94675f2885940e6377ff9064fcca..ee8fb4614e870c64db19729b9bb004b78ea8d5c7 100644 (file)
@@ -34,6 +34,9 @@ Enum(gpu_type) String(gfx900) Value(PROCESSOR_VEGA10)
 EnumValue
 Enum(gpu_type) String(gfx906) Value(PROCESSOR_VEGA20)
 
+EnumValue
+Enum(gpu_type) String(gfx908) Value(PROCESSOR_GFX908)
+
 march=
 Target RejectNegative Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI)
 Specify the name of the target GPU.
index 60794c1043468176a2641136f04f3022c030f9e9..d114287e353a104f84912ef61b0817cc78adc1da 100644 (file)
@@ -51,6 +51,8 @@
 #define EF_AMDGPU_MACH_AMDGCN_GFX900 0x2c
 #undef  EF_AMDGPU_MACH_AMDGCN_GFX906
 #define EF_AMDGPU_MACH_AMDGCN_GFX906 0x2f
+#undef  EF_AMDGPU_MACH_AMDGCN_GFX908
+#define EF_AMDGPU_MACH_AMDGCN_GFX908 0x230  // Assume SRAM-ECC enabled.
 
 #ifndef R_AMDGPU_NONE
 #define R_AMDGPU_NONE          0
@@ -850,6 +852,8 @@ main (int argc, char **argv)
        elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX900;
       else if (strcmp (argv[i], "-march=gfx906") == 0)
        elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX906;
+      else if (strcmp (argv[i], "-march=gfx908") == 0)
+       elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX908;
     }
 
   if (!(fopenacc ^ fopenmp))
index 16d243c3f2ba8b6083a039aa376e842cf8b48721..b39e9541f08a6c7bac52614dbefdc82647f9e689 100644 (file)
@@ -42,8 +42,8 @@ ALL_HOST_OBJS += gcn-run.o
 gcn-run$(exeext): gcn-run.o
        +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $< -ldl
 
-MULTILIB_OPTIONS = march=gfx900/march=gfx906
-MULTILIB_DIRNAMES = gfx900 gfx906
+MULTILIB_OPTIONS = march=gfx900/march=gfx906/march=gfx908
+MULTILIB_DIRNAMES = gfx900 gfx906 gfx908
 
 gcn-tree.o: $(srcdir)/config/gcn/gcn-tree.c
        $(COMPILE) $<
index d9809d5f4552bc49c01899c5bf39792150154f8b..8461c432ca9eb5946830eeb8ee691729950bda95 100644 (file)
@@ -1,4 +1,4 @@
 omp-device-properties-gcn: $(srcdir)/config/gcn/gcn.c
        echo kind: gpu > $@
        echo arch: gcn >> $@
-       echo isa: fiji gfx900 gfx906 >> $@
+       echo isa: fiji gfx900 gfx906 gfx908 >> $@
index e8e1ce96fc3bb4bf00aa08011571dab5f9c39551..b0af9c205a380b2f462f89cec81fcac4f5d25de1 100644 (file)
@@ -1,3 +1,14 @@
+2021-03-25  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+       Backport from mainline
+       2020-10-22  Andrew Stubbs  <ams@codesourcery.com>
+
+       * plugin/plugin-gcn.c (EF_AMDGPU_MACH): Add
+       EF_AMDGPU_MACH_AMDGCN_GFX908.
+       (gcn_gfx908_s): New constant string.
+       (isa_hsa_name): Add gfx908.
+       (isa_code): Add gfx908.
+
 2021-03-25  Thomas Schwinge  <thomas@codesourcery.com>
 
        * plugin/plugin-hsa.c (init_enviroment_variables): Don't prepend
index 5d96b33351b8335719697ff9f3c6a0d774e0d56b..cef616f4f5f8b49bd96f810dd7b10637fb2998c3 100644 (file)
@@ -406,6 +406,7 @@ typedef enum {
   EF_AMDGPU_MACH_AMDGCN_GFX803 = 0x02a,
   EF_AMDGPU_MACH_AMDGCN_GFX900 = 0x02c,
   EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f,
+  EF_AMDGPU_MACH_AMDGCN_GFX908 = 0x030
 } EF_AMDGPU_MACH;
 
 const static int EF_AMDGPU_MACH_MASK = 0x000000ff;
@@ -1630,6 +1631,7 @@ elf_gcn_isa_field (Elf64_Ehdr *image)
 const static char *gcn_gfx803_s = "gfx803";
 const static char *gcn_gfx900_s = "gfx900";
 const static char *gcn_gfx906_s = "gfx906";
+const static char *gcn_gfx908_s = "gfx908";
 const static int gcn_isa_name_len = 6;
 
 /* Returns the name that the HSA runtime uses for the ISA or NULL if we do not
@@ -1645,6 +1647,8 @@ isa_hsa_name (int isa) {
       return gcn_gfx900_s;
     case EF_AMDGPU_MACH_AMDGCN_GFX906:
       return gcn_gfx906_s;
+    case EF_AMDGPU_MACH_AMDGCN_GFX908:
+      return gcn_gfx908_s;
     }
   return NULL;
 }
@@ -1678,6 +1682,9 @@ isa_code(const char *isa) {
   if (!strncmp (isa, gcn_gfx906_s, gcn_isa_name_len))
     return EF_AMDGPU_MACH_AMDGCN_GFX906;
 
+  if (!strncmp (isa, gcn_gfx908_s, gcn_isa_name_len))
+    return EF_AMDGPU_MACH_AMDGCN_GFX908;
+
   return -1;
 }