diff options
author | Andrew Stubbs <ams@codesourcery.com> | 2022-02-24 17:16:13 +0000 |
---|---|---|
committer | Andrew Stubbs <ams@codesourcery.com> | 2022-05-24 16:18:14 +0100 |
commit | cde52d3a2d02d037da53e6974d5e39021030b346 (patch) | |
tree | 9b8c9566629ee5915934617814b4ec080f7632ce /libgomp/plugin | |
parent | 8086230e7ac619c0b0eeb6e15df7975ac214725f (diff) | |
download | gcc-cde52d3a2d02d037da53e6974d5e39021030b346.zip gcc-cde52d3a2d02d037da53e6974d5e39021030b346.tar.gz gcc-cde52d3a2d02d037da53e6974d5e39021030b346.tar.bz2 |
amdgcn: Add gfx90a support
This adds architecture options and multilibs for the AMD GFX90a GPUs.
It also tidies up some of the ISA selection code, and corrects a few small
mistake in the gfx908 naming.
gcc/ChangeLog:
* config.gcc (amdgcn): Accept --with-arch=gfx908 and gfx90a.
* config/gcn/gcn-opts.h (enum gcn_isa): New.
(TARGET_GCN3): Use enum gcn_isa.
(TARGET_GCN3_PLUS): Likewise.
(TARGET_GCN5): Likewise.
(TARGET_GCN5_PLUS): Likewise.
(TARGET_CDNA1): New.
(TARGET_CDNA1_PLUS): New.
(TARGET_CDNA2): New.
(TARGET_CDNA2_PLUS): New.
(TARGET_M0_LDS_LIMIT): New.
(TARGET_PACKED_WORK_ITEMS): New.
* config/gcn/gcn.cc (gcn_isa): Change to enum gcn_isa.
(gcn_option_override): Recognise CDNA ISA variants.
(gcn_omp_device_kind_arch_isa): Support gfx90a.
(gcn_expand_prologue): Make m0 init optional.
Add support for packed work items.
(output_file_start): Support gfx90a.
(gcn_hsa_declare_function_name): Support gfx90a metadata.
* config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS):Add __CDNA1__ and
__CDNA2__.
* config/gcn/gcn.md (<su>mulsi3_highpart): Use TARGET_GCN5_PLUS.
(<su>mulsi3_highpart_imm): Likewise.
(<su>mulsidi3): Likewise.
(<su>mulsidi3_imm): Likewise.
* config/gcn/gcn.opt (gpu_type): Add gfx90a.
* config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX90a): New.
(main): Support gfx90a.
* config/gcn/t-gcn-hsa: Add gfx90a multilib.
* config/gcn/t-omp-device: Add gfx90a isa.
libgomp/ChangeLog:
* plugin/plugin-gcn.c (EF_AMDGPU_MACH): Add
EF_AMDGPU_MACH_AMDGCN_GFX90a.
(gcn_gfx90a_s): New.
(isa_hsa_name): Support gfx90a.
(isa_code): Likewise.
Diffstat (limited to 'libgomp/plugin')
-rw-r--r-- | libgomp/plugin/plugin-gcn.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c index 2b32f53..1c04368 100644 --- a/libgomp/plugin/plugin-gcn.c +++ b/libgomp/plugin/plugin-gcn.c @@ -402,7 +402,8 @@ 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_AMDGCN_GFX908 = 0x030, + EF_AMDGPU_MACH_AMDGCN_GFX90a = 0x03f } EF_AMDGPU_MACH; const static int EF_AMDGPU_MACH_MASK = 0x000000ff; @@ -1628,6 +1629,7 @@ 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 char *gcn_gfx90a_s = "gfx90a"; 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_gfx906_s; case EF_AMDGPU_MACH_AMDGCN_GFX908: return gcn_gfx908_s; + case EF_AMDGPU_MACH_AMDGCN_GFX90a: + return gcn_gfx90a_s; } return NULL; } @@ -1681,6 +1685,9 @@ isa_code(const char *isa) { if (!strncmp (isa, gcn_gfx908_s, gcn_isa_name_len)) return EF_AMDGPU_MACH_AMDGCN_GFX908; + if (!strncmp (isa, gcn_gfx90a_s, gcn_isa_name_len)) + return EF_AMDGPU_MACH_AMDGCN_GFX90a; + return -1; } |