]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
amdgcn: deprecate Fiji device and multilib
authorAndrew Stubbs <ams@codesourcery.com>
Wed, 18 Oct 2023 15:59:42 +0000 (16:59 +0100)
committerAndrew Stubbs <ams@codesourcery.com>
Thu, 19 Oct 2023 08:46:57 +0000 (09:46 +0100)
LLVM wants to remove it, which breaks our build.  This patch means that
most users won't notice that change, when it comes, and those that do will
have chosen to enable Fiji explicitly.

I'm selecting gfx900 as the new default as that's the least likely for users
to want, which means most users will specify -march explicitly, which means
we'll be free to change the default again, when we need to, without breaking
anybody's makefiles.

gcc/ChangeLog:

* config.gcc (amdgcn): Switch default to --with-arch=gfx900.
Implement support for --with-multilib-list.
* config/gcn/t-gcn-hsa: Likewise.
* doc/install.texi: Likewise.
* doc/invoke.texi: Mark Fiji deprecated.

gcc/config.gcc
gcc/config/gcn/t-gcn-hsa
gcc/doc/install.texi
gcc/doc/invoke.texi

index 37311fcd0750c39cbf56c6e0111a9e8c006e0e62..9c397156868ae686e91be611f6a2c29b6667244c 100644 (file)
@@ -4538,7 +4538,19 @@ case "${target}" in
                                ;;
                        esac
                done
-               [ "x$with_arch" = x ] && with_arch=fiji
+               [ "x$with_arch" = x ] && with_arch=gfx900
+
+               case "x${with_multilib_list}" in
+               x | xno)
+                       TM_MULTILIB_CONFIG=
+                       ;;
+               xdefault | xyes)
+                       TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a" | sed "s/${with_arch},\?//;s/,$//"`
+                       ;;
+               *)
+                       TM_MULTILIB_CONFIG="${with_multilib_list}"
+                       ;;
+               esac
                ;;
 
        hppa*-*-*)
index ea27122e4846625a391f9a285f1068d809288514..18db70753568dd8f344ee8c8c642da2c8a24f0fe 100644 (file)
@@ -42,8 +42,12 @@ ALL_HOST_OBJS += gcn-run.o
 gcn-run$(exeext): gcn-run.o
        +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $< -ldl
 
-MULTILIB_OPTIONS = march=gfx900/march=gfx906/march=gfx908/march=gfx90a
-MULTILIB_DIRNAMES = gfx900 gfx906 gfx908 gfx90a
+empty :=
+space := $(empty) $(empty)
+comma := ,
+multilib_list := $(subst $(comma),$(space),$(TM_MULTILIB_CONFIG)) 
+MULTILIB_OPTIONS = $(subst $(space),/,$(addprefix march=,$(multilib_list)))
+MULTILIB_DIRNAMES = $(multilib_list)
 
 gcn-tree.o: $(srcdir)/config/gcn/gcn-tree.cc
        $(COMPILE) $<
index 31f2234640f8782adc49dca93260b0836ef03f03..4035e8020b2eb11bf8b8458526bdeafc68b8881c 100644 (file)
@@ -1236,8 +1236,8 @@ sysv, aix.
 @itemx --without-multilib-list
 Specify what multilibs to build.  @var{list} is a comma separated list of
 values, possibly consisting of a single value.  Currently only implemented
-for aarch64*-*-*, arm*-*-*, loongarch*-*-*, riscv*-*-*, sh*-*-* and
-x86-64-*-linux*.  The accepted values and meaning for each target is given
+for aarch64*-*-*, amdgcn*-*-*, arm*-*-*, loongarch*-*-*, riscv*-*-*, sh*-*-*
+and x86-64-*-linux*.  The accepted values and meaning for each target is given
 below.
 
 @table @code
@@ -1250,6 +1250,15 @@ default run-time library will be built.  If @var{list} is
 default set of libraries is selected based on the value of
 @option{--target}.
 
+@item amdgcn*-*-*
+@var{list} is a comma separated list of ISA names (allowed values: @code{fiji},
+@code{gfx900}, @code{gfx906}, @code{gfx908}, @code{gfx90a}). It ought not
+include the name of the default ISA, specified via @option{--with-arch}.  If
+@var{list} is empty, then there will be no multilibs and only the default
+run-time library will be built.  If @var{list} is @code{default} or
+@option{--with-multilib-list=} is not specified, then the default set of
+libraries is selected.
+
 @item arm*-*-*
 @var{list} is a comma separated list of @code{aprofile} and
 @code{rmprofile} to build multilibs for A or R and M architecture
@@ -3922,6 +3931,12 @@ To run the binaries, install the HSA Runtime from the
 @file{libexec/gcc/amdhsa-amdhsa/@var{version}/gcn-run} to launch them
 on the GPU.
 
+To enable support for GCN3 Fiji devices (gfx803), GCC has to be configured with
+@option{--with-arch=@code{fiji}} or
+@option{--with-multilib-list=@code{fiji},...}.  Note that support for Fiji
+devices has been removed in ROCm 4.0 and support in LLVM is deprecated and will
+be removed in the future.
+
 @html
 <hr />
 @end html
index 9b5ff4570277e3040ee3b436320563bd56cf1165..8bbe1139c9478783561fb101faf513fe1c8a9180 100644 (file)
@@ -21097,7 +21097,9 @@ are
 
 @table @samp
 @item fiji
-Compile for GCN3 Fiji devices (gfx803).
+Compile for GCN3 Fiji devices (gfx803).  Support deprecated; availablility
+depends on how GCC has been configured, see @option{--with-arch} and
+@option{--with-multilib-list}.
 
 @item gfx900
 Compile for GCN5 Vega 10 devices (gfx900).