1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -O0 -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s
3# RUN: llc -O0 -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s
4
5---
6name: test_implicit_def_s1
7body: |
8  bb.0:
9
10    ; CHECK-LABEL: name: test_implicit_def_s1
11    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
12    ; CHECK: $vgpr0 = COPY [[DEF]](s32)
13    %0:_(s1) = G_IMPLICIT_DEF
14    %1:_(s32) = G_ANYEXT %0
15    $vgpr0 = COPY %1
16...
17
18---
19name: test_implicit_def_s7
20body: |
21  bb.0:
22
23    ; CHECK-LABEL: name: test_implicit_def_s7
24    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
25    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY [[DEF]](s32)
26    ; CHECK: $vgpr0 = COPY [[COPY]](s32)
27    %0:_(s7) = G_IMPLICIT_DEF
28    %1:_(s32) = G_ANYEXT %0
29    $vgpr0 = COPY %1
30...
31
32---
33name: test_implicit_def_s8
34body: |
35  bb.0:
36
37    ; CHECK-LABEL: name: test_implicit_def_s8
38    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
39    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY [[DEF]](s32)
40    ; CHECK: $vgpr0 = COPY [[COPY]](s32)
41    %0:_(s8) = G_IMPLICIT_DEF
42    %1:_(s32) = G_ANYEXT %0
43    $vgpr0 = COPY %1
44...
45
46---
47name: test_implicit_def_s16
48body: |
49  bb.0:
50
51    ; CHECK-LABEL: name: test_implicit_def_s16
52    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
53    ; CHECK: $vgpr0 = COPY [[DEF]](s32)
54    %0:_(s16) = G_IMPLICIT_DEF
55    %1:_(s32) = G_ANYEXT %0
56    $vgpr0 = COPY %1
57...
58
59---
60name: test_implicit_def_s32
61body: |
62  bb.0:
63
64    ; CHECK-LABEL: name: test_implicit_def_s32
65    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
66    ; CHECK: $vgpr0 = COPY [[DEF]](s32)
67    %0:_(s32) = G_IMPLICIT_DEF
68    $vgpr0 = COPY %0
69...
70
71---
72name: test_implicit_def_48
73body: |
74  bb.0:
75
76    ; CHECK-LABEL: name: test_implicit_def_48
77    ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
78    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY [[DEF]](s64)
79    ; CHECK: $vgpr0_vgpr1 = COPY [[COPY]](s64)
80    %0:_(s48) = G_IMPLICIT_DEF
81    %1:_(s64) = G_ANYEXT %0
82    $vgpr0_vgpr1 = COPY %1
83...
84
85---
86name: test_implicit_def_s64
87body: |
88  bb.0:
89
90    ; CHECK-LABEL: name: test_implicit_def_s64
91    ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
92    ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](s64)
93    %0:_(s64) = G_IMPLICIT_DEF
94    $vgpr0_vgpr1 = COPY %0
95...
96
97---
98name: test_implicit_def_s65
99body: |
100  bb.0:
101
102    ; CHECK-LABEL: name: test_implicit_def_s65
103    ; CHECK: [[DEF:%[0-9]+]]:_(s128) = G_IMPLICIT_DEF
104    ; CHECK: [[TRUNC:%[0-9]+]]:_(s96) = G_TRUNC [[DEF]](s128)
105    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[TRUNC]](s96)
106    %0:_(s65) = G_IMPLICIT_DEF
107    %1:_(s96) = G_ANYEXT %0
108    $vgpr0_vgpr1_vgpr2 = COPY %1
109...
110
111---
112name: test_implicit_def_s128
113body: |
114  bb.0:
115
116    ; CHECK-LABEL: name: test_implicit_def_s128
117    ; CHECK: [[DEF:%[0-9]+]]:_(s128) = G_IMPLICIT_DEF
118    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](s128)
119    %0:_(s128) = G_IMPLICIT_DEF
120    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0
121...
122
123---
124name: test_implicit_def_256
125body: |
126  bb.0:
127
128    ; CHECK-LABEL: name: test_implicit_def_256
129    ; CHECK: [[DEF:%[0-9]+]]:_(s256) = G_IMPLICIT_DEF
130    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[DEF]](s256)
131    %0:_(s256) = G_IMPLICIT_DEF
132    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %0
133...
134
135---
136name: test_implicit_def_s448
137body: |
138  bb.0:
139
140    ; CHECK-LABEL: name: test_implicit_def_s448
141    ; CHECK: [[DEF:%[0-9]+]]:_(s448) = G_IMPLICIT_DEF
142    ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[DEF]](s448), 0
143    ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
144    %0:_(s448) = G_IMPLICIT_DEF
145    %1:_(s32) = G_EXTRACT %0, 0
146    $vgpr0 = COPY %1
147...
148
149---
150name: test_implicit_def_s512
151body: |
152  bb.0:
153
154    ; CHECK-LABEL: name: test_implicit_def_s512
155    ; CHECK: [[DEF:%[0-9]+]]:_(s512) = G_IMPLICIT_DEF
156    ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[DEF]](s512), 0
157    ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
158    %0:_(s512) = G_IMPLICIT_DEF
159    %1:_(s32) = G_EXTRACT %0, 0
160    $vgpr0 = COPY %1
161...
162
163---
164name: test_implicit_def_s1024
165body: |
166  bb.0:
167
168    ; CHECK-LABEL: name: test_implicit_def_s1024
169    ; CHECK: [[DEF:%[0-9]+]]:_(s1024) = G_IMPLICIT_DEF
170    ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[DEF]](s1024), 0
171    ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
172    %0:_(s1024) = G_IMPLICIT_DEF
173    %1:_(s32) = G_EXTRACT %0, 0
174    $vgpr0 = COPY %1
175...
176
177---
178name: test_implicit_def_s1056
179body: |
180  bb.0:
181
182    ; CHECK-LABEL: name: test_implicit_def_s1056
183    ; CHECK: [[DEF:%[0-9]+]]:_(s1024) = G_IMPLICIT_DEF
184    ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s1024)
185    ; CHECK: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
186    ; CHECK: $vgpr0 = COPY [[UV]](s32)
187    %0:_(s1056) = G_IMPLICIT_DEF
188    %1:_(s32) = G_TRUNC %0
189    $vgpr0 = COPY %1
190...
191
192---
193name: test_implicit_def_s2048
194body: |
195  bb.0:
196
197    ; CHECK-LABEL: name: test_implicit_def_s2048
198    ; CHECK: [[DEF:%[0-9]+]]:_(s1024) = G_IMPLICIT_DEF
199    ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[DEF]](s1024)
200    ; CHECK: $vgpr0 = COPY [[TRUNC]](s32)
201    %0:_(s2048) = G_IMPLICIT_DEF
202    %1:_(s32) = G_TRUNC %0
203    $vgpr0 = COPY %1
204...
205
206---
207name: test_implicit_def_v2s32
208body: |
209  bb.0:
210
211    ; CHECK-LABEL: name: test_implicit_def_v2s32
212    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF
213    ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](<2 x s32>)
214    %0:_(<2 x s32>) = G_IMPLICIT_DEF
215    $vgpr0_vgpr1 = COPY %0
216...
217
218---
219name: test_implicit_def_v3s32
220body: |
221  bb.0:
222
223    ; CHECK-LABEL: name: test_implicit_def_v3s32
224    ; CHECK: [[DEF:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF
225    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[DEF]](<3 x s32>)
226    %0:_(<3 x s32>) = G_IMPLICIT_DEF
227    $vgpr0_vgpr1_vgpr2 = COPY %0
228...
229
230---
231name: test_implicit_def_v4s32
232body: |
233  bb.0:
234
235    ; CHECK-LABEL: name: test_implicit_def_v4s32
236    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF
237    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](<4 x s32>)
238    %0:_(<4 x s32>) = G_IMPLICIT_DEF
239    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0
240...
241
242---
243name: test_implicit_def_v5s32
244body: |
245  bb.0:
246
247    ; CHECK-LABEL: name: test_implicit_def_v5s32
248    ; CHECK: [[DEF:%[0-9]+]]:_(<5 x s32>) = G_IMPLICIT_DEF
249    ; CHECK: S_NOP 0, implicit [[DEF]](<5 x s32>)
250    %0:_(<5 x s32>) = G_IMPLICIT_DEF
251    S_NOP 0, implicit %0
252...
253
254---
255name: test_implicit_def_v6s32
256body: |
257  bb.0:
258
259    ; CHECK-LABEL: name: test_implicit_def_v6s32
260    ; CHECK: [[DEF:%[0-9]+]]:_(<6 x s32>) = G_IMPLICIT_DEF
261    ; CHECK: S_NOP 0, implicit [[DEF]](<6 x s32>)
262    %0:_(<6 x s32>) = G_IMPLICIT_DEF
263    S_NOP 0, implicit %0
264...
265
266---
267name: test_implicit_def_v7s32
268body: |
269  bb.0:
270
271    ; CHECK-LABEL: name: test_implicit_def_v7s32
272    ; CHECK: [[DEF:%[0-9]+]]:_(<7 x s32>) = G_IMPLICIT_DEF
273    ; CHECK: S_NOP 0, implicit [[DEF]](<7 x s32>)
274    %0:_(<7 x s32>) = G_IMPLICIT_DEF
275    S_NOP 0, implicit %0
276...
277
278---
279name: test_implicit_def_v8s32
280body: |
281  bb.0:
282
283    ; CHECK-LABEL: name: test_implicit_def_v8s32
284    ; CHECK: [[DEF:%[0-9]+]]:_(<8 x s32>) = G_IMPLICIT_DEF
285    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[DEF]](<8 x s32>)
286    %0:_(<8 x s32>) = G_IMPLICIT_DEF
287    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %0
288...
289
290---
291name: test_implicit_def_v16s32
292body: |
293  bb.0:
294
295    ; CHECK-LABEL: name: test_implicit_def_v16s32
296    ; CHECK: [[DEF:%[0-9]+]]:_(<16 x s32>) = G_IMPLICIT_DEF
297    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[DEF]](<16 x s32>)
298    %0:_(<16 x s32>) = G_IMPLICIT_DEF
299    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %0
300...
301
302---
303name: test_implicit_def_v17s32
304body: |
305  bb.0:
306
307    ; CHECK-LABEL: name: test_implicit_def_v17s32
308    ; CHECK: [[DEF:%[0-9]+]]:_(<17 x s32>) = G_IMPLICIT_DEF
309    ; CHECK: S_NOP 0, implicit [[DEF]](<17 x s32>)
310    %0:_(<17 x s32>) = G_IMPLICIT_DEF
311    S_NOP 0, implicit %0
312...
313
314---
315name: test_implicit_def_v32s32
316body: |
317  bb.0:
318
319    ; CHECK-LABEL: name: test_implicit_def_v32s32
320    ; CHECK: [[DEF:%[0-9]+]]:_(<32 x s32>) = G_IMPLICIT_DEF
321    ; CHECK: S_NOP 0, implicit [[DEF]](<32 x s32>)
322    %0:_(<32 x s32>) = G_IMPLICIT_DEF
323    S_NOP 0, implicit %0
324...
325
326---
327name: test_implicit_def_v33s32
328body: |
329  bb.0:
330    liveins: $vgpr0_vgpr1
331
332    ; CHECK-LABEL: name: test_implicit_def_v33s32
333    ; CHECK: [[DEF:%[0-9]+]]:_(<16 x s32>) = G_IMPLICIT_DEF
334    ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<16 x s32>)
335    ; CHECK: [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<16 x s32>)
336    ; CHECK: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
337    ; CHECK: G_STORE [[UV]](s32), [[COPY]](p1) :: (volatile store 4, addrspace 1)
338    ; CHECK: G_STORE [[UV16]](s32), [[COPY]](p1) :: (volatile store 4, addrspace 1)
339    %0:_(<33 x s32>) = G_IMPLICIT_DEF
340    %1:_(s32), %2:_(s32), %3:_(s32), %4:_(s32), %5:_(s32), %6:_(s32), %7:_(s32), %8:_(s32), %9:_(s32), %10:_(s32), %11:_(s32), %12:_(s32), %13:_(s32), %14:_(s32), %15:_(s32), %16:_(s32), %17:_(s32), %18:_(s32), %19:_(s32), %20:_(s32), %21:_(s32), %22:_(s32), %23:_(s32), %24:_(s32), %25:_(s32), %26:_(s32), %27:_(s32), %28:_(s32), %29:_(s32), %30:_(s32), %31:_(s32), %32:_(s32), %33:_(s32) = G_UNMERGE_VALUES %0
341    %34:_(p1) = COPY $vgpr0_vgpr1
342    G_STORE %1, %34 :: (volatile store 4, align 4, addrspace 1)
343    G_STORE %33, %34 :: (volatile store 4, align 4, addrspace 1)
344
345...
346
347---
348name: test_implicit_def_v64s32
349body: |
350  bb.0:
351
352    ; CHECK-LABEL: name: test_implicit_def_v64s32
353    ; CHECK: [[DEF:%[0-9]+]]:_(<16 x s32>) = G_IMPLICIT_DEF
354    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<64 x s32>) = G_CONCAT_VECTORS [[DEF]](<16 x s32>), [[DEF]](<16 x s32>), [[DEF]](<16 x s32>), [[DEF]](<16 x s32>)
355    ; CHECK: [[CONCAT_VECTORS1:%[0-9]+]]:_(<32 x s32>) = G_CONCAT_VECTORS [[DEF]](<16 x s32>), [[DEF]](<16 x s32>)
356    ; CHECK: S_NOP 0, implicit [[CONCAT_VECTORS]](<64 x s32>), implicit [[CONCAT_VECTORS1]](<32 x s32>)
357    %0:_(<64 x s32>) = G_IMPLICIT_DEF
358    %1:_(<32 x s32>), %2:_(<32 x s32>) = G_UNMERGE_VALUES %0
359  S_NOP 0, implicit %0, implicit %1
360...
361
362---
363name: test_implicit_def_v2s1
364body: |
365  bb.0:
366
367    ; CHECK-LABEL: name: test_implicit_def_v2s1
368    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF
369    ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY [[DEF]](<2 x s32>)
370    ; CHECK: $vgpr0_vgpr1 = COPY [[COPY]](<2 x s32>)
371    %0:_(<2 x s1>) = G_IMPLICIT_DEF
372    %1:_(<2 x s32>) = G_ANYEXT %0
373    $vgpr0_vgpr1 = COPY %1
374...
375
376---
377name: test_implicit_def_v3s1
378body: |
379  bb.0:
380
381    ; CHECK-LABEL: name: test_implicit_def_v3s1
382    ; CHECK: [[DEF:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF
383    ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY [[DEF]](<3 x s32>)
384    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]](<3 x s32>)
385    %0:_(<3 x s1>) = G_IMPLICIT_DEF
386    %1:_(<3 x s32>) = G_ANYEXT %0
387    $vgpr0_vgpr1_vgpr2 = COPY %1
388...
389
390---
391name: test_implicit_def_v2s8
392body: |
393  bb.0:
394
395    ; CHECK-LABEL: name: test_implicit_def_v2s8
396    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF
397    ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY [[DEF]](<2 x s32>)
398    ; CHECK: $vgpr0_vgpr1 = COPY [[COPY]](<2 x s32>)
399    %0:_(<2 x s8>) = G_IMPLICIT_DEF
400    %1:_(<2 x s32>) = G_ANYEXT %0
401    $vgpr0_vgpr1 = COPY %1
402...
403
404---
405name: test_implicit_def_v3s8
406body: |
407  bb.0:
408
409    ; CHECK-LABEL: name: test_implicit_def_v3s8
410    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF
411    ; CHECK: [[DEF1:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF
412    ; CHECK: [[TRUNC:%[0-9]+]]:_(<4 x s8>) = G_TRUNC [[DEF1]](<4 x s32>)
413    ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<4 x s32>)
414    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
415    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV1]](s32)
416    ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV2]](s32)
417    ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
418    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)
419    %0:_(<3 x s8>) = G_IMPLICIT_DEF
420    %1:_(<3 x s32>) = G_ANYEXT %0
421    $vgpr0_vgpr1_vgpr2 = COPY %1
422...
423
424---
425name: test_implicit_def_v2s16
426body: |
427  bb.0:
428
429    ; CHECK-LABEL: name: test_implicit_def_v2s16
430    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF
431    ; CHECK: $vgpr0 = COPY [[DEF]](<2 x s16>)
432    %0:_(<2 x s16>) = G_IMPLICIT_DEF
433    $vgpr0 = COPY %0
434...
435
436---
437name: test_implicit_def_v3s16
438body: |
439  bb.0:
440
441    ; CHECK-LABEL: name: test_implicit_def_v3s16
442    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
443    ; CHECK: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
444    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[DEF]](<4 x s16>), [[DEF1]](<4 x s16>), [[DEF1]](<4 x s16>)
445    ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>)
446    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF1]], [[UV]](<3 x s16>), 0
447    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
448    %0:_(<3 x s16>) = G_IMPLICIT_DEF
449    %1:_(<4 x s16>) = G_IMPLICIT_DEF
450    %2:_(<4 x s16>) = G_INSERT %1, %0, 0
451    $vgpr0_vgpr1 = COPY %2
452...
453
454---
455name: test_implicit_def_v4s16
456body: |
457  bb.0:
458
459    ; CHECK-LABEL: name: test_implicit_def_v4s16
460    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
461    ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](<4 x s16>)
462    %0:_(<4 x s16>) = G_IMPLICIT_DEF
463    $vgpr0_vgpr1 = COPY %0
464...
465
466---
467name: test_implicit_def_v5s16
468body: |
469  bb.0:
470
471    ; CHECK-LABEL: name: test_implicit_def_v5s16
472    ; CHECK: [[DEF:%[0-9]+]]:_(<6 x s16>) = G_IMPLICIT_DEF
473    ; CHECK: [[DEF1:%[0-9]+]]:_(<6 x s16>) = G_IMPLICIT_DEF
474    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<30 x s16>) = G_CONCAT_VECTORS [[DEF]](<6 x s16>), [[DEF1]](<6 x s16>), [[DEF1]](<6 x s16>), [[DEF1]](<6 x s16>), [[DEF1]](<6 x s16>)
475    ; CHECK: [[UV:%[0-9]+]]:_(<5 x s16>), [[UV1:%[0-9]+]]:_(<5 x s16>), [[UV2:%[0-9]+]]:_(<5 x s16>), [[UV3:%[0-9]+]]:_(<5 x s16>), [[UV4:%[0-9]+]]:_(<5 x s16>), [[UV5:%[0-9]+]]:_(<5 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<30 x s16>)
476    ; CHECK: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF
477    ; CHECK: [[INSERT:%[0-9]+]]:_(<8 x s16>) = G_INSERT [[DEF2]], [[UV]](<5 x s16>), 0
478    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<8 x s16>)
479    %0:_(<5 x s16>) = G_IMPLICIT_DEF
480    %1:_(<8 x s16>) = G_IMPLICIT_DEF
481    %2:_(<8 x s16>) = G_INSERT %1, %0, 0
482    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
483...
484
485---
486name: test_implicit_def_v6s16
487body: |
488  bb.0:
489
490    ; CHECK-LABEL: name: test_implicit_def_v6s16
491    ; CHECK: [[DEF:%[0-9]+]]:_(<6 x s16>) = G_IMPLICIT_DEF
492    ; CHECK: [[DEF1:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF
493    ; CHECK: [[INSERT:%[0-9]+]]:_(<8 x s16>) = G_INSERT [[DEF1]], [[DEF]](<6 x s16>), 0
494    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<8 x s16>)
495    %0:_(<6 x s16>) = G_IMPLICIT_DEF
496    %1:_(<8 x s16>) = G_IMPLICIT_DEF
497    %2:_(<8 x s16>) = G_INSERT %1, %0, 0
498    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
499...
500
501---
502name: test_implicit_def_v8s16
503body: |
504  bb.0:
505
506    ; CHECK-LABEL: name: test_implicit_def_v8s16
507    ; CHECK: [[DEF:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF
508    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](<8 x s16>)
509    %0:_(<8 x s16>) = G_IMPLICIT_DEF
510    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0
511...
512
513---
514name: test_implicit_def_v2s64
515body: |
516  bb.0:
517
518    ; CHECK-LABEL: name: test_implicit_def_v2s64
519    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF
520    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](<2 x s64>)
521    %0:_(<2 x s64>) = G_IMPLICIT_DEF
522    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0
523...
524
525---
526name: test_implicit_def_v4s8
527body: |
528  bb.0:
529
530    ; CHECK-LABEL: name: test_implicit_def_v4s8
531    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF
532    ; CHECK: [[TRUNC:%[0-9]+]]:_(<4 x s8>) = G_TRUNC [[DEF]](<4 x s32>)
533    ; CHECK: $vgpr0 = COPY [[TRUNC]](<4 x s8>)
534    %0:_(<4 x s8>) = G_IMPLICIT_DEF
535    $vgpr0 = COPY %0
536...
537
538---
539name: test_implicit_def_p0
540body: |
541  bb.0:
542
543    ; CHECK-LABEL: name: test_implicit_def_p0
544    ; CHECK: [[DEF:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF
545    ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](p0)
546    %0:_(p0) = G_IMPLICIT_DEF
547    $vgpr0_vgpr1 = COPY %0
548...
549
550---
551name: test_implicit_def_p1
552body: |
553  bb.0:
554
555    ; CHECK-LABEL: name: test_implicit_def_p1
556    ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF
557    ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](p1)
558    %0:_(p1) = G_IMPLICIT_DEF
559    $vgpr0_vgpr1 = COPY %0
560...
561
562---
563name: test_implicit_def_p2
564body: |
565  bb.0:
566
567    ; CHECK-LABEL: name: test_implicit_def_p2
568    ; CHECK: [[DEF:%[0-9]+]]:_(p2) = G_IMPLICIT_DEF
569    ; CHECK: $vgpr0 = COPY [[DEF]](p2)
570    %0:_(p2) = G_IMPLICIT_DEF
571    $vgpr0 = COPY %0
572...
573
574---
575name: test_implicit_def_p3
576body: |
577  bb.0:
578
579    ; CHECK-LABEL: name: test_implicit_def_p3
580    ; CHECK: [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF
581    ; CHECK: $vgpr0 = COPY [[DEF]](p3)
582    %0:_(p3) = G_IMPLICIT_DEF
583    $vgpr0 = COPY %0
584...
585
586---
587name: test_implicit_def_p4
588body: |
589  bb.0:
590
591    ; CHECK-LABEL: name: test_implicit_def_p4
592    ; CHECK: [[DEF:%[0-9]+]]:_(p4) = G_IMPLICIT_DEF
593    ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](p4)
594    %0:_(p4) = G_IMPLICIT_DEF
595    $vgpr0_vgpr1 = COPY %0
596...
597
598---
599name: test_implicit_def_p5
600body: |
601  bb.0:
602
603    ; CHECK-LABEL: name: test_implicit_def_p5
604    ; CHECK: [[DEF:%[0-9]+]]:_(p5) = G_IMPLICIT_DEF
605    ; CHECK: $vgpr0 = COPY [[DEF]](p5)
606    %0:_(p5) = G_IMPLICIT_DEF
607    $vgpr0 = COPY %0
608...
609
610---
611name: test_implicit_def_p999
612body: |
613  bb.0:
614
615    ; CHECK-LABEL: name: test_implicit_def_p999
616    ; CHECK: [[DEF:%[0-9]+]]:_(p999) = G_IMPLICIT_DEF
617    ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](p999)
618    %0:_(p999) = G_IMPLICIT_DEF
619    $vgpr0_vgpr1 = COPY %0
620
621...
622
623---
624name: test_implicit_def_v2s1024
625body: |
626  bb.0:
627
628    ; CHECK-LABEL: name: test_implicit_def_v2s1024
629    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s1024>) = G_IMPLICIT_DEF
630    ; CHECK: [[UV:%[0-9]+]]:_(s1024), [[UV1:%[0-9]+]]:_(s1024) = G_UNMERGE_VALUES [[DEF]](<2 x s1024>)
631    ; CHECK: S_ENDPGM 0, implicit [[UV]](s1024), implicit [[UV1]](s1024)
632    %0:_(<2 x s1024>) = G_IMPLICIT_DEF
633    %1:_(s1024), %2:_(s1024) = G_UNMERGE_VALUES %0
634    S_ENDPGM 0, implicit %1, implicit %2
635...
636
637---
638
639name: test_implicit_def_v3s1024
640body: |
641  bb.0:
642
643    ; CHECK-LABEL: name: test_implicit_def_v3s1024
644    ; CHECK: [[DEF:%[0-9]+]]:_(<3 x s1024>) = G_IMPLICIT_DEF
645    ; CHECK: [[UV:%[0-9]+]]:_(s1024), [[UV1:%[0-9]+]]:_(s1024), [[UV2:%[0-9]+]]:_(s1024) = G_UNMERGE_VALUES [[DEF]](<3 x s1024>)
646    ; CHECK: S_ENDPGM 0, implicit [[UV]](s1024), implicit [[UV1]](s1024), implicit [[UV2]](s1024)
647    %0:_(<3 x s1024>) = G_IMPLICIT_DEF
648    %1:_(s1024), %2:_(s1024), %3:_(s1024) = G_UNMERGE_VALUES %0
649    S_ENDPGM 0, implicit %1, implicit %2, implicit %3
650...
651