GCN back-end config
authorAndrew Stubbs <ams@codesourcery.com>
Thu, 17 Jan 2019 12:34:28 +0000 (12:34 +0000)
committerAndrew Stubbs <ams@gcc.gnu.org>
Thu, 17 Jan 2019 12:34:28 +0000 (12:34 +0000)
This patch contains the configuration adjustments needed to enable the GCN
back-end.

The new configure check for dlopen is required to allow building the new
gcn-run tool.  This tool uses libdl to load the HSA runtime libraries, which
are required to run programs on the GPU.  The tool is disabled if libdl is not
available.

2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
    Kwok Cheung Yeung  <kcy@codesourcery.com>
    Julian Brown  <julian@codesourcery.com>
    Tom de Vries  <tom@codesourcery.com>
    Jan Hubicka  <hubicka@ucw.cz>
    Martin Jambor  <mjambor@suse.cz>

* configure.ac: Likewise.
* configure: Regenerate.
* contrib/config-list.mk: Add amdgcn-amdhsa.

gcc/
* config.gcc: Add amdgcn*-*-amdhsa configuration.
* configure.ac: Check for dlopen.
* configure: Regenerate.

Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
Co-Authored-By: Julian Brown <julian@codesourcery.com>
Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
Co-Authored-By: Martin Jambor <mjambor@suse.cz>
Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r268024

ChangeLog
configure
configure.ac
contrib/config-list.mk
gcc/ChangeLog
gcc/config.gcc
gcc/configure
gcc/configure.ac

index 5ec57e17a1e4b1e24f94b5caad30c106668b958d..2cd14ad3921f33750dbdda3ff26b847dc0eaeb7f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
+           Kwok Cheung Yeung  <kcy@codesourcery.com>
+           Julian Brown  <julian@codesourcery.com>
+           Tom de Vries  <tom@codesourcery.com>
+           Jan Hubicka  <hubicka@ucw.cz>
+           Martin Jambor  <mjambor@suse.cz>
+
+       * configure.ac: Likewise.
+       * configure: Regenerate.
+       * contrib/config-list.mk: Add amdgcn-amdhsa.
+
 2019-01-16  Kewen Lin  <linkw@gcc.gnu.org>
 
        * MAINTAINERS (Write After Approval): Add myself.
index 4b095de5b0ae9a0fc05d0bb05b7022d4ea50a3e4..adf4fda0f69326a05ae97878d73d2a677d663e04 100755 (executable)
--- a/configure
+++ b/configure
@@ -3652,6 +3652,8 @@ case "${target}" in
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
     noconfigdirs="$noconfigdirs sim target-rda"
     ;;
+  amdgcn*-*-*)
+    ;;
   arm-*-darwin*)
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
     noconfigdirs="$noconfigdirs sim target-rda"
index 05475105ffc08cea53ade2a45ee6c605faae3a79..87f2aee050089231bad3e73c5a417d60c4da229c 100644 (file)
@@ -934,6 +934,8 @@ case "${target}" in
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
     noconfigdirs="$noconfigdirs sim target-rda"
     ;;
+  amdgcn*-*-*)
+    ;;
   arm-*-darwin*)
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
     noconfigdirs="$noconfigdirs sim target-rda"
index 5acd766d9273301e3650f75642078be9cc5dbb13..69c826e649abfcd89e523d4daaa0e7be9b68ed56 100644 (file)
@@ -33,6 +33,7 @@ GCC_SRC_DIR=../../gcc
 LIST = aarch64-elf aarch64-linux-gnu aarch64-rtems \
   alpha-linux-gnu alpha-netbsd alpha-openbsd \
   alpha64-dec-vms alpha-dec-vms \
+  amdgcn-amdhsa \
   arc-elf32OPT-with-cpu=arc600 arc-elf32OPT-with-cpu=arc700 \
   arc-linux-uclibcOPT-with-cpu=arc700 arceb-linux-uclibcOPT-with-cpu=arc700 \
   arm-wrs-vxworks arm-netbsdelf \
index 2f1a36f64eff83220bdc73d6b6aeb22baafccc86..4cc44d7279cde3d50630504c4f6ad37c7f223276 100644 (file)
@@ -1,3 +1,14 @@
+2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
+           Kwok Cheung Yeung  <kcy@codesourcery.com>
+           Julian Brown  <julian@codesourcery.com>
+           Tom de Vries  <tom@codesourcery.com>
+           Jan Hubicka  <hubicka@ucw.cz>
+           Martin Jambor  <mjambor@suse.cz>
+
+       * config.gcc: Add amdgcn*-*-amdhsa configuration.
+       * configure.ac: Check for dlopen.
+       * configure: Regenerate.
+
 2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
            Kwok Cheung Yeung  <kcy@codesourcery.com>
            Julian Brown  <julian@codesourcery.com>
