[committed,amdgcn] Add -march=gfx906 for Vega20

Message ID 158ce436-124a-f4a6-d46a-b44e09eef400@codesourcery.com
State New
Headers show
Series
  • [committed,amdgcn] Add -march=gfx906 for Vega20
Related show

Commit Message

Andrew Stubbs June 6, 2019, 3:15 p.m.
This patch adds a new -march=gfx906 option, and a new multilib to go 
with it.

gfx906 is ISA compatible with gfx900 (at least as far as the compiler 
support goes), but unfortunately the metadata in the object files is not 
compatible, so we need a whole extra multilib (booo!). Or, at least 
that's the easiest solution to use for now.

Andrew

Comments

Joseph Myers June 6, 2019, 11:44 p.m. | #1
On Thu, 6 Jun 2019, Andrew Stubbs wrote:

> This patch adds a new -march=gfx906 option, and a new multilib to go with it.


This is missing an invoke.texi update.

-- 
Joseph S. Myers
joseph@codesourcery.com
Andrew Stubbs June 7, 2019, 2:03 p.m. | #2
On 07/06/2019 00:44, Joseph Myers wrote:
> On Thu, 6 Jun 2019, Andrew Stubbs wrote:

>> This patch adds a new -march=gfx906 option, and a new multilib to go with it.

> 

> This is missing an invoke.texi update.


Thanks for spotting that Joseph.

I've committed the attached, as obvious.

Andrew
Document -march=gfx906 option.

2019-06-07  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* doc/invoke.texi (AMD GCN Options): Add gfx906.

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 3103f86ce98..fa7d9ea8100 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -16211,6 +16211,9 @@ Compile for GCN3 Fiji devices (gfx803).
 @item gfx900
 Compile for GCN5 Vega 10 devices (gfx900).
 
+@item gfx906
+Compile for GCN5 Vega 20 devices (gfx906).
+
 @end table
 
 @item -mstack-size=@var{bytes}

Patch

Add -march=gfx906 for AMD GCN.

2019-06-06  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config.gcc (amdgcn-*-*): Allow --with-arch=gfx906.
	* config/gcn/gcn.opt (gpu_type): Add gfx906.
	* config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Add gfx906 multilib.
	(MULTILIB_DIRNAMES): Rename gcn5 to gfx900.
	Add gfx906.

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 67c3c2c7a42..6b00c387247 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -4127,7 +4127,7 @@  case "${target}" in
 		for which in arch tune; do
 			eval "val=\$with_$which"
 			case ${val} in
-			"" | carrizo | fiji | gfx900 )
+			"" | carrizo | fiji | gfx900 | gfx906 )
 				# OK
 				;;
 			*)
diff --git a/gcc/config/gcn/gcn.opt b/gcc/config/gcn/gcn.opt
index 2fd3996edba..bdc878f35ad 100644
--- a/gcc/config/gcn/gcn.opt
+++ b/gcc/config/gcn/gcn.opt
@@ -34,6 +34,9 @@  Enum(gpu_type) String(fiji) Value(PROCESSOR_FIJI)
 EnumValue
 Enum(gpu_type) String(gfx900) Value(PROCESSOR_VEGA)
 
+EnumValue
+Enum(gpu_type) String(gfx906) Value(PROCESSOR_VEGA)
+
 march=
 Target RejectNegative Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_CARRIZO)
 Specify the name of the target GPU.
diff --git a/gcc/config/gcn/t-gcn-hsa b/gcc/config/gcn/t-gcn-hsa
index 085ba429c9d..1600a586ac4 100644
--- a/gcc/config/gcn/t-gcn-hsa
+++ b/gcc/config/gcn/t-gcn-hsa
@@ -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
-MULTILIB_DIRNAMES = gcn5
+MULTILIB_OPTIONS = march=gfx900 march=gfx906
+MULTILIB_DIRNAMES = gfx900 gfx906
 
 PASSES_EXTRA += $(srcdir)/config/gcn/gcn-passes.def
 gcn-tree.o: $(srcdir)/config/gcn/gcn-tree.c