Add gcc/config/gcn/t-omp-device for OpenMP declare variant kind/arch/isa
authorTobias Burnus <tobias@codesourcery.com>
Mon, 4 Nov 2019 22:29:11 +0000 (22:29 +0000)
committerTobias Burnus <burnus@gcc.gnu.org>
Mon, 4 Nov 2019 22:29:11 +0000 (23:29 +0100)
        gcc/
        * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): New function.
        (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
        gcn_omp_device_kind_arch_isa.
        * config/gcn/t-omp-device: New file.
        * configure.ac: Support gcn for omp_device_property.
        * configure: Regenerate.

From-SVN: r277797

gcc/ChangeLog
gcc/config/gcn/gcn.c
gcc/configure
gcc/configure.ac

index 32af8bb3e9a6dd8256e4a4c07f75161b3723a951..a11c08f17deb85b03822c366a93193a439ac7944 100644 (file)
@@ -1,3 +1,12 @@
+2019-11-04  Tobias Burnus  <tobias@codesourcery.com>
+
+       * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): New function.
+       (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
+       gcn_omp_device_kind_arch_isa.
+       * config/gcn/t-omp-device: New file.
+       * configure.ac: Support gcn for omp_device_property.
+       * configure: Regenerate.
+
 2019-11-04  Aldy Hernandez  <aldyh@redhat.com>
 
        * tree-vrp.h (vrp_val_min): Remove handle_pointers argument.
index b5f09da173c6cbe1e51d628f6714ab24c5a8e62e..cdd24277cf6dc32303dcc827c4abab6b3e3e1355 100644 (file)
@@ -2516,6 +2516,36 @@ gcn_gimplify_va_arg_expr (tree valist, tree type,
   return t;
 }
 
+/* Return 1 if TRAIT NAME is present in the OpenMP context's
+   device trait set, return 0 if not present in any OpenMP context in the
+   whole translation unit, or -1 if not present in the current OpenMP context
+   but might be present in another OpenMP context in the same TU.  */
+
+int
+gcn_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait,
+                             const char *name)
+{
+  switch (trait)
+    {
+    case omp_device_kind:
+      return strcmp (name, "gpu") == 0;
+    case omp_device_arch:
+      return strcmp (name, "gcn") == 0;
+    case omp_device_isa:
+      if (strcmp (name, "carrizo") == 0)
+       return gcn_arch == PROCESSOR_CARRIZO;
+      if (strcmp (name, "fiji") == 0)
+       return gcn_arch == PROCESSOR_FIJI;
+      if (strcmp (name, "gfx900") == 0)
+       return gcn_arch == PROCESSOR_VEGA;
+      if (strcmp (name, "gfx906") == 0)
+       return gcn_arch == PROCESSOR_VEGA;
+      return 0;
+    default:
+      gcc_unreachable ();
+    }
+}
+
 /* Calculate stack offsets needed to create prologues and epilogues.  */
 
 static struct machine_function *
@@ -6030,6 +6060,8 @@ print_operand (FILE *file, rtx x, int code)
 #define TARGET_FUNCTION_VALUE_REGNO_P gcn_function_value_regno_p
 #undef  TARGET_GIMPLIFY_VA_ARG_EXPR
 #define TARGET_GIMPLIFY_VA_ARG_EXPR gcn_gimplify_va_arg_expr
+#undef TARGET_OMP_DEVICE_KIND_ARCH_ISA
+#define TARGET_OMP_DEVICE_KIND_ARCH_ISA gcn_omp_device_kind_arch_isa
 #undef  TARGET_GOACC_ADJUST_PROPAGATION_RECORD
 #define TARGET_GOACC_ADJUST_PROPAGATION_RECORD \
   gcn_goacc_adjust_propagation_record
index 6808c23d26b847ff2408ef6e8bb3aba126fd3cb5..a2df82e021f5ef190a44f52ab8e07d5be24ab214 100755 (executable)
@@ -7896,6 +7896,10 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
        omp_device_property=omp-device-properties-i386
        omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
        ;;
+      gcn*-*)
+       omp_device_property=omp-device-properties-gcn
+       omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
+       ;;
       nvptx*-*)
        omp_device_property=omp-device-properties-nvptx
        omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
@@ -18933,7 +18937,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18936 "configure"
+#line 18940 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -19039,7 +19043,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 19042 "configure"
+#line 19046 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
index 1a0d68208e4b51b3360c293a1565ce4afa228c5d..5f32fd4d5e4df75f9bb7addb070e90665e0ee3bf 100644 (file)
@@ -1037,6 +1037,10 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
        omp_device_property=omp-device-properties-i386
        omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
        ;;
+      gcn*-*)
+       omp_device_property=omp-device-properties-gcn
+       omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
+       ;;
       nvptx*-*)
        omp_device_property=omp-device-properties-nvptx
        omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"