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