xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/combine-shift-of-shifted-logic-shlsat.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:            ushlsat_and_1
6tracksRegLiveness: true
7body:             |
8  bb.0:
9    liveins: $sgpr0
10
11    ; CHECK-LABEL: name: ushlsat_and_1
12    ; CHECK: liveins: $sgpr0
13    ; CHECK-NEXT: {{  $}}
14    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
15    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
16    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1073741820
17    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
18    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32)
19    ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C1]], [[C]](s32)
20    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[USHLSAT]], [[USHLSAT1]]
21    ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32)
22    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
23    %0:_(s32) = COPY $sgpr0
24    %2:_(s32) = G_CONSTANT i32 2
25    %4:_(s32) = G_CONSTANT i32 1073741820
26    %3:_(s32) = G_USHLSAT %0, %2(s32)
27    %5:_(s32) = G_AND %3, %4
28    %6:_(s32) = G_USHLSAT %5, %2(s32)
29    $sgpr0 = COPY %6(s32)
30    SI_RETURN_TO_EPILOG implicit $sgpr0
31
32...
33---
34name:            ushlsat_and_2
35tracksRegLiveness: true
36body:             |
37  bb.0:
38    liveins: $sgpr0
39
40    ; CHECK-LABEL: name: ushlsat_and_2
41    ; CHECK: liveins: $sgpr0
42    ; CHECK-NEXT: {{  $}}
43    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
44    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 536870880
45    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
46    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
47    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32)
48    ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32)
49    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[USHLSAT]], [[USHLSAT1]]
50    ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32)
51    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
52    %0:_(s32) = COPY $sgpr0
53    %2:_(s32) = G_CONSTANT i32 5
54    %4:_(s32) = G_CONSTANT i32 536870880
55    %6:_(s32) = G_CONSTANT i32 3
56    %3:_(s32) = G_USHLSAT %0, %2(s32)
57    %5:_(s32) = G_AND %3, %4
58    %7:_(s32) = G_USHLSAT %5, %6(s32)
59    $sgpr0 = COPY %7(s32)
60    SI_RETURN_TO_EPILOG implicit $sgpr0
61
62...
63---
64name:            ushlsat_and_3
65tracksRegLiveness: true
66body:             |
67  bb.0:
68    liveins: $sgpr0
69
70    ; CHECK-LABEL: name: ushlsat_and_3
71    ; CHECK: liveins: $sgpr0
72    ; CHECK-NEXT: {{  $}}
73    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
74    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536
75    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
76    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 19
77    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32)
78    ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32)
79    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[USHLSAT]], [[USHLSAT1]]
80    ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32)
81    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
82    %0:_(s32) = COPY $sgpr0
83    %2:_(s32) = G_CONSTANT i32 3
84    %4:_(s32) = G_CONSTANT i32 65536
85    %6:_(s32) = G_CONSTANT i32 16
86    %3:_(s32) = G_USHLSAT %0, %2(s32)
87    %5:_(s32) = G_AND %3, %4
88    %7:_(s32) = G_USHLSAT %5, %6(s32)
89    $sgpr0 = COPY %7(s32)
90    SI_RETURN_TO_EPILOG implicit $sgpr0
91
92...
93---
94name:            ushlsat_or_1
95tracksRegLiveness: true
96body:             |
97  bb.0:
98    liveins: $sgpr0
99
100    ; CHECK-LABEL: name: ushlsat_or_1
101    ; CHECK: liveins: $sgpr0
102    ; CHECK-NEXT: {{  $}}
103    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
104    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
105    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1073741821
106    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
107    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32)
108    ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C1]], [[C]](s32)
109    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[USHLSAT]], [[USHLSAT1]]
110    ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32)
111    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
112    %0:_(s32) = COPY $sgpr0
113    %2:_(s32) = G_CONSTANT i32 2
114    %4:_(s32) = G_CONSTANT i32 -1073741821
115    %3:_(s32) = G_USHLSAT %0, %2(s32)
116    %5:_(s32) = G_OR %3, %4
117    %6:_(s32) = G_USHLSAT %5, %2(s32)
118    $sgpr0 = COPY %6(s32)
119    SI_RETURN_TO_EPILOG implicit $sgpr0
120
121...
122---
123name:            ushlsat_or_2
124tracksRegLiveness: true
125body:             |
126  bb.0:
127    liveins: $sgpr0
128
129    ; CHECK-LABEL: name: ushlsat_or_2
130    ; CHECK: liveins: $sgpr0
131    ; CHECK-NEXT: {{  $}}
132    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
133    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -536870881
134    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
135    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
136    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32)
137    ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32)
138    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[USHLSAT]], [[USHLSAT1]]
139    ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32)
140    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
141    %0:_(s32) = COPY $sgpr0
142    %2:_(s32) = G_CONSTANT i32 5
143    %4:_(s32) = G_CONSTANT i32 -536870881
144    %6:_(s32) = G_CONSTANT i32 3
145    %3:_(s32) = G_USHLSAT %0, %2(s32)
146    %5:_(s32) = G_OR %3, %4
147    %7:_(s32) = G_USHLSAT %5, %6(s32)
148    $sgpr0 = COPY %7(s32)
149    SI_RETURN_TO_EPILOG implicit $sgpr0
150
151...
152---
153name:            ushlsat_or_3
154tracksRegLiveness: true
155body:             |
156  bb.0:
157    liveins: $sgpr0
158
159    ; CHECK-LABEL: name: ushlsat_or_3
160    ; CHECK: liveins: $sgpr0
161    ; CHECK-NEXT: {{  $}}
162    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
163    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536
164    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
165    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 19
166    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32)
167    ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32)
168    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[USHLSAT]], [[USHLSAT1]]
169    ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32)
170    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
171    %0:_(s32) = COPY $sgpr0
172    %2:_(s32) = G_CONSTANT i32 3
173    %4:_(s32) = G_CONSTANT i32 65536
174    %6:_(s32) = G_CONSTANT i32 16
175    %3:_(s32) = G_USHLSAT %0, %2(s32)
176    %5:_(s32) = G_OR %3, %4
177    %7:_(s32) = G_USHLSAT %5, %6(s32)
178    $sgpr0 = COPY %7(s32)
179    SI_RETURN_TO_EPILOG implicit $sgpr0
180
181...
182---
183name:            ushlsat_xor
184tracksRegLiveness: true
185body:             |
186  bb.0:
187    liveins: $sgpr0
188
189    ; CHECK-LABEL: name: ushlsat_xor
190    ; CHECK: liveins: $sgpr0
191    ; CHECK-NEXT: {{  $}}
192    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
193    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 43690
194    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 5
195    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
196    ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32)
197    ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32)
198    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[USHLSAT]], [[USHLSAT1]]
199    ; CHECK-NEXT: $sgpr0 = COPY [[XOR]](s32)
200    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
201    %0:_(s32) = COPY $sgpr0
202    %2:_(s32) = G_CONSTANT i32 3
203    %4:_(s32) = G_CONSTANT i32 43690
204    %6:_(s32) = G_CONSTANT i32 5
205    %3:_(s32) = G_USHLSAT %0, %2(s32)
206    %5:_(s32) = G_XOR %3, %4
207    %7:_(s32) = G_USHLSAT %5, %6(s32)
208    $sgpr0 = COPY %7(s32)
209    SI_RETURN_TO_EPILOG implicit $sgpr0
210
211...
212---
213name:            sshlsat_and_1
214tracksRegLiveness: true
215body:             |
216  bb.0:
217    liveins: $sgpr0
218
219    ; CHECK-LABEL: name: sshlsat_and_1
220    ; CHECK: liveins: $sgpr0
221    ; CHECK-NEXT: {{  $}}
222    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
223    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
224    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1073741820
225    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
226    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32)
227    ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C1]], [[C]](s32)
228    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SSHLSAT]], [[SSHLSAT1]]
229    ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32)
230    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
231    %0:_(s32) = COPY $sgpr0
232    %2:_(s32) = G_CONSTANT i32 2
233    %4:_(s32) = G_CONSTANT i32 1073741820
234    %3:_(s32) = G_SSHLSAT %0, %2(s32)
235    %5:_(s32) = G_AND %3, %4
236    %6:_(s32) = G_SSHLSAT %5, %2(s32)
237    $sgpr0 = COPY %6(s32)
238    SI_RETURN_TO_EPILOG implicit $sgpr0
239
240...
241---
242name:            sshlsat_and_2
243tracksRegLiveness: true
244body:             |
245  bb.0:
246    liveins: $sgpr0
247
248    ; CHECK-LABEL: name: sshlsat_and_2
249    ; CHECK: liveins: $sgpr0
250    ; CHECK-NEXT: {{  $}}
251    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
252    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 536870880
253    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
254    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
255    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32)
256    ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32)
257    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SSHLSAT]], [[SSHLSAT1]]
258    ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32)
259    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
260    %0:_(s32) = COPY $sgpr0
261    %2:_(s32) = G_CONSTANT i32 5
262    %4:_(s32) = G_CONSTANT i32 536870880
263    %6:_(s32) = G_CONSTANT i32 3
264    %3:_(s32) = G_SSHLSAT %0, %2(s32)
265    %5:_(s32) = G_AND %3, %4
266    %7:_(s32) = G_SSHLSAT %5, %6(s32)
267    $sgpr0 = COPY %7(s32)
268    SI_RETURN_TO_EPILOG implicit $sgpr0
269
270...
271---
272name:            sshlsat_and_3
273tracksRegLiveness: true
274body:             |
275  bb.0:
276    liveins: $sgpr0
277
278    ; CHECK-LABEL: name: sshlsat_and_3
279    ; CHECK: liveins: $sgpr0
280    ; CHECK-NEXT: {{  $}}
281    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
282    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536
283    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
284    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 19
285    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32)
286    ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32)
287    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SSHLSAT]], [[SSHLSAT1]]
288    ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32)
289    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
290    %0:_(s32) = COPY $sgpr0
291    %2:_(s32) = G_CONSTANT i32 3
292    %4:_(s32) = G_CONSTANT i32 65536
293    %6:_(s32) = G_CONSTANT i32 16
294    %3:_(s32) = G_SSHLSAT %0, %2(s32)
295    %5:_(s32) = G_AND %3, %4
296    %7:_(s32) = G_SSHLSAT %5, %6(s32)
297    $sgpr0 = COPY %7(s32)
298    SI_RETURN_TO_EPILOG implicit $sgpr0
299
300...
301---
302name:            sshlsat_or_1
303tracksRegLiveness: true
304body:             |
305  bb.0:
306    liveins: $sgpr0
307
308    ; CHECK-LABEL: name: sshlsat_or_1
309    ; CHECK: liveins: $sgpr0
310    ; CHECK-NEXT: {{  $}}
311    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
312    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
313    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1073741821
314    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
315    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32)
316    ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C1]], [[C]](s32)
317    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SSHLSAT]], [[SSHLSAT1]]
318    ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32)
319    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
320    %0:_(s32) = COPY $sgpr0
321    %2:_(s32) = G_CONSTANT i32 2
322    %4:_(s32) = G_CONSTANT i32 -1073741821
323    %3:_(s32) = G_SSHLSAT %0, %2(s32)
324    %5:_(s32) = G_OR %3, %4
325    %6:_(s32) = G_SSHLSAT %5, %2(s32)
326    $sgpr0 = COPY %6(s32)
327    SI_RETURN_TO_EPILOG implicit $sgpr0
328
329...
330---
331name:            sshlsat_or_2
332tracksRegLiveness: true
333body:             |
334  bb.0:
335    liveins: $sgpr0
336
337    ; CHECK-LABEL: name: sshlsat_or_2
338    ; CHECK: liveins: $sgpr0
339    ; CHECK-NEXT: {{  $}}
340    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
341    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -536870881
342    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
343    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
344    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32)
345    ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32)
346    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SSHLSAT]], [[SSHLSAT1]]
347    ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32)
348    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
349    %0:_(s32) = COPY $sgpr0
350    %2:_(s32) = G_CONSTANT i32 5
351    %4:_(s32) = G_CONSTANT i32 -536870881
352    %6:_(s32) = G_CONSTANT i32 3
353    %3:_(s32) = G_SSHLSAT %0, %2(s32)
354    %5:_(s32) = G_OR %3, %4
355    %7:_(s32) = G_SSHLSAT %5, %6(s32)
356    $sgpr0 = COPY %7(s32)
357    SI_RETURN_TO_EPILOG implicit $sgpr0
358
359...
360---
361name:            sshlsat_or_3
362tracksRegLiveness: true
363body:             |
364  bb.0:
365    liveins: $sgpr0
366
367    ; CHECK-LABEL: name: sshlsat_or_3
368    ; CHECK: liveins: $sgpr0
369    ; CHECK-NEXT: {{  $}}
370    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
371    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536
372    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
373    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 19
374    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32)
375    ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32)
376    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SSHLSAT]], [[SSHLSAT1]]
377    ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32)
378    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
379    %0:_(s32) = COPY $sgpr0
380    %2:_(s32) = G_CONSTANT i32 3
381    %4:_(s32) = G_CONSTANT i32 65536
382    %6:_(s32) = G_CONSTANT i32 16
383    %3:_(s32) = G_SSHLSAT %0, %2(s32)
384    %5:_(s32) = G_OR %3, %4
385    %7:_(s32) = G_SSHLSAT %5, %6(s32)
386    $sgpr0 = COPY %7(s32)
387    SI_RETURN_TO_EPILOG implicit $sgpr0
388
389...
390---
391name:            sshlsat_xor
392tracksRegLiveness: true
393body:             |
394  bb.0:
395    liveins: $sgpr0
396
397    ; CHECK-LABEL: name: sshlsat_xor
398    ; CHECK: liveins: $sgpr0
399    ; CHECK-NEXT: {{  $}}
400    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
401    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 43690
402    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 5
403    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
404    ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32)
405    ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32)
406    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[SSHLSAT]], [[SSHLSAT1]]
407    ; CHECK-NEXT: $sgpr0 = COPY [[XOR]](s32)
408    ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0
409    %0:_(s32) = COPY $sgpr0
410    %2:_(s32) = G_CONSTANT i32 3
411    %4:_(s32) = G_CONSTANT i32 43690
412    %6:_(s32) = G_CONSTANT i32 5
413    %3:_(s32) = G_SSHLSAT %0, %2(s32)
414    %5:_(s32) = G_XOR %3, %4
415    %7:_(s32) = G_SSHLSAT %5, %6(s32)
416    $sgpr0 = COPY %7(s32)
417    SI_RETURN_TO_EPILOG implicit $sgpr0
418
419...
420