xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/combine-shift-imm-chain-illegal-types.mir (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s
3
4---
5name:            test_ashr_i44
6tracksRegLiveness: true
7body:             |
8  bb.0:
9    liveins: $vgpr0, $vgpr1
10
11    ; CHECK-LABEL: name: test_ashr_i44
12    ; CHECK: liveins: $vgpr0, $vgpr1
13    ; CHECK-NEXT: {{  $}}
14    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
15    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
16    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
17    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s44) = G_TRUNC [[MV]](s64)
18    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s44) = G_CONSTANT i44 43
19    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s44) = G_ASHR [[TRUNC]], [[C]](s44)
20    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ASHR]](s44)
21    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64)
22    ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)
23    ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)
24    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
25    %1:_(s32) = COPY $vgpr0
26    %2:_(s32) = COPY $vgpr1
27    %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
28    %4:_(s44) = G_TRUNC %3(s64)
29    %5:_(s44) = G_CONSTANT i44 22
30    %6:_(s44) = G_ASHR %4, %5(s44)
31    %7:_(s44) = G_ASHR %6, %5(s44)
32    %8:_(s64) = G_ANYEXT %7(s44)
33    %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %8(s64)
34    $vgpr0 = COPY %9(s32)
35    $vgpr1 = COPY %10(s32)
36    SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
37
38...
39---
40name:            test_ashr_i55
41tracksRegLiveness: true
42body:             |
43  bb.0:
44    liveins: $sgpr0, $sgpr1
45
46    ; CHECK-LABEL: name: test_ashr_i55
47    ; CHECK: liveins: $sgpr0, $sgpr1
48    ; CHECK-NEXT: {{  $}}
49    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
50    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1
51    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
52    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64)
53    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53
54    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s55) = G_ASHR [[TRUNC]], [[C]](s55)
55    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ASHR]](s55)
56    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64)
57    ; CHECK-NEXT: $sgpr0 = COPY [[UV]](s32)
58    ; CHECK-NEXT: $sgpr1 = COPY [[UV1]](s32)
59    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
60    %1:_(s32) = COPY $sgpr0
61    %2:_(s32) = COPY $sgpr1
62    %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
63    %4:_(s55) = G_TRUNC %3(s64)
64    %5:_(s55) = G_CONSTANT i55 50
65    %7:_(s55) = G_CONSTANT i55 3
66    %6:_(s55) = G_ASHR %4, %5(s55)
67    %8:_(s55) = G_ASHR %6, %7(s55)
68    %9:_(s64) = G_ANYEXT %8(s55)
69    %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64)
70    $sgpr0 = COPY %10(s32)
71    $sgpr1 = COPY %11(s32)
72    SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
73
74...
75---
76name:            test_lshr_i44
77tracksRegLiveness: true
78body:             |
79  bb.0:
80    liveins: $sgpr0, $sgpr1
81
82    ; CHECK-LABEL: name: test_lshr_i44
83    ; CHECK: liveins: $sgpr0, $sgpr1
84    ; CHECK-NEXT: {{  $}}
85    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
86    ; CHECK-NEXT: $sgpr0 = COPY [[C]](s32)
87    ; CHECK-NEXT: $sgpr1 = COPY [[C]](s32)
88    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
89    %1:_(s32) = COPY $sgpr0
90    %2:_(s32) = COPY $sgpr1
91    %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
92    %4:_(s44) = G_TRUNC %3(s64)
93    %5:_(s44) = G_CONSTANT i44 22
94    %6:_(s44) = G_LSHR %4, %5(s44)
95    %7:_(s44) = G_LSHR %6, %5(s44)
96    %8:_(s64) = G_ANYEXT %7(s44)
97    %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %8(s64)
98    $sgpr0 = COPY %9(s32)
99    $sgpr1 = COPY %10(s32)
100    SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
101
102...
103---
104name:            test_lshr_i55
105tracksRegLiveness: true
106body:             |
107  bb.0:
108    liveins: $vgpr0, $vgpr1
109
110    ; CHECK-LABEL: name: test_lshr_i55
111    ; CHECK: liveins: $vgpr0, $vgpr1
112    ; CHECK-NEXT: {{  $}}
113    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
114    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
115    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
116    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64)
117    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53
118    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s55) = G_LSHR [[TRUNC]], [[C]](s55)
119    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LSHR]](s55)
120    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64)
121    ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)
122    ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)
123    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
124    %1:_(s32) = COPY $vgpr0
125    %2:_(s32) = COPY $vgpr1
126    %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
127    %4:_(s55) = G_TRUNC %3(s64)
128    %5:_(s55) = G_CONSTANT i55 50
129    %7:_(s55) = G_CONSTANT i55 3
130    %6:_(s55) = G_LSHR %4, %5(s55)
131    %8:_(s55) = G_LSHR %6, %7(s55)
132    %9:_(s64) = G_ANYEXT %8(s55)
133    %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64)
134    $vgpr0 = COPY %10(s32)
135    $vgpr1 = COPY %11(s32)
136    SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
137
138...
139---
140name:            test_shl_i44
141tracksRegLiveness: true
142body:             |
143  bb.0:
144    liveins: $vgpr0, $vgpr1
145
146    ; CHECK-LABEL: name: test_shl_i44
147    ; CHECK: liveins: $vgpr0, $vgpr1
148    ; CHECK-NEXT: {{  $}}
149    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
150    ; CHECK-NEXT: $vgpr0 = COPY [[C]](s32)
151    ; CHECK-NEXT: $vgpr1 = COPY [[C]](s32)
152    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
153    %1:_(s32) = COPY $vgpr0
154    %2:_(s32) = COPY $vgpr1
155    %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
156    %4:_(s44) = G_TRUNC %3(s64)
157    %5:_(s44) = G_CONSTANT i44 22
158    %6:_(s44) = G_SHL %4, %5(s44)
159    %7:_(s44) = G_SHL %6, %5(s44)
160    %8:_(s64) = G_ANYEXT %7(s44)
161    %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %8(s64)
162    $vgpr0 = COPY %9(s32)
163    $vgpr1 = COPY %10(s32)
164    SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
165
166...
167---
168name:            test_shl_i55
169tracksRegLiveness: true
170body:             |
171  bb.0:
172    liveins: $sgpr0, $sgpr1
173
174    ; CHECK-LABEL: name: test_shl_i55
175    ; CHECK: liveins: $sgpr0, $sgpr1
176    ; CHECK-NEXT: {{  $}}
177    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
178    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1
179    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
180    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64)
181    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53
182    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s55) = G_SHL [[TRUNC]], [[C]](s55)
183    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SHL]](s55)
184    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64)
185    ; CHECK-NEXT: $sgpr0 = COPY [[UV]](s32)
186    ; CHECK-NEXT: $sgpr1 = COPY [[UV1]](s32)
187    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
188    %1:_(s32) = COPY $sgpr0
189    %2:_(s32) = COPY $sgpr1
190    %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
191    %4:_(s55) = G_TRUNC %3(s64)
192    %5:_(s55) = G_CONSTANT i55 50
193    %7:_(s55) = G_CONSTANT i55 3
194    %6:_(s55) = G_SHL %4, %5(s55)
195    %8:_(s55) = G_SHL %6, %7(s55)
196    %9:_(s64) = G_ANYEXT %8(s55)
197    %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64)
198    $sgpr0 = COPY %10(s32)
199    $sgpr1 = COPY %11(s32)
200    SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
201
202...
203---
204name:            sshlsat_i44
205tracksRegLiveness: true
206body:             |
207  bb.0:
208    liveins: $sgpr0, $sgpr1
209
210    ; CHECK-LABEL: name: sshlsat_i44
211    ; CHECK: liveins: $sgpr0, $sgpr1
212    ; CHECK-NEXT: {{  $}}
213    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
214    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1
215    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
216    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s44) = G_TRUNC [[MV]](s64)
217    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s44) = G_CONSTANT i44 43
218    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s44) = G_SSHLSAT [[TRUNC]], [[C]](s44)
219    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SSHLSAT]](s44)
220    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64)
221    ; CHECK-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[UV]](s32)
222    ; CHECK-NEXT: $sgpr0 = COPY [[INTRINSIC_CONVERGENT]](s32)
223    ; CHECK-NEXT: [[INTRINSIC_CONVERGENT1:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[UV1]](s32)
224    ; CHECK-NEXT: $sgpr1 = COPY [[INTRINSIC_CONVERGENT1]](s32)
225    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
226    %1:_(s32) = COPY $sgpr0
227    %2:_(s32) = COPY $sgpr1
228    %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
229    %0:_(s44) = G_TRUNC %3(s64)
230    %5:_(s44) = G_CONSTANT i44 22
231    %6:_(s44) = G_SSHLSAT %0, %5(s44)
232    %7:_(s44) = G_SSHLSAT %6, %5(s44)
233    %8:_(s64) = G_ANYEXT %7(s44)
234    %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %8(s64)
235    %11:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %9(s32)
236    $sgpr0 = COPY %11(s32)
237    %12:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %10(s32)
238    $sgpr1 = COPY %12(s32)
239    SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
240
241...
242---
243name:            sshlsat_i55
244tracksRegLiveness: true
245body:             |
246  bb.0:
247    liveins: $vgpr0, $vgpr1
248
249    ; CHECK-LABEL: name: sshlsat_i55
250    ; CHECK: liveins: $vgpr0, $vgpr1
251    ; CHECK-NEXT: {{  $}}
252    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
253    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
254    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
255    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64)
256    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53
257    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s55) = G_SSHLSAT [[TRUNC]], [[C]](s55)
258    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SSHLSAT]](s55)
259    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64)
260    ; CHECK-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[UV]](s32)
261    ; CHECK-NEXT: $vgpr0 = COPY [[INTRINSIC_CONVERGENT]](s32)
262    ; CHECK-NEXT: [[INTRINSIC_CONVERGENT1:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[UV1]](s32)
263    ; CHECK-NEXT: $vgpr1 = COPY [[INTRINSIC_CONVERGENT1]](s32)
264    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
265    %1:_(s32) = COPY $vgpr0
266    %2:_(s32) = COPY $vgpr1
267    %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
268    %0:_(s55) = G_TRUNC %3(s64)
269    %5:_(s55) = G_CONSTANT i55 50
270    %7:_(s55) = G_CONSTANT i55 3
271    %6:_(s55) = G_SSHLSAT %0, %5(s55)
272    %8:_(s55) = G_SSHLSAT %6, %7(s55)
273    %9:_(s64) = G_ANYEXT %8(s55)
274    %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64)
275    %12:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %10(s32)
276    $vgpr0 = COPY %12(s32)
277    %13:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %11(s32)
278    $vgpr1 = COPY %13(s32)
279    SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
280
281...
282---
283name:            ushlsat_i44
284tracksRegLiveness: true
285body:             |
286  bb.0:
287    liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
288
289    ; CHECK-LABEL: name: ushlsat_i44
290    ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31
291    ; CHECK-NEXT: {{  $}}
292    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
293    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
294    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
295    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s44) = G_TRUNC [[MV]](s64)
296    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s44) = G_CONSTANT i44 22
297    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s44) = G_USHLSAT [[TRUNC]], [[C]](s44)
298    ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s44) = G_USHLSAT [[USHLSAT]], [[C]](s44)
299    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[USHLSAT1]](s44)
300    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64)
301    ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)
302    ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)
303    ; CHECK-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1
304    %2:_(s32) = COPY $vgpr0
305    %3:_(s32) = COPY $vgpr1
306    %4:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
307    %0:_(s44) = G_TRUNC %4(s64)
308    %5:_(s44) = G_CONSTANT i44 22
309    %6:_(s44) = G_USHLSAT %0, %5(s44)
310    %7:_(s44) = G_USHLSAT %6, %5(s44)
311    %9:_(s64) = G_ANYEXT %7(s44)
312    %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64)
313    $vgpr0 = COPY %10(s32)
314    $vgpr1 = COPY %11(s32)
315    S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1
316
317...
318---
319name:            ushlsat_i55
320tracksRegLiveness: true
321body:             |
322  bb.0:
323    liveins: $vgpr0, $vgpr1
324
325    ; CHECK-LABEL: name: ushlsat_i55
326    ; CHECK: liveins: $vgpr0, $vgpr1
327    ; CHECK-NEXT: {{  $}}
328    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
329    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
330    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
331    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64)
332    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53
333    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s55) = G_USHLSAT [[TRUNC]], [[C]](s55)
334    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[USHLSAT]](s55)
335    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64)
336    ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)
337    ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)
338    ; CHECK-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1
339    %2:_(s32) = COPY $vgpr0
340    %3:_(s32) = COPY $vgpr1
341    %4:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
342    %0:_(s55) = G_TRUNC %4(s64)
343    %5:_(s55) = G_CONSTANT i55 50
344    %7:_(s55) = G_CONSTANT i55 3
345    %6:_(s55) = G_USHLSAT %0, %5(s55)
346    %8:_(s55) = G_USHLSAT %6, %7(s55)
347    %10:_(s64) = G_ANYEXT %8(s55)
348    %11:_(s32), %12:_(s32) = G_UNMERGE_VALUES %10(s64)
349    $vgpr0 = COPY %11(s32)
350    $vgpr1 = COPY %12(s32)
351    S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1
352
353...
354