1subroutine foo (a, f) 2 implicit none (type, external) 3 interface 4 subroutine bar (x) 5 integer :: x 6 end subroutine 7 end interface 8 9 integer, value :: f 10 integer, contiguous :: a(0:) 11 integer :: i, j, k, u, v, w, x, y, z 12 13 !$omp parallel masked default(none) private (k) filter (f) firstprivate (f) 14 call bar (k) 15 !$omp end parallel masked 16 17 !$omp parallel masked default(none) private (k) 18 call bar (k) 19 !$omp end parallel masked 20 21 !$omp parallel default(none) firstprivate(a, f) shared(x, y, z) 22 !$omp masked taskloop reduction (+:x) default(none) firstprivate(a) filter (f) 23 do i = 0, 63 24 x = x + a(i) 25 end do 26 !$omp end masked taskloop 27 !$omp masked taskloop simd reduction (+:y) default(none) firstprivate(a) private (i) filter (f) 28 do i = 0, 63 29 y = y + a(i) 30 end do 31 !$omp end masked taskloop simd 32 !$omp masked taskloop simd reduction (+:y) default(none) firstprivate(a) private (i) 33 do i = 0, 63 34 y = y + a(i) 35 end do 36 !$omp end masked taskloop simd 37 !$omp masked taskloop simd collapse(2) reduction (+:z) default(none) firstprivate(a) private (i, j) filter (f) 38 do j = 0, 0 39 do i = 0, 63 40 z = z + a(i) 41 end do 42 end do 43 !$omp end masked taskloop simd 44 !$omp end parallel 45 46 !$omp parallel masked taskloop reduction (+:u) default(none) firstprivate(a, f) filter (f) 47 do i = 0, 63 48 u = u + a(i) 49 end do 50 !$omp end parallel masked taskloop 51 52 !$omp parallel masked taskloop simd reduction (+:v) default(none) firstprivate(a, f) filter (f) 53 do i = 0, 63 54 v = v + a(i) 55 end do 56 !$omp end parallel masked taskloop simd 57 58 !$omp parallel masked taskloop simd collapse(2) reduction (+:w) default(none) firstprivate(a, f) filter (f) 59 do j = 0, 0 60 do i = 0, 63 61 w = w + a(i) 62 end do 63 end do 64 !$omp end parallel masked taskloop simd 65end 66