1 
Foo()2 void Foo ()
3 {
4 
5 #pragma acc parallel num_gangs(10) num_workers(32) vector_length(32)
6   {
7 #pragma acc loop vector
8     for (int ix = 0; ix < 10; ix++)
9       {
10 #pragma acc loop seq
11 	for (int jx = 0; jx < 10; jx++) {}
12 
13 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
14 	for (int jx = 0; jx < 10; jx++) {}
15       }
16 
17 #pragma acc loop worker
18     for (int ix = 0; ix < 10; ix++)
19       {
20 #pragma acc loop auto
21 	for (int jx = 0; jx < 10; jx++) {}
22 
23 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
24 	for (int jx = 0; jx < 10; jx++)
25 	  {
26 #pragma acc loop vector
27 	    for (int kx = 0; kx < 10; kx++) {}
28 	  }
29       }
30 
31 #pragma acc loop gang
32     for (int ix = 0; ix < 10; ix++)
33       {
34 #pragma acc loop auto
35 	for (int jx = 0; jx < 10; jx++) {}
36 
37 #pragma acc loop auto
38 	for (int jx = 0; jx < 10; jx++)
39 	  {
40 #pragma acc loop auto
41 	    for (int kx = 0; kx < 10; kx++) {}
42 	  }
43 
44 #pragma acc loop worker
45 	for (int jx = 0; jx < 10; jx++)
46 	  {
47 #pragma acc loop auto
48 	    for (int kx = 0; kx < 10; kx++) {}
49 	  }
50 
51 #pragma acc loop vector
52 	for (int jx = 0; jx < 10; jx++)
53 	  {
54 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
55 	    for (int kx = 0; kx < 10; kx++) {}
56 	  }
57 
58 #pragma acc loop auto
59 	for (int jx = 0; jx < 10; jx++)
60 	  {
61 #pragma acc loop vector
62 	    for (int kx = 0; kx < 10; kx++) {}
63 	  }
64 
65       }
66 
67 #pragma acc loop auto
68     for (int ix = 0; ix < 10; ix++)
69       {
70 #pragma acc loop auto
71 	for (int jx = 0; jx < 10; jx++)
72 	  {
73 #pragma acc loop auto
74 	    for (int kx = 0; kx < 10; kx++) {}
75 	  }
76       }
77 
78 #pragma acc loop auto
79     for (int ix = 0; ix < 10; ix++)
80       {
81 #pragma acc loop auto
82 	for (int jx = 0; jx < 10; jx++)
83 	  {
84 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
85 	    for (int kx = 0; kx < 10; kx++)
86 	      {
87 #pragma acc loop auto
88 		for (int lx = 0; lx < 10; lx++) {}
89 	      }
90 	  }
91       }
92   }
93 }
94 
95 #pragma acc routine gang
Gang(void)96 void Gang (void)
97 {
98 #pragma acc loop vector
99     for (int ix = 0; ix < 10; ix++)
100       {
101 #pragma acc loop seq
102 	for (int jx = 0; jx < 10; jx++) {}
103 
104 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
105 	for (int jx = 0; jx < 10; jx++) {}
106       }
107 
108 #pragma acc loop worker
109     for (int ix = 0; ix < 10; ix++)
110       {
111 #pragma acc loop auto
112 	for (int jx = 0; jx < 10; jx++) {}
113 
114 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
115 	for (int jx = 0; jx < 10; jx++)
116 	  {
117 #pragma acc loop vector
118 	    for (int kx = 0; kx < 10; kx++) {}
119 	  }
120       }
121 
122 #pragma acc loop gang
123     for (int ix = 0; ix < 10; ix++)
124       {
125 #pragma acc loop auto
126 	for (int jx = 0; jx < 10; jx++) {}
127 
128 #pragma acc loop auto
129 	for (int jx = 0; jx < 10; jx++)
130 	  {
131 #pragma acc loop auto
132 	    for (int kx = 0; kx < 10; kx++) {}
133 	  }
134 
135 #pragma acc loop worker
136 	for (int jx = 0; jx < 10; jx++)
137 	  {
138 #pragma acc loop auto
139 	    for (int kx = 0; kx < 10; kx++) {}
140 	  }
141 
142 #pragma acc loop vector
143 	for (int jx = 0; jx < 10; jx++)
144 	  {
145 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
146 	    for (int kx = 0; kx < 10; kx++) {}
147 	  }
148 
149 #pragma acc loop auto
150 	for (int jx = 0; jx < 10; jx++)
151 	  {
152 #pragma acc loop vector
153 	    for (int kx = 0; kx < 10; kx++) {}
154 	  }
155 
156       }
157 
158 #pragma acc loop auto
159     for (int ix = 0; ix < 10; ix++)
160       {
161 #pragma acc loop auto
162 	for (int jx = 0; jx < 10; jx++)
163 	  {
164 #pragma acc loop auto
165 	    for (int kx = 0; kx < 10; kx++) {}
166 	  }
167       }
168 }
169 
170 #pragma acc routine worker
Worker(void)171 void Worker (void)
172 {
173 #pragma acc loop vector
174     for (int ix = 0; ix < 10; ix++)
175       {
176 #pragma acc loop seq
177 	for (int jx = 0; jx < 10; jx++) {}
178 
179 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
180 	for (int jx = 0; jx < 10; jx++) {}
181       }
182 
183 #pragma acc loop worker
184     for (int ix = 0; ix < 10; ix++)
185       {
186 #pragma acc loop auto
187 	for (int jx = 0; jx < 10; jx++) {}
188 
189 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
190 	for (int jx = 0; jx < 10; jx++)
191 	  {
192 #pragma acc loop vector
193 	    for (int kx = 0; kx < 10; kx++) {}
194 	  }
195       }
196 
197 #pragma acc loop auto
198     for (int ix = 0; ix < 10; ix++)
199       {
200 #pragma acc loop auto
201 	for (int jx = 0; jx < 10; jx++) {}
202       }
203 
204 #pragma acc loop auto
205     for (int ix = 0; ix < 10; ix++)
206       {
207 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
208 	for (int jx = 0; jx < 10; jx++)
209 	  {
210 #pragma acc loop auto
211 	    for (int kx = 0; kx < 10; kx++) {}
212 	  }
213       }
214 }
215 
216 #pragma acc routine vector
Vector(void)217 void Vector (void)
218 {
219 #pragma acc loop vector
220     for (int ix = 0; ix < 10; ix++)
221       {
222 #pragma acc loop seq
223 	for (int jx = 0; jx < 10; jx++) {}
224 
225 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
226 	for (int jx = 0; jx < 10; jx++) {}
227       }
228 
229 #pragma acc loop auto
230     for (int ix = 0; ix < 10; ix++) {}
231 
232 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
233     for (int ix = 0; ix < 10; ix++)
234       {
235 #pragma acc loop auto
236 	for (int jx = 0; jx < 10; jx++) {}
237       }
238 }
239 
240 #pragma acc routine seq
Seq(void)241 void Seq (void)
242 {
243 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */
244     for (int ix = 0; ix < 10; ix++) {}
245 }
246