aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/goacc/template.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/goacc/template.C')
-rw-r--r--gcc/testsuite/g++.dg/goacc/template.C81
1 files changed, 41 insertions, 40 deletions
diff --git a/gcc/testsuite/g++.dg/goacc/template.C b/gcc/testsuite/g++.dg/goacc/template.C
index f7a717bf7ed..f139dc25b58 100644
--- a/gcc/testsuite/g++.dg/goacc/template.C
+++ b/gcc/testsuite/g++.dg/goacc/template.C
@@ -1,8 +1,3 @@
-// This error is temporary. Remove when support is added for these clauses
-// in the middle end. Also remove the comments from the reduction test
-// after the FE learns that reduction variables may appear in data clauses too.
-// { dg-prune-output "sorry, unimplemented" }
-
#pragma acc routine
template <typename T> T
accDouble(int val)
@@ -20,55 +15,62 @@ oacc_parallel_copy (T a)
double z = 4;
#pragma acc parallel num_gangs (a) num_workers (a) vector_length (a) default (none) copyout (b) copyin (a)
- {
+#pragma acc loop gang worker vector
+ for (int i = 0; i < 1; i++)
b = a;
- }
#pragma acc parallel num_gangs (a) copy (w, x, y, z)
- {
- w = accDouble<char>(w);
- x = accDouble<int>(x);
- y = accDouble<float>(y);
- z = accDouble<double>(z);
- }
+#pragma acc loop
+ for (int i = 0; i < 1; i++)
+ {
+ w = accDouble<char>(w);
+ x = accDouble<int>(x);
+ y = accDouble<float>(y);
+ z = accDouble<double>(z);
+ }
#pragma acc parallel num_gangs (a) if (1)
{
+#pragma acc loop independent collapse (2) gang
+ for (int i = 0; i < a; i++)
+ for (int j = 0; j < 5; j++)
+ b = a;
+
#pragma acc loop auto tile (a, 3)
- for (int i = 0; i < a; i++)
- for (int j = 0; j < 5; j++)
- b = a;
+ for (int i = 0; i < a; i++)
+ for (int j = 0; j < 5; j++)
+ b = a;
#pragma acc loop seq
- for (int i = 0; i < a; i++)
- b = a;
+ for (int i = 0; i < a; i++)
+ b = a;
}
T c;
#pragma acc parallel num_workers (10)
- {
+#pragma acc loop worker
+ for (int i = 0; i < 1; i++)
+ {
#pragma acc atomic capture
- c = b++;
+ c = b++;
#pragma atomic update
- c++;
+ c++;
#pragma acc atomic read
- b = a;
+ b = a;
#pragma acc atomic write
- b = a;
- }
+ b = a;
+ }
-//#pragma acc parallel reduction (+:c)
-// {
-// c = 1;
-// }
+#pragma acc parallel reduction (+:c)
+ c = 1;
#pragma acc data if (1) copy (b)
{
- #pragma acc parallel
+#pragma acc parallel
{
b = a;
}
@@ -76,9 +78,9 @@ oacc_parallel_copy (T a)
#pragma acc enter data copyin (b)
#pragma acc parallel present (b)
- {
- b = a;
- }
+ {
+ b = a;
+ }
#pragma acc update host (b)
#pragma acc update self (b)
@@ -109,11 +111,9 @@ oacc_kernels_copy (T a)
#pragma acc kernels copyout (b) copyin (a)
b = a;
-//#pragma acc kernels loop reduction (+:c)
-// for (int i = 0; i < 10; i++)
-// {
-// c = 1;
-// }
+#pragma acc kernels loop reduction (+:c)
+ for (int i = 0; i < 10; i++)
+ c = 1;
#pragma acc data if (1) copy (b)
{
@@ -125,9 +125,10 @@ oacc_kernels_copy (T a)
#pragma acc enter data copyin (b)
#pragma acc kernels present (b)
- {
- b = a;
- }
+ {
+ b = a;
+ }
+
return b;
}