[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / legalize-build-vector.mir
blob10766b0f79d818c67539796ec0d8a9602d1d5f6e
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
4 ---
5 name: legal_v2s32
6 body: |
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 ---
22 name: legal_v3s32
23 body: |
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 ---
41 name: legal_v4s32
42 body: |
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 ---
62 name: legal_v5s32
63 body: |
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 ---
85 name: legal_v6s32
86 body: |
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
110 name: legal_v7s32
111 body: |
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
137 name: legal_v8s32
138 body: |
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
166 name: legal_v9s32
167 body: |
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
197 name: legal_v10s32
198 body: |
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
230 name: legal_v11s32
231 body: |
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
265 name: legal_v12s32
266 body: |
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
302 name: legal_v13s32
303 body: |
304   bb.0:
305     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12
306     ; CHECK-LABEL: name: legal_v13s32
307     ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12
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: [[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)
323     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<13 x s32>)
324     %0:_(s32) = COPY $vgpr0
325     %1:_(s32) = COPY $vgpr1
326     %2:_(s32) = COPY $vgpr2
327     %3:_(s32) = COPY $vgpr3
328     %4:_(s32) = COPY $vgpr4
329     %5:_(s32) = COPY $vgpr5
330     %6:_(s32) = COPY $vgpr6
331     %7:_(s32) = COPY $vgpr7
332     %8:_(s32) = COPY $vgpr8
333     %9:_(s32) = COPY $vgpr9
334     %10:_(s32) = COPY $vgpr10
335     %11:_(s32) = COPY $vgpr11
336     %12:_(s32) = COPY $vgpr12
337     %13:_(<13 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12
338     S_NOP 0, implicit %13
341 name: legal_v14s32
342 body: |
343   bb.0:
344     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13
345     ; CHECK-LABEL: name: legal_v14s32
346     ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13
347     ; CHECK-NEXT: {{  $}}
348     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
349     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
350     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
351     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
352     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
353     ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
354     ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
355     ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
356     ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
357     ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
358     ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
359     ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
360     ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
361     ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
362     ; 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)
363     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<14 x s32>)
364     %0:_(s32) = COPY $vgpr0
365     %1:_(s32) = COPY $vgpr1
366     %2:_(s32) = COPY $vgpr2
367     %3:_(s32) = COPY $vgpr3
368     %4:_(s32) = COPY $vgpr4
369     %5:_(s32) = COPY $vgpr5
370     %6:_(s32) = COPY $vgpr6
371     %7:_(s32) = COPY $vgpr7
372     %8:_(s32) = COPY $vgpr8
373     %9:_(s32) = COPY $vgpr9
374     %10:_(s32) = COPY $vgpr10
375     %11:_(s32) = COPY $vgpr11
376     %12:_(s32) = COPY $vgpr12
377     %13:_(s32) = COPY $vgpr13
378     %14:_(<14 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13
379     S_NOP 0, implicit %14
382 name: legal_v15s32
383 body: |
384   bb.0:
385     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14
386     ; CHECK-LABEL: name: legal_v15s32
387     ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14
388     ; CHECK-NEXT: {{  $}}
389     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
390     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
391     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
392     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
393     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
394     ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
395     ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
396     ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
397     ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
398     ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
399     ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
400     ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
401     ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
402     ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
403     ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
404     ; 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)
405     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<15 x s32>)
406     %0:_(s32) = COPY $vgpr0
407     %1:_(s32) = COPY $vgpr1
408     %2:_(s32) = COPY $vgpr2
409     %3:_(s32) = COPY $vgpr3
410     %4:_(s32) = COPY $vgpr4
411     %5:_(s32) = COPY $vgpr5
412     %6:_(s32) = COPY $vgpr6
413     %7:_(s32) = COPY $vgpr7
414     %8:_(s32) = COPY $vgpr8
415     %9:_(s32) = COPY $vgpr9
416     %10:_(s32) = COPY $vgpr10
417     %11:_(s32) = COPY $vgpr11
418     %12:_(s32) = COPY $vgpr12
419     %13:_(s32) = COPY $vgpr13
420     %14:_(s32) = COPY $vgpr14
421     %15:_(<15 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14
422     S_NOP 0, implicit %15
425 name: legal_v16s32
426 body: |
427   bb.0:
428     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15
429     ; CHECK-LABEL: name: legal_v16s32
430     ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15
431     ; CHECK-NEXT: {{  $}}
432     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
433     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
434     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
435     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
436     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
437     ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
438     ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
439     ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
440     ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
441     ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
442     ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
443     ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
444     ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
445     ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
446     ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
447     ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
448     ; 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)
449     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<16 x s32>)
450     %0:_(s32) = COPY $vgpr0
451     %1:_(s32) = COPY $vgpr1
452     %2:_(s32) = COPY $vgpr2
453     %3:_(s32) = COPY $vgpr3
454     %4:_(s32) = COPY $vgpr4
455     %5:_(s32) = COPY $vgpr5
456     %6:_(s32) = COPY $vgpr6
457     %7:_(s32) = COPY $vgpr7
458     %8:_(s32) = COPY $vgpr8
459     %9:_(s32) = COPY $vgpr9
460     %10:_(s32) = COPY $vgpr10
461     %11:_(s32) = COPY $vgpr11
462     %12:_(s32) = COPY $vgpr12
463     %13:_(s32) = COPY $vgpr13
464     %14:_(s32) = COPY $vgpr14
465     %15:_(s32) = COPY $vgpr15
466     %16:_(<16 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15
467     S_NOP 0, implicit %16
470 name: legal_v32s32
471 body: |
472   bb.0:
473     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
474     ; CHECK-LABEL: name: legal_v32s32
475     ; 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
476     ; CHECK-NEXT: {{  $}}
477     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
478     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
479     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
480     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
481     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4
482     ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5
483     ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6
484     ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7
485     ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8
486     ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9
487     ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10
488     ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11
489     ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12
490     ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13
491     ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14
492     ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15
493     ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16
494     ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17
495     ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18
496     ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19
497     ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20
498     ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21
499     ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22
500     ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23
501     ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24
502     ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25
503     ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26
504     ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27
505     ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28
506     ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29
507     ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30
508     ; CHECK-NEXT: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31
509     ; 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)
510     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<32 x s32>)
511     %0:_(s32) = COPY $vgpr0
512     %1:_(s32) = COPY $vgpr1
513     %2:_(s32) = COPY $vgpr2
514     %3:_(s32) = COPY $vgpr3
515     %4:_(s32) = COPY $vgpr4
516     %5:_(s32) = COPY $vgpr5
517     %6:_(s32) = COPY $vgpr6
518     %7:_(s32) = COPY $vgpr7
519     %8:_(s32) = COPY $vgpr8
520     %9:_(s32) = COPY $vgpr9
521     %10:_(s32) = COPY $vgpr10
522     %11:_(s32) = COPY $vgpr11
523     %12:_(s32) = COPY $vgpr12
524     %13:_(s32) = COPY $vgpr13
525     %14:_(s32) = COPY $vgpr14
526     %15:_(s32) = COPY $vgpr15
527     %16:_(s32) = COPY $vgpr16
528     %17:_(s32) = COPY $vgpr17
529     %18:_(s32) = COPY $vgpr18
530     %19:_(s32) = COPY $vgpr19
531     %20:_(s32) = COPY $vgpr20
532     %21:_(s32) = COPY $vgpr21
533     %22:_(s32) = COPY $vgpr22
534     %23:_(s32) = COPY $vgpr23
535     %24:_(s32) = COPY $vgpr24
536     %25:_(s32) = COPY $vgpr25
537     %26:_(s32) = COPY $vgpr26
538     %27:_(s32) = COPY $vgpr27
539     %28:_(s32) = COPY $vgpr28
540     %29:_(s32) = COPY $vgpr29
541     %30:_(s32) = COPY $vgpr30
542     %31:_(s32) = COPY $vgpr31
543     %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
544     S_NOP 0, implicit %32
547 name: legal_v2s64
548 body: |
549   bb.0:
550     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
551     ; CHECK-LABEL: name: legal_v2s64
552     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
553     ; CHECK-NEXT: {{  $}}
554     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
555     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
556     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64)
557     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s64>)
558     %0:_(s64) = COPY $vgpr0_vgpr1
559     %1:_(s64) = COPY $vgpr2_vgpr3
560     %2:_(<2 x s64>) = G_BUILD_VECTOR %0, %1
561     S_NOP 0, implicit %2
564 name: legal_v3s64
565 body: |
566   bb.0:
567     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
568     ; CHECK-LABEL: name: legal_v3s64
569     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
570     ; CHECK-NEXT: {{  $}}
571     ; CHECK-NEXT: [[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: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64)
575     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s64>)
576     %0:_(s64) = COPY $vgpr0_vgpr1
577     %1:_(s64) = COPY $vgpr2_vgpr3
578     %2:_(s64) = COPY $vgpr4_vgpr5
579     %3:_(<3 x s64>) = G_BUILD_VECTOR %0, %1, %2
580     S_NOP 0, implicit %3
583 name: legal_v4s64
584 body: |
585   bb.0:
586     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7
587     ; CHECK-LABEL: name: legal_v4s64
588     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7
589     ; CHECK-NEXT: {{  $}}
590     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
591     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
592     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
593     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
594     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64)
595     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s64>)
596     %0:_(s64) = COPY $vgpr0_vgpr1
597     %1:_(s64) = COPY $vgpr2_vgpr3
598     %2:_(s64) = COPY $vgpr4_vgpr5
599     %3:_(s64) = COPY $vgpr6_vgpr7
600     %4:_(<4 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3
601     S_NOP 0, implicit %4
604 name: legal_v5s64
605 body: |
606   bb.0:
607     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9
608     ; CHECK-LABEL: name: legal_v5s64
609     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9
610     ; CHECK-NEXT: {{  $}}
611     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
612     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
613     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
614     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
615     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
616     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64)
617     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<5 x s64>)
618     %0:_(s64) = COPY $vgpr0_vgpr1
619     %1:_(s64) = COPY $vgpr2_vgpr3
620     %2:_(s64) = COPY $vgpr4_vgpr5
621     %3:_(s64) = COPY $vgpr6_vgpr7
622     %4:_(s64) = COPY $vgpr8_vgpr9
623     %5:_(<5 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4
624     S_NOP 0, implicit %5
627 name: legal_v6s64
628 body: |
629   bb.0:
630     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11
631     ; CHECK-LABEL: name: legal_v6s64
632     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11
633     ; CHECK-NEXT: {{  $}}
634     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
635     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
636     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
637     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
638     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
639     ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
640     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64)
641     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<6 x s64>)
642     %0:_(s64) = COPY $vgpr0_vgpr1
643     %1:_(s64) = COPY $vgpr2_vgpr3
644     %2:_(s64) = COPY $vgpr4_vgpr5
645     %3:_(s64) = COPY $vgpr6_vgpr7
646     %4:_(s64) = COPY $vgpr8_vgpr9
647     %5:_(s64) = COPY $vgpr10_vgpr11
648     %6:_(<6 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5
649     S_NOP 0, implicit %6
652 name: legal_v7s64
653 body: |
654   bb.0:
655     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13
656     ; CHECK-LABEL: name: legal_v7s64
657     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13
658     ; CHECK-NEXT: {{  $}}
659     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
660     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
661     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
662     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
663     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
664     ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
665     ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
666     ; 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)
667     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<7 x s64>)
668     %0:_(s64) = COPY $vgpr0_vgpr1
669     %1:_(s64) = COPY $vgpr2_vgpr3
670     %2:_(s64) = COPY $vgpr4_vgpr5
671     %3:_(s64) = COPY $vgpr6_vgpr7
672     %4:_(s64) = COPY $vgpr8_vgpr9
673     %5:_(s64) = COPY $vgpr10_vgpr11
674     %6:_(s64) = COPY $vgpr12_vgpr13
675     %7:_(<7 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6
676     S_NOP 0, implicit %7
679 name: legal_v8s64
680 body: |
681   bb.0:
682     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
683     ; CHECK-LABEL: name: legal_v8s64
684     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
685     ; CHECK-NEXT: {{  $}}
686     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
687     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
688     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
689     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
690     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
691     ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
692     ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
693     ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $vgpr14_vgpr15
694     ; 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)
695     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<8 x s64>)
696     %0:_(s64) = COPY $vgpr0_vgpr1
697     %1:_(s64) = COPY $vgpr2_vgpr3
698     %2:_(s64) = COPY $vgpr4_vgpr5
699     %3:_(s64) = COPY $vgpr6_vgpr7
700     %4:_(s64) = COPY $vgpr8_vgpr9
701     %5:_(s64) = COPY $vgpr10_vgpr11
702     %6:_(s64) = COPY $vgpr12_vgpr13
703     %7:_(s64) = COPY $vgpr14_vgpr15
704     %8:_(<8 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7
705     S_NOP 0, implicit %8
709 name: legal_v16s64
710 body: |
711   bb.0:
712     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
713     ; CHECK-LABEL: name: legal_v16s64
714     ; 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
715     ; CHECK-NEXT: {{  $}}
716     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
717     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
718     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
719     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7
720     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9
721     ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11
722     ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13
723     ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $vgpr14_vgpr15
724     ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s64) = COPY $vgpr16_vgpr17
725     ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s64) = COPY $vgpr18_vgpr19
726     ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s64) = COPY $vgpr20_vgpr21
727     ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY $vgpr22_vgpr23
728     ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY $vgpr24_vgpr25
729     ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY $vgpr26_vgpr27
730     ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s64) = COPY $vgpr28_vgpr29
731     ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s64) = COPY $vgpr30_vgpr31
732     ; 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)
733     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<16 x s64>)
734     %0:_(s64) = COPY $vgpr0_vgpr1
735     %1:_(s64) = COPY $vgpr2_vgpr3
736     %2:_(s64) = COPY $vgpr4_vgpr5
737     %3:_(s64) = COPY $vgpr6_vgpr7
738     %4:_(s64) = COPY $vgpr8_vgpr9
739     %5:_(s64) = COPY $vgpr10_vgpr11
740     %6:_(s64) = COPY $vgpr12_vgpr13
741     %7:_(s64) = COPY $vgpr14_vgpr15
742     %8:_(s64) = COPY $vgpr16_vgpr17
743     %9:_(s64) = COPY $vgpr18_vgpr19
744     %10:_(s64) = COPY $vgpr20_vgpr21
745     %11:_(s64) = COPY $vgpr22_vgpr23
746     %12:_(s64) = COPY $vgpr24_vgpr25
747     %13:_(s64) = COPY $vgpr26_vgpr27
748     %14:_(s64) = COPY $vgpr28_vgpr29
749     %15:_(s64) = COPY $vgpr30_vgpr31
750     %16:_(<16 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15
751     S_NOP 0, implicit %16
755 name: legal_v2s128
756 body: |
757   bb.0:
758     liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7
760     ; CHECK-LABEL: name: legal_v2s128
761     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7
762     ; CHECK-NEXT: {{  $}}
763     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
764     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
765     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s128>) = G_BUILD_VECTOR [[COPY]](s128), [[COPY1]](s128)
766     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s128>)
767     %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
768     %1:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
769     %2:_(<2 x s128>) = G_BUILD_VECTOR %0, %1
770     S_NOP 0, implicit %2
774 name: legal_v2p3
775 body: |
776   bb.0:
777     liveins: $vgpr0, $vgpr1
778     ; CHECK-LABEL: name: legal_v2p3
779     ; CHECK: liveins: $vgpr0, $vgpr1
780     ; CHECK-NEXT: {{  $}}
781     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
782     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1
783     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3)
784     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p3>)
785     %0:_(p3) = COPY $vgpr0
786     %1:_(p3) = COPY $vgpr1
787     %2:_(<2 x p3>) = G_BUILD_VECTOR %0, %1
788     S_NOP 0, implicit %2
791 name: legal_v3p3
792 body: |
793   bb.0:
794     liveins: $vgpr0, $vgpr1, $vgpr2
795     ; CHECK-LABEL: name: legal_v3p3
796     ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
797     ; CHECK-NEXT: {{  $}}
798     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
799     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1
800     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p3) = COPY $vgpr2
801     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3), [[COPY2]](p3)
802     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x p3>)
803     %0:_(p3) = COPY $vgpr0
804     %1:_(p3) = COPY $vgpr1
805     %2:_(p3) = COPY $vgpr2
806     %3:_(<3 x p3>) = G_BUILD_VECTOR %0, %1, %2
807     S_NOP 0, implicit %3
811 name: legal_v2p0
812 body: |
813   bb.0:
814     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
815     ; CHECK-LABEL: name: legal_v2p0
816     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
817     ; CHECK-NEXT: {{  $}}
818     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
819     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr2_vgpr3
820     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[COPY]](p0), [[COPY1]](p0)
821     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p0>)
822     %0:_(p0) = COPY $vgpr0_vgpr1
823     %1:_(p0) = COPY $vgpr2_vgpr3
824     %2:_(<2 x p0>) = G_BUILD_VECTOR %0, %1
825     S_NOP 0, implicit %2
829 name: legal_v2p999
830 body: |
831   bb.0:
832     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
833     ; CHECK-LABEL: name: legal_v2p999
834     ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
835     ; CHECK-NEXT: {{  $}}
836     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1
837     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr2_vgpr3
838     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p999>) = G_BUILD_VECTOR [[COPY]](p999), [[COPY1]](p999)
839     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p999>)
840     %0:_(p999) = COPY $vgpr0_vgpr1
841     %1:_(p999) = COPY $vgpr2_vgpr3
842     %2:_(<2 x p999>) = G_BUILD_VECTOR %0, %1
843     S_NOP 0, implicit %2
847 name: legal_v2s256
848 body: |
849   bb.0:
850     liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
852     ; CHECK-LABEL: name: legal_v2s256
853     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
854     ; CHECK-NEXT: {{  $}}
855     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
856     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s256) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
857     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s256>) = G_BUILD_VECTOR [[COPY]](s256), [[COPY1]](s256)
858     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s256>)
859     %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
860     %1:_(s256) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
861     %2:_(<2 x s256>) = G_BUILD_VECTOR %0, %1
862     S_NOP 0, implicit %2
866 name: legal_v4s128
867 body: |
868   bb.0:
869     liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10, $vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
871     ; CHECK-LABEL: name: legal_v4s128
872     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10, $vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
873     ; CHECK-NEXT: {{  $}}
874     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
875     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
876     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s128) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
877     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s128) = COPY $vgpr12_vgpr13_vgpr14_vgpr15
878     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s128>) = G_BUILD_VECTOR [[COPY]](s128), [[COPY1]](s128), [[COPY2]](s128), [[COPY3]](s128)
879     ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s128>)
880     %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
881     %1:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
882     %2:_(s128) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
883     %3:_(s128)= COPY $vgpr12_vgpr13_vgpr14_vgpr15
884     %4:_(<4 x s128>) = G_BUILD_VECTOR %0, %1, %2, %3
885     S_NOP 0, implicit %4