| ! { dg-do run } |
| |
| call dep () |
| call dep2 () |
| call dep3 () |
| call firstpriv () |
| call antidep () |
| call antidep2 () |
| call antidep3 () |
| call outdep () |
| call concurrent () |
| call concurrent2 () |
| call concurrent3 () |
| contains |
| subroutine dep |
| integer :: x |
| x = 1 |
| !$omp parallel |
| !$omp single |
| !$omp task shared (x) depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp end single |
| !$omp end parallel |
| end subroutine dep |
| |
| subroutine dep2 |
| integer :: x |
| !$omp parallel |
| !$omp single private (x) |
| x = 1 |
| !$omp task shared (x) depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp taskwait |
| !$omp end single |
| !$omp end parallel |
| end subroutine dep2 |
| |
| subroutine dep3 |
| integer :: x |
| !$omp parallel private (x) |
| x = 1 |
| !$omp single |
| !$omp task shared (x) depend(out: x) |
| x = 2 |
| !$omp endtask |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp endtask |
| !$omp endsingle |
| !$omp endparallel |
| end subroutine dep3 |
| |
| subroutine firstpriv |
| integer :: x |
| !$omp parallel private (x) |
| !$omp single |
| x = 1 |
| !$omp task depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp task depend(in: x) |
| if (x.ne.1) call abort |
| !$omp end task |
| !$omp end single |
| !$omp end parallel |
| end subroutine firstpriv |
| |
| subroutine antidep |
| integer :: x |
| x = 1 |
| !$omp parallel |
| !$omp single |
| !$omp task shared(x) depend(in: x) |
| if (x.ne.1) call abort |
| !$omp end task |
| !$omp task shared(x) depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp end single |
| !$omp end parallel |
| end subroutine antidep |
| |
| subroutine antidep2 |
| integer :: x |
| !$omp parallel private (x) |
| !$omp single |
| x = 1 |
| !$omp taskgroup |
| !$omp task shared(x) depend(in: x) |
| if (x.ne.1) call abort |
| !$omp end task |
| !$omp task shared(x) depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp end taskgroup |
| !$omp end single |
| !$omp end parallel |
| end subroutine antidep2 |
| |
| subroutine antidep3 |
| integer :: x |
| !$omp parallel |
| x = 1 |
| !$omp single |
| !$omp task shared(x) depend(in: x) |
| if (x.ne.1) call abort |
| !$omp end task |
| !$omp task shared(x) depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp end single |
| !$omp end parallel |
| end subroutine antidep3 |
| |
| subroutine outdep |
| integer :: x |
| !$omp parallel private (x) |
| !$omp single |
| x = 0 |
| !$omp task shared(x) depend(out: x) |
| x = 1 |
| !$omp end task |
| !$omp task shared(x) depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp taskwait |
| if (x.ne.2) call abort |
| !$omp end single |
| !$omp end parallel |
| end subroutine outdep |
| |
| subroutine concurrent |
| integer :: x |
| x = 1 |
| !$omp parallel |
| !$omp single |
| !$omp task shared (x) depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp end single |
| !$omp end parallel |
| end subroutine concurrent |
| |
| subroutine concurrent2 |
| integer :: x |
| !$omp parallel private (x) |
| !$omp single |
| x = 1 |
| !$omp task shared (x) depend(out: x) |
| x = 2; |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp taskwait |
| !$omp end single |
| !$omp end parallel |
| end subroutine concurrent2 |
| |
| subroutine concurrent3 |
| integer :: x |
| !$omp parallel private (x) |
| x = 1 |
| !$omp single |
| !$omp task shared (x) depend(out: x) |
| x = 2 |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp task shared (x) depend(in: x) |
| if (x.ne.2) call abort |
| !$omp end task |
| !$omp end single |
| !$omp end parallel |
| end subroutine concurrent3 |
| end |