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