@@ -41,10 +41,10 @@ program OmpAtomicUpdate
41
41
integer (1 ) :: i1
42
42
integer , dimension (5 ) :: k
43
43
44
- ! CHECK: %[[EMBOX:.*]] = fir.embox %[[VAL_C_DECLARE]]#1 : (!fir.ref<i32>) -> !fir.box<!fir.ptr<i32>>
45
- ! CHECK: fir.store %[[EMBOX]] to %[[VAL_A_DECLARE]]#1 : !fir.ref<!fir.box<!fir.ptr<i32>>>
46
- ! CHECK: %[[EMBOX:.*]] = fir.embox %[[VAL_D_DECLARE]]#1 : (!fir.ref<i32>) -> !fir.box<!fir.ptr<i32>>
47
- ! CHECK: fir.store %[[EMBOX]] to %[[VAL_B_DECLARE]]#1 : !fir.ref<!fir.box<!fir.ptr<i32>>>
44
+ ! CHECK: %[[EMBOX:.*]] = fir.embox %[[VAL_C_DECLARE]]#0 : (!fir.ref<i32>) -> !fir.box<!fir.ptr<i32>>
45
+ ! CHECK: fir.store %[[EMBOX]] to %[[VAL_A_DECLARE]]#0 : !fir.ref<!fir.box<!fir.ptr<i32>>>
46
+ ! CHECK: %[[EMBOX:.*]] = fir.embox %[[VAL_D_DECLARE]]#0 : (!fir.ref<i32>) -> !fir.box<!fir.ptr<i32>>
47
+ ! CHECK: fir.store %[[EMBOX]] to %[[VAL_B_DECLARE]]#0 : !fir.ref<!fir.box<!fir.ptr<i32>>>
48
48
a= >c
49
49
b= >d
50
50
@@ -73,7 +73,7 @@ program OmpAtomicUpdate
73
73
a = a + b
74
74
75
75
! CHECK: %[[VAL_c1:.*]] = arith.constant 1 : i32
76
- ! CHECK: omp.atomic.update %[[VAL_Y_DECLARE]]#1 : !fir.ref<i32> {
76
+ ! CHECK: omp.atomic.update %[[VAL_Y_DECLARE]]#0 : !fir.ref<i32> {
77
77
! CHECK: ^bb0(%[[ARG:.*]]: i32):
78
78
! CHECK: %[[TEMP:.*]] = arith.addi %[[ARG]], %[[VAL_c1]] : i32
79
79
! CHECK: omp.yield(%[[TEMP]] : i32)
@@ -82,7 +82,7 @@ program OmpAtomicUpdate
82
82
y = y + 1
83
83
84
84
! CHECK: %[[VAL_X_LOADED:.*]] = fir.load %[[VAL_X_DECLARE]]#0 : !fir.ref<i32>
85
- ! CHECK: omp.atomic.update %[[VAL_Z_DECLARE]]#1 : !fir.ref<i32> {
85
+ ! CHECK: omp.atomic.update %[[VAL_Z_DECLARE]]#0 : !fir.ref<i32> {
86
86
! CHECK: ^bb0(%[[ARG:.*]]: i32):
87
87
! CHECK: %[[TEMP:.*]] = arith.muli %[[VAL_X_LOADED]], %[[ARG]] : i32
88
88
! CHECK: omp.yield(%[[TEMP]] : i32)
@@ -91,7 +91,7 @@ program OmpAtomicUpdate
91
91
z = x * z
92
92
93
93
! CHECK: %[[VAL_c1:.*]] = arith.constant 1 : i32
94
- ! CHECK: omp.atomic.update hint(uncontended) memory_order(relaxed) %[[VAL_X_DECLARE]]#1 : !fir.ref<i32> {
94
+ ! CHECK: omp.atomic.update hint(uncontended) memory_order(relaxed) %[[VAL_X_DECLARE]]#0 : !fir.ref<i32> {
95
95
! CHECK: ^bb0(%[[ARG:.*]]: i32):
96
96
! CHECK: %[[TEMP:.*]] = arith.subi %[[ARG]], %[[VAL_c1]] : i32
97
97
! CHECK: omp.yield(%[[TEMP]] : i32)
@@ -101,7 +101,7 @@ program OmpAtomicUpdate
101
101
102
102
! CHECK: %[[VAL_C_LOADED:.*]] = fir.load %[[VAL_C_DECLARE]]#0 : !fir.ref<i32>
103
103
! CHECK: %[[VAL_D_LOADED:.*]] = fir.load %[[VAL_D_DECLARE]]#0 : !fir.ref<i32>
104
- ! CHECK: omp.atomic.update memory_order(relaxed) %[[VAL_Y_DECLARE]]#1 : !fir.ref<i32> {
104
+ ! CHECK: omp.atomic.update memory_order(relaxed) %[[VAL_Y_DECLARE]]#0 : !fir.ref<i32> {
105
105
! CHECK: ^bb0(%[[ARG:.*]]: i32):
106
106
! CHECK: {{.*}} = arith.cmpi sgt, %[[ARG]], {{.*}} : i32
107
107
! CHECK: {{.*}} = arith.select {{.*}}, %[[ARG]], {{.*}} : i32
@@ -113,7 +113,7 @@ program OmpAtomicUpdate
113
113
y = max (y, c, d)
114
114
115
115
! CHECK: %[[VAL_X_LOADED:.*]] = fir.load %[[VAL_X_DECLARE]]#0 : !fir.ref<i32>
116
- ! CHECK: omp.atomic.update hint(contended) memory_order(relaxed) %[[VAL_Z_DECLARE]]#1 : !fir.ref<i32> {
116
+ ! CHECK: omp.atomic.update hint(contended) memory_order(relaxed) %[[VAL_Z_DECLARE]]#0 : !fir.ref<i32> {
117
117
! CHECK: ^bb0(%[[ARG:.*]]: i32):
118
118
! CHECK: %[[TEMP:.*]] = arith.addi %[[ARG]], %[[VAL_X_LOADED]] : i32
119
119
! CHECK: omp.yield(%[[TEMP]] : i32)
@@ -122,7 +122,7 @@ program OmpAtomicUpdate
122
122
z = z + x
123
123
124
124
! CHECK: %[[VAL_c10:.*]] = arith.constant 10 : i32
125
- ! CHECK: omp.atomic.update hint(contended) memory_order(release) %[[VAL_Z_DECLARE]]#1 : !fir.ref<i32> {
125
+ ! CHECK: omp.atomic.update hint(contended) memory_order(release) %[[VAL_Z_DECLARE]]#0 : !fir.ref<i32> {
126
126
! CHECK: ^bb0(%[[ARG:.*]]: i32):
127
127
! CHECK: %[[TEMP:.*]] = arith.muli %[[VAL_c10]], %[[ARG]] : i32
128
128
! CHECK: omp.yield(%[[TEMP]] : i32)
@@ -131,7 +131,7 @@ program OmpAtomicUpdate
131
131
z = z * 10
132
132
133
133
! CHECK: %[[VAL_Z_LOADED:.*]] = fir.load %[[VAL_Z_DECLARE]]#0 : !fir.ref<i32>
134
- ! CHECK: omp.atomic.update hint(speculative) memory_order(release) %[[VAL_X_DECLARE]]#1 : !fir.ref<i32> {
134
+ ! CHECK: omp.atomic.update hint(speculative) memory_order(release) %[[VAL_X_DECLARE]]#0 : !fir.ref<i32> {
135
135
! CHECK: ^bb0(%[[ARG:.*]]: i32):
136
136
! CHECK: %[[TEMP:.*]] = arith.divsi %[[ARG]], %[[VAL_Z_LOADED]] : i32
137
137
! CHECK: omp.yield(%[[TEMP]] : i32)
@@ -140,7 +140,7 @@ program OmpAtomicUpdate
140
140
x = x / z
141
141
142
142
! CHECK: %[[VAL_c1:.*]] = arith.constant 1 : i32
143
- ! CHECK: omp.atomic.update %[[VAL_i1_DECLARE]]#1 : !fir.ref<i8> {
143
+ ! CHECK: omp.atomic.update %[[VAL_i1_DECLARE]]#0 : !fir.ref<i8> {
144
144
! CHECK: ^bb0(%[[ARG:.*]]: i8):
145
145
! CHECK: %[[CONVERT:.*]] = fir.convert %[[ARG]] : (i8) -> i32
146
146
! CHECK: %[[ADD:.*]] = arith.addi %[[CONVERT]], %[[VAL_c1]] : i32
@@ -152,7 +152,7 @@ program OmpAtomicUpdate
152
152
! $omp end atomic
153
153
154
154
! CHECK: %[[VAL_X_LOADED:.*]] = fir.load %[[VAL_X_DECLARE]]#0 : !fir.ref<i32>
155
- ! CHECK: omp.atomic.update %[[VAL_Y_DECLARE]]#1 : !fir.ref<i32> {
155
+ ! CHECK: omp.atomic.update %[[VAL_Y_DECLARE]]#0 : !fir.ref<i32> {
156
156
! CHECK: ^bb0(%[[ARG_Y:.*]]: i32):
157
157
! CHECK: %[[Y_UPDATE_VAL:.*]] = arith.andi %[[VAL_X_LOADED]], %[[ARG_Y]] : i32
158
158
! CHECK: omp.yield(%[[Y_UPDATE_VAL]] : i32)
@@ -161,7 +161,7 @@ program OmpAtomicUpdate
161
161
y = iand (x,y)
162
162
163
163
! CHECK: %[[VAL_X_LOADED:.*]] = fir.load %[[VAL_X_DECLARE]]#0 : !fir.ref<i32>
164
- ! CHECK: omp.atomic.update %[[VAL_Y_DECLARE]]#1 : !fir.ref<i32> {
164
+ ! CHECK: omp.atomic.update %[[VAL_Y_DECLARE]]#0 : !fir.ref<i32> {
165
165
! CHECK: ^bb0(%[[ARG_Y:.*]]: i32):
166
166
! CHECK: %[[Y_UPDATE_VAL:.*]] = arith.xori %[[VAL_X_LOADED]], %[[ARG_Y]] : i32
167
167
! CHECK: omp.yield(%[[Y_UPDATE_VAL]] : i32)
@@ -172,7 +172,7 @@ program OmpAtomicUpdate
172
172
! CHECK: %[[VAL_X_LOADED:.*]] = fir.load %[[VAL_X_DECLARE]]#0 : !fir.ref<i32>
173
173
! CHECK: %[[VAL_Y_LOADED:.*]] = fir.load %[[VAL_Y_DECLARE]]#0 : !fir.ref<i32>
174
174
! CHECK: %[[VAL_Z_LOADED:.*]] = fir.load %[[VAL_Z_DECLARE]]#0 : !fir.ref<i32>
175
- ! CHECK: omp.atomic.update %[[VAL_W_DECLARE]]#1 : !fir.ref<i32> {
175
+ ! CHECK: omp.atomic.update %[[VAL_W_DECLARE]]#0 : !fir.ref<i32> {
176
176
! CHECK: ^bb0(%[[ARG_W:.*]]: i32):
177
177
! CHECK: %[[WX_CMP:.*]] = arith.cmpi sgt, %[[ARG_W]], %[[VAL_X_LOADED]] : i32
178
178
! CHECK: %[[WX_MIN:.*]] = arith.select %[[WX_CMP]], %[[ARG_W]], %[[VAL_X_LOADED]] : i32
@@ -193,7 +193,7 @@ program OmpAtomicUpdate
193
193
! CHECK: }
194
194
! [...]
195
195
! CHECK: %[[SUM:.*]] = hlfir.sum %[[IMP_DO]]
196
- ! CHECK: omp.atomic.update %[[VAL_X_DECLARE]]#1 : !fir.ref<i32> {
196
+ ! CHECK: omp.atomic.update %[[VAL_X_DECLARE]]#0 : !fir.ref<i32> {
197
197
! CHECK: ^bb0(%[[ARG0:.*]]: i32):
198
198
! CHECK: %[[ADD_I2:.*]] = arith.addi %[[ARG0]], %[[SUM]] : i32
199
199
! CHECK: omp.yield(%[[ADD_I2]] : i32)
0 commit comments