xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-build-vector.mir (revision 785eddd7a786b798427e336b79bc0f2495a49984)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -run-pass=legalizer %s -o - | FileCheck %s
3
4---
5name: legal_v2s32
6body: |
7  bb.0:
8    liveins: $vgpr0, $vgpr1
9    ; CHECK-LABEL: name: legal_v2s32
10    ; CHECK: liveins: $vgpr0, $vgpr1
11    ; CHECK-NEXT: {{  $}}
12    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
13    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
14    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)
15    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)
16    %0:_(s32) = COPY $vgpr0
17    %1:_(s32) = COPY $vgpr1
18    %2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1
19    S_NOP 0, implicit %2
20...
21---
22name: legal_v3s32
23body: |
24  bb.0:
25    liveins: $vgpr0, $vgpr1, $vgpr2
26    ; CHECK-LABEL: name: legal_v3s32
27    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
28    ; CHECK-NEXT: {{  $}}
29    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
30    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
31    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
32    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
33    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>)
34    %0:_(s32) = COPY $vgpr0
35    %1:_(s32) = COPY $vgpr1
36    %2:_(s32) = COPY $vgpr2
37    %3:_(<3 x s32>) = G_BUILD_VECTOR %0, %1, %2
38    S_NOP 0, implicit %3
39...
40---
41name: legal_v4s32
42body: |
43  bb.0:
44    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
45    ; CHECK-LABEL: name: legal_v4s32
46    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
47    ; CHECK-NEXT: {{  $}}
48    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
49    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
50    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
51    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
52    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
53    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s32>)
54    %0:_(s32) = COPY $vgpr0
55    %1:_(s32) = COPY $vgpr1
56    %2:_(s32) = COPY $vgpr2
57    %3:_(s32) = COPY $vgpr3
58    %4:_(<4 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3
59    S_NOP 0, implicit %4
60...
61---
62name: legal_v5s32
63body: |
64  bb.0:
65    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
66    ; CHECK-LABEL: name: legal_v5s32
67    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
68    ; CHECK-NEXT: {{  $}}
69    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
70    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
71    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
72    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
73    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
74    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32)
75    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<5 x s32>)
76    %0:_(s32) = COPY $vgpr0
77    %1:_(s32) = COPY $vgpr1
78    %2:_(s32) = COPY $vgpr2
79    %3:_(s32) = COPY $vgpr3
80    %4:_(s32) = COPY $vgpr4
81    %5:_(<5 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4
82    S_NOP 0, implicit %5
83...
84---
85name: legal_v6s32
86body: |
87  bb.0:
88    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
89    ; CHECK-LABEL: name: legal_v6s32
90    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
91    ; CHECK-NEXT: {{  $}}
92    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
93    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
94    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
95    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
96    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
97    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
98    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)
99    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<6 x s32>)
100    %0:_(s32) = COPY $vgpr0
101    %1:_(s32) = COPY $vgpr1
102    %2:_(s32) = COPY $vgpr2
103    %3:_(s32) = COPY $vgpr3
104    %4:_(s32) = COPY $vgpr4
105    %5:_(s32) = COPY $vgpr5
106    %6:_(<6 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5
107    S_NOP 0, implicit %6
108...
109---
110name: legal_v7s32
111body: |
112  bb.0:
113    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
114    ; CHECK-LABEL: name: legal_v7s32
115    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
116    ; CHECK-NEXT: {{  $}}
117    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
118    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
119    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
120    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
121    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
122    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
123    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
124    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<7 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32)
125    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<7 x s32>)
126    %0:_(s32) = COPY $vgpr0
127    %1:_(s32) = COPY $vgpr1
128    %2:_(s32) = COPY $vgpr2
129    %3:_(s32) = COPY $vgpr3
130    %4:_(s32) = COPY $vgpr4
131    %5:_(s32) = COPY $vgpr5
132    %6:_(s32) = COPY $vgpr6
133    %7:_(<7 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6
134    S_NOP 0, implicit %7
135...
136---
137name: legal_v8s32
138body: |
139  bb.0:
140    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7
141    ; CHECK-LABEL: name: legal_v8s32
142    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7
143    ; CHECK-NEXT: {{  $}}
144    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
145    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
146    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
147    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
148    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
149    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
150    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
151    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
152    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
153    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<8 x s32>)
154    %0:_(s32) = COPY $vgpr0
155    %1:_(s32) = COPY $vgpr1
156    %2:_(s32) = COPY $vgpr2
157    %3:_(s32) = COPY $vgpr3
158    %4:_(s32) = COPY $vgpr4
159    %5:_(s32) = COPY $vgpr5
160    %6:_(s32) = COPY $vgpr6
161    %7:_(s32) = COPY $vgpr7
162    %8:_(<8 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7
163    S_NOP 0, implicit %8
164...
165---
166name: legal_v9s32
167body: |
168  bb.0:
169    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
170    ; CHECK-LABEL: name: legal_v9s32
171    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
172    ; CHECK-NEXT: {{  $}}
173    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
174    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
175    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
176    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
177    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
178    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
179    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
180    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
181    ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
182    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<9 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)
183    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<9 x s32>)
184    %0:_(s32) = COPY $vgpr0
185    %1:_(s32) = COPY $vgpr1
186    %2:_(s32) = COPY $vgpr2
187    %3:_(s32) = COPY $vgpr3
188    %4:_(s32) = COPY $vgpr4
189    %5:_(s32) = COPY $vgpr5
190    %6:_(s32) = COPY $vgpr6
191    %7:_(s32) = COPY $vgpr7
192    %8:_(s32) = COPY $vgpr8
193    %9:_(<9 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8
194    S_NOP 0, implicit %9
195...
196---
197name: legal_v10s32
198body: |
199  bb.0:
200    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9
201    ; CHECK-LABEL: name: legal_v10s32
202    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9
203    ; CHECK-NEXT: {{  $}}
204    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
205    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
206    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
207    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
208    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
209    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
210    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
211    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
212    ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
213    ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
214    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<10 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32)
215    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<10 x s32>)
216    %0:_(s32) = COPY $vgpr0
217    %1:_(s32) = COPY $vgpr1
218    %2:_(s32) = COPY $vgpr2
219    %3:_(s32) = COPY $vgpr3
220    %4:_(s32) = COPY $vgpr4
221    %5:_(s32) = COPY $vgpr5
222    %6:_(s32) = COPY $vgpr6
223    %7:_(s32) = COPY $vgpr7
224    %8:_(s32) = COPY $vgpr8
225    %9:_(s32) = COPY $vgpr9
226    %10:_(<10 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9
227    S_NOP 0, implicit %10
228...
229---
230name: legal_v11s32
231body: |
232  bb.0:
233    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10
234    ; CHECK-LABEL: name: legal_v11s32
235    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10
236    ; CHECK-NEXT: {{  $}}
237    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
238    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
239    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
240    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
241    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
242    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
243    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
244    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
245    ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
246    ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
247    ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
248    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<11 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32)
249    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<11 x s32>)
250    %0:_(s32) = COPY $vgpr0
251    %1:_(s32) = COPY $vgpr1
252    %2:_(s32) = COPY $vgpr2
253    %3:_(s32) = COPY $vgpr3
254    %4:_(s32) = COPY $vgpr4
255    %5:_(s32) = COPY $vgpr5
256    %6:_(s32) = COPY $vgpr6
257    %7:_(s32) = COPY $vgpr7
258    %8:_(s32) = COPY $vgpr8
259    %9:_(s32) = COPY $vgpr9
260    %10:_(s32) = COPY $vgpr10
261    %11:_(<11 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10
262    S_NOP 0, implicit %11
263...
264---
265name: legal_v12s32
266body: |
267  bb.0:
268    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11
269    ; CHECK-LABEL: name: legal_v12s32
270    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11
271    ; CHECK-NEXT: {{  $}}
272    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
273    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
274    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
275    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
276    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
277    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
278    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
279    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
280    ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
281    ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
282    ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
283    ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
284    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<12 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
285    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<12 x s32>)
286    %0:_(s32) = COPY $vgpr0
287    %1:_(s32) = COPY $vgpr1
288    %2:_(s32) = COPY $vgpr2
289    %3:_(s32) = COPY $vgpr3
290    %4:_(s32) = COPY $vgpr4
291    %5:_(s32) = COPY $vgpr5
292    %6:_(s32) = COPY $vgpr6
293    %7:_(s32) = COPY $vgpr7
294    %8:_(s32) = COPY $vgpr8
295    %9:_(s32) = COPY $vgpr9
296    %10:_(s32) = COPY $vgpr10
297    %11:_(s32) = COPY $vgpr11
298    %12:_(<12 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11
299    S_NOP 0, implicit %12
300...
301---
302name: legal_v16s32
303body: |
304  bb.0:
305    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15
306    ; CHECK-LABEL: name: legal_v16s32
307    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15
308    ; CHECK-NEXT: {{  $}}
309    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
310    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
311    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
312    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
313    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
314    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
315    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
316    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
317    ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
318    ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
319    ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
320    ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
321    ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
322    ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
323    ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
324    ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
325    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32)
326    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<16 x s32>)
327    %0:_(s32) = COPY $vgpr0
328    %1:_(s32) = COPY $vgpr1
329    %2:_(s32) = COPY $vgpr2
330    %3:_(s32) = COPY $vgpr3
331    %4:_(s32) = COPY $vgpr4
332    %5:_(s32) = COPY $vgpr5
333    %6:_(s32) = COPY $vgpr6
334    %7:_(s32) = COPY $vgpr7
335    %8:_(s32) = COPY $vgpr8
336    %9:_(s32) = COPY $vgpr9
337    %10:_(s32) = COPY $vgpr10
338    %11:_(s32) = COPY $vgpr11
339    %12:_(s32) = COPY $vgpr12
340    %13:_(s32) = COPY $vgpr13
341    %14:_(s32) = COPY $vgpr14
342    %15:_(s32) = COPY $vgpr15
343    %16:_(<16 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15
344    S_NOP 0, implicit %16
345...
346---
347name: legal_v32s32
348body: |
349  bb.0:
350    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31
351    ; CHECK-LABEL: name: legal_v32s32
352    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31
353    ; CHECK-NEXT: {{  $}}
354    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
355    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
356    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
357    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
358    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
359    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
360    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
361    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
362    ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
363    ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
364    ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
365    ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
366    ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
367    ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
368    ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
369    ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
370    ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
371    ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
372    ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
373    ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
374    ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
375    ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
376    ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
377    ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
378    ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
379    ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
380    ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
381    ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
382    ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
383    ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
384    ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
385    ; CHECK-NEXT: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
386    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32)
387    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<32 x s32>)
388    %0:_(s32) = COPY $vgpr0
389    %1:_(s32) = COPY $vgpr1
390    %2:_(s32) = COPY $vgpr2
391    %3:_(s32) = COPY $vgpr3
392    %4:_(s32) = COPY $vgpr4
393    %5:_(s32) = COPY $vgpr5
394    %6:_(s32) = COPY $vgpr6
395    %7:_(s32) = COPY $vgpr7
396    %8:_(s32) = COPY $vgpr8
397    %9:_(s32) = COPY $vgpr9
398    %10:_(s32) = COPY $vgpr10
399    %11:_(s32) = COPY $vgpr11
400    %12:_(s32) = COPY $vgpr12
401    %13:_(s32) = COPY $vgpr13
402    %14:_(s32) = COPY $vgpr14
403    %15:_(s32) = COPY $vgpr15
404    %16:_(s32) = COPY $vgpr16
405    %17:_(s32) = COPY $vgpr17
406    %18:_(s32) = COPY $vgpr18
407    %19:_(s32) = COPY $vgpr19
408    %20:_(s32) = COPY $vgpr20
409    %21:_(s32) = COPY $vgpr21
410    %22:_(s32) = COPY $vgpr22
411    %23:_(s32) = COPY $vgpr23
412    %24:_(s32) = COPY $vgpr24
413    %25:_(s32) = COPY $vgpr25
414    %26:_(s32) = COPY $vgpr26
415    %27:_(s32) = COPY $vgpr27
416    %28:_(s32) = COPY $vgpr28
417    %29:_(s32) = COPY $vgpr29
418    %30:_(s32) = COPY $vgpr30
419    %31:_(s32) = COPY $vgpr31
420    %32:_(<32 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31
421    S_NOP 0, implicit %32
422...
423---
424name: legal_v2s64
425body: |
426  bb.0:
427    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
428    ; CHECK-LABEL: name: legal_v2s64
429    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
430    ; CHECK-NEXT: {{  $}}
431    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
432    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
433    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64)
434    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s64>)
435    %0:_(s64) = COPY $vgpr0_vgpr1
436    %1:_(s64) = COPY $vgpr2_vgpr3
437    %2:_(<2 x s64>) = G_BUILD_VECTOR %0, %1
438    S_NOP 0, implicit %2
439...
440---
441name: legal_v3s64
442body: |
443  bb.0:
444    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
445    ; CHECK-LABEL: name: legal_v3s64
446    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
447    ; CHECK-NEXT: {{  $}}
448    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
449    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
450    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
451    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64)
452    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s64>)
453    %0:_(s64) = COPY $vgpr0_vgpr1
454    %1:_(s64) = COPY $vgpr2_vgpr3
455    %2:_(s64) = COPY $vgpr4_vgpr5
456    %3:_(<3 x s64>) = G_BUILD_VECTOR %0, %1, %2
457    S_NOP 0, implicit %3
458...
459---
460name: legal_v4s64
461body: |
462  bb.0:
463    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7
464    ; CHECK-LABEL: name: legal_v4s64
465    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7
466    ; CHECK-NEXT: {{  $}}
467    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
468    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
469    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
470    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
471    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64)
472    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s64>)
473    %0:_(s64) = COPY $vgpr0_vgpr1
474    %1:_(s64) = COPY $vgpr2_vgpr3
475    %2:_(s64) = COPY $vgpr4_vgpr5
476    %3:_(s64) = COPY $vgpr6_vgpr7
477    %4:_(<4 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3
478    S_NOP 0, implicit %4
479...
480---
481name: legal_v5s64
482body: |
483  bb.0:
484    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9
485    ; CHECK-LABEL: name: legal_v5s64
486    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9
487    ; CHECK-NEXT: {{  $}}
488    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
489    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
490    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
491    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
492    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
493    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64)
494    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<5 x s64>)
495    %0:_(s64) = COPY $vgpr0_vgpr1
496    %1:_(s64) = COPY $vgpr2_vgpr3
497    %2:_(s64) = COPY $vgpr4_vgpr5
498    %3:_(s64) = COPY $vgpr6_vgpr7
499    %4:_(s64) = COPY $vgpr8_vgpr9
500    %5:_(<5 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4
501    S_NOP 0, implicit %5
502...
503---
504name: legal_v6s64
505body: |
506  bb.0:
507    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11
508    ; CHECK-LABEL: name: legal_v6s64
509    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11
510    ; CHECK-NEXT: {{  $}}
511    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
512    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
513    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
514    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
515    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
516    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
517    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64)
518    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<6 x s64>)
519    %0:_(s64) = COPY $vgpr0_vgpr1
520    %1:_(s64) = COPY $vgpr2_vgpr3
521    %2:_(s64) = COPY $vgpr4_vgpr5
522    %3:_(s64) = COPY $vgpr6_vgpr7
523    %4:_(s64) = COPY $vgpr8_vgpr9
524    %5:_(s64) = COPY $vgpr10_vgpr11
525    %6:_(<6 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5
526    S_NOP 0, implicit %6
527...
528---
529name: legal_v7s64
530body: |
531  bb.0:
532    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13
533    ; CHECK-LABEL: name: legal_v7s64
534    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13
535    ; CHECK-NEXT: {{  $}}
536    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
537    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
538    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
539    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
540    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
541    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
542    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
543    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<7 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64), [[COPY6]](s64)
544    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<7 x s64>)
545    %0:_(s64) = COPY $vgpr0_vgpr1
546    %1:_(s64) = COPY $vgpr2_vgpr3
547    %2:_(s64) = COPY $vgpr4_vgpr5
548    %3:_(s64) = COPY $vgpr6_vgpr7
549    %4:_(s64) = COPY $vgpr8_vgpr9
550    %5:_(s64) = COPY $vgpr10_vgpr11
551    %6:_(s64) = COPY $vgpr12_vgpr13
552    %7:_(<7 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6
553    S_NOP 0, implicit %7
554...
555---
556name: legal_v8s64
557body: |
558  bb.0:
559    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
560    ; CHECK-LABEL: name: legal_v8s64
561    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
562    ; CHECK-NEXT: {{  $}}
563    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
564    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
565    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
566    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
567    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
568    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
569    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
570    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $vgpr14_vgpr15
571    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64), [[COPY6]](s64), [[COPY7]](s64)
572    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<8 x s64>)
573    %0:_(s64) = COPY $vgpr0_vgpr1
574    %1:_(s64) = COPY $vgpr2_vgpr3
575    %2:_(s64) = COPY $vgpr4_vgpr5
576    %3:_(s64) = COPY $vgpr6_vgpr7
577    %4:_(s64) = COPY $vgpr8_vgpr9
578    %5:_(s64) = COPY $vgpr10_vgpr11
579    %6:_(s64) = COPY $vgpr12_vgpr13
580    %7:_(s64) = COPY $vgpr14_vgpr15
581    %8:_(<8 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7
582    S_NOP 0, implicit %8
583...
584
585---
586name: legal_v16s64
587body: |
588  bb.0:
589    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15, $vgpr16_vgpr17, $vgpr18_vgpr19, $vgpr20_vgpr21, $vgpr22_vgpr23, $vgpr24_vgpr25, $vgpr26_vgpr27, $vgpr28_vgpr29, $vgpr30_vgpr31
590    ; CHECK-LABEL: name: legal_v16s64
591    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15, $vgpr16_vgpr17, $vgpr18_vgpr19, $vgpr20_vgpr21, $vgpr22_vgpr23, $vgpr24_vgpr25, $vgpr26_vgpr27, $vgpr28_vgpr29, $vgpr30_vgpr31
592    ; CHECK-NEXT: {{  $}}
593    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
594    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
595    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
596    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
597    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
598    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
599    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
600    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $vgpr14_vgpr15
601    ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s64) = COPY $vgpr16_vgpr17
602    ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s64) = COPY $vgpr18_vgpr19
603    ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s64) = COPY $vgpr20_vgpr21
604    ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY $vgpr22_vgpr23
605    ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY $vgpr24_vgpr25
606    ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY $vgpr26_vgpr27
607    ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s64) = COPY $vgpr28_vgpr29
608    ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s64) = COPY $vgpr30_vgpr31
609    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64), [[COPY6]](s64), [[COPY7]](s64), [[COPY8]](s64), [[COPY9]](s64), [[COPY10]](s64), [[COPY11]](s64), [[COPY12]](s64), [[COPY13]](s64), [[COPY14]](s64), [[COPY15]](s64)
610    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<16 x s64>)
611    %0:_(s64) = COPY $vgpr0_vgpr1
612    %1:_(s64) = COPY $vgpr2_vgpr3
613    %2:_(s64) = COPY $vgpr4_vgpr5
614    %3:_(s64) = COPY $vgpr6_vgpr7
615    %4:_(s64) = COPY $vgpr8_vgpr9
616    %5:_(s64) = COPY $vgpr10_vgpr11
617    %6:_(s64) = COPY $vgpr12_vgpr13
618    %7:_(s64) = COPY $vgpr14_vgpr15
619    %8:_(s64) = COPY $vgpr16_vgpr17
620    %9:_(s64) = COPY $vgpr18_vgpr19
621    %10:_(s64) = COPY $vgpr20_vgpr21
622    %11:_(s64) = COPY $vgpr22_vgpr23
623    %12:_(s64) = COPY $vgpr24_vgpr25
624    %13:_(s64) = COPY $vgpr26_vgpr27
625    %14:_(s64) = COPY $vgpr28_vgpr29
626    %15:_(s64) = COPY $vgpr30_vgpr31
627    %16:_(<16 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15
628    S_NOP 0, implicit %16
629...
630
631---
632name: legal_v2s128
633body: |
634  bb.0:
635    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7
636
637    ; CHECK-LABEL: name: legal_v2s128
638    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7
639    ; CHECK-NEXT: {{  $}}
640    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
641    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
642    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s128>) = G_BUILD_VECTOR [[COPY]](s128), [[COPY1]](s128)
643    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s128>)
644    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
645    %1:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
646    %2:_(<2 x s128>) = G_BUILD_VECTOR %0, %1
647    S_NOP 0, implicit %2
648...
649
650---
651name: legal_v2p3
652body: |
653  bb.0:
654    liveins: $vgpr0, $vgpr1
655    ; CHECK-LABEL: name: legal_v2p3
656    ; CHECK: liveins: $vgpr0, $vgpr1
657    ; CHECK-NEXT: {{  $}}
658    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
659    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1
660    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3)
661    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p3>)
662    %0:_(p3) = COPY $vgpr0
663    %1:_(p3) = COPY $vgpr1
664    %2:_(<2 x p3>) = G_BUILD_VECTOR %0, %1
665    S_NOP 0, implicit %2
666...
667---
668name: legal_v3p3
669body: |
670  bb.0:
671    liveins: $vgpr0, $vgpr1, $vgpr2
672    ; CHECK-LABEL: name: legal_v3p3
673    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
674    ; CHECK-NEXT: {{  $}}
675    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
676    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1
677    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p3) = COPY $vgpr2
678    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3), [[COPY2]](p3)
679    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x p3>)
680    %0:_(p3) = COPY $vgpr0
681    %1:_(p3) = COPY $vgpr1
682    %2:_(p3) = COPY $vgpr2
683    %3:_(<3 x p3>) = G_BUILD_VECTOR %0, %1, %2
684    S_NOP 0, implicit %3
685...
686
687---
688name: legal_v2p0
689body: |
690  bb.0:
691    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
692    ; CHECK-LABEL: name: legal_v2p0
693    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
694    ; CHECK-NEXT: {{  $}}
695    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
696    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr2_vgpr3
697    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[COPY]](p0), [[COPY1]](p0)
698    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p0>)
699    %0:_(p0) = COPY $vgpr0_vgpr1
700    %1:_(p0) = COPY $vgpr2_vgpr3
701    %2:_(<2 x p0>) = G_BUILD_VECTOR %0, %1
702    S_NOP 0, implicit %2
703...
704
705---
706name: legal_v2p999
707body: |
708  bb.0:
709    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
710    ; CHECK-LABEL: name: legal_v2p999
711    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
712    ; CHECK-NEXT: {{  $}}
713    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1
714    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr2_vgpr3
715    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p999>) = G_BUILD_VECTOR [[COPY]](p999), [[COPY1]](p999)
716    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p999>)
717    %0:_(p999) = COPY $vgpr0_vgpr1
718    %1:_(p999) = COPY $vgpr2_vgpr3
719    %2:_(<2 x p999>) = G_BUILD_VECTOR %0, %1
720    S_NOP 0, implicit %2
721...
722
723---
724name: legal_v2s256
725body: |
726  bb.0:
727    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
728
729    ; CHECK-LABEL: name: legal_v2s256
730    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
731    ; CHECK-NEXT: {{  $}}
732    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
733    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s256) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
734    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s256>) = G_BUILD_VECTOR [[COPY]](s256), [[COPY1]](s256)
735    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s256>)
736    %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
737    %1:_(s256) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
738    %2:_(<2 x s256>) = G_BUILD_VECTOR %0, %1
739    S_NOP 0, implicit %2
740...
741
742---
743name: legal_v4s128
744body: |
745  bb.0:
746    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10, $vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
747
748    ; CHECK-LABEL: name: legal_v4s128
749    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10, $vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
750    ; CHECK-NEXT: {{  $}}
751    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
752    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
753    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s128) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
754    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s128) = COPY $vgpr12_vgpr13_vgpr14_vgpr15
755    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s128>) = G_BUILD_VECTOR [[COPY]](s128), [[COPY1]](s128), [[COPY2]](s128), [[COPY3]](s128)
756    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s128>)
757    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
758    %1:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
759    %2:_(s128) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
760    %3:_(s128)= COPY $vgpr12_vgpr13_vgpr14_vgpr15
761    %4:_(<4 x s128>) = G_BUILD_VECTOR %0, %1, %2, %3
762    S_NOP 0, implicit %4
763...
764