[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / inst-select-load-atomic-global.mir
blobaf54c6f1c695a5199e18eb4ca617279115f713d7
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
6 ---
8 name: load_atomic_global_s32_seq_cst
9 legalized:       true
10 regBankSelected: true
11 tracksRegLiveness: true
13 body: |
14   bb.0:
15     liveins:  $vgpr0_vgpr1
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)
34     $vgpr0 = COPY %1
36 ...
38 ---
40 name: load_atomic_global_v2s16_seq_cst
41 legalized:       true
42 regBankSelected: true
43 tracksRegLiveness: true
45 body: |
46   bb.0:
47     liveins:  $vgpr0_vgpr1
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)
66     $vgpr0 = COPY %1
68 ...
70 ---
72 name: load_atomic_global_p3_seq_cst
73 legalized:       true
74 regBankSelected: true
75 tracksRegLiveness: true
77 body: |
78   bb.0:
79     liveins:  $vgpr0_vgpr1
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)
98     $vgpr0 = COPY %1
104 name: load_atomic_global_s64_seq_cst
105 legalized:       true
106 regBankSelected: true
107 tracksRegLiveness: true
109 body: |
110   bb.0:
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
137 legalized:       true
138 regBankSelected: true
139 tracksRegLiveness: true
141 body: |
142   bb.0:
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
169 legalized:       true
170 regBankSelected: true
171 tracksRegLiveness: true
173 body: |
174   bb.0:
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
201 legalized:       true
202 regBankSelected: true
203 tracksRegLiveness: true
205 body: |
206   bb.0:
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
233 legalized:       true
234 regBankSelected: true
235 tracksRegLiveness: true
237 body: |
238   bb.0:
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
265 legalized:       true
266 regBankSelected: true
267 tracksRegLiveness: true
269 body: |
270   bb.0:
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)
314     $vgpr0 = COPY %3
320 name: load_atomic_global_s32_seq_cst_gep_4095
321 legalized:       true
322 regBankSelected: true
323 tracksRegLiveness: true
325 body: |
326   bb.0:
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)
360     $vgpr0 = COPY %3