[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-load-local.mir
blob59c57a5fefbed99ebe12d6eba0cb33dca4365638
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -disable-gisel-legality-check -o - %s | FileCheck -check-prefix=GFX6 %s
3 # RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -disable-gisel-legality-check -o - %s | FileCheck -check-prefix=GFX7 %s
4 # RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -disable-gisel-legality-check -o - %s | FileCheck -check-prefix=GFX7 %s
5 # RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
6 # RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+cumode -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s
7 # RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
9 ---
11 name: load_local_s32_from_4
12 legalized:       true
13 regBankSelected: true
14 tracksRegLiveness: true
16 body: |
17   bb.0:
18     liveins:  $vgpr0
20     ; GFX6-LABEL: name: load_local_s32_from_4
21     ; GFX6: liveins: $vgpr0
22     ; GFX6-NEXT: {{  $}}
23     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
24     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
25     ; GFX6-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32), addrspace 3)
26     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_B32_]]
27     ;
28     ; GFX7-LABEL: name: load_local_s32_from_4
29     ; GFX7: liveins: $vgpr0
30     ; GFX7-NEXT: {{  $}}
31     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
32     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
33     ; GFX7-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32), addrspace 3)
34     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_B32_]]
35     ;
36     ; GFX9-LABEL: name: load_local_s32_from_4
37     ; GFX9: liveins: $vgpr0
38     ; GFX9-NEXT: {{  $}}
39     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
40     ; GFX9-NEXT: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s32), addrspace 3)
41     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_B32_gfx9_]]
42     ;
43     ; GFX10-LABEL: name: load_local_s32_from_4
44     ; GFX10: liveins: $vgpr0
45     ; GFX10-NEXT: {{  $}}
46     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
47     ; GFX10-NEXT: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s32), addrspace 3)
48     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_B32_gfx9_]]
49     %0:vgpr(p3) = COPY $vgpr0
50     %1:vgpr(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 3)
51     $vgpr0 = COPY %1
53 ...
55 ---
57 name: load_local_s32_from_2
58 legalized:       true
59 regBankSelected: true
60 tracksRegLiveness: true
62 body: |
63   bb.0:
64     liveins:  $vgpr0
66     ; GFX6-LABEL: name: load_local_s32_from_2
67     ; GFX6: liveins: $vgpr0
68     ; GFX6-NEXT: {{  $}}
69     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
70     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
71     ; GFX6-NEXT: [[DS_READ_U16_:%[0-9]+]]:vgpr_32 = DS_READ_U16 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s16), addrspace 3)
72     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_U16_]]
73     ;
74     ; GFX7-LABEL: name: load_local_s32_from_2
75     ; GFX7: liveins: $vgpr0
76     ; GFX7-NEXT: {{  $}}
77     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
78     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
79     ; GFX7-NEXT: [[DS_READ_U16_:%[0-9]+]]:vgpr_32 = DS_READ_U16 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s16), addrspace 3)
80     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_U16_]]
81     ;
82     ; GFX9-LABEL: name: load_local_s32_from_2
83     ; GFX9: liveins: $vgpr0
84     ; GFX9-NEXT: {{  $}}
85     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
86     ; GFX9-NEXT: [[DS_READ_U16_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U16_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s16), addrspace 3)
87     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_U16_gfx9_]]
88     ;
89     ; GFX10-LABEL: name: load_local_s32_from_2
90     ; GFX10: liveins: $vgpr0
91     ; GFX10-NEXT: {{  $}}
92     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
93     ; GFX10-NEXT: [[DS_READ_U16_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U16_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s16), addrspace 3)
94     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_U16_gfx9_]]
95     %0:vgpr(p3) = COPY $vgpr0
96     %1:vgpr(s32) = G_LOAD %0 :: (load (s16), align 2, addrspace 3)
97     $vgpr0 = COPY %1
99 ...
103 name: load_local_s32_from_1
104 legalized:       true
105 regBankSelected: true
106 tracksRegLiveness: true
107 machineFunctionInfo:
108   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
109   stackPtrOffsetReg: $sgpr32
111 body: |
112   bb.0:
113     liveins:  $vgpr0
115     ; GFX6-LABEL: name: load_local_s32_from_1
116     ; GFX6: liveins: $vgpr0
117     ; GFX6-NEXT: {{  $}}
118     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
119     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
120     ; GFX6-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
121     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
122     ;
123     ; GFX7-LABEL: name: load_local_s32_from_1
124     ; GFX7: liveins: $vgpr0
125     ; GFX7-NEXT: {{  $}}
126     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
127     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
128     ; GFX7-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
129     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
130     ;
131     ; GFX9-LABEL: name: load_local_s32_from_1
132     ; GFX9: liveins: $vgpr0
133     ; GFX9-NEXT: {{  $}}
134     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
135     ; GFX9-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s8), addrspace 3)
136     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
137     ;
138     ; GFX10-LABEL: name: load_local_s32_from_1
139     ; GFX10: liveins: $vgpr0
140     ; GFX10-NEXT: {{  $}}
141     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
142     ; GFX10-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s8), addrspace 3)
143     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
144     %0:vgpr(p3) = COPY $vgpr0
145     %1:vgpr(s32) = G_LOAD %0 :: (load (s8), align 1, addrspace 3)
146     $vgpr0 = COPY %1
152 name: load_local_v2s32
153 legalized:       true
154 regBankSelected: true
155 tracksRegLiveness: true
157 body: |
158   bb.0:
159     liveins:  $vgpr0
161     ; GFX6-LABEL: name: load_local_v2s32
162     ; GFX6: liveins: $vgpr0
163     ; GFX6-NEXT: {{  $}}
164     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
165     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
166     ; GFX6-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<2 x s32>), addrspace 3)
167     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
168     ;
169     ; GFX7-LABEL: name: load_local_v2s32
170     ; GFX7: liveins: $vgpr0
171     ; GFX7-NEXT: {{  $}}
172     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
173     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
174     ; GFX7-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<2 x s32>), addrspace 3)
175     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
176     ;
177     ; GFX9-LABEL: name: load_local_v2s32
178     ; GFX9: liveins: $vgpr0
179     ; GFX9-NEXT: {{  $}}
180     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
181     ; GFX9-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<2 x s32>), addrspace 3)
182     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
183     ;
184     ; GFX10-LABEL: name: load_local_v2s32
185     ; GFX10: liveins: $vgpr0
186     ; GFX10-NEXT: {{  $}}
187     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
188     ; GFX10-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<2 x s32>), addrspace 3)
189     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
190     %0:vgpr(p3) = COPY $vgpr0
191     %1:vgpr(<2 x s32>) = G_LOAD %0 :: (load (<2 x s32>), align 8, addrspace 3)
192     $vgpr0_vgpr1 = COPY %1
198 name: load_local_v2s32_align4
199 legalized:       true
200 regBankSelected: true
201 tracksRegLiveness: true
203 body: |
204   bb.0:
205     liveins:  $vgpr0
207     ; GFX6-LABEL: name: load_local_v2s32_align4
208     ; GFX6: liveins: $vgpr0
209     ; GFX6-NEXT: {{  $}}
210     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
211     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
212     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:vreg_64(<2 x s32>) = G_LOAD [[COPY]](p3) :: (load (<2 x s32>), align 4, addrspace 3)
213     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](<2 x s32>)
214     ;
215     ; GFX7-LABEL: name: load_local_v2s32_align4
216     ; GFX7: liveins: $vgpr0
217     ; GFX7-NEXT: {{  $}}
218     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
219     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
220     ; GFX7-NEXT: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load (<2 x s32>), align 4, addrspace 3)
221     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]]
222     ;
223     ; GFX9-LABEL: name: load_local_v2s32_align4
224     ; GFX9: liveins: $vgpr0
225     ; GFX9-NEXT: {{  $}}
226     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
227     ; GFX9-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<2 x s32>), align 4, addrspace 3)
228     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
229     ;
230     ; GFX10-LABEL: name: load_local_v2s32_align4
231     ; GFX10: liveins: $vgpr0
232     ; GFX10-NEXT: {{  $}}
233     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
234     ; GFX10-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<2 x s32>), align 4, addrspace 3)
235     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
236     %0:vgpr(p3) = COPY $vgpr0
237     %1:vgpr(<2 x s32>) = G_LOAD %0 :: (load (<2 x s32>), align 4, addrspace 3)
238     $vgpr0_vgpr1 = COPY %1
244 name: load_local_s64
245 legalized:       true
246 regBankSelected: true
247 tracksRegLiveness: true
249 body: |
250   bb.0:
251     liveins:  $vgpr0
253     ; GFX6-LABEL: name: load_local_s64
254     ; GFX6: liveins: $vgpr0
255     ; GFX6-NEXT: {{  $}}
256     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
257     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
258     ; GFX6-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s64), addrspace 3)
259     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
260     ;
261     ; GFX7-LABEL: name: load_local_s64
262     ; GFX7: liveins: $vgpr0
263     ; GFX7-NEXT: {{  $}}
264     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
265     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
266     ; GFX7-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s64), addrspace 3)
267     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
268     ;
269     ; GFX9-LABEL: name: load_local_s64
270     ; GFX9: liveins: $vgpr0
271     ; GFX9-NEXT: {{  $}}
272     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
273     ; GFX9-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s64), addrspace 3)
274     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
275     ;
276     ; GFX10-LABEL: name: load_local_s64
277     ; GFX10: liveins: $vgpr0
278     ; GFX10-NEXT: {{  $}}
279     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
280     ; GFX10-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s64), addrspace 3)
281     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
282     %0:vgpr(p3) = COPY $vgpr0
283     %1:vgpr(s64) = G_LOAD %0 :: (load (s64), align 8, addrspace 3)
284     $vgpr0_vgpr1 = COPY %1
290 name: load_local_s64_align4
291 legalized:       true
292 regBankSelected: true
293 tracksRegLiveness: true
295 body: |
296   bb.0:
297     liveins:  $vgpr0
299     ; GFX6-LABEL: name: load_local_s64_align4
300     ; GFX6: liveins: $vgpr0
301     ; GFX6-NEXT: {{  $}}
302     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
303     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
304     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:vreg_64(s64) = G_LOAD [[COPY]](p3) :: (load (s64), align 4, addrspace 3)
305     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](s64)
306     ;
307     ; GFX7-LABEL: name: load_local_s64_align4
308     ; GFX7: liveins: $vgpr0
309     ; GFX7-NEXT: {{  $}}
310     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
311     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
312     ; GFX7-NEXT: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load (s64), align 4, addrspace 3)
313     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]]
314     ;
315     ; GFX9-LABEL: name: load_local_s64_align4
316     ; GFX9: liveins: $vgpr0
317     ; GFX9-NEXT: {{  $}}
318     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
319     ; GFX9-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (s64), align 4, addrspace 3)
320     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
321     ;
322     ; GFX10-LABEL: name: load_local_s64_align4
323     ; GFX10: liveins: $vgpr0
324     ; GFX10-NEXT: {{  $}}
325     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
326     ; GFX10-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (s64), align 4, addrspace 3)
327     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
328     %0:vgpr(p3) = COPY $vgpr0
329     %1:vgpr(s64) = G_LOAD %0 :: (load (s64), align 4, addrspace 3)
330     $vgpr0_vgpr1 = COPY %1
336 name: load_local_p3_from_4
337 legalized:       true
338 regBankSelected: true
339 tracksRegLiveness: true
341 body: |
342   bb.0:
343     liveins:  $vgpr0
345     ; GFX6-LABEL: name: load_local_p3_from_4
346     ; GFX6: liveins: $vgpr0
347     ; GFX6-NEXT: {{  $}}
348     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
349     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
350     ; GFX6-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (p3), addrspace 3)
351     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_B32_]]
352     ;
353     ; GFX7-LABEL: name: load_local_p3_from_4
354     ; GFX7: liveins: $vgpr0
355     ; GFX7-NEXT: {{  $}}
356     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
357     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
358     ; GFX7-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (p3), addrspace 3)
359     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_B32_]]
360     ;
361     ; GFX9-LABEL: name: load_local_p3_from_4
362     ; GFX9: liveins: $vgpr0
363     ; GFX9-NEXT: {{  $}}
364     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
365     ; GFX9-NEXT: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (p3), addrspace 3)
366     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_B32_gfx9_]]
367     ;
368     ; GFX10-LABEL: name: load_local_p3_from_4
369     ; GFX10: liveins: $vgpr0
370     ; GFX10-NEXT: {{  $}}
371     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
372     ; GFX10-NEXT: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (p3), addrspace 3)
373     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_B32_gfx9_]]
374     %0:vgpr(p3) = COPY $vgpr0
375     %1:vgpr(p3) = G_LOAD %0 :: (load (p3), align 4, addrspace 3)
376     $vgpr0 = COPY %1
382 name: load_local_p5_from_4
383 legalized:       true
384 regBankSelected: true
385 tracksRegLiveness: true
387 body: |
388   bb.0:
389     liveins:  $vgpr0
391     ; GFX6-LABEL: name: load_local_p5_from_4
392     ; GFX6: liveins: $vgpr0
393     ; GFX6-NEXT: {{  $}}
394     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
395     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
396     ; GFX6-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (p5), addrspace 3)
397     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_B32_]]
398     ;
399     ; GFX7-LABEL: name: load_local_p5_from_4
400     ; GFX7: liveins: $vgpr0
401     ; GFX7-NEXT: {{  $}}
402     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
403     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
404     ; GFX7-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (p5), addrspace 3)
405     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_B32_]]
406     ;
407     ; GFX9-LABEL: name: load_local_p5_from_4
408     ; GFX9: liveins: $vgpr0
409     ; GFX9-NEXT: {{  $}}
410     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
411     ; GFX9-NEXT: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (p5), addrspace 3)
412     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_B32_gfx9_]]
413     ;
414     ; GFX10-LABEL: name: load_local_p5_from_4
415     ; GFX10: liveins: $vgpr0
416     ; GFX10-NEXT: {{  $}}
417     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
418     ; GFX10-NEXT: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (p5), addrspace 3)
419     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_B32_gfx9_]]
420     %0:vgpr(p3) = COPY $vgpr0
421     %1:vgpr(p5) = G_LOAD %0 :: (load (p5), align 4, addrspace 3)
422     $vgpr0 = COPY %1
428 name: load_local_p1_align8
429 legalized:       true
430 regBankSelected: true
431 tracksRegLiveness: true
433 body: |
434   bb.0:
435     liveins:  $vgpr0
437     ; GFX6-LABEL: name: load_local_p1_align8
438     ; GFX6: liveins: $vgpr0
439     ; GFX6-NEXT: {{  $}}
440     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
441     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
442     ; GFX6-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (p1), addrspace 3)
443     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
444     ;
445     ; GFX7-LABEL: name: load_local_p1_align8
446     ; GFX7: liveins: $vgpr0
447     ; GFX7-NEXT: {{  $}}
448     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
449     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
450     ; GFX7-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (p1), addrspace 3)
451     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
452     ;
453     ; GFX9-LABEL: name: load_local_p1_align8
454     ; GFX9: liveins: $vgpr0
455     ; GFX9-NEXT: {{  $}}
456     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
457     ; GFX9-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (p1), addrspace 3)
458     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
459     ;
460     ; GFX10-LABEL: name: load_local_p1_align8
461     ; GFX10: liveins: $vgpr0
462     ; GFX10-NEXT: {{  $}}
463     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
464     ; GFX10-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (p1), addrspace 3)
465     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
466     %0:vgpr(p3) = COPY $vgpr0
467     %1:vgpr(p1) = G_LOAD %0 :: (load (p1), align 8, addrspace 3)
468     $vgpr0_vgpr1 = COPY %1
474 name: load_local_p1_align4
475 legalized:       true
476 regBankSelected: true
477 tracksRegLiveness: true
479 body: |
480   bb.0:
481     liveins:  $vgpr0
483     ; GFX6-LABEL: name: load_local_p1_align4
484     ; GFX6: liveins: $vgpr0
485     ; GFX6-NEXT: {{  $}}
486     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
487     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
488     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p3) :: (load (p1), align 4, addrspace 3)
489     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
490     ;
491     ; GFX7-LABEL: name: load_local_p1_align4
492     ; GFX7: liveins: $vgpr0
493     ; GFX7-NEXT: {{  $}}
494     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
495     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
496     ; GFX7-NEXT: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load (p1), align 4, addrspace 3)
497     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]]
498     ;
499     ; GFX9-LABEL: name: load_local_p1_align4
500     ; GFX9: liveins: $vgpr0
501     ; GFX9-NEXT: {{  $}}
502     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
503     ; GFX9-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (p1), align 4, addrspace 3)
504     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
505     ;
506     ; GFX10-LABEL: name: load_local_p1_align4
507     ; GFX10: liveins: $vgpr0
508     ; GFX10-NEXT: {{  $}}
509     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
510     ; GFX10-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (p1), align 4, addrspace 3)
511     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
512     %0:vgpr(p3) = COPY $vgpr0
513     %1:vgpr(p1) = G_LOAD %0 :: (load (p1), align 4, addrspace 3)
514     $vgpr0_vgpr1 = COPY %1
520 name: load_local_p999_from_8
521 legalized:       true
522 regBankSelected: true
523 tracksRegLiveness: true
525 body: |
526   bb.0:
527     liveins:  $vgpr0
529     ; GFX6-LABEL: name: load_local_p999_from_8
530     ; GFX6: liveins: $vgpr0
531     ; GFX6-NEXT: {{  $}}
532     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
533     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
534     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p999) = G_LOAD [[COPY]](p3) :: (load (p999), addrspace 3)
535     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p999)
536     ;
537     ; GFX7-LABEL: name: load_local_p999_from_8
538     ; GFX7: liveins: $vgpr0
539     ; GFX7-NEXT: {{  $}}
540     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
541     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
542     ; GFX7-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p999) = G_LOAD [[COPY]](p3) :: (load (p999), addrspace 3)
543     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p999)
544     ;
545     ; GFX9-LABEL: name: load_local_p999_from_8
546     ; GFX9: liveins: $vgpr0
547     ; GFX9-NEXT: {{  $}}
548     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
549     ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p999) = G_LOAD [[COPY]](p3) :: (load (p999), addrspace 3)
550     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p999)
551     ;
552     ; GFX10-LABEL: name: load_local_p999_from_8
553     ; GFX10: liveins: $vgpr0
554     ; GFX10-NEXT: {{  $}}
555     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
556     ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p999) = G_LOAD [[COPY]](p3) :: (load (p999), addrspace 3)
557     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p999)
558     %0:vgpr(p3) = COPY $vgpr0
559     %1:vgpr(p999) = G_LOAD %0 :: (load (p999), align 8, addrspace 3)
560     $vgpr0_vgpr1 = COPY %1
566 name: load_local_v2p3
567 legalized:       true
568 regBankSelected: true
569 tracksRegLiveness: true
571 body: |
572   bb.0:
573     liveins:  $vgpr0
575     ; GFX6-LABEL: name: load_local_v2p3
576     ; GFX6: liveins: $vgpr0
577     ; GFX6-NEXT: {{  $}}
578     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
579     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
580     ; GFX6-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<2 x s32>), addrspace 3)
581     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
582     ;
583     ; GFX7-LABEL: name: load_local_v2p3
584     ; GFX7: liveins: $vgpr0
585     ; GFX7-NEXT: {{  $}}
586     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
587     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
588     ; GFX7-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<2 x s32>), addrspace 3)
589     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
590     ;
591     ; GFX9-LABEL: name: load_local_v2p3
592     ; GFX9: liveins: $vgpr0
593     ; GFX9-NEXT: {{  $}}
594     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
595     ; GFX9-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<2 x s32>), addrspace 3)
596     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
597     ;
598     ; GFX10-LABEL: name: load_local_v2p3
599     ; GFX10: liveins: $vgpr0
600     ; GFX10-NEXT: {{  $}}
601     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
602     ; GFX10-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<2 x s32>), addrspace 3)
603     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
604     %0:vgpr(p3) = COPY $vgpr0
605     %1:vgpr(<2 x s32>) = G_LOAD %0 :: (load (<2 x s32>), align 8, addrspace 3)
606     %2:vgpr(<2 x p3>) = G_BITCAST %1(<2 x s32>)
607     $vgpr0_vgpr1 = COPY %2
613 name: load_local_v2s16
614 legalized:       true
615 regBankSelected: true
616 tracksRegLiveness: true
618 body: |
619   bb.0:
620     liveins:  $vgpr0
622     ; GFX6-LABEL: name: load_local_v2s16
623     ; GFX6: liveins: $vgpr0
624     ; GFX6-NEXT: {{  $}}
625     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
626     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
627     ; GFX6-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<2 x s16>), addrspace 3)
628     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_B32_]]
629     ;
630     ; GFX7-LABEL: name: load_local_v2s16
631     ; GFX7: liveins: $vgpr0
632     ; GFX7-NEXT: {{  $}}
633     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
634     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
635     ; GFX7-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<2 x s16>), addrspace 3)
636     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_B32_]]
637     ;
638     ; GFX9-LABEL: name: load_local_v2s16
639     ; GFX9: liveins: $vgpr0
640     ; GFX9-NEXT: {{  $}}
641     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
642     ; GFX9-NEXT: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<2 x s16>), addrspace 3)
643     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_B32_gfx9_]]
644     ;
645     ; GFX10-LABEL: name: load_local_v2s16
646     ; GFX10: liveins: $vgpr0
647     ; GFX10-NEXT: {{  $}}
648     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
649     ; GFX10-NEXT: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<2 x s16>), addrspace 3)
650     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_B32_gfx9_]]
651     %0:vgpr(p3) = COPY $vgpr0
652     %1:vgpr(<2 x s16>) = G_LOAD %0 :: (load (<2 x s16>), align 4, addrspace 3)
653     $vgpr0 = COPY %1
659 name: load_local_v4s16
660 legalized:       true
661 regBankSelected: true
662 tracksRegLiveness: true
664 body: |
665   bb.0:
666     liveins:  $vgpr0
668     ; GFX6-LABEL: name: load_local_v4s16
669     ; GFX6: liveins: $vgpr0
670     ; GFX6-NEXT: {{  $}}
671     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
672     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
673     ; GFX6-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<4 x s16>), addrspace 3)
674     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
675     ;
676     ; GFX7-LABEL: name: load_local_v4s16
677     ; GFX7: liveins: $vgpr0
678     ; GFX7-NEXT: {{  $}}
679     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
680     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
681     ; GFX7-NEXT: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<4 x s16>), addrspace 3)
682     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]]
683     ;
684     ; GFX9-LABEL: name: load_local_v4s16
685     ; GFX9: liveins: $vgpr0
686     ; GFX9-NEXT: {{  $}}
687     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
688     ; GFX9-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<4 x s16>), addrspace 3)
689     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
690     ;
691     ; GFX10-LABEL: name: load_local_v4s16
692     ; GFX10: liveins: $vgpr0
693     ; GFX10-NEXT: {{  $}}
694     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
695     ; GFX10-NEXT: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<4 x s16>), addrspace 3)
696     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]]
697     %0:vgpr(p3) = COPY $vgpr0
698     %1:vgpr(<4 x s16>) = G_LOAD %0 :: (load (<4 x s16>), align 8, addrspace 3)
699     $vgpr0_vgpr1 = COPY %1
703 # ---
705 # name: load_local_v6s16
706 # legalized:       true
707 # regBankSelected: true
708 # tracksRegLiveness: true
709 # machineFunctionInfo:
710 #   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
711 #   stackPtrOffsetReg: $sgpr32
713 # body: |
714 #   bb.0:
715 #     liveins:  $vgpr0
717 #     %0:vgpr(p3) = COPY $vgpr0
718 #     %1:vgpr(<6 x  s16>) = G_LOAD %0 :: (load (<6 x s16>), align 4, addrspace 3)
719 #     $vgpr0_vgpr1_vgpr2 = COPY %1
721 # ...
723 ################################################################################
724 ### Stress addressing modes
725 ################################################################################
729 name: load_local_s32_from_1_gep_65535
730 legalized:       true
731 regBankSelected: true
732 tracksRegLiveness: true
734 body: |
735   bb.0:
736     liveins:  $vgpr0
738     ; GFX6-LABEL: name: load_local_s32_from_1_gep_65535
739     ; GFX6: liveins: $vgpr0
740     ; GFX6-NEXT: {{  $}}
741     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
742     ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
743     ; GFX6-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
744     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
745     ; GFX6-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_ADD_CO_U32_e64_]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
746     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
747     ;
748     ; GFX7-LABEL: name: load_local_s32_from_1_gep_65535
749     ; GFX7: liveins: $vgpr0
750     ; GFX7-NEXT: {{  $}}
751     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
752     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
753     ; GFX7-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[COPY]], 65535, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
754     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
755     ;
756     ; GFX9-LABEL: name: load_local_s32_from_1_gep_65535
757     ; GFX9: liveins: $vgpr0
758     ; GFX9-NEXT: {{  $}}
759     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
760     ; GFX9-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[COPY]], 65535, 0, implicit $exec :: (load (s8), addrspace 3)
761     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
762     ;
763     ; GFX10-LABEL: name: load_local_s32_from_1_gep_65535
764     ; GFX10: liveins: $vgpr0
765     ; GFX10-NEXT: {{  $}}
766     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
767     ; GFX10-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[COPY]], 65535, 0, implicit $exec :: (load (s8), addrspace 3)
768     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
769     %0:vgpr(p3) = COPY $vgpr0
770     %1:vgpr(s32) = G_CONSTANT i32 65535
771     %2:vgpr(p3) = G_PTR_ADD %0, %1
772     %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 3)
773     $vgpr0 = COPY %3
779 name: load_local_s32_from_1_gep_65535_known_bits_base_address
780 legalized:       true
781 regBankSelected: true
782 tracksRegLiveness: true
784 body: |
785   bb.0:
786     liveins:  $vgpr0
788     ; GFX6-LABEL: name: load_local_s32_from_1_gep_65535_known_bits_base_address
789     ; GFX6: liveins: $vgpr0
790     ; GFX6-NEXT: {{  $}}
791     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
792     ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec
793     ; GFX6-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec
794     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
795     ; GFX6-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_AND_B32_e64_]], 65535, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
796     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
797     ;
798     ; GFX7-LABEL: name: load_local_s32_from_1_gep_65535_known_bits_base_address
799     ; GFX7: liveins: $vgpr0
800     ; GFX7-NEXT: {{  $}}
801     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
802     ; GFX7-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec
803     ; GFX7-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec
804     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
805     ; GFX7-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_AND_B32_e64_]], 65535, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
806     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
807     ;
808     ; GFX9-LABEL: name: load_local_s32_from_1_gep_65535_known_bits_base_address
809     ; GFX9: liveins: $vgpr0
810     ; GFX9-NEXT: {{  $}}
811     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
812     ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec
813     ; GFX9-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec
814     ; GFX9-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_AND_B32_e64_]], 65535, 0, implicit $exec :: (load (s8), addrspace 3)
815     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
816     ;
817     ; GFX10-LABEL: name: load_local_s32_from_1_gep_65535_known_bits_base_address
818     ; GFX10: liveins: $vgpr0
819     ; GFX10-NEXT: {{  $}}
820     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
821     ; GFX10-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec
822     ; GFX10-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec
823     ; GFX10-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_AND_B32_e64_]], 65535, 0, implicit $exec :: (load (s8), addrspace 3)
824     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
825     %0:vgpr(s32) = COPY $vgpr0
826     %1:vgpr(s32) = G_CONSTANT i32 2147483647
827     %2:vgpr(s32) = G_AND %0, %1
828     %3:vgpr(p3) = G_INTTOPTR %2
829     %4:vgpr(s32) = G_CONSTANT i32 65535
830     %5:vgpr(p3) = G_PTR_ADD %3, %4
831     %6:vgpr(s32) = G_LOAD %5 :: (load (s8), align 1, addrspace 3)
832     $vgpr0 = COPY %6
838 name: load_local_s32_from_1_gep_65536
839 legalized:       true
840 regBankSelected: true
841 tracksRegLiveness: true
843 body: |
844   bb.0:
845     liveins:  $vgpr0
847     ; GFX6-LABEL: name: load_local_s32_from_1_gep_65536
848     ; GFX6: liveins: $vgpr0
849     ; GFX6-NEXT: {{  $}}
850     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
851     ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65536, implicit $exec
852     ; GFX6-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
853     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
854     ; GFX6-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_ADD_CO_U32_e64_]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
855     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
856     ;
857     ; GFX7-LABEL: name: load_local_s32_from_1_gep_65536
858     ; GFX7: liveins: $vgpr0
859     ; GFX7-NEXT: {{  $}}
860     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
861     ; GFX7-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65536, implicit $exec
862     ; GFX7-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
863     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
864     ; GFX7-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_ADD_CO_U32_e64_]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
865     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
866     ;
867     ; GFX9-LABEL: name: load_local_s32_from_1_gep_65536
868     ; GFX9: liveins: $vgpr0
869     ; GFX9-NEXT: {{  $}}
870     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
871     ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65536, implicit $exec
872     ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
873     ; GFX9-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_ADD_U32_e64_]], 0, 0, implicit $exec :: (load (s8), addrspace 3)
874     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
875     ;
876     ; GFX10-LABEL: name: load_local_s32_from_1_gep_65536
877     ; GFX10: liveins: $vgpr0
878     ; GFX10-NEXT: {{  $}}
879     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
880     ; GFX10-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65536, implicit $exec
881     ; GFX10-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
882     ; GFX10-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_ADD_U32_e64_]], 0, 0, implicit $exec :: (load (s8), addrspace 3)
883     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
884     %0:vgpr(p3) = COPY $vgpr0
885     %1:vgpr(s32) = G_CONSTANT i32 65536
886     %2:vgpr(p3) = G_PTR_ADD %0, %1
887     %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 3)
888     $vgpr0 = COPY %3
894 name: load_local_s32_from_1_gep_m1
895 legalized:       true
896 regBankSelected: true
897 tracksRegLiveness: true
899 body: |
900   bb.0:
901     liveins:  $vgpr0
903     ; GFX6-LABEL: name: load_local_s32_from_1_gep_m1
904     ; GFX6: liveins: $vgpr0
905     ; GFX6-NEXT: {{  $}}
906     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
907     ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec
908     ; GFX6-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
909     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
910     ; GFX6-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_ADD_CO_U32_e64_]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
911     ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
912     ;
913     ; GFX7-LABEL: name: load_local_s32_from_1_gep_m1
914     ; GFX7: liveins: $vgpr0
915     ; GFX7-NEXT: {{  $}}
916     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
917     ; GFX7-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec
918     ; GFX7-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
919     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
920     ; GFX7-NEXT: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_ADD_CO_U32_e64_]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)
921     ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_U8_]]
922     ;
923     ; GFX9-LABEL: name: load_local_s32_from_1_gep_m1
924     ; GFX9: liveins: $vgpr0
925     ; GFX9-NEXT: {{  $}}
926     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
927     ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec
928     ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
929     ; GFX9-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_ADD_U32_e64_]], 0, 0, implicit $exec :: (load (s8), addrspace 3)
930     ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
931     ;
932     ; GFX10-LABEL: name: load_local_s32_from_1_gep_m1
933     ; GFX10: liveins: $vgpr0
934     ; GFX10-NEXT: {{  $}}
935     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
936     ; GFX10-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec
937     ; GFX10-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
938     ; GFX10-NEXT: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_ADD_U32_e64_]], 0, 0, implicit $exec :: (load (s8), addrspace 3)
939     ; GFX10-NEXT: $vgpr0 = COPY [[DS_READ_U8_gfx9_]]
940     %0:vgpr(p3) = COPY $vgpr0
941     %1:vgpr(s32) = G_CONSTANT i32 -1
942     %2:vgpr(p3) = G_PTR_ADD %0, %1
943     %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 3)
944     $vgpr0 = COPY %3
950 name: load_local_s64_align4_from_1_gep_1016
951 legalized:       true
952 regBankSelected: true
953 tracksRegLiveness: true
955 body: |
956   bb.0:
957     liveins:  $vgpr0_vgpr1
959     ; GFX6-LABEL: name: load_local_s64_align4_from_1_gep_1016
960     ; GFX6: liveins: $vgpr0_vgpr1
961     ; GFX6-NEXT: {{  $}}
962     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
963     ; GFX6-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1016
964     ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY]], [[C]](s32)
965     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
966     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:vreg_64(s64) = G_LOAD [[PTR_ADD]](p3) :: (load (s64), align 4, addrspace 3)
967     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](s64)
968     ;
969     ; GFX7-LABEL: name: load_local_s64_align4_from_1_gep_1016
970     ; GFX7: liveins: $vgpr0_vgpr1
971     ; GFX7-NEXT: {{  $}}
972     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
973     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
974     ; GFX7-NEXT: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[COPY]], 254, 255, 0, implicit $m0, implicit $exec :: (load (s64), align 4, addrspace 3)
975     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]]
976     ;
977     ; GFX9-LABEL: name: load_local_s64_align4_from_1_gep_1016
978     ; GFX9: liveins: $vgpr0_vgpr1
979     ; GFX9-NEXT: {{  $}}
980     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
981     ; GFX9-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 254, 255, 0, implicit $exec :: (load (s64), align 4, addrspace 3)
982     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
983     ;
984     ; GFX10-LABEL: name: load_local_s64_align4_from_1_gep_1016
985     ; GFX10: liveins: $vgpr0_vgpr1
986     ; GFX10-NEXT: {{  $}}
987     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
988     ; GFX10-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 254, 255, 0, implicit $exec :: (load (s64), align 4, addrspace 3)
989     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
990     %0:vgpr(p3) = COPY $vgpr0
991     %1:vgpr(s32) = G_CONSTANT i32 1016
992     %2:vgpr(p3) = G_PTR_ADD %0, %1
993     %3:vgpr(s64) = G_LOAD %2 :: (load (s64), align 4, addrspace 3)
994     $vgpr0_vgpr1 = COPY %3
1000 name: load_local_s64_align4_from_1_gep_1020
1001 legalized:       true
1002 regBankSelected: true
1003 tracksRegLiveness: true
1005 body: |
1006   bb.0:
1007     liveins:  $vgpr0_vgpr1
1009     ; GFX6-LABEL: name: load_local_s64_align4_from_1_gep_1020
1010     ; GFX6: liveins: $vgpr0_vgpr1
1011     ; GFX6-NEXT: {{  $}}
1012     ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
1013     ; GFX6-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1020
1014     ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY]], [[C]](s32)
1015     ; GFX6-NEXT: $m0 = S_MOV_B32 -1
1016     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:vreg_64(s64) = G_LOAD [[PTR_ADD]](p3) :: (load (s64), align 4, addrspace 3)
1017     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](s64)
1018     ;
1019     ; GFX7-LABEL: name: load_local_s64_align4_from_1_gep_1020
1020     ; GFX7: liveins: $vgpr0_vgpr1
1021     ; GFX7-NEXT: {{  $}}
1022     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1023     ; GFX7-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1020, implicit $exec
1024     ; GFX7-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
1025     ; GFX7-NEXT: $m0 = S_MOV_B32 -1
1026     ; GFX7-NEXT: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[V_ADD_CO_U32_e64_]], 0, 1, 0, implicit $m0, implicit $exec :: (load (s64), align 4, addrspace 3)
1027     ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]]
1028     ;
1029     ; GFX9-LABEL: name: load_local_s64_align4_from_1_gep_1020
1030     ; GFX9: liveins: $vgpr0_vgpr1
1031     ; GFX9-NEXT: {{  $}}
1032     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1033     ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1020, implicit $exec
1034     ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
1035     ; GFX9-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[V_ADD_U32_e64_]], 0, 1, 0, implicit $exec :: (load (s64), align 4, addrspace 3)
1036     ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
1037     ;
1038     ; GFX10-LABEL: name: load_local_s64_align4_from_1_gep_1020
1039     ; GFX10: liveins: $vgpr0_vgpr1
1040     ; GFX10-NEXT: {{  $}}
1041     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1042     ; GFX10-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1020, implicit $exec
1043     ; GFX10-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec
1044     ; GFX10-NEXT: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[V_ADD_U32_e64_]], 0, 1, 0, implicit $exec :: (load (s64), align 4, addrspace 3)
1045     ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]]
1046     %0:vgpr(p3) = COPY $vgpr0
1047     %1:vgpr(s32) = G_CONSTANT i32 1020
1048     %2:vgpr(p3) = G_PTR_ADD %0, %1
1049     %3:vgpr(s64) = G_LOAD %2 :: (load (s64), align 4, addrspace 3)
1050     $vgpr0_vgpr1 = COPY %3