@@ -99,20 +99,16 @@ float test_float_pre_inc()
99
99
// SAFE-NEXT: [[ENTRY:.*:]]
100
100
// SAFE-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)
101
101
// SAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
102
- // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_post_inc.n to ptr), float 1.000000e+00 seq_cst, align 8
103
- // SAFE-NEXT: store float [[TMP0]], ptr [[RETVAL_ASCAST]], align 8
104
- // SAFE-NEXT: [[TMP1:%.*]] = load double, ptr [[RETVAL_ASCAST]], align 8
105
- // SAFE-NEXT: ret double [[TMP1]]
102
+ // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_post_inc.n to ptr), double 1.000000e+00 seq_cst, align 8
103
+ // SAFE-NEXT: ret double [[TMP0]]
106
104
//
107
105
// UNSAFE-LABEL: define dso_local double @test_double_post_inc(
108
106
// UNSAFE-SAME: ) #[[ATTR0]] {
109
107
// UNSAFE-NEXT: [[ENTRY:.*:]]
110
108
// UNSAFE-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)
111
109
// UNSAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
112
- // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_post_inc.n to ptr), float 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.ignore.denormal.mode [[META3]]
113
- // UNSAFE-NEXT: store float [[TMP0]], ptr [[RETVAL_ASCAST]], align 8
114
- // UNSAFE-NEXT: [[TMP1:%.*]] = load double, ptr [[RETVAL_ASCAST]], align 8
115
- // UNSAFE-NEXT: ret double [[TMP1]]
110
+ // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_post_inc.n to ptr), double 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]]
111
+ // UNSAFE-NEXT: ret double [[TMP0]]
116
112
//
117
113
double test_double_post_inc ()
118
114
{
@@ -125,20 +121,16 @@ double test_double_post_inc()
125
121
// SAFE-NEXT: [[ENTRY:.*:]]
126
122
// SAFE-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)
127
123
// SAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
128
- // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_post_dc.n to ptr), float 1.000000e+00 seq_cst, align 8
129
- // SAFE-NEXT: store float [[TMP0]], ptr [[RETVAL_ASCAST]], align 8
130
- // SAFE-NEXT: [[TMP1:%.*]] = load double, ptr [[RETVAL_ASCAST]], align 8
131
- // SAFE-NEXT: ret double [[TMP1]]
124
+ // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_post_dc.n to ptr), double 1.000000e+00 seq_cst, align 8
125
+ // SAFE-NEXT: ret double [[TMP0]]
132
126
//
133
127
// UNSAFE-LABEL: define dso_local double @test_double_post_dc(
134
128
// UNSAFE-SAME: ) #[[ATTR0]] {
135
129
// UNSAFE-NEXT: [[ENTRY:.*:]]
136
130
// UNSAFE-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)
137
131
// UNSAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
138
- // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_post_dc.n to ptr), float 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]]
139
- // UNSAFE-NEXT: store float [[TMP0]], ptr [[RETVAL_ASCAST]], align 8
140
- // UNSAFE-NEXT: [[TMP1:%.*]] = load double, ptr [[RETVAL_ASCAST]], align 8
141
- // UNSAFE-NEXT: ret double [[TMP1]]
132
+ // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_post_dc.n to ptr), double 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]]
133
+ // UNSAFE-NEXT: ret double [[TMP0]]
142
134
//
143
135
double test_double_post_dc ()
144
136
{
@@ -151,22 +143,18 @@ double test_double_post_dc()
151
143
// SAFE-NEXT: [[ENTRY:.*:]]
152
144
// SAFE-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)
153
145
// SAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
154
- // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_pre_dc.n to ptr), float 1.000000e+00 seq_cst, align 8
155
- // SAFE-NEXT: [[TMP1:%.*]] = fsub float [[TMP0]], 1.000000e+00
156
- // SAFE-NEXT: store float [[TMP1]], ptr [[RETVAL_ASCAST]], align 8
157
- // SAFE-NEXT: [[TMP2:%.*]] = load double, ptr [[RETVAL_ASCAST]], align 8
158
- // SAFE-NEXT: ret double [[TMP2]]
146
+ // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_pre_dc.n to ptr), double 1.000000e+00 seq_cst, align 8
147
+ // SAFE-NEXT: [[TMP1:%.*]] = fsub double [[TMP0]], 1.000000e+00
148
+ // SAFE-NEXT: ret double [[TMP1]]
159
149
//
160
150
// UNSAFE-LABEL: define dso_local double @test_double_pre_dc(
161
151
// UNSAFE-SAME: ) #[[ATTR0]] {
162
152
// UNSAFE-NEXT: [[ENTRY:.*:]]
163
153
// UNSAFE-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)
164
154
// UNSAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
165
- // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_pre_dc.n to ptr), float 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]]
166
- // UNSAFE-NEXT: [[TMP1:%.*]] = fsub float [[TMP0]], 1.000000e+00
167
- // UNSAFE-NEXT: store float [[TMP1]], ptr [[RETVAL_ASCAST]], align 8
168
- // UNSAFE-NEXT: [[TMP2:%.*]] = load double, ptr [[RETVAL_ASCAST]], align 8
169
- // UNSAFE-NEXT: ret double [[TMP2]]
155
+ // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_pre_dc.n to ptr), double 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]]
156
+ // UNSAFE-NEXT: [[TMP1:%.*]] = fsub double [[TMP0]], 1.000000e+00
157
+ // UNSAFE-NEXT: ret double [[TMP1]]
170
158
//
171
159
double test_double_pre_dc ()
172
160
{
@@ -179,22 +167,18 @@ double test_double_pre_dc()
179
167
// SAFE-NEXT: [[ENTRY:.*:]]
180
168
// SAFE-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)
181
169
// SAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
182
- // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_pre_inc.n to ptr), float 1.000000e+00 seq_cst, align 8
183
- // SAFE-NEXT: [[TMP1:%.*]] = fadd float [[TMP0]], 1.000000e+00
184
- // SAFE-NEXT: store float [[TMP1]], ptr [[RETVAL_ASCAST]], align 8
185
- // SAFE-NEXT: [[TMP2:%.*]] = load double, ptr [[RETVAL_ASCAST]], align 8
186
- // SAFE-NEXT: ret double [[TMP2]]
170
+ // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_pre_inc.n to ptr), double 1.000000e+00 seq_cst, align 8
171
+ // SAFE-NEXT: [[TMP1:%.*]] = fadd double [[TMP0]], 1.000000e+00
172
+ // SAFE-NEXT: ret double [[TMP1]]
187
173
//
188
174
// UNSAFE-LABEL: define dso_local double @test_double_pre_inc(
189
175
// UNSAFE-SAME: ) #[[ATTR0]] {
190
176
// UNSAFE-NEXT: [[ENTRY:.*:]]
191
177
// UNSAFE-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)
192
178
// UNSAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
193
- // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_pre_inc.n to ptr), float 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.ignore.denormal.mode [[META3]]
194
- // UNSAFE-NEXT: [[TMP1:%.*]] = fadd float [[TMP0]], 1.000000e+00
195
- // UNSAFE-NEXT: store float [[TMP1]], ptr [[RETVAL_ASCAST]], align 8
196
- // UNSAFE-NEXT: [[TMP2:%.*]] = load double, ptr [[RETVAL_ASCAST]], align 8
197
- // UNSAFE-NEXT: ret double [[TMP2]]
179
+ // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_pre_inc.n to ptr), double 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]]
180
+ // UNSAFE-NEXT: [[TMP1:%.*]] = fadd double [[TMP0]], 1.000000e+00
181
+ // UNSAFE-NEXT: ret double [[TMP1]]
198
182
//
199
183
double test_double_pre_inc ()
200
184
{
@@ -207,20 +191,16 @@ double test_double_pre_inc()
207
191
// SAFE-NEXT: [[ENTRY:.*:]]
208
192
// SAFE-NEXT: [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)
209
193
// SAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
210
- // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_post_inc.n to ptr), float 1.000000e+00 seq_cst, align 2
211
- // SAFE-NEXT: store float [[TMP0]], ptr [[RETVAL_ASCAST]], align 2
212
- // SAFE-NEXT: [[TMP1:%.*]] = load half, ptr [[RETVAL_ASCAST]], align 2
213
- // SAFE-NEXT: ret half [[TMP1]]
194
+ // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_post_inc.n to ptr), half 0xH3C00 seq_cst, align 2
195
+ // SAFE-NEXT: ret half [[TMP0]]
214
196
//
215
197
// UNSAFE-LABEL: define dso_local half @test__Float16_post_inc(
216
198
// UNSAFE-SAME: ) #[[ATTR0]] {
217
199
// UNSAFE-NEXT: [[ENTRY:.*:]]
218
200
// UNSAFE-NEXT: [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)
219
201
// UNSAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
220
- // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_post_inc.n to ptr), float 1.000000e+00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.ignore.denormal.mode [[META3]]
221
- // UNSAFE-NEXT: store float [[TMP0]], ptr [[RETVAL_ASCAST]], align 2
222
- // UNSAFE-NEXT: [[TMP1:%.*]] = load half, ptr [[RETVAL_ASCAST]], align 2
223
- // UNSAFE-NEXT: ret half [[TMP1]]
202
+ // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_post_inc.n to ptr), half 0xH3C00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]]
203
+ // UNSAFE-NEXT: ret half [[TMP0]]
224
204
//
225
205
_Float16 test__Float16_post_inc ()
226
206
{
@@ -233,20 +213,16 @@ _Float16 test__Float16_post_inc()
233
213
// SAFE-NEXT: [[ENTRY:.*:]]
234
214
// SAFE-NEXT: [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)
235
215
// SAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
236
- // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_post_dc.n to ptr), float 1.000000e+00 seq_cst, align 2
237
- // SAFE-NEXT: store float [[TMP0]], ptr [[RETVAL_ASCAST]], align 2
238
- // SAFE-NEXT: [[TMP1:%.*]] = load half, ptr [[RETVAL_ASCAST]], align 2
239
- // SAFE-NEXT: ret half [[TMP1]]
216
+ // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_post_dc.n to ptr), half 0xH3C00 seq_cst, align 2
217
+ // SAFE-NEXT: ret half [[TMP0]]
240
218
//
241
219
// UNSAFE-LABEL: define dso_local half @test__Float16_post_dc(
242
220
// UNSAFE-SAME: ) #[[ATTR0]] {
243
221
// UNSAFE-NEXT: [[ENTRY:.*:]]
244
222
// UNSAFE-NEXT: [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)
245
223
// UNSAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
246
- // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_post_dc.n to ptr), float 1.000000e+00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]]
247
- // UNSAFE-NEXT: store float [[TMP0]], ptr [[RETVAL_ASCAST]], align 2
248
- // UNSAFE-NEXT: [[TMP1:%.*]] = load half, ptr [[RETVAL_ASCAST]], align 2
249
- // UNSAFE-NEXT: ret half [[TMP1]]
224
+ // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_post_dc.n to ptr), half 0xH3C00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]]
225
+ // UNSAFE-NEXT: ret half [[TMP0]]
250
226
//
251
227
_Float16 test__Float16_post_dc ()
252
228
{
@@ -259,22 +235,18 @@ _Float16 test__Float16_post_dc()
259
235
// SAFE-NEXT: [[ENTRY:.*:]]
260
236
// SAFE-NEXT: [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)
261
237
// SAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
262
- // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_dc.n to ptr), float 1.000000e+00 seq_cst, align 2
263
- // SAFE-NEXT: [[TMP1:%.*]] = fsub float [[TMP0]], 1.000000e+00
264
- // SAFE-NEXT: store float [[TMP1]], ptr [[RETVAL_ASCAST]], align 2
265
- // SAFE-NEXT: [[TMP2:%.*]] = load half, ptr [[RETVAL_ASCAST]], align 2
266
- // SAFE-NEXT: ret half [[TMP2]]
238
+ // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_dc.n to ptr), half 0xH3C00 seq_cst, align 2
239
+ // SAFE-NEXT: [[TMP1:%.*]] = fsub half [[TMP0]], 0xH3C00
240
+ // SAFE-NEXT: ret half [[TMP1]]
267
241
//
268
242
// UNSAFE-LABEL: define dso_local half @test__Float16_pre_dc(
269
243
// UNSAFE-SAME: ) #[[ATTR0]] {
270
244
// UNSAFE-NEXT: [[ENTRY:.*:]]
271
245
// UNSAFE-NEXT: [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)
272
246
// UNSAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
273
- // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_dc.n to ptr), float 1.000000e+00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]]
274
- // UNSAFE-NEXT: [[TMP1:%.*]] = fsub float [[TMP0]], 1.000000e+00
275
- // UNSAFE-NEXT: store float [[TMP1]], ptr [[RETVAL_ASCAST]], align 2
276
- // UNSAFE-NEXT: [[TMP2:%.*]] = load half, ptr [[RETVAL_ASCAST]], align 2
277
- // UNSAFE-NEXT: ret half [[TMP2]]
247
+ // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_dc.n to ptr), half 0xH3C00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]]
248
+ // UNSAFE-NEXT: [[TMP1:%.*]] = fsub half [[TMP0]], 0xH3C00
249
+ // UNSAFE-NEXT: ret half [[TMP1]]
278
250
//
279
251
_Float16 test__Float16_pre_dc ()
280
252
{
@@ -287,22 +259,18 @@ _Float16 test__Float16_pre_dc()
287
259
// SAFE-NEXT: [[ENTRY:.*:]]
288
260
// SAFE-NEXT: [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)
289
261
// SAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
290
- // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_inc.n to ptr), float 1.000000e+00 seq_cst, align 2
291
- // SAFE-NEXT: [[TMP1:%.*]] = fadd float [[TMP0]], 1.000000e+00
292
- // SAFE-NEXT: store float [[TMP1]], ptr [[RETVAL_ASCAST]], align 2
293
- // SAFE-NEXT: [[TMP2:%.*]] = load half, ptr [[RETVAL_ASCAST]], align 2
294
- // SAFE-NEXT: ret half [[TMP2]]
262
+ // SAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_inc.n to ptr), half 0xH3C00 seq_cst, align 2
263
+ // SAFE-NEXT: [[TMP1:%.*]] = fadd half [[TMP0]], 0xH3C00
264
+ // SAFE-NEXT: ret half [[TMP1]]
295
265
//
296
266
// UNSAFE-LABEL: define dso_local half @test__Float16_pre_inc(
297
267
// UNSAFE-SAME: ) #[[ATTR0]] {
298
268
// UNSAFE-NEXT: [[ENTRY:.*:]]
299
269
// UNSAFE-NEXT: [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)
300
270
// UNSAFE-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
301
- // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_inc.n to ptr), float 1.000000e+00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.ignore.denormal.mode [[META3]]
302
- // UNSAFE-NEXT: [[TMP1:%.*]] = fadd float [[TMP0]], 1.000000e+00
303
- // UNSAFE-NEXT: store float [[TMP1]], ptr [[RETVAL_ASCAST]], align 2
304
- // UNSAFE-NEXT: [[TMP2:%.*]] = load half, ptr [[RETVAL_ASCAST]], align 2
305
- // UNSAFE-NEXT: ret half [[TMP2]]
271
+ // UNSAFE-NEXT: [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_inc.n to ptr), half 0xH3C00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]]
272
+ // UNSAFE-NEXT: [[TMP1:%.*]] = fadd half [[TMP0]], 0xH3C00
273
+ // UNSAFE-NEXT: ret half [[TMP1]]
306
274
//
307
275
_Float16 test__Float16_pre_inc ()
308
276
{
0 commit comments