summaryrefslogtreecommitdiff
path: root/gcc/config/nvptx/nvptx.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2015-11-05 13:50:13 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2015-11-05 13:50:13 +0000
commitbd7519757549bb0f61433767be4587d1d287fbae (patch)
tree7e0c36ef8da7959fa24be13c6ac216e007bdfb80 /gcc/config/nvptx/nvptx.c
parent337d2167ccf01c028e993852f6d3a4681a021505 (diff)
downloadgcc-bd7519757549bb0f61433767be4587d1d287fbae.tar.gz
target.def (goacc.dim_limit): New hook.
* target.def (goacc.dim_limit): New hook. * targhooks.h (default_goacc_dim_limit): Declare. * doc/tm.texi.in (TARGET_GOACC_DIM_LIMIT): Add. * doc/tm.texi: Rebuilt. * omp-low.h (get_oacc_fn_dim_size, get_oacc_ifn_dim_arg): Declare. * omp-low.c (get_oacc_fn_dim_size, get_oacc_ifn_dim_arg): New. (default_goacc_dim_limit): New. * config/nvptx/nvptx.c (PTX_VECTOR_LENGTH, PTX_WORKER_LENGTH): New. (nvptx_goacc_dim_limit) New. (TARGET_GOACC_DIM_LIMIT): Override. * tree-vrp.c: Include omp-low.h, target.h. (extract_range_basic): Add handling for IFN_GOACC_DIM_SIZE & IFN_GOACC_DIM_POS. From-SVN: r229809
Diffstat (limited to 'gcc/config/nvptx/nvptx.c')
-rw-r--r--gcc/config/nvptx/nvptx.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index dafb6954690..0204ad3383e 100644
--- a/gcc/config/nvptx/nvptx.c
+++ b/gcc/config/nvptx/nvptx.c
@@ -3499,6 +3499,25 @@ nvptx_goacc_validate_dims (tree ARG_UNUSED (decl), int *ARG_UNUSED (dims),
return changed;
}
+/* Return maximum dimension size, or zero for unbounded. */
+
+static int
+nvptx_dim_limit (int axis)
+{
+ switch (axis)
+ {
+ case GOMP_DIM_WORKER:
+ return PTX_WORKER_LENGTH;
+
+ case GOMP_DIM_VECTOR:
+ return PTX_VECTOR_LENGTH;
+
+ default:
+ break;
+ }
+ return 0;
+}
+
/* Determine whether fork & joins are needed. */
static bool
@@ -4016,6 +4035,9 @@ nvptx_goacc_reduction (gcall *call)
#undef TARGET_GOACC_VALIDATE_DIMS
#define TARGET_GOACC_VALIDATE_DIMS nvptx_goacc_validate_dims
+#undef TARGET_GOACC_DIM_LIMIT
+#define TARGET_GOACC_DIM_LIMIT nvptx_dim_limit
+
#undef TARGET_GOACC_FORK_JOIN
#define TARGET_GOACC_FORK_JOIN nvptx_goacc_fork_join