index f7ddb120ee2522110e534b519450038512689066..a189cb19f6330247749f57390571bbb13de85aaa 100644 (file)
@@ -326,6 +326,10 @@ alpha*-*-*)
        cpu_type=alpha
        extra_options="${extra_options} g.opt"
        ;;
+amdgcn*)
+       cpu_type=gcn
+       use_gcc_stdint=wrap
+       ;;
 am33_2.0-*-linux*)
        cpu_type=mn10300
        ;;
@@ -1401,6 +1405,25 @@ ft32-*-elf)
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
        tmake_file="${tmake_file} ft32/t-ft32"
        ;;
+amdgcn-*-amdhsa)
+       tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
+       tmake_file="gcn/t-gcn-hsa"
+       native_system_header_dir=/include
+       extra_modes=gcn/gcn-modes.def
+       extra_objs="${extra_objs} gcn-tree.o"
+       extra_gcc_objs="driver-gcn.o"
+       case "$host" in
+       x86_64*-*-linux-gnu )
+               if test "$ac_cv_search_dlopen" != no; then
+                       extra_programs="${extra_programs} gcn-run\$(exeext)"
+               fi
+               ;;
+       esac
+       if test x$enable_as_accelerator = xyes; then
+               extra_programs="${extra_programs} mkoffload\$(exeext)"
+               tm_file="${tm_file} gcn/offload.h"
+       fi
+       ;;
 moxie-*-elf)
        gas=yes
        gnu_ld=yes
@@ -4087,6 +4110,24 @@ case "${target}" in
                esac
                ;;
 
+       amdgcn-*-*)
+               supported_defaults="arch tune"
+
+               for which in arch tune; do
+                       eval "val=\$with_$which"
+                       case ${val} in
+                       "" | carrizo | fiji | gfx900 )
+                               # OK
+                               ;;
+                       *)
+                               echo "Unknown cpu used in --with-$which=$val." 1>&2
+                               exit 1
+                               ;;
+                       esac
+               done
+               [ "x$with_arch" = x ] && with_arch=fiji
+               ;;
+
        hppa*-*-*)
                supported_defaults="arch schedule"
 
index ed76a7e8d9c181ef9f108a037af76be7d0dfb0ad..d6a48ef76e722a815543f3e248cb1755e268e249 100755 (executable)
@@ -782,6 +782,7 @@ manext
 LIBICONV_DEP
 LTLIBICONV
 LIBICONV
+DL_LIB
 LDEXP_LIB
 EXTRA_GCC_LIBS
 GNAT_LIBEXC
@@ -9735,6 +9736,69 @@ LDEXP_LIB="$LIBS"
 LIBS="$save_LIBS"
 
 
+# Some systems need dlopen
+save_LIBS="$LIBS"
+LIBS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+$as_echo_n "checking for library containing dlopen... " >&6; }
+if ${ac_cv_search_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_search_dlopen=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_dlopen+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_dlopen+:} false; then :
+
+else
+  ac_cv_search_dlopen=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
+$as_echo "$ac_cv_search_dlopen" >&6; }
+ac_res=$ac_cv_search_dlopen
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+DL_LIB="$LIBS"
+LIBS="$save_LIBS"
+
+
 # Use <inttypes.h> only if it exists,
 # doesn't clash with <sys/types.h>, declares intmax_t and defines
 # PRId64
@@ -18582,7 +18646,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18576 "configure"
+#line 18640 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -18688,7 +18752,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18682 "configure"
+#line 18746 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
index e3a455817cbcd810c83103e1c479435c180d631b..78370352938aa24f0af7f58152dfc76b4f734844 100644 (file)
@@ -1228,6 +1228,14 @@ LDEXP_LIB="$LIBS"
 LIBS="$save_LIBS"
 AC_SUBST(LDEXP_LIB)
 
+# Some systems need dlopen
+save_LIBS="$LIBS"
+LIBS=
+AC_SEARCH_LIBS(dlopen, dl)
+DL_LIB="$LIBS"
+LIBS="$save_LIBS"
+AC_SUBST(DL_LIB)
+
 # Use <inttypes.h> only if it exists,
 # doesn't clash with <sys/types.h>, declares intmax_t and defines
 # PRId64