PR c++/86342 - -Wdeprecated-copy and system headers.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-fortran / nested-function-3.f90
blob8a5ca426f3138f8fbb41a829294a2b1efc016dc9
1 ! Exercise nested function decomposition, gcc/tree-nested.c.
3 ! { dg-do run }
5 program sub_collapse_3
6 call test1
7 call test2 (2, 6, -2, 4, 13, 18)
8 call test3 (2, 6, -2, 4, 13, 18, 1, 1, 1)
9 call test4
10 call test5 (2, 6, -2, 4, 13, 18)
11 call test6 (2, 6, -2, 4, 13, 18, 1, 1, 1)
12 contains
13 subroutine test1
14 integer :: a(3,3,3), k, kk, kkk, l, ll, lll
15 !$acc parallel
16 !$acc loop collapse(3)
17 do 115 k=1,3
18 dokk: do kk=1,3
19 do kkk=1,3
20 a(k,kk,kkk) = 1
21 enddo
22 enddo dokk
23 115 continue
24 !$acc end parallel
25 if (any(a(1:3,1:3,1:3).ne.1)) STOP 1
26 !$acc parallel
27 !$acc loop collapse(3)
28 dol: do 120 l=1,3
29 doll: do ll=1,3
30 do lll=1,3
31 a(l,ll,lll) = 2
32 enddo
33 enddo doll
34 120 end do dol
35 !$acc end parallel
36 if (any(a(1:3,1:3,1:3).ne.2)) STOP 2
37 end subroutine test1
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
42 logical :: l, r
43 l = .false.
44 r = .false.
45 a(:, :, :) = 0
46 b(:, :, :) = 0
47 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6) reduction (.or.:l)
48 !$acc loop reduction (.or.:l) collapse (3)
49 do i = v1, v2
50 do j = v3, v4
51 do k = v5, v6
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
55 end do
56 end do
57 end do
58 !$acc end parallel
59 do i = v1, v2
60 do j = v3, v4
61 do k = v5, v6
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
65 end do
66 end do
67 end do
68 if (l .neqv. r) STOP 3
69 do i = v1, v2
70 do j = v3, v4
71 do k = v5, v6
72 if (a(i, j, k) .ne. b(i, j, k)) STOP 4
73 end do
74 end do
75 end do
76 end subroutine test2
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
81 logical :: l, r
82 l = .false.
83 r = .false.
84 a(:, :, :) = 0
85 b(:, :, :) = 0
86 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6, v7, v8, v9) reduction (.or.:l)
87 !$acc loop reduction (.or.:l) collapse (3)
88 do i = v1, v2, v7
89 do j = v3, v4, v8
90 do k = v5, v6, v9
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
94 end do
95 end do
96 end do
97 !$acc end parallel
98 do i = v1, v2, v7
99 do j = v3, v4, v8
100 do k = v5, v6, v9
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
104 end do
105 end do
106 end do
107 if (l .neqv. r) STOP 5
108 do i = v1, v2, v7
109 do j = v3, v4, v8
110 do k = v5, v6, v9
111 if (a(i, j, k) .ne. b(i, j, k)) STOP 6
112 end do
113 end do
114 end do
115 end subroutine test3
117 subroutine test4
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
120 logical :: l, r
121 l = .false.
122 r = .false.
123 a(:, :, :) = 0
124 b(:, :, :) = 0
125 v1 = 2
126 v2 = 6
127 v3 = -2
128 v4 = 4
129 v5 = 13
130 v6 = 18
131 v7 = 1
132 v8 = 1
133 v9 = 1
134 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6, v7, v8, v9) reduction (.or.:l)
135 !$acc loop reduction (.or.:l) collapse (3)
136 do i = v1, v2, v7
137 do j = v3, v4, v8
138 do k = v5, v6, v9
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
142 end do
143 end do
144 end do
145 !$acc end parallel
146 do i = v1, v2, v7
147 do j = v3, v4, v8
148 do k = v5, v6, v9
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
152 end do
153 end do
154 end do
155 if (l .neqv. r) STOP 7
156 do i = v1, v2, v7
157 do j = v3, v4, v8
158 do k = v5, v6, v9
159 if (a(i, j, k) .ne. b(i, j, k)) STOP 8
160 end do
161 end do
162 end do
163 end subroutine test4
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
168 logical :: l, r
169 l = .false.
170 r = .false.
171 a(:, :, :) = 0
172 b(:, :, :) = 0
173 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6) reduction (.or.:l)
174 !$acc loop reduction (.or.:l) collapse (3)
175 do i = v1, v2
176 do j = v3, v4
177 do k = v5, v6
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
181 end do
182 end do
183 end do
184 !$acc end parallel
185 do i = v1, v2
186 do j = v3, v4
187 do k = v5, v6
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
191 end do
192 end do
193 end do
194 if (l .neqv. r) STOP 9
195 do i = v1, v2
196 do j = v3, v4
197 do k = v5, v6
198 if (a(i, j, k) .ne. b(i, j, k)) STOP 10
199 end do
200 end do
201 end do
202 end subroutine test5
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
207 logical :: l, r
208 l = .false.
209 r = .false.
210 a(:, :, :) = 0
211 b(:, :, :) = 0
212 !$acc parallel pcopyin (v1, v2, v3, v4, v5, v6, v7, v8, v9) reduction (.or.:l)
213 !$acc loop reduction (.or.:l) collapse (3)
214 do i = v1, v2, v7
215 do j = v3, v4, v8
216 do k = v5, v6, v9
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
221 end do
222 end do
223 end do
224 !$acc end parallel
225 do i = v1, v2, v7
226 do j = v3, v4, v8
227 do k = v5, v6, v9
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
231 end do
232 end do
233 end do
234 if (l .neqv. r) STOP 11
235 do i = v1, v2, v7
236 do j = v3, v4, v8
237 do k = v5, v6, v9
238 if (a(i, j, k) .ne. b(i, j, k)) STOP 12
239 end do
240 end do
241 end do
242 end subroutine test6
244 end program sub_collapse_3