summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2015-11-13 21:48:23 +0000
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2015-11-13 21:48:23 +0000
commit29e866f59bc510543e5ae4672b04ef19316f1bca (patch)
treeb7e0dc38baf42286321ff828b8ab977c88ace789
parentc286c29493938ae70e8833667e48cf228c193990 (diff)
downloadgcc-29e866f59bc510543e5ae4672b04ef19316f1bca.tar.gz
* lib/target-supports.exp (check_effective_target_offload_nvptx): New.
* gcc.dg/goacc/nvptx-merged-loop.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230353 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/goacc/nvptx-merged-loop.c30
-rw-r--r--gcc/testsuite/lib/target-supports.exp8
3 files changed, 43 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e01d0c6fc17..68cf4e946fe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-11-13 Nathan Sidwell <nathan@codesourcery.com>
+
+ * lib/target-supports.exp (check_effective_target_offload_nvptx): New.
+ * gcc.dg/goacc/nvptx-merged-loop.c: New.
+
2015-11-13 Steven G. Kargl <kargl@gccc.gnu.org>
PR fortran/68319
diff --git a/gcc/testsuite/gcc.dg/goacc/nvptx-merged-loop.c b/gcc/testsuite/gcc.dg/goacc/nvptx-merged-loop.c
new file mode 100644
index 00000000000..3ff537c1d97
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/goacc/nvptx-merged-loop.c
@@ -0,0 +1,30 @@
+/* { dg-do link } */
+/* { dg-require-effective-target offload_nvptx } */
+/* { dg-options "-fopenacc -O2 -foffload=-fdump-rtl-mach\\ -dumpbase\\ nvptx-merged-loop.c\\ -Wa,--no-verify" } */
+
+#define N (32*32*32+17)
+void __attribute__ ((noinline)) Foo (int *ary)
+{
+ int ix;
+
+#pragma acc parallel num_workers(32) vector_length(32) copyout(ary[0:N])
+ {
+ /* Loop partitioning should be merged. */
+#pragma acc loop worker vector
+ for (unsigned ix = 0; ix < N; ix++)
+ {
+ ary[ix] = ix;
+ }
+ }
+}
+
+int main ()
+{
+ int ary[N];
+
+ Foo (ary);
+
+ return 0;
+}
+
+/* { dg-final { scan-rtl-dump "Merging loop .* into " "mach" } } */
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 75d50682922..328d483226e 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -6716,3 +6716,11 @@ proc check_effective_target_vect_max_reduc { } {
}
return 0
}
+
+# Return 1 if there is an nvptx offload compiler.
+
+proc check_effective_target_offload_nvptx { } {
+ return [check_no_compiler_messages offload_nvptx object {
+ int main () {return 0;}
+ } "-foffload=nvptx-none" ]
+}