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=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX8 %s
5# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s
6
7---
8
9name: load_constant_s32_from_4
10legalized:       true
11regBankSelected: true
12tracksRegLiveness: true
13
14
15body: |
16  bb.0:
17    liveins:  $sgpr0_sgpr1
18
19    ; GFX6-LABEL: name: load_constant_s32_from_4
20    ; GFX6: liveins: $sgpr0_sgpr1
21    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
22    ; GFX6: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
23    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
24    ; GFX7-LABEL: name: load_constant_s32_from_4
25    ; GFX7: liveins: $sgpr0_sgpr1
26    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
27    ; GFX7: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
28    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
29    ; GFX8-LABEL: name: load_constant_s32_from_4
30    ; GFX8: liveins: $sgpr0_sgpr1
31    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
32    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
33    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
34    ; GFX10-LABEL: name: load_constant_s32_from_4
35    ; GFX10: liveins: $sgpr0_sgpr1
36    ; GFX10: $vcc_hi = IMPLICIT_DEF
37    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
38    ; GFX10: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
39    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
40    %0:sgpr(p4) = COPY $sgpr0_sgpr1
41    %1:sgpr(s32) = G_LOAD %0 :: (load 4, align 4, addrspace 4)
42    $sgpr0 = COPY %1
43
44...
45
46---
47
48name: load_constant_v2s16_from_4
49legalized:       true
50regBankSelected: true
51tracksRegLiveness: true
52
53
54body: |
55  bb.0:
56    liveins:  $sgpr0_sgpr1
57
58    ; GFX6-LABEL: name: load_constant_v2s16_from_4
59    ; GFX6: liveins: $sgpr0_sgpr1
60    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
61    ; GFX6: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
62    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
63    ; GFX7-LABEL: name: load_constant_v2s16_from_4
64    ; GFX7: liveins: $sgpr0_sgpr1
65    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
66    ; GFX7: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
67    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
68    ; GFX8-LABEL: name: load_constant_v2s16_from_4
69    ; GFX8: liveins: $sgpr0_sgpr1
70    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
71    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
72    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
73    ; GFX10-LABEL: name: load_constant_v2s16_from_4
74    ; GFX10: liveins: $sgpr0_sgpr1
75    ; GFX10: $vcc_hi = IMPLICIT_DEF
76    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
77    ; GFX10: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
78    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
79    %0:sgpr(p4) = COPY $sgpr0_sgpr1
80    %1:sgpr(<2 x s16>) = G_LOAD %0 :: (load 4, align 4, addrspace 4)
81    $sgpr0 = COPY %1
82
83...
84
85
86---
87name: load_constant_v2s32
88legalized:       true
89regBankSelected: true
90tracksRegLiveness: true
91
92body: |
93  bb.0:
94    liveins:  $sgpr0_sgpr1
95
96    ; GFX6-LABEL: name: load_constant_v2s32
97    ; GFX6: liveins: $sgpr0_sgpr1
98    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
99    ; GFX6: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
100    ; GFX6: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
101    ; GFX7-LABEL: name: load_constant_v2s32
102    ; GFX7: liveins: $sgpr0_sgpr1
103    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
104    ; GFX7: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
105    ; GFX7: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
106    ; GFX8-LABEL: name: load_constant_v2s32
107    ; GFX8: liveins: $sgpr0_sgpr1
108    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
109    ; GFX8: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
110    ; GFX8: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
111    ; GFX10-LABEL: name: load_constant_v2s32
112    ; GFX10: liveins: $sgpr0_sgpr1
113    ; GFX10: $vcc_hi = IMPLICIT_DEF
114    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
115    ; GFX10: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
116    ; GFX10: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
117    %0:sgpr(p4) = COPY $sgpr0_sgpr1
118    %1:sgpr(<2 x s32>) = G_LOAD %0 :: (load 8, align 8, addrspace 4)
119    $sgpr0_sgpr1 = COPY %1
120
121...
122
123---
124name: load_constant_v2s32_align4
125legalized:       true
126regBankSelected: true
127tracksRegLiveness: true
128
129body: |
130  bb.0:
131    liveins:  $sgpr0_sgpr1
132
133    ; GFX6-LABEL: name: load_constant_v2s32_align4
134    ; GFX6: liveins: $sgpr0_sgpr1
135    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
136    ; GFX6: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
137    ; GFX6: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
138    ; GFX7-LABEL: name: load_constant_v2s32_align4
139    ; GFX7: liveins: $sgpr0_sgpr1
140    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
141    ; GFX7: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
142    ; GFX7: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
143    ; GFX8-LABEL: name: load_constant_v2s32_align4
144    ; GFX8: liveins: $sgpr0_sgpr1
145    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
146    ; GFX8: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
147    ; GFX8: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
148    ; GFX10-LABEL: name: load_constant_v2s32_align4
149    ; GFX10: liveins: $sgpr0_sgpr1
150    ; GFX10: $vcc_hi = IMPLICIT_DEF
151    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
152    ; GFX10: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
153    ; GFX10: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
154    %0:sgpr(p4) = COPY $sgpr0_sgpr1
155    %1:sgpr(<2 x s32>) = G_LOAD %0 :: (load 8, align 4, addrspace 4)
156    $sgpr0_sgpr1 = COPY %1
157
158...
159
160---
161name: load_constant_v4s16_align4
162legalized:       true
163regBankSelected: true
164tracksRegLiveness: true
165
166body: |
167  bb.0:
168    liveins:  $sgpr0_sgpr1
169
170    ; GFX6-LABEL: name: load_constant_v4s16_align4
171    ; GFX6: liveins: $sgpr0_sgpr1
172    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
173    ; GFX6: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
174    ; GFX6: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
175    ; GFX7-LABEL: name: load_constant_v4s16_align4
176    ; GFX7: liveins: $sgpr0_sgpr1
177    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
178    ; GFX7: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
179    ; GFX7: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
180    ; GFX8-LABEL: name: load_constant_v4s16_align4
181    ; GFX8: liveins: $sgpr0_sgpr1
182    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
183    ; GFX8: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
184    ; GFX8: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
185    ; GFX10-LABEL: name: load_constant_v4s16_align4
186    ; GFX10: liveins: $sgpr0_sgpr1
187    ; GFX10: $vcc_hi = IMPLICIT_DEF
188    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
189    ; GFX10: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
190    ; GFX10: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
191    %0:sgpr(p4) = COPY $sgpr0_sgpr1
192    %1:sgpr(<4 x s16>) = G_LOAD %0 :: (load 8, align 4, addrspace 4)
193    $sgpr0_sgpr1 = COPY %1
194
195...
196
197---
198
199name: load_constant_v4s32_align4
200legalized:       true
201regBankSelected: true
202tracksRegLiveness: true
203
204body: |
205  bb.0:
206    liveins:  $sgpr0_sgpr1
207
208    ; GFX6-LABEL: name: load_constant_v4s32_align4
209    ; GFX6: liveins: $sgpr0_sgpr1
210    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
211    ; GFX6: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0, 0 :: (load 16, align 4, addrspace 4)
212    ; GFX6: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]]
213    ; GFX7-LABEL: name: load_constant_v4s32_align4
214    ; GFX7: liveins: $sgpr0_sgpr1
215    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
216    ; GFX7: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0, 0 :: (load 16, align 4, addrspace 4)
217    ; GFX7: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]]
218    ; GFX8-LABEL: name: load_constant_v4s32_align4
219    ; GFX8: liveins: $sgpr0_sgpr1
220    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
221    ; GFX8: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0, 0 :: (load 16, align 4, addrspace 4)
222    ; GFX8: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]]
223    ; GFX10-LABEL: name: load_constant_v4s32_align4
224    ; GFX10: liveins: $sgpr0_sgpr1
225    ; GFX10: $vcc_hi = IMPLICIT_DEF
226    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
227    ; GFX10: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0, 0 :: (load 16, align 4, addrspace 4)
228    ; GFX10: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]]
229    %0:sgpr(p4) = COPY $sgpr0_sgpr1
230    %1:sgpr(<4 x  s32>) = G_LOAD %0 :: (load 16, align 4, addrspace 4)
231    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1
232
233...
234
235---
236
237name: load_constant_s64
238legalized:       true
239regBankSelected: true
240tracksRegLiveness: true
241
242body: |
243  bb.0:
244    liveins:  $sgpr0_sgpr1
245
246    ; GFX6-LABEL: name: load_constant_s64
247    ; GFX6: liveins: $sgpr0_sgpr1
248    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
249    ; GFX6: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
250    ; GFX6: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
251    ; GFX7-LABEL: name: load_constant_s64
252    ; GFX7: liveins: $sgpr0_sgpr1
253    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
254    ; GFX7: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
255    ; GFX7: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
256    ; GFX8-LABEL: name: load_constant_s64
257    ; GFX8: liveins: $sgpr0_sgpr1
258    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
259    ; GFX8: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
260    ; GFX8: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
261    ; GFX10-LABEL: name: load_constant_s64
262    ; GFX10: liveins: $sgpr0_sgpr1
263    ; GFX10: $vcc_hi = IMPLICIT_DEF
264    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
265    ; GFX10: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
266    ; GFX10: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
267    %0:sgpr(p4) = COPY $sgpr0_sgpr1
268    %1:sgpr(s64) = G_LOAD %0 :: (load 8, align 8, addrspace 4)
269    $sgpr0_sgpr1 = COPY %1
270
271...
272
273---
274
275name: load_constant_s64_align4
276legalized:       true
277regBankSelected: true
278tracksRegLiveness: true
279
280body: |
281  bb.0:
282    liveins:  $sgpr0_sgpr1
283
284    ; GFX6-LABEL: name: load_constant_s64_align4
285    ; GFX6: liveins: $sgpr0_sgpr1
286    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
287    ; GFX6: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
288    ; GFX6: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
289    ; GFX7-LABEL: name: load_constant_s64_align4
290    ; GFX7: liveins: $sgpr0_sgpr1
291    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
292    ; GFX7: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
293    ; GFX7: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
294    ; GFX8-LABEL: name: load_constant_s64_align4
295    ; GFX8: liveins: $sgpr0_sgpr1
296    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
297    ; GFX8: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
298    ; GFX8: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
299    ; GFX10-LABEL: name: load_constant_s64_align4
300    ; GFX10: liveins: $sgpr0_sgpr1
301    ; GFX10: $vcc_hi = IMPLICIT_DEF
302    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
303    ; GFX10: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, align 4, addrspace 4)
304    ; GFX10: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
305    %0:sgpr(p4) = COPY $sgpr0_sgpr1
306    %1:sgpr(s64) = G_LOAD %0 :: (load 8, align 4, addrspace 4)
307    $sgpr0_sgpr1 = COPY %1
308
309...
310
311---
312
313name: load_constant_v2s64
314legalized:       true
315regBankSelected: true
316tracksRegLiveness: true
317
318body: |
319  bb.0:
320    liveins:  $sgpr0_sgpr1
321
322    ; GFX6-LABEL: name: load_constant_v2s64
323    ; GFX6: liveins: $sgpr0_sgpr1
324    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
325    ; GFX6: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0, 0 :: (load 16, align 4, addrspace 4)
326    ; GFX6: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]]
327    ; GFX7-LABEL: name: load_constant_v2s64
328    ; GFX7: liveins: $sgpr0_sgpr1
329    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
330    ; GFX7: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0, 0 :: (load 16, align 4, addrspace 4)
331    ; GFX7: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]]
332    ; GFX8-LABEL: name: load_constant_v2s64
333    ; GFX8: liveins: $sgpr0_sgpr1
334    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
335    ; GFX8: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0, 0 :: (load 16, align 4, addrspace 4)
336    ; GFX8: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]]
337    ; GFX10-LABEL: name: load_constant_v2s64
338    ; GFX10: liveins: $sgpr0_sgpr1
339    ; GFX10: $vcc_hi = IMPLICIT_DEF
340    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
341    ; GFX10: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0, 0 :: (load 16, align 4, addrspace 4)
342    ; GFX10: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]]
343    %0:sgpr(p4) = COPY $sgpr0_sgpr1
344    %1:sgpr(<2 x s64>) = G_LOAD %0 :: (load 16, align 4, addrspace 4)
345    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1
346
347...
348
349---
350
351name: load_constant_v2p1
352legalized:       true
353regBankSelected: true
354tracksRegLiveness: true
355
356body: |
357  bb.0:
358    liveins:  $sgpr0_sgpr1
359
360    ; GFX6-LABEL: name: load_constant_v2p1
361    ; GFX6: liveins: $sgpr0_sgpr1
362    ; GFX6: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
363    ; GFX6: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
364    ; GFX6: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>)
365    ; GFX7-LABEL: name: load_constant_v2p1
366    ; GFX7: liveins: $sgpr0_sgpr1
367    ; GFX7: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
368    ; GFX7: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
369    ; GFX7: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>)
370    ; GFX8-LABEL: name: load_constant_v2p1
371    ; GFX8: liveins: $sgpr0_sgpr1
372    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
373    ; GFX8: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
374    ; GFX8: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>)
375    ; GFX10-LABEL: name: load_constant_v2p1
376    ; GFX10: liveins: $sgpr0_sgpr1
377    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
378    ; GFX10: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
379    ; GFX10: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>)
380    %0:sgpr(p4) = COPY $sgpr0_sgpr1
381    %1:sgpr(<2 x p1>) = G_LOAD %0 :: (load 16, align 4, addrspace 4)
382    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1
383
384...
385
386---
387
388name: load_constant_s128_align4
389legalized:       true
390regBankSelected: true
391tracksRegLiveness: true
392
393body: |
394  bb.0:
395    liveins:  $sgpr0_sgpr1
396
397    ; GFX6-LABEL: name: load_constant_s128_align4
398    ; GFX6: liveins: $sgpr0_sgpr1
399    ; GFX6: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
400    ; GFX6: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
401    ; GFX6: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128)
402    ; GFX7-LABEL: name: load_constant_s128_align4
403    ; GFX7: liveins: $sgpr0_sgpr1
404    ; GFX7: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
405    ; GFX7: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
406    ; GFX7: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128)
407    ; GFX8-LABEL: name: load_constant_s128_align4
408    ; GFX8: liveins: $sgpr0_sgpr1
409    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
410    ; GFX8: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
411    ; GFX8: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128)
412    ; GFX10-LABEL: name: load_constant_s128_align4
413    ; GFX10: liveins: $sgpr0_sgpr1
414    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
415    ; GFX10: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
416    ; GFX10: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128)
417    %0:sgpr(p4) = COPY $sgpr0_sgpr1
418    %1:sgpr(s128) = G_LOAD %0 :: (load 16, align 4, addrspace 4)
419    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1
420
421...
422
423---
424
425name: load_constant_p3_from_4
426legalized:       true
427regBankSelected: true
428tracksRegLiveness: true
429
430body: |
431  bb.0:
432    liveins:  $sgpr0_sgpr1
433
434    ; GFX6-LABEL: name: load_constant_p3_from_4
435    ; GFX6: liveins: $sgpr0_sgpr1
436    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
437    ; GFX6: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
438    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
439    ; GFX7-LABEL: name: load_constant_p3_from_4
440    ; GFX7: liveins: $sgpr0_sgpr1
441    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
442    ; GFX7: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
443    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
444    ; GFX8-LABEL: name: load_constant_p3_from_4
445    ; GFX8: liveins: $sgpr0_sgpr1
446    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
447    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
448    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
449    ; GFX10-LABEL: name: load_constant_p3_from_4
450    ; GFX10: liveins: $sgpr0_sgpr1
451    ; GFX10: $vcc_hi = IMPLICIT_DEF
452    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
453    ; GFX10: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
454    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
455    %0:sgpr(p4) = COPY $sgpr0_sgpr1
456    %1:sgpr(p3) = G_LOAD %0 :: (load 4, align 4, addrspace 4)
457    $sgpr0 = COPY %1
458
459...
460
461---
462
463name: load_constant_p1_from_8
464legalized:       true
465regBankSelected: true
466tracksRegLiveness: true
467
468body: |
469  bb.0:
470    liveins:  $sgpr0_sgpr1
471
472    ; GFX6-LABEL: name: load_constant_p1_from_8
473    ; GFX6: liveins: $sgpr0_sgpr1
474    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
475    ; GFX6: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
476    ; GFX6: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
477    ; GFX7-LABEL: name: load_constant_p1_from_8
478    ; GFX7: liveins: $sgpr0_sgpr1
479    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
480    ; GFX7: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
481    ; GFX7: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
482    ; GFX8-LABEL: name: load_constant_p1_from_8
483    ; GFX8: liveins: $sgpr0_sgpr1
484    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
485    ; GFX8: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
486    ; GFX8: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
487    ; GFX10-LABEL: name: load_constant_p1_from_8
488    ; GFX10: liveins: $sgpr0_sgpr1
489    ; GFX10: $vcc_hi = IMPLICIT_DEF
490    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
491    ; GFX10: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
492    ; GFX10: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
493    %0:sgpr(p4) = COPY $sgpr0_sgpr1
494    %1:sgpr(p4) = G_LOAD %0 :: (load 8, align 8, addrspace 4)
495    $sgpr0_sgpr1 = COPY %1
496
497...
498
499---
500
501name: load_constant_p999_from_8
502legalized:       true
503regBankSelected: true
504tracksRegLiveness: true
505
506body: |
507  bb.0:
508    liveins:  $sgpr0_sgpr1
509
510    ; GFX6-LABEL: name: load_constant_p999_from_8
511    ; GFX6: liveins: $sgpr0_sgpr1
512    ; GFX6: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
513    ; GFX6: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load 8, addrspace 4)
514    ; GFX6: $sgpr0_sgpr1 = COPY [[LOAD]](p999)
515    ; GFX7-LABEL: name: load_constant_p999_from_8
516    ; GFX7: liveins: $sgpr0_sgpr1
517    ; GFX7: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
518    ; GFX7: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load 8, addrspace 4)
519    ; GFX7: $sgpr0_sgpr1 = COPY [[LOAD]](p999)
520    ; GFX8-LABEL: name: load_constant_p999_from_8
521    ; GFX8: liveins: $sgpr0_sgpr1
522    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
523    ; GFX8: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load 8, addrspace 4)
524    ; GFX8: $sgpr0_sgpr1 = COPY [[LOAD]](p999)
525    ; GFX10-LABEL: name: load_constant_p999_from_8
526    ; GFX10: liveins: $sgpr0_sgpr1
527    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
528    ; GFX10: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load 8, addrspace 4)
529    ; GFX10: $sgpr0_sgpr1 = COPY [[LOAD]](p999)
530    %0:sgpr(p4) = COPY $sgpr0_sgpr1
531    %1:sgpr(p999) = G_LOAD %0 :: (load 8, align 8, addrspace 4)
532    $sgpr0_sgpr1 = COPY %1
533
534...
535
536---
537
538name: load_constant_v2p3
539legalized:       true
540regBankSelected: true
541tracksRegLiveness: true
542
543body: |
544  bb.0:
545    liveins:  $sgpr0_sgpr1
546
547    ; GFX6-LABEL: name: load_constant_v2p3
548    ; GFX6: liveins: $sgpr0_sgpr1
549    ; GFX6: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
550    ; GFX6: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load 8, addrspace 4)
551    ; GFX6: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>)
552    ; GFX7-LABEL: name: load_constant_v2p3
553    ; GFX7: liveins: $sgpr0_sgpr1
554    ; GFX7: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
555    ; GFX7: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load 8, addrspace 4)
556    ; GFX7: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>)
557    ; GFX8-LABEL: name: load_constant_v2p3
558    ; GFX8: liveins: $sgpr0_sgpr1
559    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
560    ; GFX8: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load 8, addrspace 4)
561    ; GFX8: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>)
562    ; GFX10-LABEL: name: load_constant_v2p3
563    ; GFX10: liveins: $sgpr0_sgpr1
564    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
565    ; GFX10: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load 8, addrspace 4)
566    ; GFX10: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>)
567    %0:sgpr(p4) = COPY $sgpr0_sgpr1
568    %1:sgpr(<2 x p3>) = G_LOAD %0 :: (load 8, align 8, addrspace 4)
569    $sgpr0_sgpr1 = COPY %1
570
571...
572
573---
574
575name: load_constant_v2s16
576legalized:       true
577regBankSelected: true
578tracksRegLiveness: true
579
580body: |
581  bb.0:
582    liveins:  $sgpr0_sgpr1
583
584    ; GFX6-LABEL: name: load_constant_v2s16
585    ; GFX6: liveins: $sgpr0_sgpr1
586    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
587    ; GFX6: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
588    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
589    ; GFX7-LABEL: name: load_constant_v2s16
590    ; GFX7: liveins: $sgpr0_sgpr1
591    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
592    ; GFX7: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
593    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
594    ; GFX8-LABEL: name: load_constant_v2s16
595    ; GFX8: liveins: $sgpr0_sgpr1
596    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
597    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
598    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
599    ; GFX10-LABEL: name: load_constant_v2s16
600    ; GFX10: liveins: $sgpr0_sgpr1
601    ; GFX10: $vcc_hi = IMPLICIT_DEF
602    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
603    ; GFX10: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0, 0 :: (load 4, addrspace 4)
604    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
605    %0:sgpr(p4) = COPY $sgpr0_sgpr1
606    %1:sgpr(<2 x s16>) = G_LOAD %0 :: (load 4, align 4, addrspace 4)
607    $sgpr0 = COPY %1
608
609...
610
611---
612
613name: load_constant_v4s16
614legalized:       true
615regBankSelected: true
616tracksRegLiveness: true
617
618body: |
619  bb.0:
620    liveins:  $sgpr0_sgpr1
621
622    ; GFX6-LABEL: name: load_constant_v4s16
623    ; GFX6: liveins: $sgpr0_sgpr1
624    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
625    ; GFX6: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
626    ; GFX6: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
627    ; GFX7-LABEL: name: load_constant_v4s16
628    ; GFX7: liveins: $sgpr0_sgpr1
629    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
630    ; GFX7: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
631    ; GFX7: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
632    ; GFX8-LABEL: name: load_constant_v4s16
633    ; GFX8: liveins: $sgpr0_sgpr1
634    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
635    ; GFX8: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
636    ; GFX8: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
637    ; GFX10-LABEL: name: load_constant_v4s16
638    ; GFX10: liveins: $sgpr0_sgpr1
639    ; GFX10: $vcc_hi = IMPLICIT_DEF
640    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
641    ; GFX10: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0, 0 :: (load 8, addrspace 4)
642    ; GFX10: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]]
643    %0:sgpr(p4) = COPY $sgpr0_sgpr1
644    %1:sgpr(<4 x s16>) = G_LOAD %0 :: (load 8, align 8, addrspace 4)
645    $sgpr0_sgpr1 = COPY %1
646
647...
648
649---
650
651name: load_constant_v8s16
652legalized:       true
653regBankSelected: true
654tracksRegLiveness: true
655
656body: |
657  bb.0:
658    liveins:  $sgpr0_sgpr1
659
660    ; GFX6-LABEL: name: load_constant_v8s16
661    ; GFX6: liveins: $sgpr0_sgpr1
662    ; GFX6: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
663    ; GFX6: [[LOAD:%[0-9]+]]:sgpr_128(<8 x s16>) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
664    ; GFX6: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<8 x s16>)
665    ; GFX7-LABEL: name: load_constant_v8s16
666    ; GFX7: liveins: $sgpr0_sgpr1
667    ; GFX7: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
668    ; GFX7: [[LOAD:%[0-9]+]]:sgpr_128(<8 x s16>) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
669    ; GFX7: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<8 x s16>)
670    ; GFX8-LABEL: name: load_constant_v8s16
671    ; GFX8: liveins: $sgpr0_sgpr1
672    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
673    ; GFX8: [[LOAD:%[0-9]+]]:sgpr_128(<8 x s16>) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
674    ; GFX8: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<8 x s16>)
675    ; GFX10-LABEL: name: load_constant_v8s16
676    ; GFX10: liveins: $sgpr0_sgpr1
677    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
678    ; GFX10: [[LOAD:%[0-9]+]]:sgpr_128(<8 x s16>) = G_LOAD [[COPY]](p4) :: (load 16, align 4, addrspace 4)
679    ; GFX10: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<8 x s16>)
680    %0:sgpr(p4) = COPY $sgpr0_sgpr1
681    %1:sgpr(<8 x  s16>) = G_LOAD %0 :: (load 16, align 4, addrspace 4)
682    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1
683
684...
685
686################################################################################
687### Stress addressing modes
688################################################################################
689
690---
691
692name: load_constant_s32_from_4_gep_1020
693legalized:       true
694regBankSelected: true
695tracksRegLiveness: true
696
697body: |
698  bb.0:
699    liveins:  $sgpr0_sgpr1
700
701    ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1020
702    ; GFX6: liveins: $sgpr0_sgpr1
703    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
704    ; GFX6: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 255, 0, 0 :: (load 4, addrspace 4)
705    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
706    ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1020
707    ; GFX7: liveins: $sgpr0_sgpr1
708    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
709    ; GFX7: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 255, 0, 0 :: (load 4, addrspace 4)
710    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
711    ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1020
712    ; GFX8: liveins: $sgpr0_sgpr1
713    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
714    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1020, 0, 0 :: (load 4, addrspace 4)
715    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
716    ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1020
717    ; GFX10: liveins: $sgpr0_sgpr1
718    ; GFX10: $vcc_hi = IMPLICIT_DEF
719    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
720    ; GFX10: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1020, 0, 0 :: (load 4, addrspace 4)
721    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
722    %0:sgpr(p4) = COPY $sgpr0_sgpr1
723    %1:sgpr(s64) = G_CONSTANT i64 1020
724    %2:sgpr(p4) = G_PTR_ADD %0, %1
725    %3:sgpr(s32) = G_LOAD %2 :: (load 4, align 4, addrspace 4)
726    $sgpr0 = COPY %3
727
728...
729
730---
731
732name: load_constant_s32_from_4_gep_1024
733legalized:       true
734regBankSelected: true
735tracksRegLiveness: true
736
737body: |
738  bb.0:
739    liveins:  $sgpr0_sgpr1
740
741    ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1024
742    ; GFX6: liveins: $sgpr0_sgpr1
743    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
744    ; GFX6: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1024
745    ; GFX6: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
746    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
747    ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1024
748    ; GFX7: liveins: $sgpr0_sgpr1
749    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
750    ; GFX7: [[S_LOAD_DWORD_IMM_ci:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM_ci [[COPY]], 256, 0, 0 :: (load 4, addrspace 4)
751    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM_ci]]
752    ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1024
753    ; GFX8: liveins: $sgpr0_sgpr1
754    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
755    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1024, 0, 0 :: (load 4, addrspace 4)
756    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
757    ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1024
758    ; GFX10: liveins: $sgpr0_sgpr1
759    ; GFX10: $vcc_hi = IMPLICIT_DEF
760    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
761    ; GFX10: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1024, 0, 0 :: (load 4, addrspace 4)
762    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
763    %0:sgpr(p4) = COPY $sgpr0_sgpr1
764    %1:sgpr(s64) = G_CONSTANT i64 1024
765    %2:sgpr(p4) = G_PTR_ADD %0, %1
766    %3:sgpr(s32) = G_LOAD %2 :: (load 4, align 4, addrspace 4)
767    $sgpr0 = COPY %3
768
769...
770
771---
772
773name: load_constant_s32_from_4_gep_1048575
774legalized:       true
775regBankSelected: true
776tracksRegLiveness: true
777
778body: |
779  bb.0:
780    liveins:  $sgpr0_sgpr1
781
782    ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1048575
783    ; GFX6: liveins: $sgpr0_sgpr1
784    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
785    ; GFX6: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048575
786    ; GFX6: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
787    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
788    ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1048575
789    ; GFX7: liveins: $sgpr0_sgpr1
790    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
791    ; GFX7: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048575
792    ; GFX7: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
793    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
794    ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1048575
795    ; GFX8: liveins: $sgpr0_sgpr1
796    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
797    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1048575, 0, 0 :: (load 4, addrspace 4)
798    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
799    ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1048575
800    ; GFX10: liveins: $sgpr0_sgpr1
801    ; GFX10: $vcc_hi = IMPLICIT_DEF
802    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
803    ; GFX10: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048575
804    ; GFX10: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
805    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
806    %0:sgpr(p4) = COPY $sgpr0_sgpr1
807    %1:sgpr(s64) = G_CONSTANT i64 1048575
808    %2:sgpr(p4) = G_PTR_ADD %0, %1
809    %3:sgpr(s32) = G_LOAD %2 :: (load 4, align 4, addrspace 4)
810    $sgpr0 = COPY %3
811
812...
813
814---
815
816name: load_constant_s32_from_4_gep_1048576
817legalized:       true
818regBankSelected: true
819tracksRegLiveness: true
820
821body: |
822  bb.0:
823    liveins:  $sgpr0_sgpr1
824
825    ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1048576
826    ; GFX6: liveins: $sgpr0_sgpr1
827    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
828    ; GFX6: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048576
829    ; GFX6: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
830    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
831    ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1048576
832    ; GFX7: liveins: $sgpr0_sgpr1
833    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
834    ; GFX7: [[S_LOAD_DWORD_IMM_ci:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM_ci [[COPY]], 262144, 0, 0 :: (load 4, addrspace 4)
835    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM_ci]]
836    ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1048576
837    ; GFX8: liveins: $sgpr0_sgpr1
838    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
839    ; GFX8: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048576
840    ; GFX8: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
841    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
842    ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1048576
843    ; GFX10: liveins: $sgpr0_sgpr1
844    ; GFX10: $vcc_hi = IMPLICIT_DEF
845    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
846    ; GFX10: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048576
847    ; GFX10: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
848    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
849    %0:sgpr(p4) = COPY $sgpr0_sgpr1
850    %1:sgpr(s64) = G_CONSTANT i64 1048576
851    %2:sgpr(p4) = G_PTR_ADD %0, %1
852    %3:sgpr(s32) = G_LOAD %2 :: (load 4, align 4, addrspace 4)
853    $sgpr0 = COPY %3
854
855...
856
857---
858
859name: load_constant_s32_from_4_gep_1073741823
860legalized:       true
861regBankSelected: true
862tracksRegLiveness: true
863
864body: |
865  bb.0:
866    liveins:  $sgpr0_sgpr1
867
868    ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1073741823
869    ; GFX6: liveins: $sgpr0_sgpr1
870    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
871    ; GFX6: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823
872    ; GFX6: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
873    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
874    ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1073741823
875    ; GFX7: liveins: $sgpr0_sgpr1
876    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
877    ; GFX7: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823
878    ; GFX7: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
879    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
880    ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1073741823
881    ; GFX8: liveins: $sgpr0_sgpr1
882    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
883    ; GFX8: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823
884    ; GFX8: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
885    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
886    ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1073741823
887    ; GFX10: liveins: $sgpr0_sgpr1
888    ; GFX10: $vcc_hi = IMPLICIT_DEF
889    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
890    ; GFX10: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823
891    ; GFX10: [[S_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load 4, addrspace 4)
892    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]]
893    %0:sgpr(p4) = COPY $sgpr0_sgpr1
894    %1:sgpr(s64) = G_CONSTANT i64 1073741823
895    %2:sgpr(p4) = G_PTR_ADD %0, %1
896    %3:sgpr(s32) = G_LOAD %2 :: (load 4, align 4, addrspace 4)
897    $sgpr0 = COPY %3
898
899...
900
901---
902
903name: load_constant_s32_from_4_gep_negative_1
904legalized:       true
905regBankSelected: true
906tracksRegLiveness: true
907
908body: |
909  bb.0:
910    liveins:  $sgpr0_sgpr1
911
912    ; GFX6-LABEL: name: load_constant_s32_from_4_gep_negative_1
913    ; GFX6: liveins: $sgpr0_sgpr1
914    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
915    ; GFX6: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1
916    ; GFX6: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
917    ; GFX6: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub0
918    ; GFX6: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
919    ; GFX6: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub1
920    ; GFX6: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc
921    ; GFX6: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def $scc, implicit $scc
922    ; GFX6: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1
923    ; GFX6: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0, 0 :: (load 4, addrspace 4)
924    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
925    ; GFX7-LABEL: name: load_constant_s32_from_4_gep_negative_1
926    ; GFX7: liveins: $sgpr0_sgpr1
927    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
928    ; GFX7: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1
929    ; GFX7: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
930    ; GFX7: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub0
931    ; GFX7: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
932    ; GFX7: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub1
933    ; GFX7: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc
934    ; GFX7: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def $scc, implicit $scc
935    ; GFX7: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1
936    ; GFX7: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0, 0 :: (load 4, addrspace 4)
937    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
938    ; GFX8-LABEL: name: load_constant_s32_from_4_gep_negative_1
939    ; GFX8: liveins: $sgpr0_sgpr1
940    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
941    ; GFX8: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1
942    ; GFX8: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
943    ; GFX8: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub0
944    ; GFX8: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
945    ; GFX8: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub1
946    ; GFX8: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc
947    ; GFX8: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def $scc, implicit $scc
948    ; GFX8: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1
949    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0, 0 :: (load 4, addrspace 4)
950    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
951    ; GFX10-LABEL: name: load_constant_s32_from_4_gep_negative_1
952    ; GFX10: liveins: $sgpr0_sgpr1
953    ; GFX10: $vcc_hi = IMPLICIT_DEF
954    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
955    ; GFX10: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], -1, 0, 0 :: (load 4, addrspace 4)
956    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
957    %0:sgpr(p4) = COPY $sgpr0_sgpr1
958    %1:sgpr(s64) = G_CONSTANT i64 -1
959    %2:sgpr(p4) = G_PTR_ADD %0, %1
960    %3:sgpr(s32) = G_LOAD %2 :: (load 4, align 4, addrspace 4)
961    $sgpr0 = COPY %3
962
963...
964
965---
966
967name: load_constant_s32_from_4_gep_negative_524288
968legalized:       true
969regBankSelected: true
970tracksRegLiveness: true
971
972body: |
973  bb.0:
974    liveins:  $sgpr0_sgpr1
975
976    ; GFX6-LABEL: name: load_constant_s32_from_4_gep_negative_524288
977    ; GFX6: liveins: $sgpr0_sgpr1
978    ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
979    ; GFX6: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4294443008
980    ; GFX6: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 -1
981    ; GFX6: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_MOV_B32_]], %subreg.sub0, [[S_MOV_B32_1]], %subreg.sub1
982    ; GFX6: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
983    ; GFX6: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE]].sub0
984    ; GFX6: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
985    ; GFX6: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE]].sub1
986    ; GFX6: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc
987    ; GFX6: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def $scc, implicit $scc
988    ; GFX6: [[REG_SEQUENCE1:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1
989    ; GFX6: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE1]], 0, 0, 0 :: (load 4, addrspace 4)
990    ; GFX6: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
991    ; GFX7-LABEL: name: load_constant_s32_from_4_gep_negative_524288
992    ; GFX7: liveins: $sgpr0_sgpr1
993    ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
994    ; GFX7: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4294443008
995    ; GFX7: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 -1
996    ; GFX7: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_MOV_B32_]], %subreg.sub0, [[S_MOV_B32_1]], %subreg.sub1
997    ; GFX7: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
998    ; GFX7: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE]].sub0
999    ; GFX7: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
1000    ; GFX7: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE]].sub1
1001    ; GFX7: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc
1002    ; GFX7: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def $scc, implicit $scc
1003    ; GFX7: [[REG_SEQUENCE1:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1
1004    ; GFX7: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE1]], 0, 0, 0 :: (load 4, addrspace 4)
1005    ; GFX7: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
1006    ; GFX8-LABEL: name: load_constant_s32_from_4_gep_negative_524288
1007    ; GFX8: liveins: $sgpr0_sgpr1
1008    ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
1009    ; GFX8: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4294443008
1010    ; GFX8: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 -1
1011    ; GFX8: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_MOV_B32_]], %subreg.sub0, [[S_MOV_B32_1]], %subreg.sub1
1012    ; GFX8: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
1013    ; GFX8: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE]].sub0
1014    ; GFX8: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
1015    ; GFX8: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE]].sub1
1016    ; GFX8: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc
1017    ; GFX8: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def $scc, implicit $scc
1018    ; GFX8: [[REG_SEQUENCE1:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1
1019    ; GFX8: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE1]], 0, 0, 0 :: (load 4, addrspace 4)
1020    ; GFX8: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
1021    ; GFX10-LABEL: name: load_constant_s32_from_4_gep_negative_524288
1022    ; GFX10: liveins: $sgpr0_sgpr1
1023    ; GFX10: $vcc_hi = IMPLICIT_DEF
1024    ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
1025    ; GFX10: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], -524288, 0, 0 :: (load 4, addrspace 4)
1026    ; GFX10: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]]
1027    %0:sgpr(p4) = COPY $sgpr0_sgpr1
1028    %1:sgpr(s64) = G_CONSTANT i64 -524288
1029    %2:sgpr(p4) = G_PTR_ADD %0, %1
1030    %3:sgpr(s32) = G_LOAD %2 :: (load 4, align 4, addrspace 4)
1031    $sgpr0 = COPY %3
1032
1033...
1034