diff gcc/testsuite/c-c++-common/goacc/loop-auto-2.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/c-c++-common/goacc/loop-auto-2.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,107 @@
+
+// Tile parititioning
+
+void Ok ()
+{
+#pragma acc parallel num_gangs (10) num_workers(32) vector_length(32)
+  {
+    
+#pragma acc loop tile(*) gang vector
+    for (int ix = 0; ix < 10; ix++)
+      {
+      }
+
+#pragma acc loop tile(*)
+    for (int ix = 0; ix < 10; ix++)
+      {
+      }
+
+#pragma acc loop tile(*) gang
+    for (int ix = 0; ix < 10; ix++)
+      {
+	#pragma acc loop vector
+	for (int jx = 0; jx < 10; jx++)
+	  ;
+      }
+
+#pragma acc loop tile(*)
+    for (int ix = 0; ix < 10; ix++)
+      {
+	#pragma acc loop vector
+	for (int jx = 0; jx < 10; jx++)
+	  ;
+      }
+
+#pragma acc loop gang
+    for (int jx = 0; jx < 10; jx++)
+      {
+#pragma acc loop tile(*) vector
+	for (int ix = 0; ix < 10; ix++)
+	  {
+	  }
+
+#pragma acc loop tile(*)
+	for (int ix = 0; ix < 10; ix++)
+	  {
+	  }
+      }
+
+#pragma acc loop tile(*) worker
+    for (int ix = 0; ix < 10; ix++)
+      {
+	#pragma acc loop vector
+	for (int jx = 0; jx < 10; jx++)
+	  ;
+      }
+  }
+}
+
+void Bad ()
+{
+#pragma acc parallel num_gangs (10) num_workers(32) vector_length(32)
+  {
+    
+#pragma acc loop tile(*) gang vector /* { dg-message "containing loop" } */
+    for (int ix = 0; ix < 10; ix++)
+      {
+#pragma acc loop vector /* { dg-error "uses same" } */
+	for (int jx = 0; jx < 10; jx++)
+	  ;
+      }
+
+#pragma acc loop tile(*) gang vector
+    for (int ix = 0; ix < 10; ix++)
+      {
+	#pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
+	for (int jx = 0; jx < 10; jx++)
+	  ;
+      }
+
+#pragma acc loop tile(*) auto /* { dg-warning "insufficient partitioning" } */
+    for (int ix = 0; ix < 10; ix++)
+      {
+	#pragma acc loop worker
+	for (int jx = 0; jx < 10; jx++)
+	  ;
+      }
+
+#pragma acc loop worker /* { dg-message "containing loop" } */
+    for (int jx = 0; jx < 10; jx++)
+      {
+#pragma acc loop tile(*) gang vector /* { dg-error "incorrectly nested" } */
+	for (int ix = 0; ix < 10; ix++)
+	  {
+	  }
+
+#pragma acc loop tile(*) vector /* { dg-warning "insufficient partitioning" } */
+	for (int ix = 0; ix < 10; ix++)
+	  {
+	  }
+
+#pragma acc loop tile(*) /* { dg-warning "insufficient partitioning" } */
+	for (int ix = 0; ix < 10; ix++)
+	  {
+	  }
+      }
+  }
+}