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
3
4
5---
6name: test_concat_vectors_v_v4s16_v_v2s16_v_v2s16
7legalized:       true
8regBankSelected: true
9
10body: |
11  bb.0:
12    liveins: $vgpr0, $vgpr1
13
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...
24
25---
26name: test_concat_vectors_v_v4s16_s_v2s16_v_v2s16
27legalized:       true
28regBankSelected: true
29
30body: |
31  bb.0:
32    liveins: $sgpr0, $vgpr0
33
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...
44
45---
46name: test_concat_vectors_v_v4s16_v_v2s16_s_v2s16
47legalized:       true
48regBankSelected: true
49
50body: |
51  bb.0:
52    liveins: $sgpr0, $vgpr0
53
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...
64
65---
66name: test_concat_vectors_s_v4s16_s_v2s16_s_v2s16
67legalized:       true
68regBankSelected: true
69
70body: |
71  bb.0:
72    liveins: $sgpr0, $sgpr1
73
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...
84
85---
86name: test_concat_vectors_s_s96_s_v2s16_s_v2s16_s_v2s16
87legalized:       true
88regBankSelected: true
89
90body: |
91  bb.0:
92    liveins: $sgpr0, $sgpr1, $sgpr2
93
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
105...
106
107---
108name: test_concat_vectors_v_s96_v_v2s16_v_v2s16_v_v2s16
109legalized:       true
110regBankSelected: true
111
112body: |
113  bb.0:
114    liveins: $vgpr0, $vgpr1, $vgpr2
115
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
127...
128
129---
130name: test_concat_vectors_s_v8s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
131legalized:       true
132regBankSelected: true
133
134body: |
135  bb.0:
136    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3
137
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
151...
152
153---
154name: test_concat_vectors_v_v8s16_v_v2s16_v_v2s16_v_v2s16
155legalized:       true
156regBankSelected: true
157
158body: |
159  bb.0:
160    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
161
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
175...
176
177---
178name: test_concat_vectors_s_v8s16_s_v4s16_s_v4s16
179legalized:       true
180regBankSelected: true
181
182body: |
183  bb.0:
184    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
185
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
195...
196
197---
198name: test_concat_vectors_v_v8s16_v_v4s16_v_v4s16
199legalized:       true
200regBankSelected: true
201
202body: |
203  bb.0:
204    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
205
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
215...
216
217---
218name: test_concat_vectors_s_s160_s_v2s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16
219legalized:       true
220regBankSelected: true
221
222body: |
223  bb.0:
224    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4
225
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
241...
242
243---
244name: test_concat_vectors_v_s160_v_v2s16_v_v2s16_v_v2s16_v_v2s16_v_v2s16
245legalized:       true
246regBankSelected: true
247
248body: |
249  bb.0:
250    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
251
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
267...
268
269---
270name: test_concat_vectors_s_v12s16_s_v4s16_s_v4s16_s_v4s16
271legalized:       true
272regBankSelected: true
273
274body: |
275  bb.0:
276    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
277
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
289...
290
291---
292name: test_concat_vectors_v_v12s16_v_v4s16_v_v4s16_v_v4s16
293legalized:       true
294regBankSelected: true
295
296body: |
297  bb.0:
298    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
299
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
311...
312
313---
314name: test_concat_vectors_s_v16s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
315legalized:       true
316regBankSelected: true
317
318body: |
319  bb.0:
320    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
321
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
335...
336
337---
338name: test_concat_vectors_s_v12s16_s_v8s16_s_v8s16
339legalized:       true
340regBankSelected: true
341
342body: |
343  bb.0:
344    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
345
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
355...
356
357---
358name: test_concat_vectors_s_v32s16_s_v12s16_s_v12s16
359legalized:       true
360regBankSelected: true
361
362body: |
363  bb.0:
364    liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
365
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
375...
376
377---
378name: test_concat_vectors_s_v32s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16
379legalized:       true
380regBankSelected: true
381
382body: |
383  bb.0:
384    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15
385
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
407...
408
409---
410name: test_concat_vectors_v_v512_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64
411legalized:       true
412regBankSelected: true
413
414body: |
415  bb.0:
416    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
417
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
439...
440
441
442
443
444
445
446---
447name: test_concat_vectors_s_v4s32_s_v2s32_s_v2s32
448legalized:       true
449regBankSelected: true
450
451body: |
452  bb.0:
453    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
454
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
464...
465
466---
467name: test_concat_vectors_v_v4s32_v_v2s32_v_v2s32
468legalized:       true
469regBankSelected: true
470
471body: |
472  bb.0:
473    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
474
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
484...
485
486---
487name: test_concat_vectors_s_v8s32_s_v2s32_s_v2s32_s_v2s32_s_v2s32
488legalized:       true
489regBankSelected: true
490
491body: |
492  bb.0:
493    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
494
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
508...
509
510---
511
512name: test_concat_vectors_s_v8s32_s_v4s32_s_v4s32
513legalized:       true
514regBankSelected: true
515
516body: |
517  bb.0:
518    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
519
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
529...
530
531---
532name: test_concat_vectors_s_v16s32_s_v8s32_s_v8s32
533legalized:       true
534regBankSelected: true
535
536body: |
537  bb.0:
538    liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
539
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
549...
550
551---
552name: test_concat_vectors_v_v16s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32
553legalized:       true
554regBankSelected: true
555
556body: |
557  bb.0:
558    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
559
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
581...
582
583---
584name: test_concat_vectors_s_v32s32_s_v16s32_s_v16s32
585legalized:       true
586regBankSelected: true
587
588body: |
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
591
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
601...
602
603---
604name: test_concat_vectors_s_v4s64_s_v2s64_s_v2s64
605legalized:       true
606regBankSelected: true
607
608body: |
609  bb.0:
610    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
611
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
621...
622
623---
624name: test_concat_vectors_s_v6s64_s_v3s64_s_v3s64
625legalized:       true
626regBankSelected: true
627
628body: |
629  bb.0:
630    liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
631
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
641...
642
643---
644name: test_concat_vectors_s_v8s64_s_v4s64_s_v4s64
645legalized:       true
646regBankSelected: true
647
648body: |
649  bb.0:
650    liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
651
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
661...
662
663---
664name: test_concat_vectors_s_v8s64_s_v2s64_s_v2s64_s_v2s64_s_v2s64
665legalized:       true
666regBankSelected: true
667
668body: |
669  bb.0:
670    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr12_sgpr13_sgpr14_sgpr15
671
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
685...
686
687---
688name: test_concat_vectors_s_v4p1_s_v2p1_s_v2p1
689legalized:       true
690regBankSelected: true
691
692body: |
693  bb.0:
694    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
695
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
705...
706
707---
708name: test_concat_vectors_s_v4p3_s_v2p3_s_v2p3
709legalized:       true
710regBankSelected: true
711
712body: |
713  bb.0:
714    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
715
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
725...
726
727---
728name: test_concat_vectors_s_v8p3_s_v2p3_s_v2p3_v2p3_s_v2p3
729legalized:       true
730regBankSelected: true
731
732body: |
733  bb.0:
734    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
735
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
749...
750