[committed] amdgcn: deprecate Fiji device and multilib
Checks
Commit Message
The build has been failing for the last few days because LLVM removed
support for the HSACOv3 binary metadata format, which we were still
using for the Fiji multilib.
The LLVM commit has now been reverted (thank you Pierre van Houtryve),
but it's only a temporary repreive.
This patch removes Fiji from the default configuration, and updates the
documentation accordingly, but no more. Those that still use Fiji
devices can re-enable it by configuring using --with-arch=fiji.
Why not remove Fiji support entirely? This is simply because about one
third of our test farm conists of Fiji devices and we can't replace them
quickly.
Andrew
amdgcn: deprecate Fiji device and multilib
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.
@@ -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*-*-*)
@@ -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) $<
@@ -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
@@ -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).