1! { dg-do run }
2
3  integer, dimension (128) :: a, b
4  integer :: i
5  a = -1
6  b = -1
7  do i = 1, 128
8    if (i .ge. 8 .and. i .le. 15) then
9      b(i) = 1 * 256 + i
10    else if (i .ge. 19 .and. i .le. 23) then
11      b(i) = 2 * 256 + i
12    else if (i .ge. 28 .and. i .le. 38) then
13      if (iand (i, 1) .eq. 0) b(i) = 3 * 256 + i
14    else if (i .ge. 59 .and. i .le. 79) then
15      if (iand (i - 59, 3) .eq. 0) b(i) = 4 * 256 + i
16    else if (i .ge. 101 .and. i .le. 125) then
17      if (mod (i - 101, 12) .eq. 0) b(i) = 5 * 256 + i
18    end if
19  end do
20
21!$omp parallel num_threads (4)
22
23!$omp do
24  do i = 8, 15
25    a(i) = 1 * 256 + i
26  end do
27
28!$omp do
29  do i = 23, 19, -1
30    a(i) = 2 * 256 + i
31  end do
32
33!$omp do
34  do i = 28, 39, 2
35    a(i) = 3 * 256 + i
36  end do
37
38!$omp do
39  do i = 79, 59, -4
40    a(i) = 4 * 256 + i
41  end do
42
43!$omp do
44  do i = 125, 90, -12
45    a(i) = 5 * 256 + i
46  end do
47
48!$omp end parallel
49
50  if (any (a .ne. b)) call abort
51  a = -1
52
53!$omp parallel num_threads (4)
54
55!$omp do schedule (static)
56  do i = 8, 15
57    a(i) = 1 * 256 + i
58  end do
59
60!$omp do schedule (static, 1)
61  do i = 23, 19, -1
62    a(i) = 2 * 256 + i
63  end do
64
65!$omp do schedule (static, 3)
66  do i = 28, 39, 2
67    a(i) = 3 * 256 + i
68  end do
69
70!$omp do schedule (static, 6)
71  do i = 79, 59, -4
72    a(i) = 4 * 256 + i
73  end do
74
75!$omp do schedule (static, 2)
76  do i = 125, 90, -12
77    a(i) = 5 * 256 + i
78  end do
79
80!$omp end parallel
81
82  if (any (a .ne. b)) call abort
83  a = -1
84
85!$omp parallel num_threads (4)
86
87!$omp do schedule (dynamic)
88  do i = 8, 15
89    a(i) = 1 * 256 + i
90  end do
91
92!$omp do schedule (dynamic, 4)
93  do i = 23, 19, -1
94    a(i) = 2 * 256 + i
95  end do
96
97!$omp do schedule (dynamic, 1)
98  do i = 28, 39, 2
99    a(i) = 3 * 256 + i
100  end do
101
102!$omp do schedule (dynamic, 2)
103  do i = 79, 59, -4
104    a(i) = 4 * 256 + i
105  end do
106
107!$omp do schedule (dynamic, 3)
108  do i = 125, 90, -12
109    a(i) = 5 * 256 + i
110  end do
111
112!$omp end parallel
113
114  if (any (a .ne. b)) call abort
115  a = -1
116
117!$omp parallel num_threads (4)
118
119!$omp do schedule (guided)
120  do i = 8, 15
121    a(i) = 1 * 256 + i
122  end do
123
124!$omp do schedule (guided, 4)
125  do i = 23, 19, -1
126    a(i) = 2 * 256 + i
127  end do
128
129!$omp do schedule (guided, 1)
130  do i = 28, 39, 2
131    a(i) = 3 * 256 + i
132  end do
133
134!$omp do schedule (guided, 2)
135  do i = 79, 59, -4
136    a(i) = 4 * 256 + i
137  end do
138
139!$omp do schedule (guided, 3)
140  do i = 125, 90, -12
141    a(i) = 5 * 256 + i
142  end do
143
144!$omp end parallel
145
146  if (any (a .ne. b)) call abort
147  a = -1
148
149!$omp parallel num_threads (4)
150
151!$omp do schedule (runtime)
152  do i = 8, 15
153    a(i) = 1 * 256 + i
154  end do
155
156!$omp do schedule (runtime)
157  do i = 23, 19, -1
158    a(i) = 2 * 256 + i
159  end do
160
161!$omp do schedule (runtime)
162  do i = 28, 39, 2
163    a(i) = 3 * 256 + i
164  end do
165
166!$omp do schedule (runtime)
167  do i = 79, 59, -4
168    a(i) = 4 * 256 + i
169  end do
170
171!$omp do schedule (runtime)
172  do i = 125, 90, -12
173    a(i) = 5 * 256 + i
174  end do
175
176!$omp end parallel
177
178  if (any (a .ne. b)) call abort
179end
180