[AMDGPU] Make v8i16/v8f16 legal
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-concat-vectors.mir
blob54cb2a0ab0e05c4f7f7e1a190f929a2414bbe629
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: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
16     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
17     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
18     ; GCN: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]]
19     %0:vgpr(<2 x s16>) = COPY $vgpr0
20     %1:vgpr(<2 x s16>) = COPY $vgpr1
21     %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1
22     $vgpr0_vgpr1 = COPY %2
23 ...
25 ---
26 name: test_concat_vectors_v_v4s16_s_v2s16_v_v2s16
27 legalized:       true
28 regBankSelected: true
30 body: |
31   bb.0:
32     liveins: $sgpr0, $vgpr0
34     ; GCN-LABEL: name: test_concat_vectors_v_v4s16_s_v2s16_v_v2s16
35     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
36     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
37     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
38     ; GCN: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]]
39     %0:sgpr(<2 x s16>) = COPY $sgpr0
40     %1:vgpr(<2 x s16>) = COPY $vgpr1
41     %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1
42     $vgpr0_vgpr1 = COPY %2
43 ...
45 ---
46 name: test_concat_vectors_v_v4s16_v_v2s16_s_v2s16
47 legalized:       true
48 regBankSelected: true
50 body: |
51   bb.0:
52     liveins: $sgpr0, $vgpr0
54     ; GCN-LABEL: name: test_concat_vectors_v_v4s16_v_v2s16_s_v2s16
55     ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
56     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
57     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
58     ; GCN: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]]
59     %0:vgpr(<2 x s16>) = COPY $vgpr0
60     %1:sgpr(<2 x s16>) = COPY $sgpr0
61     %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1
62     $vgpr0_vgpr1 = COPY %2
63 ...
65 ---
66 name: test_concat_vectors_s_v4s16_s_v2s16_s_v2s16
67 legalized:       true
68 regBankSelected: true
70 body: |
71   bb.0:
72     liveins: $sgpr0, $sgpr1
74     ; GCN-LABEL: name: test_concat_vectors_s_v4s16_s_v2s16_s_v2s16
75     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
76     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
77     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
78     ; GCN: $sgpr0_sgpr1 = COPY [[REG_SEQUENCE]]
79     %0:sgpr(<2 x s16>) = COPY $sgpr0
80     %1:sgpr(<2 x s16>) = COPY $sgpr1
81     %2:sgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1
82     $sgpr0_sgpr1 = COPY %2
83 ...
85 ---
86 name: test_concat_vectors_s_s96_s_v2s16_s_v2s16_s_v2s16
87 legalized:       true
88 regBankSelected: true
90 body: |
91   bb.0:
92     liveins: $sgpr0, $sgpr1, $sgpr2
94     ; GCN-LABEL: name: test_concat_vectors_s_s96_s_v2s16_s_v2s16_s_v2s16
95     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
96     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
97     ; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
98     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2
99     ; GCN: $sgpr0_sgpr1_sgpr2 = COPY [[REG_SEQUENCE]]
100     %0:sgpr(<2 x s16>) = COPY $sgpr0
101     %1:sgpr(<2 x s16>) = COPY $sgpr1
102     %2:sgpr(<2 x s16>) = COPY $sgpr2
103     %3:sgpr(<6 x s16>) = G_CONCAT_VECTORS %0, %1, %2
104     $sgpr0_sgpr1_sgpr2 = COPY %3
108 name: test_concat_vectors_v_s96_v_v2s16_v_v2s16_v_v2s16
109 legalized:       true
110 regBankSelected: true
112 body: |
113   bb.0:
114     liveins: $vgpr0, $vgpr1, $vgpr2
116     ; GCN-LABEL: name: test_concat_vectors_v_s96_v_v2s16_v_v2s16_v_v2s16
117     ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
118     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
119     ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
120     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2
121     ; GCN: $vgpr0_vgpr1_vgpr2 = COPY [[REG_SEQUENCE]]
122     %0:vgpr(<2 x s16>) = COPY $vgpr0
123     %1:vgpr(<2 x s16>) = COPY $vgpr1
124     %2:vgpr(<2 x s16>) = COPY $vgpr2
125     %3:vgpr(<6 x s16>) = G_CONCAT_VECTORS %0, %1, %2
126     $vgpr0_vgpr1_vgpr2 = COPY %3
130 name: test_concat_vectors_s_v8s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
131 legalized:       true
132 regBankSelected: true
134 body: |
135   bb.0:
136     liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3
138     ; GCN-LABEL: name: test_concat_vectors_s_v8s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
139     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
140     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
141     ; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
142     ; GCN: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3
143     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
144     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
145     %0:sgpr(<2 x s16>) = COPY $sgpr0
146     %1:sgpr(<2 x s16>) = COPY $sgpr1
147     %2:sgpr(<2 x s16>) = COPY $sgpr2
148     %3:sgpr(<2 x s16>) = COPY $sgpr3
149     %4:sgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3
150     $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4
154 name: test_concat_vectors_v_v8s16_v_v2s16_v_v2s16_v_v2s16
155 legalized:       true
156 regBankSelected: true
158 body: |
159   bb.0:
160     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
162     ; GCN-LABEL: name: test_concat_vectors_v_v8s16_v_v2s16_v_v2s16_v_v2s16
163     ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
164     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
165     ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
166     ; GCN: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
167     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
168     ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]
169     %0:vgpr(<2 x s16>) = COPY $vgpr0
170     %1:vgpr(<2 x s16>) = COPY $vgpr1
171     %2:vgpr(<2 x s16>) = COPY $vgpr2
172     %3:vgpr(<2 x s16>) = COPY $vgpr3
173     %4:vgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3
174     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %4
178 name: test_concat_vectors_s_v8s16_s_v4s16_s_v4s16
179 legalized:       true
180 regBankSelected: true
182 body: |
183   bb.0:
184     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
186     ; GCN-LABEL: name: test_concat_vectors_s_v8s16_s_v4s16_s_v4s16
187     ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
188     ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
189     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
190     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
191     %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
192     %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
193     %2:sgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1
194     $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %2
198 name: test_concat_vectors_v_v8s16_v_v4s16_v_v4s16
199 legalized:       true
200 regBankSelected: true
202 body: |
203   bb.0:
204     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
206     ; GCN-LABEL: name: test_concat_vectors_v_v8s16_v_v4s16_v_v4s16
207     ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
208     ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
209     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
210     ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]
211     %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
212     %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
213     %2:vgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1
214     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
218 name: test_concat_vectors_s_s160_s_v2s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
219 legalized:       true
220 regBankSelected: true
222 body: |
223   bb.0:
224     liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4
226     ; GCN-LABEL: name: test_concat_vectors_s_s160_s_v2s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
227     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
228     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
229     ; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
230     ; GCN: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3
231     ; GCN: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr4
232     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4
233     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY [[REG_SEQUENCE]]
234     %0:sgpr(<2 x s16>) = COPY $sgpr0
235     %1:sgpr(<2 x s16>) = COPY $sgpr1
236     %2:sgpr(<2 x s16>) = COPY $sgpr2
237     %3:sgpr(<2 x s16>) = COPY $sgpr3
238     %4:sgpr(<2 x s16>) = COPY $sgpr4
239     %5:sgpr(<10 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4
240     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY %5
244 name: test_concat_vectors_v_s160_v_v2s16_v_v2s16_v_v2s16_v_v2s16_v_v2s16
245 legalized:       true
246 regBankSelected: true
248 body: |
249   bb.0:
250     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
252     ; GCN-LABEL: name: test_concat_vectors_v_s160_v_v2s16_v_v2s16_v_v2s16_v_v2s16_v_v2s16
253     ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
254     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
255     ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
256     ; GCN: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
257     ; GCN: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4
258     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4
259     ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[REG_SEQUENCE]]
260     %0:vgpr(<2 x s16>) = COPY $vgpr0
261     %1:vgpr(<2 x s16>) = COPY $vgpr1
262     %2:vgpr(<2 x s16>) = COPY $vgpr2
263     %3:vgpr(<2 x s16>) = COPY $vgpr3
264     %4:vgpr(<2 x s16>) = COPY $vgpr4
265     %5:vgpr(<10 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4
266     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %5
270 name: test_concat_vectors_s_v12s16_s_v4s16_s_v4s16_s_v4s16
271 legalized:       true
272 regBankSelected: true
274 body: |
275   bb.0:
276     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
278     ; GCN-LABEL: name: test_concat_vectors_s_v12s16_s_v4s16_s_v4s16_s_v4s16
279     ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
280     ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
281     ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
282     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5
283     ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
284     %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
285     %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
286     %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
287     %3:sgpr(<12 x s16>) = G_CONCAT_VECTORS %0, %1, %2
288     S_ENDPGM 0, implicit %3
292 name: test_concat_vectors_v_v12s16_v_v4s16_v_v4s16_v_v4s16
293 legalized:       true
294 regBankSelected: true
296 body: |
297   bb.0:
298     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
300     ; GCN-LABEL: name: test_concat_vectors_v_v12s16_v_v4s16_v_v4s16_v_v4s16
301     ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
302     ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
303     ; GCN: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5
304     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5
305     ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
306     %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
307     %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
308     %2:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5
309     %3:vgpr(<12 x s16>) = G_CONCAT_VECTORS %0, %1, %2
310     S_ENDPGM 0, implicit %3
314 name: test_concat_vectors_s_v16s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
315 legalized:       true
316 regBankSelected: true
318 body: |
319   bb.0:
320     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
322     ; GCN-LABEL: name: test_concat_vectors_s_v16s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
323     ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
324     ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
325     ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
326     ; GCN: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
327     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7
328     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
329     %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
330     %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
331     %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
332     %3:sgpr(<4 x s16>) = COPY $sgpr6_sgpr7
333     %4:sgpr(<16 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3
334     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4
338 name: test_concat_vectors_s_v12s16_s_v8s16_s_v8s16
339 legalized:       true
340 regBankSelected: true
342 body: |
343   bb.0:
344     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
346     ; GCN-LABEL: name: test_concat_vectors_s_v12s16_s_v8s16_s_v8s16
347     ; GCN: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
348     ; GCN: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
349     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
350     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
351     %0:sgpr(<8 x s16>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
352     %1:sgpr(<8 x s16>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
353     %2:sgpr(<16 x s16>) = G_CONCAT_VECTORS %0, %1
354     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2
358 name: test_concat_vectors_s_v32s16_s_v12s16_s_v12s16
359 legalized:       true
360 regBankSelected: true
362 body: |
363   bb.0:
364     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
366     ; GCN-LABEL: name: test_concat_vectors_s_v32s16_s_v12s16_s_v12s16
367     ; GCN: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
368     ; GCN: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
369     ; GCN: [[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
370     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
371     %0:sgpr(<16 x s16>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,
372     %1:sgpr(<16 x s16>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
373     %4:sgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1
374     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
378 name: test_concat_vectors_s_v32s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
379 legalized:       true
380 regBankSelected: true
382 body: |
383   bb.0:
384     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15
386     ; GCN-LABEL: name: test_concat_vectors_s_v32s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
387     ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
388     ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
389     ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
390     ; GCN: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
391     ; GCN: [[COPY4:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr9
392     ; GCN: [[COPY5:%[0-9]+]]:sreg_64 = COPY $sgpr10_sgpr11
393     ; GCN: [[COPY6:%[0-9]+]]:sreg_64 = COPY $sgpr12_sgpr13
394     ; GCN: [[COPY7:%[0-9]+]]:sreg_64 = COPY $sgpr14_sgpr15
395     ; GCN: [[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
396     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
397     %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
398     %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
399     %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
400     %3:sgpr(<4 x s16>) = COPY $sgpr6_sgpr7
401     %4:sgpr(<4 x s16>) = COPY $sgpr8_sgpr9
402     %5:sgpr(<4 x s16>) = COPY $sgpr10_sgpr11
403     %6:sgpr(<4 x s16>) = COPY $sgpr12_sgpr13
404     %7:sgpr(<4 x s16>) = COPY $sgpr14_sgpr15
405     %8:sgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7
406     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %8
410 name: test_concat_vectors_v_v512_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64
411 legalized:       true
412 regBankSelected: true
414 body: |
415   bb.0:
416     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
418     ; GCN-LABEL: name: test_concat_vectors_v_v512_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64
419     ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
420     ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
421     ; GCN: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5
422     ; GCN: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7
423     ; GCN: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9
424     ; GCN: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11
425     ; GCN: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13
426     ; GCN: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15
427     ; GCN: [[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
428     ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]]
429     %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
430     %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
431     %2:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5
432     %3:vgpr(<4 x s16>) = COPY $vgpr6_vgpr7
433     %4:vgpr(<4 x s16>) = COPY $vgpr8_vgpr9
434     %5:vgpr(<4 x s16>) = COPY $vgpr10_vgpr11
435     %6:vgpr(<4 x s16>) = COPY $vgpr12_vgpr13
436     %7:vgpr(<4 x s16>) = COPY $vgpr14_vgpr15
437     %8:vgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7
438     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8
447 name: test_concat_vectors_s_v4s32_s_v2s32_s_v2s32
448 legalized:       true
449 regBankSelected: true
451 body: |
452   bb.0:
453     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
455     ; GCN-LABEL: name: test_concat_vectors_s_v4s32_s_v2s32_s_v2s32
456     ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
457     ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
458     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
459     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
460     %0:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
461     %1:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
462     %4:sgpr(<4 x s32>) = G_CONCAT_VECTORS %0, %1
463     $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4
467 name: test_concat_vectors_v_v4s32_v_v2s32_v_v2s32
468 legalized:       true
469 regBankSelected: true
471 body: |
472   bb.0:
473     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
475     ; GCN-LABEL: name: test_concat_vectors_v_v4s32_v_v2s32_v_v2s32
476     ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
477     ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
478     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
479     ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]
480     %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
481     %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
482     %2:vgpr(<4 x s32>) = G_CONCAT_VECTORS %0, %1
483     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
487 name: test_concat_vectors_s_v8s32_s_v2s32_s_v2s32_s_v2s32_s_v2s32
488 legalized:       true
489 regBankSelected: true
491 body: |
492   bb.0:
493     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
495     ; GCN-LABEL: name: test_concat_vectors_s_v8s32_s_v2s32_s_v2s32_s_v2s32_s_v2s32
496     ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
497     ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
498     ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
499     ; GCN: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
500     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7
501     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
502     %0:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
503     %1:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
504     %2:sgpr(<2 x s32>) = COPY $sgpr4_sgpr5
505     %3:sgpr(<2 x s32>) = COPY $sgpr6_sgpr7
506     %4:sgpr(<8 x s32>) = G_CONCAT_VECTORS %0, %1, %2, %3
507     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4
512 name: test_concat_vectors_s_v8s32_s_v4s32_s_v4s32
513 legalized:       true
514 regBankSelected: true
516 body: |
517   bb.0:
518     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
520     ; GCN-LABEL: name: test_concat_vectors_s_v8s32_s_v4s32_s_v4s32
521     ; GCN: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
522     ; GCN: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
523     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
524     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
525     %0:sgpr(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
526     %1:sgpr(<4 x s32>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
527     %2:sgpr(<8 x s32>) = G_CONCAT_VECTORS %0, %1
528     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2
532 name: test_concat_vectors_s_v16s32_s_v8s32_s_v8s32
533 legalized:       true
534 regBankSelected: true
536 body: |
537   bb.0:
538     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
540     ; GCN-LABEL: name: test_concat_vectors_s_v16s32_s_v8s32_s_v8s32
541     ; GCN: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
542     ; GCN: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
543     ; GCN: [[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
544     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
545     %0:sgpr(<8 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,
546     %1:sgpr(<8 x s32>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
547     %4:sgpr(<16 x s32>) = G_CONCAT_VECTORS %0, %1
548     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
552 name: test_concat_vectors_v_v16s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32
553 legalized:       true
554 regBankSelected: true
556 body: |
557   bb.0:
558     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
560     ; GCN-LABEL: name: test_concat_vectors_v_v16s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32
561     ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
562     ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
563     ; GCN: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5
564     ; GCN: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7
565     ; GCN: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9
566     ; GCN: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11
567     ; GCN: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13
568     ; GCN: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15
569     ; GCN: [[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
570     ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]]
571     %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
572     %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
573     %2:vgpr(<2 x s32>) = COPY $vgpr4_vgpr5
574     %3:vgpr(<2 x s32>) = COPY $vgpr6_vgpr7
575     %4:vgpr(<2 x s32>) = COPY $vgpr8_vgpr9
576     %5:vgpr(<2 x s32>) = COPY $vgpr10_vgpr11
577     %6:vgpr(<2 x s32>) = COPY $vgpr12_vgpr13
578     %7:vgpr(<2 x s32>) = COPY $vgpr14_vgpr15
579     %8:vgpr(<16 x s32>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7
580     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8
584 name: test_concat_vectors_s_v32s32_s_v16s32_s_v16s32
585 legalized:       true
586 regBankSelected: true
588 body: |
589   bb.0:
590     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
592     ; GCN-LABEL: name: test_concat_vectors_s_v32s32_s_v16s32_s_v16s32
593     ; GCN: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
594     ; GCN: [[COPY1:%[0-9]+]]:sgpr_512 = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
595     ; GCN: [[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
596     ; GCN: $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]]
597     %0:sgpr(<16 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
598     %1:sgpr(<16 x s32>) = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
599     %2:sgpr(<32 x s32>) = G_CONCAT_VECTORS %0, %1
600     $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
604 name: test_concat_vectors_s_v4s64_s_v2s64_s_v2s64
605 legalized:       true
606 regBankSelected: true
608 body: |
609   bb.0:
610     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
612     ; GCN-LABEL: name: test_concat_vectors_s_v4s64_s_v2s64_s_v2s64
613     ; GCN: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
614     ; GCN: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
615     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
616     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
617     %0:sgpr(<2 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
618     %1:sgpr(<2 x s64>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
619     %3:sgpr(<4 x s64>) = G_CONCAT_VECTORS %0, %1
620     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %3
624 name: test_concat_vectors_s_v6s64_s_v3s64_s_v3s64
625 legalized:       true
626 regBankSelected: true
628 body: |
629   bb.0:
630     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
632     ; GCN-LABEL: name: test_concat_vectors_s_v6s64_s_v3s64_s_v3s64
633     ; GCN: [[DEF:%[0-9]+]]:sgpr_192 = IMPLICIT_DEF
634     ; GCN: [[DEF1:%[0-9]+]]:sgpr_192 = IMPLICIT_DEF
635     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[DEF]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5, [[DEF1]], %subreg.sub6_sub7_sub8_sub9_sub10_sub11
636     ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
637     %0:sgpr(<3 x s64>) = G_IMPLICIT_DEF
638     %1:sgpr(<3 x s64>) = G_IMPLICIT_DEF
639     %2:sgpr(<6 x s64>) = G_CONCAT_VECTORS %0, %1
640     S_ENDPGM 0, implicit %2
644 name: test_concat_vectors_s_v8s64_s_v4s64_s_v4s64
645 legalized:       true
646 regBankSelected: true
648 body: |
649   bb.0:
650     liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
652     ; GCN-LABEL: name: test_concat_vectors_s_v8s64_s_v4s64_s_v4s64
653     ; GCN: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
654     ; GCN: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
655     ; GCN: [[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
656     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
657     %0:sgpr(<4 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,
658     %1:sgpr(<4 x s64>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
659     %4:sgpr(<8 x s64>) = G_CONCAT_VECTORS %0, %1
660     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
664 name: test_concat_vectors_s_v8s64_s_v2s64_s_v2s64_s_v2s64_s_v2s64
665 legalized:       true
666 regBankSelected: true
668 body: |
669   bb.0:
670     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr12_sgpr13_sgpr14_sgpr15
672     ; GCN-LABEL: name: test_concat_vectors_s_v8s64_s_v2s64_s_v2s64_s_v2s64_s_v2s64
673     ; GCN: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
674     ; GCN: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
675     ; GCN: [[COPY2:%[0-9]+]]:sgpr_128 = COPY $sgpr8_sgpr9_sgpr10_sgpr11
676     ; GCN: [[COPY3:%[0-9]+]]:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr15
677     ; GCN: [[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
678     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
679     %0:sgpr(<2 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
680     %1:sgpr(<2 x s64>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
681     %2:sgpr(<2 x s64>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11
682     %3:sgpr(<2 x s64>) = COPY $sgpr12_sgpr13_sgpr14_sgpr15
683     %4:sgpr(<8 x s64>) = G_CONCAT_VECTORS %0, %1, %2, %3
684     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
688 name: test_concat_vectors_s_v4p1_s_v2p1_s_v2p1
689 legalized:       true
690 regBankSelected: true
692 body: |
693   bb.0:
694     liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
696     ; GCN-LABEL: name: test_concat_vectors_s_v4p1_s_v2p1_s_v2p1
697     ; GCN: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
698     ; GCN: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
699     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
700     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
701     %0:sgpr(<2 x p1>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
702     %1:sgpr(<2 x p1>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
703     %3:sgpr(<4 x p1>) = G_CONCAT_VECTORS %0, %1
704     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %3
708 name: test_concat_vectors_s_v4p3_s_v2p3_s_v2p3
709 legalized:       true
710 regBankSelected: true
712 body: |
713   bb.0:
714     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
716     ; GCN-LABEL: name: test_concat_vectors_s_v4p3_s_v2p3_s_v2p3
717     ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
718     ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
719     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
720     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
721     %0:sgpr(<2 x p3>) = COPY $sgpr0_sgpr1
722     %1:sgpr(<2 x p3>) = COPY $sgpr2_sgpr3
723     %2:sgpr(<4 x p3>) = G_CONCAT_VECTORS %0, %1
724     $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %2
728 name: test_concat_vectors_s_v8p3_s_v2p3_s_v2p3_v2p3_s_v2p3
729 legalized:       true
730 regBankSelected: true
732 body: |
733   bb.0:
734     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
736     ; GCN-LABEL: name: test_concat_vectors_s_v8p3_s_v2p3_s_v2p3_v2p3_s_v2p3
737     ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
738     ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
739     ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
740     ; GCN: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
741     ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7
742     ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
743     %0:sgpr(<2 x p3>) = COPY $sgpr0_sgpr1
744     %1:sgpr(<2 x p3>) = COPY $sgpr2_sgpr3
745     %2:sgpr(<2 x p3>) = COPY $sgpr4_sgpr5
746     %3:sgpr(<2 x p3>) = COPY $sgpr6_sgpr7
747     %4:sgpr(<8 x p3>) = G_CONCAT_VECTORS %0, %1, %2, %3
748     $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4