[AMDGPU] Make v8i16/v8f16 legal
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / legalize-build-vector.mir
blob0491c7050fd162af8a0c187caac1542ba6c5944b
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: [[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
17     S_NOP 0, implicit %2
18 ...
19 ---
20 name: legal_v3s32
21 body: |
22   bb.0:
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
34     S_NOP 0, implicit %3
35 ...
36 ---
37 name: legal_v4s32
38 body: |
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-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
53     S_NOP 0, implicit %4
54 ...
55 ---
56 name: legal_v5s32
57 body: |
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-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
74     S_NOP 0, implicit %5
75 ...
76 ---
77 name: legal_v6s32
78 body: |
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-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
97     S_NOP 0, implicit %6
98 ...
99 ---
100 name: legal_v7s32
101 body: |
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-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
122     S_NOP 0, implicit %7
125 name: legal_v8s32
126 body: |
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-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
149     S_NOP 0, implicit %8
152 name: legal_v9s32
153 body: |
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-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
178     S_NOP 0, implicit %9
181 name: legal_v10s32
182 body: |
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-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
212 name: legal_v11s32
213 body: |
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-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
245 name: legal_v12s32
246 body: |
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-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
280 name: legal_v13s32
281 body: |
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-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
317 name: legal_v14s32
318 body: |
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-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
356 name: legal_v15s32
357 body: |
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-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
397 name: legal_v16s32
398 body: |
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-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
440 name: legal_v32s32
441 body: |
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-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
515 name: legal_v2s64
516 body: |
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-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
527     S_NOP 0, implicit %2
530 name: legal_v3s64
531 body: |
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-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
544     S_NOP 0, implicit %3
547 name: legal_v4s64
548 body: |
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-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
563     S_NOP 0, implicit %4
566 name: legal_v5s64
567 body: |
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-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
584     S_NOP 0, implicit %5
587 name: legal_v6s64
588 body: |
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-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
607     S_NOP 0, implicit %6
610 name: legal_v7s64
611 body: |
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-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
632     S_NOP 0, implicit %7
635 name: legal_v8s64
636 body: |
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-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
659     S_NOP 0, implicit %8
663 name: legal_v16s64
664 body: |
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-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
707 name: legal_v2s128
708 body: |
709   bb.0:
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
720     S_NOP 0, implicit %2
724 name: legal_v2p3
725 body: |
726   bb.0:
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
736     S_NOP 0, implicit %2
739 name: legal_v3p3
740 body: |
741   bb.0:
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
753     S_NOP 0, implicit %3
757 name: legal_v2p0
758 body: |
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-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
769     S_NOP 0, implicit %2
773 name: legal_v2p999
774 body: |
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-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
785     S_NOP 0, implicit %2
789 name: legal_v2s256
790 body: |
791   bb.0:
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
802     S_NOP 0, implicit %2
806 name: legal_v4s128
807 body: |
808   bb.0:
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
823     S_NOP 0, implicit %4