1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s
3 # RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s
4 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
8 name: load_atomic_global_s32_seq_cst
11 tracksRegLiveness: true
17 ; GFX6-LABEL: name: load_atomic_global_s32_seq_cst
18 ; GFX6: liveins: $vgpr0_vgpr1
19 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
20 ; GFX6: [[LOAD:%[0-9]+]]:vgpr_32(s32) = G_LOAD [[COPY]](p1) :: (load seq_cst 4, addrspace 1)
21 ; GFX6: $vgpr0 = COPY [[LOAD]](s32)
22 ; GFX7-LABEL: name: load_atomic_global_s32_seq_cst
23 ; GFX7: liveins: $vgpr0_vgpr1
24 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
25 ; GFX7: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst 4, addrspace 1)
26 ; GFX7: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
27 ; GFX9-LABEL: name: load_atomic_global_s32_seq_cst
28 ; GFX9: liveins: $vgpr0_vgpr1
29 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
30 ; GFX9: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec :: (load seq_cst 4, addrspace 1)
31 ; GFX9: $vgpr0 = COPY [[GLOBAL_LOAD_DWORD]]
32 %0:vgpr(p1) = COPY $vgpr0_vgpr1
33 %1:vgpr(s32) = G_LOAD %0 :: (load seq_cst 4, align 4, addrspace 1)
40 name: load_atomic_global_v2s16_seq_cst
43 tracksRegLiveness: true
49 ; GFX6-LABEL: name: load_atomic_global_v2s16_seq_cst
50 ; GFX6: liveins: $vgpr0_vgpr1
51 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
52 ; GFX6: [[LOAD:%[0-9]+]]:vgpr_32(<2 x s16>) = G_LOAD [[COPY]](p1) :: (load seq_cst 4, addrspace 1)
53 ; GFX6: $vgpr0 = COPY [[LOAD]](<2 x s16>)
54 ; GFX7-LABEL: name: load_atomic_global_v2s16_seq_cst
55 ; GFX7: liveins: $vgpr0_vgpr1
56 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
57 ; GFX7: [[LOAD:%[0-9]+]]:vgpr_32(<2 x s16>) = G_LOAD [[COPY]](p1) :: (load seq_cst 4, addrspace 1)
58 ; GFX7: $vgpr0 = COPY [[LOAD]](<2 x s16>)
59 ; GFX9-LABEL: name: load_atomic_global_v2s16_seq_cst
60 ; GFX9: liveins: $vgpr0_vgpr1
61 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
62 ; GFX9: [[LOAD:%[0-9]+]]:vgpr_32(<2 x s16>) = G_LOAD [[COPY]](p1) :: (load seq_cst 4, addrspace 1)
63 ; GFX9: $vgpr0 = COPY [[LOAD]](<2 x s16>)
64 %0:vgpr(p1) = COPY $vgpr0_vgpr1
65 %1:vgpr(<2 x s16>) = G_LOAD %0 :: (load seq_cst 4, align 4, addrspace 1)
72 name: load_atomic_global_p3_seq_cst
75 tracksRegLiveness: true
81 ; GFX6-LABEL: name: load_atomic_global_p3_seq_cst
82 ; GFX6: liveins: $vgpr0_vgpr1
83 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
84 ; GFX6: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load seq_cst 4, addrspace 1)
85 ; GFX6: $vgpr0 = COPY [[LOAD]](p3)
86 ; GFX7-LABEL: name: load_atomic_global_p3_seq_cst
87 ; GFX7: liveins: $vgpr0_vgpr1
88 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
89 ; GFX7: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load seq_cst 4, addrspace 1)
90 ; GFX7: $vgpr0 = COPY [[LOAD]](p3)
91 ; GFX9-LABEL: name: load_atomic_global_p3_seq_cst
92 ; GFX9: liveins: $vgpr0_vgpr1
93 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
94 ; GFX9: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load seq_cst 4, addrspace 1)
95 ; GFX9: $vgpr0 = COPY [[LOAD]](p3)
96 %0:vgpr(p1) = COPY $vgpr0_vgpr1
97 %1:vgpr(p3) = G_LOAD %0 :: (load seq_cst 4, align 4, addrspace 1)
104 name: load_atomic_global_s64_seq_cst
106 regBankSelected: true
107 tracksRegLiveness: true
111 liveins: $vgpr0_vgpr1
113 ; GFX6-LABEL: name: load_atomic_global_s64_seq_cst
114 ; GFX6: liveins: $vgpr0_vgpr1
115 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
116 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(s64) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
117 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](s64)
118 ; GFX7-LABEL: name: load_atomic_global_s64_seq_cst
119 ; GFX7: liveins: $vgpr0_vgpr1
120 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
121 ; GFX7: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst 8, addrspace 1)
122 ; GFX7: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]
123 ; GFX9-LABEL: name: load_atomic_global_s64_seq_cst
124 ; GFX9: liveins: $vgpr0_vgpr1
125 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
126 ; GFX9: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec :: (load seq_cst 8, addrspace 1)
127 ; GFX9: $vgpr0_vgpr1 = COPY [[GLOBAL_LOAD_DWORDX2_]]
128 %0:vgpr(p1) = COPY $vgpr0_vgpr1
129 %1:vgpr(s64) = G_LOAD %0 :: (load seq_cst 8, align 8, addrspace 1)
130 $vgpr0_vgpr1 = COPY %1
136 name: load_atomic_global_v2s32_seq_cst
138 regBankSelected: true
139 tracksRegLiveness: true
143 liveins: $vgpr0_vgpr1
145 ; GFX6-LABEL: name: load_atomic_global_v2s32_seq_cst
146 ; GFX6: liveins: $vgpr0_vgpr1
147 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
148 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(<2 x s32>) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
149 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](<2 x s32>)
150 ; GFX7-LABEL: name: load_atomic_global_v2s32_seq_cst
151 ; GFX7: liveins: $vgpr0_vgpr1
152 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
153 ; GFX7: [[LOAD:%[0-9]+]]:vreg_64(<2 x s32>) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
154 ; GFX7: $vgpr0_vgpr1 = COPY [[LOAD]](<2 x s32>)
155 ; GFX9-LABEL: name: load_atomic_global_v2s32_seq_cst
156 ; GFX9: liveins: $vgpr0_vgpr1
157 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
158 ; GFX9: [[LOAD:%[0-9]+]]:vreg_64(<2 x s32>) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
159 ; GFX9: $vgpr0_vgpr1 = COPY [[LOAD]](<2 x s32>)
160 %0:vgpr(p1) = COPY $vgpr0_vgpr1
161 %1:vgpr(<2 x s32>) = G_LOAD %0 :: (load seq_cst 8, align 8, addrspace 1)
162 $vgpr0_vgpr1 = COPY %1
168 name: load_atomic_global_v4s16_seq_cst
170 regBankSelected: true
171 tracksRegLiveness: true
175 liveins: $vgpr0_vgpr1
177 ; GFX6-LABEL: name: load_atomic_global_v4s16_seq_cst
178 ; GFX6: liveins: $vgpr0_vgpr1
179 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
180 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(<4 x s16>) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
181 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](<4 x s16>)
182 ; GFX7-LABEL: name: load_atomic_global_v4s16_seq_cst
183 ; GFX7: liveins: $vgpr0_vgpr1
184 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
185 ; GFX7: [[LOAD:%[0-9]+]]:vreg_64(<4 x s16>) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
186 ; GFX7: $vgpr0_vgpr1 = COPY [[LOAD]](<4 x s16>)
187 ; GFX9-LABEL: name: load_atomic_global_v4s16_seq_cst
188 ; GFX9: liveins: $vgpr0_vgpr1
189 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
190 ; GFX9: [[LOAD:%[0-9]+]]:vreg_64(<4 x s16>) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
191 ; GFX9: $vgpr0_vgpr1 = COPY [[LOAD]](<4 x s16>)
192 %0:vgpr(p1) = COPY $vgpr0_vgpr1
193 %1:vgpr(<4 x s16>) = G_LOAD %0 :: (load seq_cst 8, align 8, addrspace 1)
194 $vgpr0_vgpr1 = COPY %1
200 name: load_atomic_global_p1_seq_cst
202 regBankSelected: true
203 tracksRegLiveness: true
207 liveins: $vgpr0_vgpr1
209 ; GFX6-LABEL: name: load_atomic_global_p1_seq_cst
210 ; GFX6: liveins: $vgpr0_vgpr1
211 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
212 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
213 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
214 ; GFX7-LABEL: name: load_atomic_global_p1_seq_cst
215 ; GFX7: liveins: $vgpr0_vgpr1
216 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
217 ; GFX7: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
218 ; GFX7: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
219 ; GFX9-LABEL: name: load_atomic_global_p1_seq_cst
220 ; GFX9: liveins: $vgpr0_vgpr1
221 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
222 ; GFX9: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
223 ; GFX9: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
224 %0:vgpr(p1) = COPY $vgpr0_vgpr1
225 %1:vgpr(p1) = G_LOAD %0 :: (load seq_cst 8, align 8, addrspace 1)
226 $vgpr0_vgpr1 = COPY %1
232 name: load_atomic_global_p0_seq_cst
234 regBankSelected: true
235 tracksRegLiveness: true
239 liveins: $vgpr0_vgpr1
241 ; GFX6-LABEL: name: load_atomic_global_p0_seq_cst
242 ; GFX6: liveins: $vgpr0_vgpr1
243 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
244 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(p0) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
245 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](p0)
246 ; GFX7-LABEL: name: load_atomic_global_p0_seq_cst
247 ; GFX7: liveins: $vgpr0_vgpr1
248 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
249 ; GFX7: [[LOAD:%[0-9]+]]:vreg_64(p0) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
250 ; GFX7: $vgpr0_vgpr1 = COPY [[LOAD]](p0)
251 ; GFX9-LABEL: name: load_atomic_global_p0_seq_cst
252 ; GFX9: liveins: $vgpr0_vgpr1
253 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
254 ; GFX9: [[LOAD:%[0-9]+]]:vreg_64(p0) = G_LOAD [[COPY]](p1) :: (load seq_cst 8, addrspace 1)
255 ; GFX9: $vgpr0_vgpr1 = COPY [[LOAD]](p0)
256 %0:vgpr(p1) = COPY $vgpr0_vgpr1
257 %1:vgpr(p0) = G_LOAD %0 :: (load seq_cst 8, align 8, addrspace 1)
258 $vgpr0_vgpr1 = COPY %1
264 name: load_atomic_global_s32_seq_cst_gep_m2048
266 regBankSelected: true
267 tracksRegLiveness: true
271 liveins: $vgpr0_vgpr1
273 ; GFX6-LABEL: name: load_atomic_global_s32_seq_cst_gep_m2048
274 ; GFX6: liveins: $vgpr0_vgpr1
275 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
276 ; GFX6: [[C:%[0-9]+]]:vgpr(s64) = G_CONSTANT i64 -2048
277 ; GFX6: [[GEP:%[0-9]+]]:vgpr(p1) = G_GEP [[COPY]], [[C]](s64)
278 ; GFX6: [[LOAD:%[0-9]+]]:vgpr_32(s32) = G_LOAD [[GEP]](p1) :: (load seq_cst 4, addrspace 1)
279 ; GFX6: $vgpr0 = COPY [[LOAD]](s32)
280 ; GFX7-LABEL: name: load_atomic_global_s32_seq_cst_gep_m2048
281 ; GFX7: liveins: $vgpr0_vgpr1
282 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
283 ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4294965248, implicit $exec
284 ; GFX7: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec
285 ; GFX7: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1
286 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
287 ; GFX7: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0
288 ; GFX7: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
289 ; GFX7: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1
290 ; GFX7: [[V_ADD_I32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_I32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_I32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec
291 ; GFX7: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_I32_e64_1]], 0, implicit $exec
292 ; GFX7: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_I32_e64_]], %subreg.sub0, %9, %subreg.sub1
293 ; GFX7: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst 4, addrspace 1)
294 ; GFX7: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
295 ; GFX9-LABEL: name: load_atomic_global_s32_seq_cst_gep_m2048
296 ; GFX9: liveins: $vgpr0_vgpr1
297 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
298 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4294965248, implicit $exec
299 ; GFX9: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec
300 ; GFX9: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1
301 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
302 ; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0
303 ; GFX9: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
304 ; GFX9: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1
305 ; GFX9: [[V_ADD_I32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_I32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_I32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec
306 ; GFX9: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_I32_e64_1]], 0, implicit $exec
307 ; GFX9: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_I32_e64_]], %subreg.sub0, %9, %subreg.sub1
308 ; GFX9: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (load seq_cst 4, addrspace 1)
309 ; GFX9: $vgpr0 = COPY [[GLOBAL_LOAD_DWORD]]
310 %0:vgpr(p1) = COPY $vgpr0_vgpr1
311 %1:vgpr(s64) = G_CONSTANT i64 -2048
312 %2:vgpr(p1) = G_GEP %0, %1
313 %3:vgpr(s32) = G_LOAD %2 :: (load seq_cst 4, align 4, addrspace 1)
320 name: load_atomic_global_s32_seq_cst_gep_4095
322 regBankSelected: true
323 tracksRegLiveness: true
327 liveins: $vgpr0_vgpr1
329 ; GFX6-LABEL: name: load_atomic_global_s32_seq_cst_gep_4095
330 ; GFX6: liveins: $vgpr0_vgpr1
331 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
332 ; GFX6: [[C:%[0-9]+]]:vgpr(s64) = G_CONSTANT i64 4095
333 ; GFX6: [[GEP:%[0-9]+]]:vgpr(p1) = G_GEP [[COPY]], [[C]](s64)
334 ; GFX6: [[LOAD:%[0-9]+]]:vgpr_32(s32) = G_LOAD [[GEP]](p1) :: (load seq_cst 4, addrspace 1)
335 ; GFX6: $vgpr0 = COPY [[LOAD]](s32)
336 ; GFX7-LABEL: name: load_atomic_global_s32_seq_cst_gep_4095
337 ; GFX7: liveins: $vgpr0_vgpr1
338 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
339 ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec
340 ; GFX7: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
341 ; GFX7: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1
342 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
343 ; GFX7: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0
344 ; GFX7: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
345 ; GFX7: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1
346 ; GFX7: [[V_ADD_I32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_I32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_I32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec
347 ; GFX7: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_I32_e64_1]], 0, implicit $exec
348 ; GFX7: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_I32_e64_]], %subreg.sub0, %9, %subreg.sub1
349 ; GFX7: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst 4, addrspace 1)
350 ; GFX7: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
351 ; GFX9-LABEL: name: load_atomic_global_s32_seq_cst_gep_4095
352 ; GFX9: liveins: $vgpr0_vgpr1
353 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
354 ; GFX9: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4095, 0, 0, 0, implicit $exec :: (load seq_cst 4, addrspace 1)
355 ; GFX9: $vgpr0 = COPY [[GLOBAL_LOAD_DWORD]]
356 %0:vgpr(p1) = COPY $vgpr0_vgpr1
357 %1:vgpr(s64) = G_CONSTANT i64 4095
358 %2:vgpr(p1) = G_GEP %0, %1
359 %3:vgpr(s32) = G_LOAD %2 :: (load seq_cst 4, align 4, addrspace 1)