[ORC] Fix bug in source file name finding in DebuggerSupportPlugin.
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / legalize-fshl-fshr-rv32.mir
blob0745d7bb550173b8d251d84cd31181c17efa91a1
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \
3 # RUN: | FileCheck %s
5 ---
6 name:            fshl_i8
7 body:             |
8   bb.1:
9     liveins: $x10, $x11, $x12
11     ; CHECK-LABEL: name: fshl_i8
12     ; CHECK: liveins: $x10, $x11, $x12
13     ; CHECK-NEXT: {{  $}}
14     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
15     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
16     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
17     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
18     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
19     ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
20     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]
21     ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]
22     ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
23     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)
24     ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
25     ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]
26     ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C2]](s32)
27     ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[AND1]](s32)
28     ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[LSHR1]]
29     ; CHECK-NEXT: $x10 = COPY [[OR]](s32)
30     ; CHECK-NEXT: PseudoRET implicit $x10
31     %3:_(s32) = COPY $x10
32     %0:_(s8) = G_TRUNC %3(s32)
33     %4:_(s32) = COPY $x11
34     %1:_(s8) = G_TRUNC %4(s32)
35     %5:_(s32) = COPY $x12
36     %2:_(s8) = G_TRUNC %5(s32)
37     %6:_(s8) = G_FSHL %0, %1, %2(s8)
38     %7:_(s32) = G_ANYEXT %6(s8)
39     $x10 = COPY %7(s32)
40     PseudoRET implicit $x10
42 ...
43 ---
44 name:            fshl_i16
45 body:             |
46   bb.1:
47     liveins: $x10, $x11, $x12
49     ; CHECK-LABEL: name: fshl_i16
50     ; CHECK: liveins: $x10, $x11, $x12
51     ; CHECK-NEXT: {{  $}}
52     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
53     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
54     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
55     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
56     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
57     ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
58     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]
59     ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]
60     ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
61     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)
62     ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
63     ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]
64     ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C2]](s32)
65     ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[AND1]](s32)
66     ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[LSHR1]]
67     ; CHECK-NEXT: $x10 = COPY [[OR]](s32)
68     ; CHECK-NEXT: PseudoRET implicit $x10
69     %3:_(s32) = COPY $x10
70     %0:_(s16) = G_TRUNC %3(s32)
71     %4:_(s32) = COPY $x11
72     %1:_(s16) = G_TRUNC %4(s32)
73     %5:_(s32) = COPY $x12
74     %2:_(s16) = G_TRUNC %5(s32)
75     %6:_(s16) = G_FSHL %0, %1, %2(s16)
76     %7:_(s32) = G_ANYEXT %6(s16)
77     $x10 = COPY %7(s32)
78     PseudoRET implicit $x10
80 ...
81 ---
82 name:            fshl_i32
83 body:             |
84   bb.1:
85     liveins: $x10, $x11, $x12
87     ; CHECK-LABEL: name: fshl_i32
88     ; CHECK: liveins: $x10, $x11, $x12
89     ; CHECK-NEXT: {{  $}}
90     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
91     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
92     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
93     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
94     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
95     ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
96     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]
97     ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]
98     ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
99     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)
100     ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)
101     ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[AND1]](s32)
102     ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[LSHR1]]
103     ; CHECK-NEXT: $x10 = COPY [[OR]](s32)
104     ; CHECK-NEXT: PseudoRET implicit $x10
105     %0:_(s32) = COPY $x10
106     %1:_(s32) = COPY $x11
107     %2:_(s32) = COPY $x12
108     %3:_(s32) = G_FSHL %0, %1, %2(s32)
109     $x10 = COPY %3(s32)
110     PseudoRET implicit $x10
114 name:            fshl_i64
115 body:             |
116   bb.1:
117     liveins: $x10, $x11, $x12, $x13, $x14, $x15
119     ; CHECK-LABEL: name: fshl_i64
120     ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14, $x15
121     ; CHECK-NEXT: {{  $}}
122     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
123     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
124     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
125     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $x13
126     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $x14
127     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63
128     ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
129     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C]]
130     ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
131     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY4]], [[C2]]
132     ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]
133     ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
134     ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
135     ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[AND]], [[C4]]
136     ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C4]], [[AND]]
137     ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND]](s32), [[C4]]
138     ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[AND]](s32), [[C1]]
139     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)
140     ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[SUB1]](s32)
141     ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[AND]](s32)
142     ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL1]]
143     ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[SUB]](s32)
144     ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s32), [[SHL]], [[C1]]
145     ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s32), [[OR]], [[SHL2]]
146     ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s32), [[COPY1]], [[SELECT1]]
147     ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C3]](s32)
148     ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
149     ; CHECK-NEXT: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[COPY3]], [[C5]](s32)
150     ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR1]], [[SHL3]]
151     ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY3]], [[C3]](s32)
152     ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[AND1]], [[C4]]
153     ; CHECK-NEXT: [[SUB3:%[0-9]+]]:_(s32) = G_SUB [[C4]], [[AND1]]
154     ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND1]](s32), [[C4]]
155     ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[AND1]](s32), [[C1]]
156     ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[LSHR2]], [[AND1]](s32)
157     ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[OR1]], [[AND1]](s32)
158     ; CHECK-NEXT: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[LSHR2]], [[SUB3]](s32)
159     ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[LSHR4]], [[SHL4]]
160     ; CHECK-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[LSHR2]], [[SUB2]](s32)
161     ; CHECK-NEXT: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s32), [[OR2]], [[LSHR5]]
162     ; CHECK-NEXT: [[SELECT4:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s32), [[OR1]], [[SELECT3]]
163     ; CHECK-NEXT: [[SELECT5:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s32), [[LSHR3]], [[C1]]
164     ; CHECK-NEXT: [[OR3:%[0-9]+]]:_(s32) = G_OR [[SELECT]], [[SELECT4]]
165     ; CHECK-NEXT: [[OR4:%[0-9]+]]:_(s32) = G_OR [[SELECT2]], [[SELECT5]]
166     ; CHECK-NEXT: $x10 = COPY [[OR3]](s32)
167     ; CHECK-NEXT: $x11 = COPY [[OR4]](s32)
168     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
169     %3:_(s32) = COPY $x10
170     %4:_(s32) = COPY $x11
171     %0:_(s64) = G_MERGE_VALUES %3(s32), %4(s32)
172     %5:_(s32) = COPY $x12
173     %6:_(s32) = COPY $x13
174     %1:_(s64) = G_MERGE_VALUES %5(s32), %6(s32)
175     %7:_(s32) = COPY $x14
176     %8:_(s32) = COPY $x15
177     %2:_(s64) = G_MERGE_VALUES %7(s32), %8(s32)
178     %9:_(s64) = G_FSHL %0, %1, %2(s64)
179     %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64)
180     $x10 = COPY %10(s32)
181     $x11 = COPY %11(s32)
182     PseudoRET implicit $x10, implicit $x11
186 name:            fshr_i8
187 body:             |
188   bb.1:
189     liveins: $x10, $x11, $x12
191     ; CHECK-LABEL: name: fshr_i8
192     ; CHECK: liveins: $x10, $x11, $x12
193     ; CHECK-NEXT: {{  $}}
194     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
195     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
196     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
197     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
198     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
199     ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
200     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]
201     ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]
202     ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
203     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C2]](s32)
204     ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SHL]], [[AND1]](s32)
205     ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
206     ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]
207     ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[AND]](s32)
208     ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[LSHR]]
209     ; CHECK-NEXT: $x10 = COPY [[OR]](s32)
210     ; CHECK-NEXT: PseudoRET implicit $x10
211     %3:_(s32) = COPY $x10
212     %0:_(s8) = G_TRUNC %3(s32)
213     %4:_(s32) = COPY $x11
214     %1:_(s8) = G_TRUNC %4(s32)
215     %5:_(s32) = COPY $x12
216     %2:_(s8) = G_TRUNC %5(s32)
217     %6:_(s8) = G_FSHR %0, %1, %2(s8)
218     %7:_(s32) = G_ANYEXT %6(s8)
219     $x10 = COPY %7(s32)
220     PseudoRET implicit $x10
224 name:            fshr_i16
225 body:             |
226   bb.1:
227     liveins: $x10, $x11, $x12
229     ; CHECK-LABEL: name: fshr_i16
230     ; CHECK: liveins: $x10, $x11, $x12
231     ; CHECK-NEXT: {{  $}}
232     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
233     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
234     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
235     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
236     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
237     ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
238     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]
239     ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]
240     ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
241     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C2]](s32)
242     ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SHL]], [[AND1]](s32)
243     ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
244     ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]
245     ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[AND]](s32)
246     ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[LSHR]]
247     ; CHECK-NEXT: $x10 = COPY [[OR]](s32)
248     ; CHECK-NEXT: PseudoRET implicit $x10
249     %3:_(s32) = COPY $x10
250     %0:_(s16) = G_TRUNC %3(s32)
251     %4:_(s32) = COPY $x11
252     %1:_(s16) = G_TRUNC %4(s32)
253     %5:_(s32) = COPY $x12
254     %2:_(s16) = G_TRUNC %5(s32)
255     %6:_(s16) = G_FSHR %0, %1, %2(s16)
256     %7:_(s32) = G_ANYEXT %6(s16)
257     $x10 = COPY %7(s32)
258     PseudoRET implicit $x10
262 name:            fshr_i32
263 body:             |
264   bb.1:
265     liveins: $x10, $x11, $x12
267     ; CHECK-LABEL: name: fshr_i32
268     ; CHECK: liveins: $x10, $x11, $x12
269     ; CHECK-NEXT: {{  $}}
270     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
271     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
272     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
273     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
274     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
275     ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
276     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]
277     ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]
278     ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
279     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C2]](s32)
280     ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SHL]], [[AND1]](s32)
281     ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[AND]](s32)
282     ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[LSHR]]
283     ; CHECK-NEXT: $x10 = COPY [[OR]](s32)
284     ; CHECK-NEXT: PseudoRET implicit $x10
285     %0:_(s32) = COPY $x10
286     %1:_(s32) = COPY $x11
287     %2:_(s32) = COPY $x12
288     %3:_(s32) = G_FSHR %0, %1, %2(s32)
289     $x10 = COPY %3(s32)
290     PseudoRET implicit $x10
294 name:            fshr_i64
295 body:             |
296   bb.1:
297     liveins: $x10, $x11, $x12, $x13, $x14, $x15
299     ; CHECK-LABEL: name: fshr_i64
300     ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14, $x15
301     ; CHECK-NEXT: {{  $}}
302     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
303     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
304     ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
305     ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $x13
306     ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $x14
307     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63
308     ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
309     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C]]
310     ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
311     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY4]], [[C2]]
312     ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]
313     ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
314     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C3]](s32)
315     ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C3]](s32)
316     ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
317     ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C4]](s32)
318     ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[LSHR]]
319     ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
320     ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[AND1]], [[C5]]
321     ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C5]], [[AND1]]
322     ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND1]](s32), [[C5]]
323     ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[AND1]](s32), [[C1]]
324     ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[SHL]], [[AND1]](s32)
325     ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[SHL]], [[SUB1]](s32)
326     ; CHECK-NEXT: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[OR]], [[AND1]](s32)
327     ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR1]], [[SHL3]]
328     ; CHECK-NEXT: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[SHL]], [[SUB]](s32)
329     ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s32), [[SHL2]], [[C1]]
330     ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s32), [[OR1]], [[SHL4]]
331     ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s32), [[OR]], [[SELECT1]]
332     ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[AND]], [[C5]]
333     ; CHECK-NEXT: [[SUB3:%[0-9]+]]:_(s32) = G_SUB [[C5]], [[AND]]
334     ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND]](s32), [[C5]]
335     ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[AND]](s32), [[C1]]
336     ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY3]], [[AND]](s32)
337     ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[AND]](s32)
338     ; CHECK-NEXT: [[SHL5:%[0-9]+]]:_(s32) = G_SHL [[COPY3]], [[SUB3]](s32)
339     ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[LSHR3]], [[SHL5]]
340     ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[COPY3]], [[SUB2]](s32)
341     ; CHECK-NEXT: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s32), [[OR2]], [[LSHR4]]
342     ; CHECK-NEXT: [[SELECT4:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s32), [[COPY2]], [[SELECT3]]
343     ; CHECK-NEXT: [[SELECT5:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s32), [[LSHR2]], [[C1]]
344     ; CHECK-NEXT: [[OR3:%[0-9]+]]:_(s32) = G_OR [[SELECT]], [[SELECT4]]
345     ; CHECK-NEXT: [[OR4:%[0-9]+]]:_(s32) = G_OR [[SELECT2]], [[SELECT5]]
346     ; CHECK-NEXT: $x10 = COPY [[OR3]](s32)
347     ; CHECK-NEXT: $x11 = COPY [[OR4]](s32)
348     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
349     %3:_(s32) = COPY $x10
350     %4:_(s32) = COPY $x11
351     %0:_(s64) = G_MERGE_VALUES %3(s32), %4(s32)
352     %5:_(s32) = COPY $x12
353     %6:_(s32) = COPY $x13
354     %1:_(s64) = G_MERGE_VALUES %5(s32), %6(s32)
355     %7:_(s32) = COPY $x14
356     %8:_(s32) = COPY $x15
357     %2:_(s64) = G_MERGE_VALUES %7(s32), %8(s32)
358     %9:_(s64) = G_FSHR %0, %1, %2(s64)
359     %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64)
360     $x10 = COPY %10(s32)
361     $x11 = COPY %11(s32)
362     PseudoRET implicit $x10, implicit $x11