Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-concat-vectors.mir
blobd6a433ae00076433744de2f049069f45f13673c7
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*'  -o - %s | FileCheck -check-prefix=GCN  %s
5 ---
6 name: test_concat_vectors_v_v4s16_v_v2s16_v_v2s16
7 legalized:       true
8 regBankSelected: true
10 body: |
11   bb.0:
12     liveins: $vgpr0, $vgpr1
14     ; GCN-LABEL: name: test_concat_vectors_v_v4s16_v_v2s16_v_v2s16
15     ; GCN: liveins: $vgpr0, $vgpr1
16     ; GCN-NEXT: {{  $}}
17     ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
18     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
19     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
20     ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]]
21     %0:vgpr(<2 x s16>) = COPY $vgpr0
22     %1:vgpr(<2 x s16>) = COPY $vgpr1
23     %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1
24     $vgpr0_vgpr1 = COPY %2
25 ...
27 ---
28 name: test_concat_vectors_v_v4s16_s_v2s16_v_v2s16
29 legalized:       true
30 regBankSelected: true
32 body: |
33   bb.0:
34     liveins: $sgpr0, $vgpr0
36     ; GCN-LABEL: name: test_concat_vectors_v_v4s16_s_v2s16_v_v2s16
37     ; GCN: liveins: $sgpr0, $vgpr0
38     ; GCN-NEXT: {{  $}}
39     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
40     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
41     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
42     ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]]
43     %0:sgpr(<2 x s16>) = COPY $sgpr0
44     %1:vgpr(<2 x s16>) = COPY $vgpr1
45     %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1
46     $vgpr0_vgpr1 = COPY %2
47 ...
49 ---
50 name: test_concat_vectors_v_v4s16_v_v2s16_s_v2s16
51 legalized:       true
52 regBankSelected: true
54 body: |
55   bb.0:
56     liveins: $sgpr0, $vgpr0
58     ; GCN-LABEL: name: test_concat_vectors_v_v4s16_v_v2s16_s_v2s16
59     ; GCN: liveins: $sgpr0, $vgpr0
60     ; GCN-NEXT: {{  $}}
61     ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
62     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
63     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
64     ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]]
65     %0:vgpr(<2 x s16>) = COPY $vgpr0
66     %1:sgpr(<2 x s16>) = COPY $sgpr0
67     %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1
68     $vgpr0_vgpr1 = COPY %2
69 ...
71 ---
72 name: test_concat_vectors_s_v4s16_s_v2s16_s_v2s16
73 legalized:       true
74 regBankSelected: true
76 body: |
77   bb.0:
78     liveins: $sgpr0, $sgpr1
80     ; GCN-LABEL: name: test_concat_vectors_s_v4s16_s_v2s16_s_v2s16
81     ; GCN: liveins: $sgpr0, $sgpr1
82     ; GCN-NEXT: {{  $}}
83     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
84     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
85     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
86     ; GCN-NEXT: $sgpr0_sgpr1 = COPY [[REG_SEQUENCE]]
87     %0:sgpr(<2 x s16>) = COPY $sgpr0
88     %1:sgpr(<2 x s16>) = COPY $sgpr1
89     %2:sgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1
90     $sgpr0_sgpr1 = COPY %2
91 ...
93 ---
94 name: test_concat_vectors_s_s96_s_v2s16_s_v2s16_s_v2s16
95 legalized:       true
96 regBankSelected: true
98 body: |
99   bb.0:
100     liveins: $sgpr0, $sgpr1, $sgpr2
102     ; GCN-LABEL: name: test_concat_vectors_s_s96_s_v2s16_s_v2s16_s_v2s16
103     ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2
104     ; GCN-NEXT: {{  $}}
105     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
106     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
107     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
108     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2
109     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2 = COPY [[REG_SEQUENCE]]
110     %0:sgpr(<2 x s16>) = COPY $sgpr0
111     %1:sgpr(<2 x s16>) = COPY $sgpr1
112     %2:sgpr(<2 x s16>) = COPY $sgpr2
113     %3:sgpr(<6 x s16>) = G_CONCAT_VECTORS %0, %1, %2
114     $sgpr0_sgpr1_sgpr2 = COPY %3
118 name: test_concat_vectors_v_s96_v_v2s16_v_v2s16_v_v2s16
119 legalized:       true
120 regBankSelected: true
122 body: |
123   bb.0:
124     liveins: $vgpr0, $vgpr1, $vgpr2
126     ; GCN-LABEL: name: test_concat_vectors_v_s96_v_v2s16_v_v2s16_v_v2s16
127     ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2
128     ; GCN-NEXT: {{  $}}
129     ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
130     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
131     ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
132     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2
133     ; GCN-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[REG_SEQUENCE]]
134     %0:vgpr(<2 x s16>) = COPY $vgpr0
135     %1:vgpr(<2 x s16>) = COPY $vgpr1
136     %2:vgpr(<2 x s16>) = COPY $vgpr2
137     %3:vgpr(<6 x s16>) = G_CONCAT_VECTORS %0, %1, %2
138     $vgpr0_vgpr1_vgpr2 = COPY %3
142 name: test_concat_vectors_s_v8s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
143 legalized:       true
144 regBankSelected: true
146 body: |
147   bb.0:
148     liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3
150     ; GCN-LABEL: name: test_concat_vectors_s_v8s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
151     ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3
152     ; GCN-NEXT: {{  $}}
153     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
154     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
155     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
156     ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3
157     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
158     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
159     %0:sgpr(<2 x s16>) = COPY $sgpr0
160     %1:sgpr(<2 x s16>) = COPY $sgpr1
161     %2:sgpr(<2 x s16>) = COPY $sgpr2
162     %3:sgpr(<2 x s16>) = COPY $sgpr3
163     %4:sgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3
164     $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4
168 name: test_concat_vectors_v_v8s16_v_v2s16_v_v2s16_v_v2s16
169 legalized:       true
170 regBankSelected: true
172 body: |
173   bb.0:
174     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
176     ; GCN-LABEL: name: test_concat_vectors_v_v8s16_v_v2s16_v_v2s16_v_v2s16
177     ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
178     ; GCN-NEXT: {{  $}}
179     ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
180     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
181     ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
182     ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
183     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
184     ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]
185     %0:vgpr(<2 x s16>) = COPY $vgpr0
186     %1:vgpr(<2 x s16>) = COPY $vgpr1
187     %2:vgpr(<2 x s16>) = COPY $vgpr2
188     %3:vgpr(<2 x s16>) = COPY $vgpr3
189     %4:vgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3
190     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %4
194 name: test_concat_vectors_s_v8s16_s_v4s16_s_v4s16
195 legalized:       true
196 regBankSelected: true
198 body: |
199   bb.0:
200     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
202     ; GCN-LABEL: name: test_concat_vectors_s_v8s16_s_v4s16_s_v4s16
203     ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
204     ; GCN-NEXT: {{  $}}
205     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
206     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
207     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
208     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
209     %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
210     %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
211     %2:sgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1
212     $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %2
216 name: test_concat_vectors_v_v8s16_v_v4s16_v_v4s16
217 legalized:       true
218 regBankSelected: true
220 body: |
221   bb.0:
222     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
224     ; GCN-LABEL: name: test_concat_vectors_v_v8s16_v_v4s16_v_v4s16
225     ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
226     ; GCN-NEXT: {{  $}}
227     ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
228     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
229     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
230     ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]
231     %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
232     %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
233     %2:vgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1
234     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
238 name: test_concat_vectors_s_s160_s_v2s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
239 legalized:       true
240 regBankSelected: true
242 body: |
243   bb.0:
244     liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4
246     ; GCN-LABEL: name: test_concat_vectors_s_s160_s_v2s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
247     ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4
248     ; GCN-NEXT: {{  $}}
249     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
250     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
251     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
252     ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3
253     ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr4
254     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4
255     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY [[REG_SEQUENCE]]
256     %0:sgpr(<2 x s16>) = COPY $sgpr0
257     %1:sgpr(<2 x s16>) = COPY $sgpr1
258     %2:sgpr(<2 x s16>) = COPY $sgpr2
259     %3:sgpr(<2 x s16>) = COPY $sgpr3
260     %4:sgpr(<2 x s16>) = COPY $sgpr4
261     %5:sgpr(<10 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4
262     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY %5
266 name: test_concat_vectors_v_s160_v_v2s16_v_v2s16_v_v2s16_v_v2s16_v_v2s16
267 legalized:       true
268 regBankSelected: true
270 body: |
271   bb.0:
272     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
274     ; GCN-LABEL: name: test_concat_vectors_v_s160_v_v2s16_v_v2s16_v_v2s16_v_v2s16_v_v2s16
275     ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
276     ; GCN-NEXT: {{  $}}
277     ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
278     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
279     ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
280     ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
281     ; GCN-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4
282     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4
283     ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[REG_SEQUENCE]]
284     %0:vgpr(<2 x s16>) = COPY $vgpr0
285     %1:vgpr(<2 x s16>) = COPY $vgpr1
286     %2:vgpr(<2 x s16>) = COPY $vgpr2
287     %3:vgpr(<2 x s16>) = COPY $vgpr3
288     %4:vgpr(<2 x s16>) = COPY $vgpr4
289     %5:vgpr(<10 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4
290     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %5
294 name: test_concat_vectors_s_v12s16_s_v4s16_s_v4s16_s_v4s16
295 legalized:       true
296 regBankSelected: true
298 body: |
299   bb.0:
300     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
302     ; GCN-LABEL: name: test_concat_vectors_s_v12s16_s_v4s16_s_v4s16_s_v4s16
303     ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
304     ; GCN-NEXT: {{  $}}
305     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
306     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
307     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
308     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5
309     ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
310     %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
311     %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
312     %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
313     %3:sgpr(<12 x s16>) = G_CONCAT_VECTORS %0, %1, %2
314     S_ENDPGM 0, implicit %3
318 name: test_concat_vectors_v_v12s16_v_v4s16_v_v4s16_v_v4s16
319 legalized:       true
320 regBankSelected: true
322 body: |
323   bb.0:
324     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
326     ; GCN-LABEL: name: test_concat_vectors_v_v12s16_v_v4s16_v_v4s16_v_v4s16
327     ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
328     ; GCN-NEXT: {{  $}}
329     ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
330     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
331     ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5
332     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5
333     ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
334     %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
335     %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
336     %2:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5
337     %3:vgpr(<12 x s16>) = G_CONCAT_VECTORS %0, %1, %2
338     S_ENDPGM 0, implicit %3
342 name: test_concat_vectors_s_v16s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
343 legalized:       true
344 regBankSelected: true
346 body: |
347   bb.0:
348     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
350     ; GCN-LABEL: name: test_concat_vectors_s_v16s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
351     ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
352     ; GCN-NEXT: {{  $}}
353     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
354     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
355     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
356     ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
357     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7
358     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
359     %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
360     %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
361     %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
362     %3:sgpr(<4 x s16>) = COPY $sgpr6_sgpr7
363     %4:sgpr(<16 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3
364     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4
368 name: test_concat_vectors_s_v12s16_s_v8s16_s_v8s16
369 legalized:       true
370 regBankSelected: true
372 body: |
373   bb.0:
374     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
376     ; GCN-LABEL: name: test_concat_vectors_s_v12s16_s_v8s16_s_v8s16
377     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
378     ; GCN-NEXT: {{  $}}
379     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
380     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
381     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
382     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
383     %0:sgpr(<8 x s16>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
384     %1:sgpr(<8 x s16>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
385     %2:sgpr(<16 x s16>) = G_CONCAT_VECTORS %0, %1
386     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2
390 name: test_concat_vectors_s_v32s16_s_v12s16_s_v12s16
391 legalized:       true
392 regBankSelected: true
394 body: |
395   bb.0:
396     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
398     ; GCN-LABEL: name: test_concat_vectors_s_v32s16_s_v12s16_s_v12s16
399     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
400     ; GCN-NEXT: {{  $}}
401     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
402     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
403     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7, [[COPY1]], %subreg.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15
404     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
405     %0:sgpr(<16 x s16>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,
406     %1:sgpr(<16 x s16>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
407     %4:sgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1
408     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
412 name: test_concat_vectors_s_v32s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
413 legalized:       true
414 regBankSelected: true
416 body: |
417   bb.0:
418     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15
420     ; GCN-LABEL: name: test_concat_vectors_s_v32s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
421     ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15
422     ; GCN-NEXT: {{  $}}
423     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
424     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
425     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
426     ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
427     ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr9
428     ; GCN-NEXT: [[COPY5:%[0-9]+]]:sreg_64 = COPY $sgpr10_sgpr11
429     ; GCN-NEXT: [[COPY6:%[0-9]+]]:sreg_64 = COPY $sgpr12_sgpr13
430     ; GCN-NEXT: [[COPY7:%[0-9]+]]:sreg_64 = COPY $sgpr14_sgpr15
431     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7, [[COPY4]], %subreg.sub8_sub9, [[COPY5]], %subreg.sub10_sub11, [[COPY6]], %subreg.sub12_sub13, [[COPY7]], %subreg.sub14_sub15
432     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
433     %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
434     %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
435     %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
436     %3:sgpr(<4 x s16>) = COPY $sgpr6_sgpr7
437     %4:sgpr(<4 x s16>) = COPY $sgpr8_sgpr9
438     %5:sgpr(<4 x s16>) = COPY $sgpr10_sgpr11
439     %6:sgpr(<4 x s16>) = COPY $sgpr12_sgpr13
440     %7:sgpr(<4 x s16>) = COPY $sgpr14_sgpr15
441     %8:sgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7
442     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %8
446 name: test_concat_vectors_v_v512_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64
447 legalized:       true
448 regBankSelected: true
450 body: |
451   bb.0:
452     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
454     ; GCN-LABEL: name: test_concat_vectors_v_v512_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64
455     ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
456     ; GCN-NEXT: {{  $}}
457     ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
458     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
459     ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5
460     ; GCN-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7
461     ; GCN-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9
462     ; GCN-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11
463     ; GCN-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13
464     ; GCN-NEXT: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15
465     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7, [[COPY4]], %subreg.sub8_sub9, [[COPY5]], %subreg.sub10_sub11, [[COPY6]], %subreg.sub12_sub13, [[COPY7]], %subreg.sub14_sub15
466     ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]]
467     %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
468     %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
469     %2:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5
470     %3:vgpr(<4 x s16>) = COPY $vgpr6_vgpr7
471     %4:vgpr(<4 x s16>) = COPY $vgpr8_vgpr9
472     %5:vgpr(<4 x s16>) = COPY $vgpr10_vgpr11
473     %6:vgpr(<4 x s16>) = COPY $vgpr12_vgpr13
474     %7:vgpr(<4 x s16>) = COPY $vgpr14_vgpr15
475     %8:vgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7
476     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8
485 name: test_concat_vectors_s_v4s32_s_v2s32_s_v2s32
486 legalized:       true
487 regBankSelected: true
489 body: |
490   bb.0:
491     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
493     ; GCN-LABEL: name: test_concat_vectors_s_v4s32_s_v2s32_s_v2s32
494     ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
495     ; GCN-NEXT: {{  $}}
496     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
497     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
498     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
499     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
500     %0:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
501     %1:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
502     %4:sgpr(<4 x s32>) = G_CONCAT_VECTORS %0, %1
503     $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4
507 name: test_concat_vectors_v_v4s32_v_v2s32_v_v2s32
508 legalized:       true
509 regBankSelected: true
511 body: |
512   bb.0:
513     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
515     ; GCN-LABEL: name: test_concat_vectors_v_v4s32_v_v2s32_v_v2s32
516     ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
517     ; GCN-NEXT: {{  $}}
518     ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
519     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
520     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
521     ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]
522     %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
523     %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
524     %2:vgpr(<4 x s32>) = G_CONCAT_VECTORS %0, %1
525     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
529 name: test_concat_vectors_s_v8s32_s_v2s32_s_v2s32_s_v2s32_s_v2s32
530 legalized:       true
531 regBankSelected: true
533 body: |
534   bb.0:
535     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
537     ; GCN-LABEL: name: test_concat_vectors_s_v8s32_s_v2s32_s_v2s32_s_v2s32_s_v2s32
538     ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
539     ; GCN-NEXT: {{  $}}
540     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
541     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
542     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
543     ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
544     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7
545     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
546     %0:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
547     %1:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
548     %2:sgpr(<2 x s32>) = COPY $sgpr4_sgpr5
549     %3:sgpr(<2 x s32>) = COPY $sgpr6_sgpr7
550     %4:sgpr(<8 x s32>) = G_CONCAT_VECTORS %0, %1, %2, %3
551     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4
556 name: test_concat_vectors_s_v8s32_s_v4s32_s_v4s32
557 legalized:       true
558 regBankSelected: true
560 body: |
561   bb.0:
562     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
564     ; GCN-LABEL: name: test_concat_vectors_s_v8s32_s_v4s32_s_v4s32
565     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
566     ; GCN-NEXT: {{  $}}
567     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
568     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
569     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
570     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
571     %0:sgpr(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
572     %1:sgpr(<4 x s32>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
573     %2:sgpr(<8 x s32>) = G_CONCAT_VECTORS %0, %1
574     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2
578 name: test_concat_vectors_s_v16s32_s_v8s32_s_v8s32
579 legalized:       true
580 regBankSelected: true
582 body: |
583   bb.0:
584     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
586     ; GCN-LABEL: name: test_concat_vectors_s_v16s32_s_v8s32_s_v8s32
587     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
588     ; GCN-NEXT: {{  $}}
589     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
590     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
591     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7, [[COPY1]], %subreg.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15
592     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
593     %0:sgpr(<8 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,
594     %1:sgpr(<8 x s32>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
595     %4:sgpr(<16 x s32>) = G_CONCAT_VECTORS %0, %1
596     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
600 name: test_concat_vectors_v_v16s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32
601 legalized:       true
602 regBankSelected: true
604 body: |
605   bb.0:
606     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
608     ; GCN-LABEL: name: test_concat_vectors_v_v16s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32
609     ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
610     ; GCN-NEXT: {{  $}}
611     ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
612     ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
613     ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5
614     ; GCN-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7
615     ; GCN-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9
616     ; GCN-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11
617     ; GCN-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13
618     ; GCN-NEXT: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15
619     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7, [[COPY4]], %subreg.sub8_sub9, [[COPY5]], %subreg.sub10_sub11, [[COPY6]], %subreg.sub12_sub13, [[COPY7]], %subreg.sub14_sub15
620     ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]]
621     %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
622     %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
623     %2:vgpr(<2 x s32>) = COPY $vgpr4_vgpr5
624     %3:vgpr(<2 x s32>) = COPY $vgpr6_vgpr7
625     %4:vgpr(<2 x s32>) = COPY $vgpr8_vgpr9
626     %5:vgpr(<2 x s32>) = COPY $vgpr10_vgpr11
627     %6:vgpr(<2 x s32>) = COPY $vgpr12_vgpr13
628     %7:vgpr(<2 x s32>) = COPY $vgpr14_vgpr15
629     %8:vgpr(<16 x s32>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7
630     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8
634 name: test_concat_vectors_s_v32s32_s_v16s32_s_v16s32
635 legalized:       true
636 regBankSelected: true
638 body: |
639   bb.0:
640     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
642     ; GCN-LABEL: name: test_concat_vectors_s_v32s32_s_v16s32_s_v16s32
643     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
644     ; GCN-NEXT: {{  $}}
645     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
646     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_512 = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
647     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_1024 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15, [[COPY1]], %subreg.sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31
648     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY [[REG_SEQUENCE]]
649     %0:sgpr(<16 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
650     %1:sgpr(<16 x s32>) = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
651     %2:sgpr(<32 x s32>) = G_CONCAT_VECTORS %0, %1
652     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY %2
656 name: test_concat_vectors_s_v4s64_s_v2s64_s_v2s64
657 legalized:       true
658 regBankSelected: true
660 body: |
661   bb.0:
662     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
664     ; GCN-LABEL: name: test_concat_vectors_s_v4s64_s_v2s64_s_v2s64
665     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
666     ; GCN-NEXT: {{  $}}
667     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
668     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
669     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
670     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
671     %0:sgpr(<2 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
672     %1:sgpr(<2 x s64>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
673     %3:sgpr(<4 x s64>) = G_CONCAT_VECTORS %0, %1
674     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %3
678 name: test_concat_vectors_s_v6s64_s_v3s64_s_v3s64
679 legalized:       true
680 regBankSelected: true
682 body: |
683   bb.0:
684     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
686     ; GCN-LABEL: name: test_concat_vectors_s_v6s64_s_v3s64_s_v3s64
687     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
688     ; GCN-NEXT: {{  $}}
689     ; GCN-NEXT: [[DEF:%[0-9]+]]:sgpr_192 = IMPLICIT_DEF
690     ; GCN-NEXT: [[DEF1:%[0-9]+]]:sgpr_192 = IMPLICIT_DEF
691     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_384 = REG_SEQUENCE [[DEF]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5, [[DEF1]], %subreg.sub6_sub7_sub8_sub9_sub10_sub11
692     ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
693     %0:sgpr(<3 x s64>) = G_IMPLICIT_DEF
694     %1:sgpr(<3 x s64>) = G_IMPLICIT_DEF
695     %2:sgpr(<6 x s64>) = G_CONCAT_VECTORS %0, %1
696     S_ENDPGM 0, implicit %2
700 name: test_concat_vectors_s_v8s64_s_v4s64_s_v4s64
701 legalized:       true
702 regBankSelected: true
704 body: |
705   bb.0:
706     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
708     ; GCN-LABEL: name: test_concat_vectors_s_v8s64_s_v4s64_s_v4s64
709     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
710     ; GCN-NEXT: {{  $}}
711     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
712     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
713     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7, [[COPY1]], %subreg.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15
714     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
715     %0:sgpr(<4 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,
716     %1:sgpr(<4 x s64>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
717     %4:sgpr(<8 x s64>) = G_CONCAT_VECTORS %0, %1
718     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
722 name: test_concat_vectors_s_v8s64_s_v2s64_s_v2s64_s_v2s64_s_v2s64
723 legalized:       true
724 regBankSelected: true
726 body: |
727   bb.0:
728     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr12_sgpr13_sgpr14_sgpr15
730     ; GCN-LABEL: name: test_concat_vectors_s_v8s64_s_v2s64_s_v2s64_s_v2s64_s_v2s64
731     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr12_sgpr13_sgpr14_sgpr15
732     ; GCN-NEXT: {{  $}}
733     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
734     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
735     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_128 = COPY $sgpr8_sgpr9_sgpr10_sgpr11
736     ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr15
737     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7, [[COPY2]], %subreg.sub8_sub9_sub10_sub11, [[COPY3]], %subreg.sub12_sub13_sub14_sub15
738     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
739     %0:sgpr(<2 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
740     %1:sgpr(<2 x s64>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
741     %2:sgpr(<2 x s64>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11
742     %3:sgpr(<2 x s64>) = COPY $sgpr12_sgpr13_sgpr14_sgpr15
743     %4:sgpr(<8 x s64>) = G_CONCAT_VECTORS %0, %1, %2, %3
744     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
748 name: test_concat_vectors_s_v4p1_s_v2p1_s_v2p1
749 legalized:       true
750 regBankSelected: true
752 body: |
753   bb.0:
754     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
756     ; GCN-LABEL: name: test_concat_vectors_s_v4p1_s_v2p1_s_v2p1
757     ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
758     ; GCN-NEXT: {{  $}}
759     ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
760     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
761     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
762     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
763     %0:sgpr(<2 x p1>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
764     %1:sgpr(<2 x p1>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
765     %3:sgpr(<4 x p1>) = G_CONCAT_VECTORS %0, %1
766     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %3
770 name: test_concat_vectors_s_v4p3_s_v2p3_s_v2p3
771 legalized:       true
772 regBankSelected: true
774 body: |
775   bb.0:
776     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
778     ; GCN-LABEL: name: test_concat_vectors_s_v4p3_s_v2p3_s_v2p3
779     ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
780     ; GCN-NEXT: {{  $}}
781     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
782     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
783     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
784     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
785     %0:sgpr(<2 x p3>) = COPY $sgpr0_sgpr1
786     %1:sgpr(<2 x p3>) = COPY $sgpr2_sgpr3
787     %2:sgpr(<4 x p3>) = G_CONCAT_VECTORS %0, %1
788     $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %2
792 name: test_concat_vectors_s_v8p3_s_v2p3_s_v2p3_v2p3_s_v2p3
793 legalized:       true
794 regBankSelected: true
796 body: |
797   bb.0:
798     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
800     ; GCN-LABEL: name: test_concat_vectors_s_v8p3_s_v2p3_s_v2p3_v2p3_s_v2p3
801     ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
802     ; GCN-NEXT: {{  $}}
803     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
804     ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
805     ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
806     ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
807     ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7
808     ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
809     %0:sgpr(<2 x p3>) = COPY $sgpr0_sgpr1
810     %1:sgpr(<2 x p3>) = COPY $sgpr2_sgpr3
811     %2:sgpr(<2 x p3>) = COPY $sgpr4_sgpr5
812     %3:sgpr(<2 x p3>) = COPY $sgpr6_sgpr7
813     %4:sgpr(<8 x p3>) = G_CONCAT_VECTORS %0, %1, %2, %3
814     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4