@@ -11,7 +11,7 @@ program acc_atomic_capture_test
11
11
! CHECK: %[[Y_DECL:.*]]:2 = hlfir.declare %2 {uniq_name = "_QFEy"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
12
12
! CHECK: %[[temp:.*]] = fir.load %[[X_DECL]]#0 : !fir.ref<i32>
13
13
! CHECK: acc.atomic.capture {
14
- ! CHECK: acc.atomic.read %[[X_DECL]]#1 = %[[Y_DECL]]#1 : !fir.ref<i32>, i32
14
+ ! CHECK: acc.atomic.read %[[X_DECL]]#1 = %[[Y_DECL]]#1 : !fir.ref<i32>, !fir.ref<i32>, i32
15
15
! CHECK: acc.atomic.update %[[Y_DECL]]#1 : !fir.ref<i32> {
16
16
! CHECK: ^bb0(%[[ARG:.*]]: i32):
17
17
! CHECK: %[[result:.*]] = arith.addi %[[temp]], %[[ARG]] : i32
@@ -32,7 +32,7 @@ program acc_atomic_capture_test
32
32
! CHECK: %[[result:.*]] = arith.muli %[[temp]], %[[ARG]] : i32
33
33
! CHECK: acc.yield %[[result]] : i32
34
34
! CHECK: }
35
- ! CHECK: acc.atomic.read %[[X_DECL]]#1 = %[[Y_DECL]]#1 : !fir.ref<i32>, i32
35
+ ! CHECK: acc.atomic.read %[[X_DECL]]#1 = %[[Y_DECL]]#1 : !fir.ref<i32>, !fir.ref<i32>, i32
36
36
! CHECK: }
37
37
38
38
! $acc atomic capture
@@ -47,7 +47,7 @@ program acc_atomic_capture_test
47
47
! CHECK: %[[result_noreassoc:.*]] = hlfir.no_reassoc %[[result]] : i32
48
48
! CHECK: %[[result:.*]] = arith.addi %[[constant_20]], %[[result_noreassoc]] : i32
49
49
! CHECK: acc.atomic.capture {
50
- ! CHECK: acc.atomic.read %[[X_DECL]]#1 = %[[Y_DECL]]#1 : !fir.ref<i32>, i32
50
+ ! CHECK: acc.atomic.read %[[X_DECL]]#1 = %[[Y_DECL]]#1 : !fir.ref<i32>, !fir.ref<i32>, i32
51
51
! CHECK: acc.atomic.write %[[Y_DECL]]#1 = %[[result]] : !fir.ref<i32>, i32
52
52
! CHECK: }
53
53
@@ -82,7 +82,7 @@ subroutine pointers_in_atomic_capture()
82
82
! CHECK: %[[result:.*]] = arith.addi %[[ARG]], %[[loaded_value]] : i32
83
83
! CHECK: acc.yield %[[result]] : i32
84
84
! CHECK: }
85
- ! CHECK: acc.atomic.read %[[loaded_B_addr]] = %[[loaded_A_addr]] : !fir.ptr<i32>, i32
85
+ ! CHECK: acc.atomic.read %[[loaded_B_addr]] = %[[loaded_A_addr]] : !fir.ptr<i32>, !fir.ptr<i32>, i32
86
86
! CHECK: }
87
87
integer , pointer :: a, b
88
88
integer , target :: c, d
@@ -118,7 +118,7 @@ subroutine capture_with_convert_f32_to_i32()
118
118
! CHECK: %[[MUL:.*]] = arith.mulf %{{.*}}, %[[CST]] fastmath<contract> : f32
119
119
! CHECK: %[[CONV:.*]] = fir.convert %[[MUL]] : (f32) -> i32
120
120
! CHECK: acc.atomic.capture {
121
- ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[K_DECL]]#1 : !fir.ref<i32>, i32
121
+ ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[K_DECL]]#1 : !fir.ref<i32>, !fir.ref<i32>, i32
122
122
! CHECK: acc.atomic.write %[[K_DECL]]#1 = %[[CONV]] : !fir.ref<i32>, i32
123
123
! CHECK: }
124
124
@@ -138,15 +138,14 @@ end subroutine capture_with_convert_i32_to_f64
138
138
! CHECK: %[[V_DECL:.*]]:2 = hlfir.declare %[[V]] {uniq_name = "_QFcapture_with_convert_i32_to_f64Ev"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
139
139
! CHECK: %[[X:.*]] = fir.alloca f64 {bindc_name = "x", uniq_name = "_QFcapture_with_convert_i32_to_f64Ex"}
140
140
! CHECK: %[[X_DECL:.*]]:2 = hlfir.declare %[[X]] {uniq_name = "_QFcapture_with_convert_i32_to_f64Ex"} : (!fir.ref<f64>) -> (!fir.ref<f64>, !fir.ref<f64>)
141
- ! CHECK: %[[X_CONV:.*]] = fir.convert %[[X_DECL]]#1 : (!fir.ref<f64>) -> !fir.ref<i32>
142
141
! CHECK: %[[CST:.*]] = arith.constant 1.000000e+00 : f64
143
142
! CHECK: hlfir.assign %[[CST]] to %[[X_DECL]]#0 : f64, !fir.ref<f64>
144
143
! CHECK: %c0_i32 = arith.constant 0 : i32
145
144
! CHECK: hlfir.assign %c0_i32 to %[[V_DECL]]#0 : i32, !fir.ref<i32>
146
145
! CHECK: %[[LOAD:.*]] = fir.load %[[V_DECL]]#0 : !fir.ref<i32>
147
146
! CHECK: %[[CONV:.*]] = fir.convert %[[LOAD]] : (i32) -> f64
148
147
! CHECK: acc.atomic.capture {
149
- ! CHECK: acc.atomic.read %[[V_DECL]] = %[[X_CONV ]]#1 : !fir.ref<f64>, i32
148
+ ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[X_DECL ]]#1 : !fir.ref<i32>, !fir.ref< f64>, f64
150
149
! CHECK: acc.atomic.write %[[X_DECL]]#1 = %[[CONV]] : !fir.ref<f64>, f64
151
150
! CHECK: }
152
151
@@ -170,20 +169,16 @@ end subroutine capture_with_convert_f64_to_i32
170
169
! CHECK: hlfir.assign %c1_i32 to %[[X_DECL]]#0 : i32, !fir.ref<i32>
171
170
! CHECK: %[[CST:.*]] = arith.constant 0.000000e+00 : f64
172
171
! CHECK: hlfir.assign %[[CST]] to %[[V_DECL]]#0 : f64, !fir.ref<f64>
173
- ! CHECK: %[[ALLOCA]] = fir.alloca i32
174
- ! CHECK: %[[LOAD1:.*]] = fir.load %[[V_DECL]]#0 : !fir.ref<f64>
172
+ ! CHECK: %[[LOAD:.*]] = fir.load %[[V_DECL]]#0 : !fir.ref<f64>
175
173
! CHECK: acc.atomic.capture {
176
174
! CHECK: acc.atomic.update %[[X_DECL]]#1 : !fir.ref<i32> {
177
175
! CHECK: ^bb0(%arg0: i32):
178
- ! CHECK: %[[MUL:.*]] = arith.mulf %[[LOAD1 ]], %[[LOAD1 ]] fastmath<contract> : f64
179
- ! CHECK: %[[CONV1 :.*]] = fir.convert %[[MUL]] : (f64) -> i32
180
- ! CHECK: acc.yield %[[CONV1 ]] : i32
176
+ ! CHECK: %[[MUL:.*]] = arith.mulf %[[LOAD ]], %[[LOAD ]] fastmath<contract> : f64
177
+ ! CHECK: %[[CONV :.*]] = fir.convert %[[MUL]] : (f64) -> i32
178
+ ! CHECK: acc.yield %[[CONV ]] : i32
181
179
! CHECK: }
182
- ! CHECK: acc.atomic.read %[[ALLOCA]] = %[[X_DECL]]#1 : !fir.ref<i32>, i32
180
+ ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[X_DECL]]#1 : !fir.ref<f64>, !fir.ref<i32>, i32
183
181
! CHECK: }
184
- ! CHECK: %[[LOAD2:.*]] = fir.load %[[ALLOCA]] : !fir.ref<i32>
185
- ! CHECK: %[[CONV2:.*]] = fir.convert %[[LOAD2]] : (i32) -> f64
186
- ! CHECK: fir.store %[[CONV2]] to %[[V_DECL]]#1 : !fir.ref<f64>
187
182
188
183
subroutine capture_with_convert_i32_to_f32 ()
189
184
real (4 ) :: x
@@ -205,21 +200,16 @@ end subroutine capture_with_convert_i32_to_f32
205
200
! CHECK: hlfir.assign %[[CST]] to %[[X_DECL]]#0 : f32, !fir.ref<f32>
206
201
! CHECK: %c0_i32 = arith.constant 0 : i32
207
202
! CHECK: hlfir.assign %c0_i32 to %[[V_DECL]]#0 : i32, !fir.ref<i32>
208
- ! CHECK: %[[ALLOCA:.*]] = fir.alloca f32
209
- ! CHECK: %[[LOAD1:.*]] = fir.load %[[ALLOCA]] : !fir.ref<f32>
210
- ! CHECK: %[[CONV1:.*]] = fir.convert %5 : (f32) -> i32
203
+ ! CHECK: %[[LOAD:.*]] = fir.load %[[V_DECL]]#0 : !fir.ref<i32>
211
204
! CHECK: acc.atomic.capture {
212
- ! CHECK: acc.atomic.read %[[ALLOCA]] = %[[X_DECL]]#1 : !fir.ref<f32>, f32
205
+ ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[X_DECL]]#1 : !fir.ref<i32>, !fir.ref<f32>, f32
213
206
! CHECK: acc.atomic.update %[[X_DECL]]#1 : !fir.ref<f32> {
214
207
! CHECK: ^bb0(%arg0: f32):
215
- ! CHECK: %[[CONV2 :.*]] = fir.convert %[[CONV1 ]] : (i32) -> f32
216
- ! CHECK: %[[ADD:.*]] = arith.addf %arg0, %[[CONV2 ]] fastmath<contract> : f32
208
+ ! CHECK: %[[CONV :.*]] = fir.convert %[[LOAD ]] : (i32) -> f32
209
+ ! CHECK: %[[ADD:.*]] = arith.addf %arg0, %[[CONV ]] fastmath<contract> : f32
217
210
! CHECK: acc.yield %[[ADD]] : f32
218
211
! CHECK: }
219
212
! CHECK: }
220
- ! CHECK: %[[LOAD2:.*]] = fir.load %[[ALLOCA]] : !fir.ref<f32>
221
- ! CHECK: %[[CONV3:.*]] = fir.convert %[[LOAD2]] : (f32) -> i32
222
- ! CHECK: fir.store %[[CONV3]] to %[[V_DECL]]#1 : !fir.ref<i32>
223
213
224
214
subroutine array_ref_in_atomic_capture1
225
215
integer :: x(10 ), v
@@ -235,7 +225,7 @@ end subroutine array_ref_in_atomic_capture1
235
225
! CHECK: %[[X_DECL:.*]]:2 = hlfir.declare %[[X]](%{{.*}}) {uniq_name = "_QFarray_ref_in_atomic_capture1Ex"} : (!fir.ref<!fir.array<10xi32>>, !fir.shape<1>) -> (!fir.ref<!fir.array<10xi32>>, !fir.ref<!fir.array<10xi32>>)
236
226
! CHECK: %[[X_REF:.*]] = hlfir.designate %[[X_DECL]]#0 (%{{.*}}) : (!fir.ref<!fir.array<10xi32>>, index) -> !fir.ref<i32>
237
227
! CHECK: acc.atomic.capture {
238
- ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[X_REF]] : !fir.ref<i32>, i32
228
+ ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[X_REF]] : !fir.ref<i32>, !fir.ref<i32>, i32
239
229
! CHECK: acc.atomic.update %[[X_REF]] : !fir.ref<i32> {
240
230
! CHECK: ^bb0(%[[VAL_7:.*]]: i32):
241
231
! CHECK: %[[VAL_8:.*]] = arith.addi %[[VAL_7]], %{{.*}} : i32
@@ -262,7 +252,7 @@ end subroutine array_ref_in_atomic_capture2
262
252
! CHECK: %[[VAL_8:.*]] = arith.addi %[[VAL_7]], %{{.*}} : i32
263
253
! CHECK: acc.yield %[[VAL_8]] : i32
264
254
! CHECK: }
265
- ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[X_REF]] : !fir.ref<i32>, i32
255
+ ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[X_REF]] : !fir.ref<i32>, !fir.ref<i32>, i32
266
256
! CHECK: }
267
257
268
258
subroutine comp_ref_in_atomic_capture1
@@ -283,7 +273,7 @@ end subroutine comp_ref_in_atomic_capture1
283
273
! CHECK: %[[X_DECL:.*]]:2 = hlfir.declare %[[X]] {uniq_name = "_QFcomp_ref_in_atomic_capture1Ex"} : (!fir.ref<!fir.type<_QFcomp_ref_in_atomic_capture1Tt1{c:i32}>>) -> (!fir.ref<!fir.type<_QFcomp_ref_in_atomic_capture1Tt1{c:i32}>>, !fir.ref<!fir.type<_QFcomp_ref_in_atomic_capture1Tt1{c:i32}>>)
284
274
! CHECK: %[[C:.*]] = hlfir.designate %[[X_DECL]]#0{"c"} : (!fir.ref<!fir.type<_QFcomp_ref_in_atomic_capture1Tt1{c:i32}>>) -> !fir.ref<i32>
285
275
! CHECK: acc.atomic.capture {
286
- ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[C]] : !fir.ref<i32>, i32
276
+ ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[C]] : !fir.ref<i32>, !fir.ref<i32>, i32
287
277
! CHECK: acc.atomic.update %[[C]] : !fir.ref<i32> {
288
278
! CHECK: ^bb0(%[[VAL_5:.*]]: i32):
289
279
! CHECK: %[[VAL_6:.*]] = arith.addi %[[VAL_5]], %{{.*}} : i32
@@ -314,5 +304,5 @@ end subroutine comp_ref_in_atomic_capture2
314
304
! CHECK: %[[VAL_6:.*]] = arith.addi %[[VAL_5]], %{{.*}} : i32
315
305
! CHECK: acc.yield %[[VAL_6]] : i32
316
306
! CHECK: }
317
- ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[C]] : !fir.ref<i32>, i32
307
+ ! CHECK: acc.atomic.read %[[V_DECL]]#1 = %[[C]] : !fir.ref<i32>, !fir.ref<i32>, i32
318
308
! CHECK: }
0 commit comments