1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s
3
4---
5name: test_insert_s64_s32_offset0
6body: |
7  bb.0:
8    liveins: $vgpr0_vgpr1, $vgpr2
9
10    ; CHECK-LABEL: name: test_insert_s64_s32_offset0
11    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
12    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
13    ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 0
14    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
15    %0:_(s64) = COPY $vgpr0_vgpr1
16    %1:_(s32) = COPY $vgpr2
17    %2:_(s64) = G_INSERT %0, %1, 0
18    $vgpr0_vgpr1 = COPY %2
19...
20---
21name: test_insert_s64_s32_offset32
22body: |
23  bb.0:
24    liveins: $vgpr0_vgpr1, $vgpr2
25
26    ; CHECK-LABEL: name: test_insert_s64_s32_offset32
27    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
28    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
29    ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 32
30    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
31    %0:_(s64) = COPY $vgpr0_vgpr1
32    %1:_(s32) = COPY $vgpr2
33    %2:_(s64) = G_INSERT %0, %1, 32
34    $vgpr0_vgpr1 = COPY %2
35...
36
37---
38name: test_insert_s64_s32_offset16
39body: |
40  bb.0:
41    liveins: $vgpr0_vgpr1, $vgpr2
42
43    ; CHECK-LABEL: name: test_insert_s64_s32_offset16
44    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
45    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
46    ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 16
47    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
48    %0:_(s64) = COPY $vgpr0_vgpr1
49    %1:_(s32) = COPY $vgpr2
50    %2:_(s64) = G_INSERT %0, %1, 16
51    $vgpr0_vgpr1 = COPY %2
52...
53
54---
55name: test_insert_s96_s32_offset0
56body: |
57  bb.0:
58    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
59
60    ; CHECK-LABEL: name: test_insert_s96_s32_offset0
61    ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
62    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
63    ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 0
64    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)
65    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
66    %1:_(s32) = COPY $vgpr3
67    %2:_(s96) = G_INSERT %0, %1, 0
68    $vgpr0_vgpr1_vgpr2 = COPY %2
69...
70---
71name: test_insert_s96_s32_offset32
72body: |
73  bb.0:
74    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
75
76    ; CHECK-LABEL: name: test_insert_s96_s32_offset32
77    ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
78    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
79    ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 32
80    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)
81    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
82    %1:_(s32) = COPY $vgpr3
83    %2:_(s96) = G_INSERT %0, %1, 32
84    $vgpr0_vgpr1_vgpr2 = COPY %2
85...
86---
87name: test_insert_s96_s32_offset64
88body: |
89  bb.0:
90    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
91
92    ; CHECK-LABEL: name: test_insert_s96_s32_offset64
93    ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
94    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
95    ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 64
96    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)
97    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
98    %1:_(s32) = COPY $vgpr3
99    %2:_(s96) = G_INSERT %0, %1, 64
100    $vgpr0_vgpr1_vgpr2 = COPY %2
101...
102---
103name: test_insert_s128_s32_offset0
104body: |
105  bb.0:
106    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
107
108    ; CHECK-LABEL: name: test_insert_s128_s32_offset0
109    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
110    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
111    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 0
112    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
113    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
114    %1:_(s32) = COPY $vgpr4
115    %2:_(s128) = G_INSERT %0, %1, 0
116    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
117...
118---
119name: test_insert_s128_s32_offset32
120body: |
121  bb.0:
122    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
123
124    ; CHECK-LABEL: name: test_insert_s128_s32_offset32
125    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
126    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
127    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 32
128    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
129    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
130    %1:_(s32) = COPY $vgpr4
131    %2:_(s128) = G_INSERT %0, %1, 32
132    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
133...
134---
135name: test_insert_s128_s32_offset64
136body: |
137  bb.0:
138    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
139
140    ; CHECK-LABEL: name: test_insert_s128_s32_offset64
141    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
142    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
143    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 64
144    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
145    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
146    %1:_(s32) = COPY $vgpr4
147    %2:_(s128) = G_INSERT %0, %1, 64
148    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
149...
150---
151name: test_insert_s128_s32_offset96
152body: |
153  bb.0:
154    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
155
156    ; CHECK-LABEL: name: test_insert_s128_s32_offset96
157    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
158    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
159    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 96
160    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
161    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
162    %1:_(s32) = COPY $vgpr4
163    %2:_(s128) = G_INSERT %0, %1, 96
164    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
165...
166---
167name: test_insert_s128_s64_offset0
168body: |
169  bb.0:
170    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
171
172    ; CHECK-LABEL: name: test_insert_s128_s64_offset0
173    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
174    ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
175    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 0
176    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
177    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
178    %1:_(s64) = COPY $vgpr4_vgpr5
179    %2:_(s128) = G_INSERT %0, %1, 0
180    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
181...
182---
183name: test_insert_s128_s64_offset32
184body: |
185  bb.0:
186    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
187
188    ; CHECK-LABEL: name: test_insert_s128_s64_offset32
189    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
190    ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
191    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 32
192    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
193    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
194    %1:_(s64) = COPY $vgpr4_vgpr5
195    %2:_(s128) = G_INSERT %0, %1, 32
196    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
197...
198---
199name: test_insert_s128_s64_offset64
200body: |
201  bb.0:
202    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
203
204    ; CHECK-LABEL: name: test_insert_s128_s64_offset64
205    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
206    ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
207    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 64
208    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
209    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
210    %1:_(s64) = COPY $vgpr4_vgpr5
211    %2:_(s128) = G_INSERT %0, %1, 64
212    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
213...
214---
215name: test_insert_s128_s96_offset0
216body: |
217  bb.0:
218    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
219
220    ; CHECK-LABEL: name: test_insert_s128_s96_offset0
221    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
222    ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6
223    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 0
224    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
225    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
226    %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6
227    %2:_(s128) = G_INSERT %0, %1, 0
228    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
229...
230---
231name: test_insert_s128_s96_offset32
232body: |
233  bb.0:
234    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
235
236    ; CHECK-LABEL: name: test_insert_s128_s96_offset32
237    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
238    ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6
239    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 32
240    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
241    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
242    %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6
243    %2:_(s128) = G_INSERT %0, %1, 32
244    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
245...
246---
247name: test_insert_p0_s32_offset0
248body: |
249  bb.0:
250    liveins: $vgpr0_vgpr1, $vgpr2
251
252    ; CHECK-LABEL: name: test_insert_p0_s32_offset0
253    ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
254    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
255    ; CHECK: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 0
256    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](p0)
257    %0:_(p0) = COPY $vgpr0_vgpr1
258    %1:_(s32) = COPY $vgpr2
259    %2:_(p0) = G_INSERT %0, %1, 0
260    $vgpr0_vgpr1 = COPY %2
261...
262---
263name: test_insert_p0_s32_offset32
264body: |
265  bb.0:
266    liveins: $vgpr0_vgpr1, $vgpr2
267
268    ; CHECK-LABEL: name: test_insert_p0_s32_offset32
269    ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
270    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
271    ; CHECK: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 32
272    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](p0)
273    %0:_(p0) = COPY $vgpr0_vgpr1
274    %1:_(s32) = COPY $vgpr2
275    %2:_(p0) = G_INSERT %0, %1, 32
276    $vgpr0_vgpr1 = COPY %2
277...
278---
279name: test_insert_s128_p0_offset0
280body: |
281  bb.0:
282    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
283
284    ; CHECK-LABEL: name: test_insert_s128_p0_offset0
285    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
286    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
287    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 0
288    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
289    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
290    %1:_(p0) = COPY $vgpr4_vgpr5
291    %2:_(s128) = G_INSERT %0, %1, 0
292    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
293...
294---
295name: test_insert_s128_p0_offset32
296body: |
297  bb.0:
298    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
299
300    ; CHECK-LABEL: name: test_insert_s128_p0_offset32
301    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
302    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
303    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 32
304    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
305    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
306    %1:_(p0) = COPY $vgpr4_vgpr5
307    %2:_(s128) = G_INSERT %0, %1, 32
308    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
309...
310---
311name: test_insert_s128_p0_offset64
312body: |
313  bb.0:
314    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
315
316    ; CHECK-LABEL: name: test_insert_s128_p0_offset64
317    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
318    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
319    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 64
320    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
321    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
322    %1:_(p0) = COPY $vgpr4_vgpr5
323    %2:_(s128) = G_INSERT %0, %1, 64
324    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
325...
326
327---
328name: test_insert_s128_s16_offset0
329body: |
330  bb.0:
331    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
332
333    ; CHECK-LABEL: name: test_insert_s128_s16_offset0
334    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
335    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
336    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
337    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 0
338    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
339    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
340    %1:_(s32) = COPY $vgpr4
341    %2:_(s16) = G_TRUNC %1
342    %3:_(s128) = G_INSERT %0, %2, 0
343    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3
344...
345
346---
347name: test_insert_s128_s16_offset16
348body: |
349  bb.0:
350    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
351
352    ; CHECK-LABEL: name: test_insert_s128_s16_offset16
353    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
354    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
355    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
356    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 16
357    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
358    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
359    %1:_(s32) = COPY $vgpr4
360    %2:_(s16) = G_TRUNC %1
361    %3:_(s128) = G_INSERT %0, %2, 16
362    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3
363...
364
365---
366name: test_insert_s128_s16_offset32
367body: |
368  bb.0:
369    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
370
371    ; CHECK-LABEL: name: test_insert_s128_s16_offset32
372    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
373    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
374    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
375    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 32
376    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
377    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
378    %1:_(s32) = COPY $vgpr4
379    %2:_(s16) = G_TRUNC %1
380    %3:_(s128) = G_INSERT %0, %2, 32
381    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3
382...
383
384---
385name: test_insert_s128_s16_offset112
386body: |
387  bb.0:
388    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
389
390    ; CHECK-LABEL: name: test_insert_s128_s16_offset112
391    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
392    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
393    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
394    ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 112
395    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
396    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
397    %1:_(s32) = COPY $vgpr4
398    %2:_(s16) = G_TRUNC %1
399    %3:_(s128) = G_INSERT %0, %2, 112
400    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3
401...
402
403---
404name: test_insert_v2s32_s32_offset0
405body: |
406  bb.0:
407    liveins: $vgpr0_vgpr1, $vgpr2
408
409    ; CHECK-LABEL: name: test_insert_v2s32_s32_offset0
410    ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
411    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
412    ; CHECK: [[INSERT:%[0-9]+]]:_(<2 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0
413    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<2 x s32>)
414    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
415    %1:_(s32) = COPY $vgpr2
416    %2:_(<2 x s32>) = G_INSERT %0, %1, 0
417    $vgpr0_vgpr1 = COPY %2
418...
419---
420name: test_insert_v2s32_s32_offset32
421body: |
422  bb.0:
423    liveins: $vgpr0_vgpr1, $vgpr2
424
425    ; CHECK-LABEL: name: test_insert_v2s32_s32_offset32
426    ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
427    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
428    ; CHECK: [[INSERT:%[0-9]+]]:_(<2 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32
429    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<2 x s32>)
430    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
431    %1:_(s32) = COPY $vgpr2
432    %2:_(<2 x s32>) = G_INSERT %0, %1, 32
433    $vgpr0_vgpr1 = COPY %2
434...
435---
436name: test_insert_v3s32_s32_offset0
437body: |
438  bb.0:
439    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
440
441    ; CHECK-LABEL: name: test_insert_v3s32_s32_offset0
442    ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
443    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
444    ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0
445    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>)
446    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
447    %1:_(s32) = COPY $vgpr3
448    %2:_(<3 x s32>) = G_INSERT %0, %1, 0
449    $vgpr0_vgpr1_vgpr2 = COPY %2
450...
451---
452name: test_insert_v3s32_s32_offset32
453body: |
454  bb.0:
455    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
456
457    ; CHECK-LABEL: name: test_insert_v3s32_s32_offset32
458    ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
459    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
460    ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32
461    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>)
462    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
463    %1:_(s32) = COPY $vgpr3
464    %2:_(<3 x s32>) = G_INSERT %0, %1, 32
465    $vgpr0_vgpr1_vgpr2 = COPY %2
466...
467---
468name: test_insert_v3s32_s32_offset64
469body: |
470  bb.0:
471    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
472
473    ; CHECK-LABEL: name: test_insert_v3s32_s32_offset64
474    ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
475    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
476    ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 64
477    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>)
478    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
479    %1:_(s32) = COPY $vgpr3
480    %2:_(<3 x s32>) = G_INSERT %0, %1, 64
481    $vgpr0_vgpr1_vgpr2 = COPY %2
482...
483---
484name: test_insert_v4s32_s32_offset0
485body: |
486  bb.0:
487    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
488
489    ; CHECK-LABEL: name: test_insert_v4s32_s32_offset0
490    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
491    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
492    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0
493    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
494    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
495    %1:_(s32) = COPY $vgpr4
496    %2:_(<4 x s32>) = G_INSERT %0, %1, 0
497    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
498...
499---
500name: test_insert_v4s32_s32_offset32
501body: |
502  bb.0:
503    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
504
505    ; CHECK-LABEL: name: test_insert_v4s32_s32_offset32
506    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
507    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
508    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32
509    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
510    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
511    %1:_(s32) = COPY $vgpr4
512    %2:_(<4 x s32>) = G_INSERT %0, %1, 32
513    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
514...
515---
516name: test_insert_v4s32_s32_offset64
517body: |
518  bb.0:
519    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
520
521    ; CHECK-LABEL: name: test_insert_v4s32_s32_offset64
522    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
523    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
524    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 64
525    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
526    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
527    %1:_(s32) = COPY $vgpr4
528    %2:_(<4 x s32>) = G_INSERT %0, %1, 64
529    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
530...
531---
532name: test_insert_v4s32_s32_offset96
533body: |
534  bb.0:
535    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
536
537    ; CHECK-LABEL: name: test_insert_v4s32_s32_offset96
538    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
539    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
540    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 96
541    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
542    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
543    %1:_(s32) = COPY $vgpr4
544    %2:_(<4 x s32>) = G_INSERT %0, %1, 96
545    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
546...
547---
548name: test_insert_v4s32_s64_offset0
549body: |
550  bb.0:
551    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
552
553    ; CHECK-LABEL: name: test_insert_v4s32_s64_offset0
554    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
555    ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
556    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 0
557    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
558    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
559    %1:_(s64) = COPY $vgpr4_vgpr5
560    %2:_(<4 x s32>) = G_INSERT %0, %1, 0
561    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
562...
563---
564name: test_insert_v4s32_s64_offset32
565body: |
566  bb.0:
567    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
568
569    ; CHECK-LABEL: name: test_insert_v4s32_s64_offset32
570    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
571    ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
572    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 32
573    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
574    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
575    %1:_(s64) = COPY $vgpr4_vgpr5
576    %2:_(<4 x s32>) = G_INSERT %0, %1, 32
577    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
578...
579---
580name: test_insert_v4s32_s64_offset64
581body: |
582  bb.0:
583    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
584
585    ; CHECK-LABEL: name: test_insert_v4s32_s64_offset64
586    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
587    ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
588    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 64
589    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
590    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
591    %1:_(s64) = COPY $vgpr4_vgpr5
592    %2:_(<4 x s32>) = G_INSERT %0, %1, 64
593    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
594...
595---
596name: test_insert_v4s32_s96_offset0
597body: |
598  bb.0:
599    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
600
601    ; CHECK-LABEL: name: test_insert_v4s32_s96_offset0
602    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
603    ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6
604    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s96), 0
605    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
606    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
607    %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6
608    %2:_(<4 x s32>) = G_INSERT %0, %1, 0
609    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
610...
611---
612name: test_insert_v4s32_s96_offset32
613body: |
614  bb.0:
615    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
616
617    ; CHECK-LABEL: name: test_insert_v4s32_s96_offset32
618    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
619    ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6
620    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s96), 32
621    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
622    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
623    %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6
624    %2:_(<4 x s32>) = G_INSERT %0, %1, 32
625    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
626...
627---
628name: test_insert_v4s32_v2s32_offset0
629body: |
630  bb.0:
631    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
632
633    ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset0
634    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
635    ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
636    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 0
637    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
638    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
639    %1:_(<2 x s32>) = COPY $vgpr4_vgpr5
640    %2:_(<4 x s32>) = G_INSERT %0, %1, 0
641    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
642...
643---
644name: test_insert_v4s32_v2s32_offset32
645body: |
646  bb.0:
647    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
648
649    ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset32
650    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
651    ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
652    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 32
653    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
654    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
655    %1:_(<2 x s32>) = COPY $vgpr4_vgpr5
656    %2:_(<4 x s32>) = G_INSERT %0, %1, 32
657    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
658...
659---
660name: test_insert_v4s32_v2s32_offset64
661body: |
662  bb.0:
663    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
664
665    ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset64
666    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
667    ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
668    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 64
669    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
670    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
671    %1:_(<2 x s32>) = COPY $vgpr4_vgpr5
672    %2:_(<4 x s32>) = G_INSERT %0, %1, 64
673    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
674...
675---
676name: test_insert_v4s32_v3s32_offset0
677body: |
678  bb.0:
679    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
680
681    ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset0
682    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
683    ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6
684    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<3 x s32>), 0
685    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
686    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
687    %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6
688    %2:_(<4 x s32>) = G_INSERT %0, %1, 0
689    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
690...
691---
692name: test_insert_v4s32_v3s32_offset32
693body: |
694  bb.0:
695    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
696
697    ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset32
698    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
699    ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6
700    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<3 x s32>), 32
701    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
702    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
703    %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6
704    %2:_(<4 x s32>) = G_INSERT %0, %1, 32
705    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
706...
707---
708name: test_insert_v4s32_p0_offset0
709body: |
710  bb.0:
711    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
712
713    ; CHECK-LABEL: name: test_insert_v4s32_p0_offset0
714    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
715    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
716    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 0
717    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
718    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
719    %1:_(p0) = COPY $vgpr4_vgpr5
720    %2:_(<4 x s32>) = G_INSERT %0, %1, 0
721    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
722...
723---
724name: test_insert_v4s32_p0_offset32
725body: |
726  bb.0:
727    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
728
729    ; CHECK-LABEL: name: test_insert_v4s32_p0_offset32
730    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
731    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
732    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 32
733    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
734    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
735    %1:_(p0) = COPY $vgpr4_vgpr5
736    %2:_(<4 x s32>) = G_INSERT %0, %1, 32
737    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
738...
739---
740name: test_insert_v4s32_p0_offset64
741body: |
742  bb.0:
743    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
744
745    ; CHECK-LABEL: name: test_insert_v4s32_p0_offset64
746    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
747    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
748    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 64
749    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
750    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
751    %1:_(p0) = COPY $vgpr4_vgpr5
752    %2:_(<4 x s32>) = G_INSERT %0, %1, 64
753    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
754...
755
756---
757name: test_insert_v2s16_s16_offset0
758body: |
759  bb.0:
760    liveins: $vgpr0, $vgpr1
761
762    ; CHECK-LABEL: name: test_insert_v2s16_s16_offset0
763    ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
764    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
765    ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)
766    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
767    ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
768    ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
769    ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -65536
770    ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]
771    ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[AND]]
772    ; CHECK: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)
773    ; CHECK: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)
774    %0:_(<2 x s16>) = COPY $vgpr0
775    %1:_(s32) = COPY $vgpr1
776    %2:_(s16) = G_TRUNC %1
777    %3:_(<2 x s16>) = G_INSERT %0, %2, 0
778    $vgpr0 = COPY %3
779...
780
781---
782name: test_insert_v2s16_s16_offset1
783body: |
784  bb.0:
785    liveins: $vgpr0, $vgpr1
786
787    ; CHECK-LABEL: name: test_insert_v2s16_s16_offset1
788    ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
789    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
790    ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)
791    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
792    ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
793    ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
794    ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
795    ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)
796    ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -131071
797    ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C2]]
798    ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]
799    ; CHECK: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)
800    ; CHECK: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)
801    %0:_(<2 x s16>) = COPY $vgpr0
802    %1:_(s32) = COPY $vgpr1
803    %2:_(s16) = G_TRUNC %1
804    %3:_(<2 x s16>) = G_INSERT %0, %2, 1
805    $vgpr0 = COPY %3
806...
807---
808name: test_insert_v2s16_s16_offset16
809body: |
810  bb.0:
811    liveins: $vgpr0, $vgpr1
812
813    ; CHECK-LABEL: name: test_insert_v2s16_s16_offset16
814    ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
815    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
816    ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)
817    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
818    ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
819    ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
820    ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
821    ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)
822    ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]
823    ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]
824    ; CHECK: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)
825    ; CHECK: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)
826    %0:_(<2 x s16>) = COPY $vgpr0
827    %1:_(s32) = COPY $vgpr1
828    %2:_(s16) = G_TRUNC %1
829    %3:_(<2 x s16>) = G_INSERT %0, %2, 16
830    $vgpr0 = COPY %3
831...
832---
833name: test_insert_v3s16_s16_offset0
834body: |
835  bb.0:
836    liveins: $vgpr0_vgpr1, $vgpr2
837
838    ; CHECK-LABEL: name: test_insert_v3s16_s16_offset0
839    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
840    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0
841    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
842    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
843    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
844    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0
845    ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[TRUNC]](s16), 0
846    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>)
847    ; 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>)
848    ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0
849    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>)
850    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
851    %1:_(<3 x s16>) = G_EXTRACT %0, 0
852    %2:_(s32) = COPY $vgpr2
853    %3:_(s16) = G_TRUNC %2
854    %4:_(<3 x s16>) = G_INSERT %1, %3, 0
855    %5:_(<4 x s16>) = G_IMPLICIT_DEF
856    %6:_(<4 x s16>) = G_INSERT %5, %4, 0
857    $vgpr0_vgpr1 = COPY %6
858...
859---
860name: test_insert_v3s16_s16_offset16
861body: |
862  bb.0:
863    liveins: $vgpr0_vgpr1, $vgpr2
864
865    ; CHECK-LABEL: name: test_insert_v3s16_s16_offset16
866    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
867    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0
868    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
869    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
870    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
871    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0
872    ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[TRUNC]](s16), 16
873    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>)
874    ; 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>)
875    ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0
876    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>)
877    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
878    %1:_(<3 x s16>) = G_EXTRACT %0, 0
879    %2:_(s32) = COPY $vgpr2
880    %3:_(s16) = G_TRUNC %2
881    %4:_(<3 x s16>) = G_INSERT %1, %3, 16
882    %5:_(<4 x s16>) = G_IMPLICIT_DEF
883    %6:_(<4 x s16>) = G_INSERT %5, %4, 0
884    $vgpr0_vgpr1 = COPY %6
885...
886---
887name: test_insert_v3s16_s16_offset32
888body: |
889  bb.0:
890    liveins: $vgpr0_vgpr1, $vgpr2
891
892    ; CHECK-LABEL: name: test_insert_v3s16_s16_offset32
893    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
894    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0
895    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
896    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
897    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
898    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0
899    ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[TRUNC]](s16), 32
900    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>)
901    ; 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>)
902    ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0
903    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>)
904    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
905    %1:_(<3 x s16>) = G_EXTRACT %0, 0
906    %2:_(s32) = COPY $vgpr2
907    %3:_(s16) = G_TRUNC %2
908    %4:_(<3 x s16>) = G_INSERT %1, %3, 32
909    %5:_(<4 x s16>) = G_IMPLICIT_DEF
910    %6:_(<4 x s16>) = G_INSERT %5, %4, 0
911    $vgpr0_vgpr1 = COPY %6
912...
913---
914name: test_insert_v3s16_v2s16_offset0
915body: |
916  bb.0:
917    liveins: $vgpr0_vgpr1, $vgpr2
918
919    ; CHECK-LABEL: name: test_insert_v3s16_v2s16_offset0
920    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
921    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0
922    ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2
923    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
924    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0
925    ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[COPY1]](<2 x s16>), 0
926    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>)
927    ; 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>)
928    ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0
929    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>)
930    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
931    %1:_(<3 x s16>) = G_EXTRACT %0, 0
932    %2:_(<2 x s16>) = COPY $vgpr2
933    %4:_(<3 x s16>) = G_INSERT %1, %2, 0
934    %5:_(<4 x s16>) = G_IMPLICIT_DEF
935    %6:_(<4 x s16>) = G_INSERT %5, %4, 0
936    $vgpr0_vgpr1 = COPY %6
937...
938---
939name: test_insert_v3s16_v2s16_offset16
940body: |
941  bb.0:
942    liveins: $vgpr0_vgpr1, $vgpr2
943
944    ; CHECK-LABEL: name: test_insert_v3s16_v2s16_offset16
945    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
946    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0
947    ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2
948    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
949    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0
950    ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[COPY1]](<2 x s16>), 16
951    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>)
952    ; 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>)
953    ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0
954    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>)
955    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
956    %1:_(<3 x s16>) = G_EXTRACT %0, 0
957    %2:_(<2 x s16>) = COPY $vgpr2
958    %4:_(<3 x s16>) = G_INSERT %1, %2, 16
959    %5:_(<4 x s16>) = G_IMPLICIT_DEF
960    %6:_(<4 x s16>) = G_INSERT %5, %4, 0
961    $vgpr0_vgpr1 = COPY %6
962...
963---
964name: test_insert_v3s16_s32_offset0
965body: |
966  bb.0:
967    liveins: $vgpr0_vgpr1, $vgpr2
968
969    ; CHECK-LABEL: name: test_insert_v3s16_s32_offset0
970    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
971    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0
972    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
973    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
974    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0
975    ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[COPY1]](s32), 0
976    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>)
977    ; 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>)
978    ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0
979    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>)
980    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
981    %1:_(<3 x s16>) = G_EXTRACT %0, 0
982    %2:_(s32) = COPY $vgpr2
983    %4:_(<3 x s16>) = G_INSERT %1, %2, 0
984    %5:_(<4 x s16>) = G_IMPLICIT_DEF
985    %6:_(<4 x s16>) = G_INSERT %5, %4, 0
986    $vgpr0_vgpr1 = COPY %6
987...
988---
989name: test_insert_v3s16_s32_offset16
990body: |
991  bb.0:
992    liveins: $vgpr0_vgpr1, $vgpr2
993
994    ; CHECK-LABEL: name: test_insert_v3s16_s32_offset16
995    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
996    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0
997    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
998    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
999    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0
1000    ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[COPY1]](s32), 16
1001    ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>)
1002    ; 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>)
1003    ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0
1004    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>)
1005    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1006    %1:_(<3 x s16>) = G_EXTRACT %0, 0
1007    %2:_(s32) = COPY $vgpr2
1008    %4:_(<3 x s16>) = G_INSERT %1, %2, 16
1009    %5:_(<4 x s16>) = G_IMPLICIT_DEF
1010    %6:_(<4 x s16>) = G_INSERT %5, %4, 0
1011    $vgpr0_vgpr1 = COPY %6
1012...
1013---
1014name: test_insert_v4s16_s16_offset0
1015body: |
1016  bb.0:
1017    liveins: $vgpr0_vgpr1, $vgpr2
1018
1019    ; CHECK-LABEL: name: test_insert_v4s16_s16_offset0
1020    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1021    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1022    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1023    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[TRUNC]](s16), 0
1024    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1025    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1026    %1:_(s32) = COPY $vgpr2
1027    %2:_(s16) = G_TRUNC %1
1028    %3:_(<4 x s16>) = G_INSERT %0, %2, 0
1029    $vgpr0_vgpr1 = COPY %3
1030...
1031---
1032name: test_insert_v4s16_s16_offset16
1033body: |
1034  bb.0:
1035    liveins: $vgpr0_vgpr1, $vgpr2
1036
1037    ; CHECK-LABEL: name: test_insert_v4s16_s16_offset16
1038    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1039    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1040    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1041    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[TRUNC]](s16), 16
1042    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1043    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1044    %1:_(s32) = COPY $vgpr2
1045    %2:_(s16) = G_TRUNC %1
1046    %3:_(<4 x s16>) = G_INSERT %0, %2, 16
1047    $vgpr0_vgpr1 = COPY %3
1048...
1049---
1050name: test_insert_v4s16_s16_offset32
1051body: |
1052  bb.0:
1053    liveins: $vgpr0_vgpr1, $vgpr2
1054
1055    ; CHECK-LABEL: name: test_insert_v4s16_s16_offset32
1056    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1057    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1058    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1059    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[TRUNC]](s16), 32
1060    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1061    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1062    %1:_(s32) = COPY $vgpr2
1063    %2:_(s16) = G_TRUNC %1
1064    %3:_(<4 x s16>) = G_INSERT %0, %2, 32
1065    $vgpr0_vgpr1 = COPY %3
1066...
1067---
1068name: test_insert_v4s16_s16_offset48
1069body: |
1070  bb.0:
1071    liveins: $vgpr0_vgpr1, $vgpr2
1072
1073    ; CHECK-LABEL: name: test_insert_v4s16_s16_offset48
1074    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1075    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1076    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1077    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[TRUNC]](s16), 48
1078    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1079    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1080    %1:_(s32) = COPY $vgpr2
1081    %2:_(s16) = G_TRUNC %1
1082    %3:_(<4 x s16>) = G_INSERT %0, %2, 48
1083    $vgpr0_vgpr1 = COPY %3
1084...
1085---
1086name: test_insert_v4s16_v2s16_offset0
1087body: |
1088  bb.0:
1089    liveins: $vgpr0_vgpr1, $vgpr2
1090
1091    ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset0
1092    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1093    ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2
1094    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](<2 x s16>), 0
1095    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1096    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1097    %1:_(<2 x s16>) = COPY $vgpr2
1098    %2:_(<4 x s16>) = G_INSERT %0, %1, 0
1099    $vgpr0_vgpr1 = COPY %2
1100...
1101---
1102name: test_insert_v4s16_v2s16_offset16
1103body: |
1104  bb.0:
1105    liveins: $vgpr0_vgpr1, $vgpr2
1106
1107    ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset16
1108    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1109    ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2
1110    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](<2 x s16>), 16
1111    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1112    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1113    %1:_(<2 x s16>) = COPY $vgpr2
1114    %2:_(<4 x s16>) = G_INSERT %0, %1, 16
1115    $vgpr0_vgpr1 = COPY %2
1116...
1117---
1118name: test_insert_v4s16_v2s16_offset32
1119body: |
1120  bb.0:
1121    liveins: $vgpr0_vgpr1, $vgpr2
1122
1123    ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset32
1124    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1125    ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2
1126    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](<2 x s16>), 32
1127    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1128    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1129    %1:_(<2 x s16>) = COPY $vgpr2
1130    %2:_(<4 x s16>) = G_INSERT %0, %1, 32
1131    $vgpr0_vgpr1 = COPY %2
1132...
1133---
1134name: test_insert_v4s16_v3s16_offset0
1135body: |
1136  bb.0:
1137    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
1138
1139    ; CHECK-LABEL: name: test_insert_v4s16_v3s16_offset0
1140    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1141    ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr3
1142    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY1]](<4 x s16>), 0
1143    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[EXTRACT]](<3 x s16>), 0
1144    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1145    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1146    %1:_(<4 x s16>) = COPY $vgpr2_vgpr3
1147    %2:_(<3 x s16>) = G_EXTRACT %1, 0
1148    %3:_(<4 x s16>) = G_INSERT %0, %2, 0
1149    $vgpr0_vgpr1 = COPY %3
1150...
1151---
1152name: test_insert_v4s16_v3s16_offset16
1153body: |
1154  bb.0:
1155    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
1156
1157    ; CHECK-LABEL: name: test_insert_v4s16_v3s16_offset16
1158    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1159    ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr3
1160    ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY1]](<4 x s16>), 0
1161    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[EXTRACT]](<3 x s16>), 16
1162    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1163    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1164    %1:_(<4 x s16>) = COPY $vgpr2_vgpr3
1165    %2:_(<3 x s16>) = G_EXTRACT %1, 0
1166    %3:_(<4 x s16>) = G_INSERT %0, %2, 16
1167    $vgpr0_vgpr1 = COPY %3
1168...
1169---
1170name: test_insert_v4s16_s32_offset0
1171body: |
1172  bb.0:
1173    liveins: $vgpr0_vgpr1, $vgpr2
1174
1175    ; CHECK-LABEL: name: test_insert_v4s16_s32_offset0
1176    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1177    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1178    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](s32), 0
1179    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1180    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1181    %1:_(s32) = COPY $vgpr2
1182    %2:_(<4 x s16>) = G_INSERT %0, %1, 0
1183    $vgpr0_vgpr1 = COPY %2
1184...
1185---
1186name: test_insert_v4s16_s32_offset16
1187body: |
1188  bb.0:
1189    liveins: $vgpr0_vgpr1, $vgpr2
1190
1191    ; CHECK-LABEL: name: test_insert_v4s16_s32_offset16
1192    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1193    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1194    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](s32), 16
1195    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1196    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1197    %1:_(s32) = COPY $vgpr2
1198    %2:_(<4 x s16>) = G_INSERT %0, %1, 16
1199    $vgpr0_vgpr1 = COPY %2
1200...
1201---
1202name: test_insert_v4s16_s32_offset32
1203body: |
1204  bb.0:
1205    liveins: $vgpr0_vgpr1, $vgpr2
1206
1207    ; CHECK-LABEL: name: test_insert_v4s16_s32_offset32
1208    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
1209    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1210    ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](s32), 32
1211    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>)
1212    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
1213    %1:_(s32) = COPY $vgpr2
1214    %2:_(<4 x s16>) = G_INSERT %0, %1, 32
1215    $vgpr0_vgpr1 = COPY %2
1216...
1217
1218---
1219name: test_insert_s64_s16_offset0
1220body: |
1221  bb.0:
1222    liveins: $vgpr0_vgpr1, $vgpr2
1223
1224    ; CHECK-LABEL: name: test_insert_s64_s16_offset0
1225    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
1226    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1227    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1228    ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 0
1229    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
1230    %0:_(s64) = COPY $vgpr0_vgpr1
1231    %1:_(s32) = COPY $vgpr2
1232    %2:_(s16) = G_TRUNC %1
1233    %3:_(s64) = G_INSERT %0, %2, 0
1234    $vgpr0_vgpr1 = COPY %3
1235...
1236---
1237name: test_insert_s64_s16_offset16
1238body: |
1239  bb.0:
1240    liveins: $vgpr0_vgpr1, $vgpr2
1241
1242    ; CHECK-LABEL: name: test_insert_s64_s16_offset16
1243    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
1244    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1245    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1246    ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 16
1247    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
1248    %0:_(s64) = COPY $vgpr0_vgpr1
1249    %1:_(s32) = COPY $vgpr2
1250    %2:_(s16) = G_TRUNC %1
1251    %3:_(s64) = G_INSERT %0, %2, 16
1252    $vgpr0_vgpr1 = COPY %3
1253...
1254---
1255name: test_insert_s64_s16_offset32
1256body: |
1257  bb.0:
1258    liveins: $vgpr0_vgpr1, $vgpr2
1259
1260    ; CHECK-LABEL: name: test_insert_s64_s16_offset32
1261    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
1262    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1263    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1264    ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 32
1265    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
1266    %0:_(s64) = COPY $vgpr0_vgpr1
1267    %1:_(s32) = COPY $vgpr2
1268    %2:_(s16) = G_TRUNC %1
1269    %3:_(s64) = G_INSERT %0, %2, 32
1270    $vgpr0_vgpr1 = COPY %3
1271...
1272---
1273name: test_insert_s64_s16_offset48
1274body: |
1275  bb.0:
1276    liveins: $vgpr0_vgpr1, $vgpr2
1277
1278    ; CHECK-LABEL: name: test_insert_s64_s16_offset48
1279    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
1280    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
1281    ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1282    ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 48
1283    ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
1284    %0:_(s64) = COPY $vgpr0_vgpr1
1285    %1:_(s32) = COPY $vgpr2
1286    %2:_(s16) = G_TRUNC %1
1287    %3:_(s64) = G_INSERT %0, %2, 48
1288    $vgpr0_vgpr1 = COPY %3
1289...
1290---
1291name: test_insert_s32_s16_offset0
1292body: |
1293  bb.0:
1294    liveins: $vgpr0, $vgpr1
1295
1296    ; CHECK-LABEL: name: test_insert_s32_s16_offset0
1297    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1298    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1299    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
1300    ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
1301    ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
1302    ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -65536
1303    ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]
1304    ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[AND]]
1305    ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32)
1306    ; CHECK: $vgpr0 = COPY [[COPY3]](s32)
1307    %0:_(s32) = COPY $vgpr0
1308    %1:_(s32) = COPY $vgpr1
1309    %2:_(s16) = G_TRUNC %1
1310    %3:_(s32) = G_INSERT %1, %2, 0
1311    $vgpr0 = COPY %3
1312...
1313
1314---
1315name: test_insert_s32_s16_offset1
1316body: |
1317  bb.0:
1318    liveins: $vgpr0, $vgpr1
1319
1320    ; CHECK-LABEL: name: test_insert_s32_s16_offset1
1321    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1322    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1323    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
1324    ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
1325    ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
1326    ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1327    ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)
1328    ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -131071
1329    ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]
1330    ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]
1331    ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32)
1332    ; CHECK: $vgpr0 = COPY [[COPY3]](s32)
1333    %0:_(s32) = COPY $vgpr0
1334    %1:_(s32) = COPY $vgpr1
1335    %2:_(s16) = G_TRUNC %1
1336    %3:_(s32) = G_INSERT %1, %2, 1
1337    $vgpr0 = COPY %3
1338...
1339
1340---
1341name: test_insert_s32_s16_offset8
1342body: |
1343  bb.0:
1344    liveins: $vgpr0, $vgpr1
1345
1346    ; CHECK-LABEL: name: test_insert_s32_s16_offset8
1347    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1348    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1349    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
1350    ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
1351    ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
1352    ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
1353    ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)
1354    ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -16776961
1355    ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]
1356    ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]
1357    ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32)
1358    ; CHECK: $vgpr0 = COPY [[COPY3]](s32)
1359    %0:_(s32) = COPY $vgpr0
1360    %1:_(s32) = COPY $vgpr1
1361    %2:_(s16) = G_TRUNC %1
1362    %3:_(s32) = G_INSERT %1, %2, 8
1363    $vgpr0 = COPY %3
1364...
1365
1366---
1367name: test_insert_s32_s16_offset16
1368body: |
1369  bb.0:
1370    liveins: $vgpr0, $vgpr1
1371
1372    ; CHECK-LABEL: name: test_insert_s32_s16_offset16
1373    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1374    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1375    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
1376    ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
1377    ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
1378    ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
1379    ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)
1380    ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
1381    ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]
1382    ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32)
1383    ; CHECK: $vgpr0 = COPY [[COPY3]](s32)
1384    %0:_(s32) = COPY $vgpr0
1385    %1:_(s32) = COPY $vgpr1
1386    %2:_(s16) = G_TRUNC %1
1387    %3:_(s32) = G_INSERT %1, %2, 16
1388    $vgpr0 = COPY %3
1389...
1390