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
8 liveins: $vgpr0, $vgpr1
9 ; CHECK-LABEL: name: legal_v2s32
10 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
11 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
12 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)
13 ; CHECK-NEXT: 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
23 liveins: $vgpr0, $vgpr1, $vgpr2
24 ; CHECK-LABEL: name: legal_v3s32
25 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
26 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
27 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
28 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
29 ; CHECK-NEXT: 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
40 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
41 ; CHECK-LABEL: name: legal_v4s32
42 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
43 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
44 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
45 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
46 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
47 ; CHECK-NEXT: 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
59 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
60 ; CHECK-LABEL: name: legal_v5s32
61 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
62 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
63 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
64 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
65 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
66 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32)
67 ; CHECK-NEXT: 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
80 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
81 ; CHECK-LABEL: name: legal_v6s32
82 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
83 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
84 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
85 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
86 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
87 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
88 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)
89 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
107 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
108 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
109 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
110 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
111 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
112 ; 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)
113 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
132 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
133 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
134 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
135 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
136 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
137 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
138 ; 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)
139 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
159 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
160 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
161 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
162 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
163 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
164 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
165 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
166 ; 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)
167 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
188 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
189 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
190 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
191 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
192 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
193 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
194 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
195 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
196 ; 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)
197 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
219 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
220 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
221 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
222 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
223 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
224 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
225 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
226 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
227 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
228 ; 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)
229 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
252 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
253 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
254 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
255 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
256 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
257 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
258 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
259 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
260 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
261 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
262 ; 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)
263 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
287 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
288 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
289 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
290 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
291 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
292 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
293 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
294 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
295 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
296 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
297 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
298 ; CHECK-NEXT: [[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-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
324 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
325 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
326 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
327 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
328 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
329 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
330 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
331 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
332 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
333 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
334 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
335 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
336 ; CHECK-NEXT: [[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-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
363 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
364 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
365 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
366 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
367 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
368 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
369 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
370 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
371 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
372 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
373 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
374 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
375 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
376 ; CHECK-NEXT: [[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-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
404 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
405 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
406 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
407 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
408 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
409 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
410 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
411 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
412 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
413 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
414 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
415 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
416 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
417 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
418 ; 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)
419 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
447 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
448 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
449 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
450 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
451 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
452 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
453 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
454 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
455 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
456 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
457 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
458 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
459 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
460 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
461 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
462 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
463 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
464 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
465 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
466 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
467 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
468 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
469 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
470 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
471 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
472 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
473 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
474 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
475 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
476 ; CHECK-NEXT: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
477 ; 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)
478 ; CHECK-NEXT: 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
518 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
519 ; CHECK-LABEL: name: legal_v2s64
520 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
521 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
522 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64)
523 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
537 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
538 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64)
539 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
554 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
555 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
556 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64)
557 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
573 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
574 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
575 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
576 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64)
577 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
594 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
595 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
596 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
597 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
598 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64)
599 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
617 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
618 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
619 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
620 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
621 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
622 ; 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)
623 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
642 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
643 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
644 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
645 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
646 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
647 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $vgpr14_vgpr15
648 ; 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)
649 ; CHECK-NEXT: 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
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-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
670 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
671 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
672 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
673 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
674 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
675 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $vgpr14_vgpr15
676 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s64) = COPY $vgpr16_vgpr17
677 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s64) = COPY $vgpr18_vgpr19
678 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s64) = COPY $vgpr20_vgpr21
679 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY $vgpr22_vgpr23
680 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY $vgpr24_vgpr25
681 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY $vgpr26_vgpr27
682 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s64) = COPY $vgpr28_vgpr29
683 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s64) = COPY $vgpr30_vgpr31
684 ; 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)
685 ; CHECK-NEXT: 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
710 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7
712 ; CHECK-LABEL: name: legal_v2s128
713 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
714 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
715 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s128>) = G_BUILD_VECTOR [[COPY]](s128), [[COPY1]](s128)
716 ; CHECK-NEXT: 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
727 liveins: $vgpr0, $vgpr1
728 ; CHECK-LABEL: name: legal_v2p3
729 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
730 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1
731 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3)
732 ; CHECK-NEXT: 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
742 liveins: $vgpr0, $vgpr1, $vgpr2
743 ; CHECK-LABEL: name: legal_v3p3
744 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
745 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1
746 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p3) = COPY $vgpr2
747 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3), [[COPY2]](p3)
748 ; CHECK-NEXT: 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
760 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
761 ; CHECK-LABEL: name: legal_v2p0
762 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
763 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr2_vgpr3
764 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[COPY]](p0), [[COPY1]](p0)
765 ; CHECK-NEXT: 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
776 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
777 ; CHECK-LABEL: name: legal_v2p999
778 ; CHECK: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1
779 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr2_vgpr3
780 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p999>) = G_BUILD_VECTOR [[COPY]](p999), [[COPY1]](p999)
781 ; CHECK-NEXT: 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
792 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
794 ; CHECK-LABEL: name: legal_v2s256
795 ; CHECK: [[COPY:%[0-9]+]]:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
796 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s256) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
797 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s256>) = G_BUILD_VECTOR [[COPY]](s256), [[COPY1]](s256)
798 ; CHECK-NEXT: 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
809 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10, $vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
811 ; CHECK-LABEL: name: legal_v4s128
812 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
813 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
814 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s128) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
815 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s128) = COPY $vgpr12_vgpr13_vgpr14_vgpr15
816 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s128>) = G_BUILD_VECTOR [[COPY]](s128), [[COPY1]](s128), [[COPY2]](s128), [[COPY3]](s128)
817 ; CHECK-NEXT: 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