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
6 name: test_concat_vectors_v_v4s16_v_v2s16_v_v2s16
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
26 name: test_concat_vectors_v_v4s16_s_v2s16_v_v2s16
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
46 name: test_concat_vectors_v_v4s16_v_v2s16_s_v2s16
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
66 name: test_concat_vectors_s_v4s16_s_v2s16_s_v2s16
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
86 name: test_concat_vectors_s_s96_s_v2s16_s_v2s16_s_v2s16
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
110 regBankSelected: true
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
132 regBankSelected: true
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
156 regBankSelected: true
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
180 regBankSelected: true
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
200 regBankSelected: true
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
220 regBankSelected: true
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
246 regBankSelected: true
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
272 regBankSelected: true
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
294 regBankSelected: true
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
316 regBankSelected: true
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
340 regBankSelected: true
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
360 regBankSelected: true
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
380 regBankSelected: true
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
412 regBankSelected: true
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
449 regBankSelected: true
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
469 regBankSelected: true
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
489 regBankSelected: true
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
514 regBankSelected: true
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
534 regBankSelected: true
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
554 regBankSelected: true
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
586 regBankSelected: true
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
606 regBankSelected: true
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
626 regBankSelected: true
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
646 regBankSelected: true
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
666 regBankSelected: true
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
690 regBankSelected: true
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
710 regBankSelected: true
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
730 regBankSelected: true
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