1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \
9 liveins: $x10, $x11, $x12
11 ; CHECK-LABEL: name: fshl_i8
12 ; CHECK: liveins: $x10, $x11, $x12
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
32 %0:_(s8) = G_TRUNC %3(s32)
34 %1:_(s8) = G_TRUNC %4(s32)
36 %2:_(s8) = G_TRUNC %5(s32)
37 %6:_(s8) = G_FSHL %0, %1, %2(s8)
38 %7:_(s32) = G_ANYEXT %6(s8)
40 PseudoRET implicit $x10
47 liveins: $x10, $x11, $x12
49 ; CHECK-LABEL: name: fshl_i16
50 ; CHECK: liveins: $x10, $x11, $x12
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
70 %0:_(s16) = G_TRUNC %3(s32)
72 %1:_(s16) = G_TRUNC %4(s32)
74 %2:_(s16) = G_TRUNC %5(s32)
75 %6:_(s16) = G_FSHL %0, %1, %2(s16)
76 %7:_(s32) = G_ANYEXT %6(s16)
78 PseudoRET implicit $x10
85 liveins: $x10, $x11, $x12
87 ; CHECK-LABEL: name: fshl_i32
88 ; CHECK: liveins: $x10, $x11, $x12
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)
110 PseudoRET implicit $x10
117 liveins: $x10, $x11, $x12, $x13, $x14, $x15
119 ; CHECK-LABEL: name: fshl_i64
120 ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14, $x15
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)
182 PseudoRET implicit $x10, implicit $x11
189 liveins: $x10, $x11, $x12
191 ; CHECK-LABEL: name: fshr_i8
192 ; CHECK: liveins: $x10, $x11, $x12
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)
220 PseudoRET implicit $x10
227 liveins: $x10, $x11, $x12
229 ; CHECK-LABEL: name: fshr_i16
230 ; CHECK: liveins: $x10, $x11, $x12
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)
258 PseudoRET implicit $x10
265 liveins: $x10, $x11, $x12
267 ; CHECK-LABEL: name: fshr_i32
268 ; CHECK: liveins: $x10, $x11, $x12
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)
290 PseudoRET implicit $x10
297 liveins: $x10, $x11, $x12, $x13, $x14, $x15
299 ; CHECK-LABEL: name: fshr_i64
300 ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14, $x15
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)
362 PseudoRET implicit $x10, implicit $x11