@@ -7,7 +7,9 @@ void xxx(int argc) {
7
7
// CHECK-NEXT: 2: int cond;
8
8
// CHECK-NEXT: 3: int fp;
9
9
// CHECK-NEXT: 4: int rd;
10
- int x, cond, fp, rd;
10
+ // CHECK-NEXT: 5: int lin;
11
+ // CHECK-NEXT: 6: int step;
12
+ int x, cond, fp, rd, lin, step;
11
13
// CHECK-NEXT: [[#ATOM:]]: x
12
14
// CHECK-NEXT: [[#ATOM+1]]: [B1.[[#ATOM]]] (ImplicitCastExpr, LValueToRValue, int)
13
15
// CHECK-NEXT: [[#ATOM+2]]: argc
@@ -68,20 +70,26 @@ void xxx(int argc) {
68
70
// CHECK-NEXT: [[#FOR+1]]: [B1.[[#FOR]]] (ImplicitCastExpr, LValueToRValue, int)
69
71
// CHECK-NEXT: [[#FOR+2]]: argc
70
72
// CHECK-NEXT: [[#FOR+3]]: [B1.[[#FOR+2]]] = [B1.[[#FOR+1]]]
71
- // CHECK-NEXT: [[#FOR+4]]: #pragma omp for
73
+ // CHECK-NEXT: [[#FOR+4]]: lin
74
+ // CHECK-NEXT: [[#FOR+5]]: step
75
+ // CHECK-NEXT: [[#FOR+6]]: [B1.[[#FOR+5]]] (ImplicitCastExpr, LValueToRValue, int)
76
+ // CHECK-NEXT: [[#FOR+7]]: #pragma omp for linear(lin: step)
72
77
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
73
78
// CHECK-NEXT: [B1.[[#FOR+3]]];
74
- #pragma omp for
79
+ #pragma omp for linear(lin : step)
75
80
for (int i = 0 ; i < 10 ; ++i)
76
81
argc = x;
77
82
// CHECK-NEXT: [[#FS:]]: x
78
83
// CHECK-NEXT: [[#FS+1]]: [B1.[[#FS]]] (ImplicitCastExpr, LValueToRValue, int)
79
84
// CHECK-NEXT: [[#FS+2]]: argc
80
85
// CHECK-NEXT: [[#FS+3]]: [B1.[[#FS+2]]] = [B1.[[#FS+1]]]
81
- // CHECK-NEXT: [[#FS+4]]: #pragma omp for simd
86
+ // CHECK-NEXT: [[#FS+4]]: lin
87
+ // CHECK-NEXT: [[#FS+5]]: step
88
+ // CHECK-NEXT: [[#FS+6]]: [B1.[[#FS+5]]] (ImplicitCastExpr, LValueToRValue, int)
89
+ // CHECK-NEXT: [[#FS+7]]: #pragma omp for simd linear(lin: step)
82
90
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
83
91
// CHECK-NEXT: [B1.[[#FS+3]]];
84
- #pragma omp for simd
92
+ #pragma omp for simd linear(lin: step)
85
93
for (int i = 0 ; i < 10 ; ++i)
86
94
argc = x;
87
95
// CHECK-NEXT: [[#MASTER:]]: x
@@ -115,10 +123,13 @@ void xxx(int argc) {
115
123
// CHECK-NEXT: [[#PF+6]]: [B1.[[#PF+5]]] (ImplicitCastExpr, IntegralToBoolean, _Bool)
116
124
// CHECK-NEXT: [[#PF+7]]: fp
117
125
// CHECK-NEXT: [[#PF+8]]: rd
118
- // CHECK-NEXT: [[#PF+9]]: #pragma omp parallel for if(cond) firstprivate(fp) reduction(&: rd)
126
+ // CHECK-NEXT: [[#PF+9]]: lin
127
+ // CHECK-NEXT: [[#PF+10]]: step
128
+ // CHECK-NEXT: [[#PF+11]]: [B1.[[#PF+10]]] (ImplicitCastExpr, LValueToRValue, int)
129
+ // CHECK-NEXT: [[#PF+12]]: #pragma omp parallel for if(cond) firstprivate(fp) reduction(&: rd) linear(lin: step)
119
130
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
120
131
// CHECK-NEXT: [B1.[[#PF+3]]];
121
- #pragma omp parallel for if(cond) firstprivate(fp) reduction(&:rd)
132
+ #pragma omp parallel for if(cond) firstprivate(fp) reduction(&:rd) linear(lin: step)
122
133
for (int i = 0 ; i < 10 ; ++i)
123
134
argc = x;
124
135
// CHECK-NEXT: [[#PFS:]]: x
@@ -130,10 +141,13 @@ void xxx(int argc) {
130
141
// CHECK-NEXT: [[#PFS+6]]: [B1.[[#PFS+5]]] (ImplicitCastExpr, IntegralToBoolean, _Bool)
131
142
// CHECK-NEXT: [[#PFS+7]]: fp
132
143
// CHECK-NEXT: [[#PFS+8]]: rd
133
- // CHECK-NEXT: [[#PFS+9]]: #pragma omp parallel for simd if(cond) firstprivate(fp) reduction(|: rd)
144
+ // CHECK-NEXT: [[#PFS+9]]: lin
145
+ // CHECK-NEXT: [[#PFS+10]]: step
146
+ // CHECK-NEXT: [[#PFS+11]]: [B1.[[#PFS+10]]] (ImplicitCastExpr, LValueToRValue, int)
147
+ // CHECK-NEXT: [[#PFS+12]]: #pragma omp parallel for simd if(cond) firstprivate(fp) reduction(|: rd) linear(lin: step)
134
148
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
135
149
// CHECK-NEXT: [B1.[[#PFS+3]]];
136
- #pragma omp parallel for simd if(cond) firstprivate(fp) reduction(|:rd)
150
+ #pragma omp parallel for simd if(cond) firstprivate(fp) reduction(|:rd) linear(lin: step)
137
151
for (int i = 0 ; i < 10 ; ++i)
138
152
argc = x;
139
153
// CHECK-NEXT: [[#PAR:]]: x
@@ -170,10 +184,13 @@ void xxx(int argc) {
170
184
// CHECK-NEXT: [[#SIMD+1]]: [B1.[[#SIMD]]] (ImplicitCastExpr, LValueToRValue, int)
171
185
// CHECK-NEXT: [[#SIMD+2]]: argc
172
186
// CHECK-NEXT: [[#SIMD+3]]: [B1.[[#SIMD+2]]] = [B1.[[#SIMD+1]]]
173
- // CHECK-NEXT: [[#SIMD+4]]: #pragma omp simd
187
+ // CHECK-NEXT: [[#SIMD+4]]: lin
188
+ // CHECK-NEXT: [[#SIMD+5]]: step
189
+ // CHECK-NEXT: [[#SIMD+6]]: [B1.[[#SIMD+5]]] (ImplicitCastExpr, LValueToRValue, int)
190
+ // CHECK-NEXT: [[#SIMD+7]]: #pragma omp simd linear(lin: step)
174
191
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
175
192
// CHECK-NEXT: [B1.[[#SIMD+3]]];
176
- #pragma omp simd
193
+ #pragma omp simd linear(lin: step)
177
194
for (int i = 0 ; i < 10 ; ++i)
178
195
argc = x;
179
196
// CHECK-NEXT: [[#SINGLE:]]: x
@@ -202,39 +219,45 @@ void xxx(int argc) {
202
219
: argc) if (cond) firstprivate (fp) reduction (-:rd)
203
220
argc = x;
204
221
// CHECK-NEXT: [[#TPF:]]:
205
- // CHECK-SAME: [B1.[[#TPF+10 ]]]
206
- // CHECK-NEXT: [[#TPF+1]]: [B1.[[#TPF+10 ]]] (ImplicitCastExpr, LValueToRValue, int)
207
- // CHECK-NEXT: [[#TPF+2]]: [B1.[[#TPF+9 ]]]
208
- // CHECK-NEXT: [[#TPF+3]]: [B1.[[#TPF+9 ]]] = [B1.[[#TPF+1]]]
222
+ // CHECK-SAME: [B1.[[#TPF+13 ]]]
223
+ // CHECK-NEXT: [[#TPF+1]]: [B1.[[#TPF+13 ]]] (ImplicitCastExpr, LValueToRValue, int)
224
+ // CHECK-NEXT: [[#TPF+2]]: [B1.[[#TPF+12 ]]]
225
+ // CHECK-NEXT: [[#TPF+3]]: [B1.[[#TPF+12 ]]] = [B1.[[#TPF+1]]]
209
226
// CHECK-NEXT: [[#TPF+4]]: cond
210
227
// CHECK-NEXT: [[#TPF+5]]: [B1.[[#TPF+4]]] (ImplicitCastExpr, LValueToRValue, int)
211
228
// CHECK-NEXT: [[#TPF+6]]: [B1.[[#TPF+5]]] (ImplicitCastExpr, IntegralToBoolean, _Bool)
212
229
// CHECK-NEXT: [[#TPF+7]]: fp
213
230
// CHECK-NEXT: [[#TPF+8]]: rd
214
- // CHECK-NEXT: [[#TPF+9]]: argc
215
- // CHECK-NEXT: [[#TPF+10]]: x
216
- // CHECK-NEXT: [[#TPF+11]]: #pragma omp target parallel for if(parallel: cond) firstprivate(fp) reduction(max: rd)
231
+ // CHECK-NEXT: [[#TPF+9]]: lin
232
+ // CHECK-NEXT: [[#TPF+10]]: step
233
+ // CHECK-NEXT: [[#TPF+11]]: [B1.[[#TPF+10]]] (ImplicitCastExpr, LValueToRValue, int)
234
+ // CHECK-NEXT: [[#TPF+12]]: argc
235
+ // CHECK-NEXT: [[#TPF+13]]: x
236
+ // CHECK-NEXT: [[#TPF+14]]: #pragma omp target parallel for if(parallel: cond) firstprivate(fp) reduction(max: rd) linear(lin: step)
217
237
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
218
238
// CHECK-NEXT: [B1.[[#TPF+3]]];
219
- #pragma omp target parallel for if(parallel:cond) firstprivate(fp) reduction(max:rd)
239
+ #pragma omp target parallel for if(parallel:cond) firstprivate(fp) reduction(max:rd) linear(lin: step)
220
240
for (int i = 0 ; i < 10 ; ++i)
221
241
argc = x;
222
242
// CHECK-NEXT: [[#TPFS:]]:
223
- // CHECK-SAME: [B1.[[#TPFS+10 ]]]
224
- // CHECK-NEXT: [[#TPFS+1]]: [B1.[[#TPFS+10 ]]] (ImplicitCastExpr, LValueToRValue, int)
225
- // CHECK-NEXT: [[#TPFS+2]]: [B1.[[#TPFS+9 ]]]
226
- // CHECK-NEXT: [[#TPFS+3]]: [B1.[[#TPFS+9 ]]] = [B1.[[#TPFS+1]]]
243
+ // CHECK-SAME: [B1.[[#TPFS+13 ]]]
244
+ // CHECK-NEXT: [[#TPFS+1]]: [B1.[[#TPFS+13 ]]] (ImplicitCastExpr, LValueToRValue, int)
245
+ // CHECK-NEXT: [[#TPFS+2]]: [B1.[[#TPFS+12 ]]]
246
+ // CHECK-NEXT: [[#TPFS+3]]: [B1.[[#TPFS+12 ]]] = [B1.[[#TPFS+1]]]
227
247
// CHECK-NEXT: [[#TPFS+4]]: cond
228
248
// CHECK-NEXT: [[#TPFS+5]]: [B1.[[#TPFS+4]]] (ImplicitCastExpr, LValueToRValue, int)
229
249
// CHECK-NEXT: [[#TPFS+6]]: [B1.[[#TPFS+5]]] (ImplicitCastExpr, IntegralToBoolean, _Bool)
230
250
// CHECK-NEXT: [[#TPFS+7]]: fp
231
251
// CHECK-NEXT: [[#TPFS+8]]: rd
232
- // CHECK-NEXT: [[#TPFS+9]]: argc
233
- // CHECK-NEXT: [[#TPFS+10]]: x
234
- // CHECK-NEXT: [[#TPFS+11]]: #pragma omp target parallel for simd if(target: cond) firstprivate(fp) reduction(*: rd)
252
+ // CHECK-NEXT: [[#TPFS+9]]: lin
253
+ // CHECK-NEXT: [[#TPFS+10]]: step
254
+ // CHECK-NEXT: [[#TPFS+11]]: [B1.[[#TPFS+10]]] (ImplicitCastExpr, LValueToRValue, int)
255
+ // CHECK-NEXT: [[#TPFS+12]]: argc
256
+ // CHECK-NEXT: [[#TPFS+13]]: x
257
+ // CHECK-NEXT: [[#TPFS+14]]: #pragma omp target parallel for simd if(target: cond) firstprivate(fp) reduction(*: rd) linear(lin: step)
235
258
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
236
259
// CHECK-NEXT: [B1.[[#TPFS+3]]];
237
- #pragma omp target parallel for simd if(target:cond) firstprivate(fp) reduction(*:rd)
260
+ #pragma omp target parallel for simd if(target:cond) firstprivate(fp) reduction(*:rd) linear(lin: step)
238
261
for (int i = 0 ; i < 10 ; ++i)
239
262
argc = x;
240
263
// CHECK-NEXT: [[#TP:]]:
@@ -254,21 +277,24 @@ void xxx(int argc) {
254
277
#pragma omp target parallel if(cond) firstprivate(fp) reduction(+:rd)
255
278
argc = x;
256
279
// CHECK-NEXT: [[#TSIMD:]]:
257
- // CHECK-SAME: [B1.[[#TSIMD+10 ]]]
258
- // CHECK-NEXT: [[#TSIMD+1]]: [B1.[[#TSIMD+10 ]]] (ImplicitCastExpr, LValueToRValue, int)
259
- // CHECK-NEXT: [[#TSIMD+2]]: [B1.[[#TSIMD+9 ]]]
260
- // CHECK-NEXT: [[#TSIMD+3]]: [B1.[[#TSIMD+9 ]]] = [B1.[[#TSIMD+1]]]
280
+ // CHECK-SAME: [B1.[[#TSIMD+13 ]]]
281
+ // CHECK-NEXT: [[#TSIMD+1]]: [B1.[[#TSIMD+13 ]]] (ImplicitCastExpr, LValueToRValue, int)
282
+ // CHECK-NEXT: [[#TSIMD+2]]: [B1.[[#TSIMD+12 ]]]
283
+ // CHECK-NEXT: [[#TSIMD+3]]: [B1.[[#TSIMD+12 ]]] = [B1.[[#TSIMD+1]]]
261
284
// CHECK-NEXT: [[#TSIMD+4]]: cond
262
285
// CHECK-NEXT: [[#TSIMD+5]]: [B1.[[#TSIMD+4]]] (ImplicitCastExpr, LValueToRValue, int)
263
286
// CHECK-NEXT: [[#TSIMD+6]]: [B1.[[#TSIMD+5]]] (ImplicitCastExpr, IntegralToBoolean, _Bool)
264
287
// CHECK-NEXT: [[#TSIMD+7]]: fp
265
288
// CHECK-NEXT: [[#TSIMD+8]]: rd
266
- // CHECK-NEXT: [[#TSIMD+9]]: argc
267
- // CHECK-NEXT: [[#TSIMD+10]]: x
268
- // CHECK-NEXT: [[#TSIMD+11]]: #pragma omp target simd if(cond) firstprivate(fp) reduction(+: rd)
289
+ // CHECK-NEXT: [[#TSIMD+9]]: lin
290
+ // CHECK-NEXT: [[#TSIMD+10]]: step
291
+ // CHECK-NEXT: [[#TSIMD+11]]: [B1.[[#TSIMD+10]]] (ImplicitCastExpr, LValueToRValue, int)
292
+ // CHECK-NEXT: [[#TSIMD+12]]: argc
293
+ // CHECK-NEXT: [[#TSIMD+13]]: x
294
+ // CHECK-NEXT: [[#TSIMD+14]]: #pragma omp target simd if(cond) firstprivate(fp) reduction(+: rd) linear(lin: step)
269
295
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
270
296
// CHECK-NEXT: [B1.[[#TSIMD+3]]];
271
- #pragma omp target simd if(cond) firstprivate(fp) reduction(+:rd)
297
+ #pragma omp target simd if(cond) firstprivate(fp) reduction(+:rd) linear(lin: step)
272
298
for (int i = 0 ; i < 10 ; ++i)
273
299
argc = x;
274
300
// CHECK-NEXT: [[#TTD:]]:
@@ -406,21 +432,24 @@ void xxx(int argc) {
406
432
for (int i = 0 ; i < 10 ; ++i)
407
433
argc = x;
408
434
// CHECK-NEXT: [[#TLS:]]:
409
- // CHECK-SAME: [B1.[[#TLS+10 ]]]
410
- // CHECK-NEXT: [[#TLS+1]]: [B1.[[#TLS+10 ]]] (ImplicitCastExpr, LValueToRValue, int)
411
- // CHECK-NEXT: [[#TLS+2]]: [B1.[[#TLS+9 ]]]
412
- // CHECK-NEXT: [[#TLS+3]]: [B1.[[#TLS+9 ]]] = [B1.[[#TLS+1]]]
435
+ // CHECK-SAME: [B1.[[#TLS+13 ]]]
436
+ // CHECK-NEXT: [[#TLS+1]]: [B1.[[#TLS+13 ]]] (ImplicitCastExpr, LValueToRValue, int)
437
+ // CHECK-NEXT: [[#TLS+2]]: [B1.[[#TLS+12 ]]]
438
+ // CHECK-NEXT: [[#TLS+3]]: [B1.[[#TLS+12 ]]] = [B1.[[#TLS+1]]]
413
439
// CHECK-NEXT: [[#TLS+4]]: cond
414
440
// CHECK-NEXT: [[#TLS+5]]: [B1.[[#TLS+4]]] (ImplicitCastExpr, LValueToRValue, int)
415
441
// CHECK-NEXT: [[#TLS+6]]: [B1.[[#TLS+5]]] (ImplicitCastExpr, IntegralToBoolean, _Bool)
416
442
// CHECK-NEXT: [[#TLS+7]]: fp
417
443
// CHECK-NEXT: [[#TLS+8]]: rd
418
- // CHECK-NEXT: [[#TLS+9]]: argc
419
- // CHECK-NEXT: [[#TLS+10]]: x
420
- // CHECK-NEXT: [[#TLS+11]]: #pragma omp taskloop simd if(cond) firstprivate(fp) reduction(+: rd)
444
+ // CHECK-NEXT: [[#TLS+9]]: lin
445
+ // CHECK-NEXT: [[#TLS+10]]: step
446
+ // CHECK-NEXT: [[#TLS+11]]: [B1.[[#TLS+10]]] (ImplicitCastExpr, LValueToRValue, int)
447
+ // CHECK-NEXT: [[#TLS+12]]: argc
448
+ // CHECK-NEXT: [[#TLS+13]]: x
449
+ // CHECK-NEXT: [[#TLS+14]]: #pragma omp taskloop simd if(cond) firstprivate(fp) reduction(+: rd) linear(lin: step)
421
450
// CHECK-NEXT: for (int i = 0; i < 10; ++i)
422
451
// CHECK-NEXT: [B1.[[#TLS+3]]];
423
- #pragma omp taskloop simd if(cond) firstprivate(fp) reduction(+:rd)
452
+ #pragma omp taskloop simd if(cond) firstprivate(fp) reduction(+:rd) linear(lin: step)
424
453
for (int i = 0 ; i < 10 ; ++i)
425
454
argc = x;
426
455
// CHECK-NEXT: [[#TDPF:]]: x
0 commit comments