| /* Test orphan reductions. */ |
| |
| /* { dg-do compile } */ |
| |
| #pragma acc routine seq |
| int |
| seq_reduction (int n) |
| { |
| int i, sum = 0; |
| #pragma acc loop seq reduction(+:sum) |
| for (i = 0; i < n; i++) |
| sum = sum + 1; |
| |
| return sum; |
| } |
| |
| #pragma acc routine gang |
| int |
| gang_reduction (int n) |
| { |
| int i, s1 = 0, s2 = 0; |
| #pragma acc loop gang reduction(+:s1) /* { dg-error "gang reduction on an orphan loop" } */ |
| for (i = 0; i < n; i++) |
| s1 = s1 + 2; |
| |
| #pragma acc loop gang reduction(+:s2) /* { dg-error "gang reduction on an orphan loop" } */ |
| for (i = 0; i < n; i++) |
| s2 = s2 + 2; |
| |
| |
| return s1 + s2; |
| } |
| |
| #pragma acc routine worker |
| int |
| worker_reduction (int n) |
| { |
| int i, sum = 0; |
| #pragma acc loop worker reduction(+:sum) |
| for (i = 0; i < n; i++) |
| sum = sum + 3; |
| |
| return sum; |
| } |
| |
| #pragma acc routine vector |
| int |
| vector_reduction (int n) |
| { |
| int i, sum = 0; |
| #pragma acc loop vector reduction(+:sum) |
| for (i = 0; i < n; i++) |
| sum = sum + 4; |
| |
| return sum; |
| } |