diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/goacc/template.C')
-rw-r--r-- | gcc/testsuite/g++.dg/goacc/template.C | 81 |
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; } |