1 ! Exercise nested function decomposition, gcc/tree-nested.c.
7 call test2 (2, 6, -2, 4, 13, 18)
8 call test3 (2, 6, -2, 4, 13, 18, 1, 1, 1)
10 call test5 (2, 6, -2, 4, 13, 18)
11 call test6 (2, 6, -2, 4, 13, 18, 1, 1, 1)
14 integer :: a(3,3,3), k
, kk
, kkk
, l
, ll
, lll
16 !$acc loop collapse(3)
25 if (any(a(1:3,1:3,1:3).ne
.1)) STOP 1
27 !$acc loop collapse(3)
36 if (any(a(1:3,1:3,1:3).ne
.2)) STOP 2
39 subroutine test2(v1
, v2
, v3
, v4
, v5
, v6
)
40 integer :: i
, j
, k
, a(1:7, -3:5, 12:19), b(1:7, -3:5, 12:19)
41 integer :: v1
, v2
, v3
, v4
, v5
, v6
47 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6) reduction (.or.:l)
48 !$acc loop reduction (.or.:l) collapse (3)
52 l
= l
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
53 l
= l
.or
.k
.lt
.13.or
.k
.gt
.18
54 if (.not
.l
) a(i
, j
, k
) = a(i
, j
, k
) + 1
62 r
= r
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
63 r
= r
.or
.k
.lt
.13.or
.k
.gt
.18
64 if (.not
.l
) b(i
, j
, k
) = b(i
, j
, k
) + 1
68 if (l
.neqv
. r
) STOP 3
72 if (a(i
, j
, k
) .ne
. b(i
, j
, k
)) STOP 4
78 subroutine test3(v1
, v2
, v3
, v4
, v5
, v6
, v7
, v8
, v9
)
79 integer :: i
, j
, k
, a(1:7, -3:5, 12:19), b(1:7, -3:5, 12:19)
80 integer :: v1
, v2
, v3
, v4
, v5
, v6
, v7
, v8
, v9
86 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6, v7, v8, v9) reduction (.or.:l)
87 !$acc loop reduction (.or.:l) collapse (3)
91 l
= l
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
92 l
= l
.or
.k
.lt
.13.or
.k
.gt
.18
93 if (.not
.l
) a(i
, j
, k
) = a(i
, j
, k
) + 1
101 r
= r
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
102 r
= r
.or
.k
.lt
.13.or
.k
.gt
.18
103 if (.not
.l
) b(i
, j
, k
) = b(i
, j
, k
) + 1
107 if (l
.neqv
. r
) STOP 5
111 if (a(i
, j
, k
) .ne
. b(i
, j
, k
)) STOP 6
118 integer :: i
, j
, k
, a(1:7, -3:5, 12:19), b(1:7, -3:5, 12:19)
119 integer :: v1
, v2
, v3
, v4
, v5
, v6
, v7
, v8
, v9
134 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6, v7, v8, v9) reduction (.or.:l)
135 !$acc loop reduction (.or.:l) collapse (3)
139 l
= l
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
140 l
= l
.or
.k
.lt
.13.or
.k
.gt
.18
141 if (.not
.l
) a(i
, j
, k
) = a(i
, j
, k
) + 1
149 r
= r
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
150 r
= r
.or
.k
.lt
.13.or
.k
.gt
.18
151 if (.not
.r
) b(i
, j
, k
) = b(i
, j
, k
) + 1
155 if (l
.neqv
. r
) STOP 7
159 if (a(i
, j
, k
) .ne
. b(i
, j
, k
)) STOP 8
165 subroutine test5(v1
, v2
, v3
, v4
, v5
, v6
)
166 integer :: i
, j
, k
, a(1:7, -3:5, 12:19), b(1:7, -3:5, 12:19)
167 integer :: v1
, v2
, v3
, v4
, v5
, v6
173 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6) reduction (.or.:l)
174 !$acc loop reduction (.or.:l) collapse (3)
178 l
= l
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
179 l
= l
.or
.k
.lt
.13.or
.k
.gt
.18
180 if (.not
.l
) a(i
, j
, k
) = a(i
, j
, k
) + 1
188 r
= r
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
189 r
= r
.or
.k
.lt
.13.or
.k
.gt
.18
190 if (.not
.r
) b(i
, j
, k
) = b(i
, j
, k
) + 1
194 if (l
.neqv
. r
) STOP 9
198 if (a(i
, j
, k
) .ne
. b(i
, j
, k
)) STOP 10
204 subroutine test6(v1
, v2
, v3
, v4
, v5
, v6
, v7
, v8
, v9
)
205 integer :: i
, j
, k
, a(1:7, -3:5, 12:19), b(1:7, -3:5, 12:19)
206 integer :: v1
, v2
, v3
, v4
, v5
, v6
, v7
, v8
, v9
212 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6, v7, v8, v9) reduction (.or.:l)
213 !$acc loop reduction (.or.:l) collapse (3)
217 l
= l
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
218 l
= l
.or
.k
.lt
.13.or
.k
.gt
.18
219 if (.not
.l
) a(i
, j
, k
) = a(i
, j
, k
) + 1
220 m
= i
* 100 + j
* 10 + k
228 r
= r
.or
.i
.lt
.2.or
.i
.gt
.6.or
.j
.lt
.-2.or
.j
.gt
.4
229 r
= r
.or
.k
.lt
.13.or
.k
.gt
.18
230 if (.not
.r
) b(i
, j
, k
) = b(i
, j
, k
) + 1
234 if (l
.neqv
. r
) STOP 11
238 if (a(i
, j
, k
) .ne
. b(i
, j
, k
)) STOP 12
244 end program sub_collapse_3