1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \
8 ; CHECK-LABEL: name: ashr_i8
9 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
10 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
11 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255
12 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]
13 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 56
14 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C1]](s64)
15 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C1]](s64)
16 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[AND]](s64)
17 ; CHECK-NEXT: $x10 = COPY [[ASHR1]](s64)
18 ; CHECK-NEXT: PseudoRET implicit $x10
21 %2:_(s8) = G_TRUNC %0(s64)
22 %3:_(s8) = G_TRUNC %1(s64)
23 %4:_(s8) = G_ASHR %2, %3
24 %5:_(s64) = G_ANYEXT %4(s8)
26 PseudoRET implicit $x10
33 ; CHECK-LABEL: name: ashr_i15
34 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
35 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
36 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32767
37 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]
38 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 49
39 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C1]](s64)
40 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C1]](s64)
41 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[AND]](s64)
42 ; CHECK-NEXT: $x10 = COPY [[ASHR1]](s64)
43 ; CHECK-NEXT: PseudoRET implicit $x10
46 %2:_(s15) = G_TRUNC %0(s64)
47 %3:_(s15) = G_TRUNC %1(s64)
48 %4:_(s15) = G_ASHR %2, %3
49 %5:_(s64) = G_ANYEXT %4(s15)
51 PseudoRET implicit $x10
58 ; CHECK-LABEL: name: ashr_i16
59 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
60 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
61 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535
62 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]
63 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 48
64 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C1]](s64)
65 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C1]](s64)
66 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[AND]](s64)
67 ; CHECK-NEXT: $x10 = COPY [[ASHR1]](s64)
68 ; CHECK-NEXT: PseudoRET implicit $x10
71 %2:_(s16) = G_TRUNC %0(s64)
72 %3:_(s16) = G_TRUNC %1(s64)
73 %4:_(s16) = G_ASHR %2, %3
74 %5:_(s64) = G_ANYEXT %4(s16)
76 PseudoRET implicit $x10
83 ; CHECK-LABEL: name: ashr_i32
84 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
85 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
86 ; CHECK-NEXT: [[SRAW:%[0-9]+]]:_(s64) = G_SRAW [[COPY]], [[COPY1]]
87 ; CHECK-NEXT: $x10 = COPY [[SRAW]](s64)
88 ; CHECK-NEXT: PseudoRET implicit $x10
91 %2:_(s32) = G_TRUNC %0(s64)
92 %3:_(s32) = G_TRUNC %1(s64)
93 %4:_(s32) = G_ASHR %2, %3
94 %5:_(s64) = G_ANYEXT %4(s32)
96 PseudoRET implicit $x10
103 ; CHECK-LABEL: name: ashr_i64
104 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
105 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
106 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[COPY1]](s64)
107 ; CHECK-NEXT: $x10 = COPY [[ASHR]](s64)
108 ; CHECK-NEXT: PseudoRET implicit $x10
109 %0:_(s64) = COPY $x10
110 %1:_(s64) = COPY $x11
111 %2:_(s64) = G_ASHR %0, %1
113 PseudoRET implicit $x10
120 ; CHECK-LABEL: name: ashr_i72
121 ; CHECK: %x00:_(s64) = COPY $x10
122 ; CHECK-NEXT: %x01:_(s64) = COPY $x11
123 ; CHECK-NEXT: %y00:_(s64) = COPY $x12
124 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63
125 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 56
126 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL %x01, [[C1]](s64)
127 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C1]](s64)
128 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 64
129 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB %y00, [[C2]]
130 ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C2]], %y00
131 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
132 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), %y00(s64), [[C2]]
133 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), %y00(s64), [[C3]]
134 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], %y00(s64)
135 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR %x00, %y00(s64)
136 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ASHR]], [[SUB1]](s64)
137 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[LSHR]], [[SHL1]]
138 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[C]](s64)
139 ; CHECK-NEXT: [[ASHR3:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[SUB]](s64)
140 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[OR]], [[ASHR3]]
141 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s64), %x00, [[SELECT]]
142 ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[ASHR1]], [[ASHR2]]
143 ; CHECK-NEXT: $x10 = COPY [[SELECT1]](s64)
144 ; CHECK-NEXT: $x11 = COPY [[SELECT2]](s64)
145 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
146 %x00:_(s64) = COPY $x10
147 %x01:_(s64) = COPY $x11
148 %y00:_(s64) = COPY $x12
149 %y01:_(s64) = COPY $x13
150 %x0:_(s128) = G_MERGE_VALUES %x00(s64), %x01
151 %y0:_(s128) = G_MERGE_VALUES %y00(s64), %y01
152 %x:_(s72) = G_TRUNC %x0(s128)
153 %y:_(s72) = G_TRUNC %y0(s128)
154 %z:_(s72) = G_ASHR %x, %y
155 %z0:_(s128) = G_ANYEXT %z(s72)
156 %z00:_(s64), %z01:_(s64) = G_UNMERGE_VALUES %z0(s128)
157 $x10 = COPY %z00(s64)
158 $x11 = COPY %z01(s64)
159 PseudoRET implicit $x10, implicit $x11
166 ; CHECK-LABEL: name: ashr_i128
167 ; CHECK: %lo1:_(s64) = COPY $x10
168 ; CHECK-NEXT: %hi1:_(s64) = COPY $x11
169 ; CHECK-NEXT: %lo2:_(s64) = COPY $x12
170 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 64
171 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB %lo2, [[C]]
172 ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C]], %lo2
173 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
174 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), %lo2(s64), [[C]]
175 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), %lo2(s64), [[C1]]
176 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR %hi1, %lo2(s64)
177 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR %lo1, %lo2(s64)
178 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL %hi1, [[SUB1]](s64)
179 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[LSHR]], [[SHL]]
180 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 63
181 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR %hi1, [[C2]](s64)
182 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s64) = G_ASHR %hi1, [[SUB]](s64)
183 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[OR]], [[ASHR2]]
184 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s64), %lo1, [[SELECT]]
185 ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[ASHR]], [[ASHR1]]
186 ; CHECK-NEXT: $x10 = COPY [[SELECT1]](s64)
187 ; CHECK-NEXT: $x11 = COPY [[SELECT2]](s64)
188 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
189 %lo1:_(s64) = COPY $x10
190 %hi1:_(s64) = COPY $x11
191 %lo2:_(s64) = COPY $x12
192 %hi2:_(s64) = COPY $x13
193 %x1:_(s128) = G_MERGE_VALUES %lo1(s64), %hi1(s64)
194 %x2:_(s128) = G_MERGE_VALUES %lo2(s64), %hi2(s64)
195 %y:_(s128) = G_ASHR %x1, %x2
196 %loy:_(s64), %hiy:_(s64) = G_UNMERGE_VALUES %y(s128)
197 $x10 = COPY %loy(s64)
198 $x11 = COPY %hiy(s64)
199 PseudoRET implicit $x10, implicit $x11
206 ; CHECK-LABEL: name: ashr_i192
207 ; CHECK: %lo1:_(s64) = COPY $x10
208 ; CHECK-NEXT: %mid1:_(s64) = COPY $x11
209 ; CHECK-NEXT: %hi1:_(s64) = COPY $x12
210 ; CHECK-NEXT: %lo2:_(s64) = COPY $x13
211 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63
212 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR %hi1, [[C]](s64)
213 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 128
214 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB %lo2, [[C1]]
215 ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C1]], %lo2
216 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
217 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), %lo2(s64), [[C1]]
218 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), %lo2(s64), [[C2]]
219 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 64
220 ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s64) = G_SUB %lo2, [[C3]]
221 ; CHECK-NEXT: [[SUB3:%[0-9]+]]:_(s64) = G_SUB [[C3]], %lo2
222 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), %lo2(s64), [[C3]]
223 ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), %lo2(s64), [[C2]]
224 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR %hi1, %lo2(s64)
225 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ASHR]], [[SUB3]](s64)
226 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[LSHR]], [[SHL]]
227 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[SUB2]](s64)
228 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP2]](s64), [[OR]], [[ASHR1]]
229 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP3]](s64), %hi1, [[SELECT]]
230 ; CHECK-NEXT: [[ICMP4:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), %lo2(s64), [[C3]]
231 ; CHECK-NEXT: [[ICMP5:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), %lo2(s64), [[C2]]
232 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR %mid1, %lo2(s64)
233 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s64) = G_LSHR %lo1, %lo2(s64)
234 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL %mid1, [[SUB3]](s64)
235 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[LSHR2]], [[SHL1]]
236 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s64) = G_LSHR %mid1, [[SUB2]](s64)
237 ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP4]](s64), [[OR1]], [[LSHR3]]
238 ; CHECK-NEXT: [[SELECT3:%[0-9]+]]:_(s64) = G_SELECT [[ICMP5]](s64), %lo1, [[SELECT2]]
239 ; CHECK-NEXT: [[SELECT4:%[0-9]+]]:_(s64) = G_SELECT [[ICMP4]](s64), [[LSHR1]], [[C2]]
240 ; CHECK-NEXT: [[SUB4:%[0-9]+]]:_(s64) = G_SUB [[SUB1]], [[C3]]
241 ; CHECK-NEXT: [[SUB5:%[0-9]+]]:_(s64) = G_SUB [[C3]], [[SUB1]]
242 ; CHECK-NEXT: [[ICMP6:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), [[SUB1]](s64), [[C3]]
243 ; CHECK-NEXT: [[ICMP7:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), [[SUB1]](s64), [[C2]]
244 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL %hi1, [[SUB1]](s64)
245 ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s64) = G_LSHR %hi1, [[SUB5]](s64)
246 ; CHECK-NEXT: [[SHL3:%[0-9]+]]:_(s64) = G_SHL [[ASHR]], [[SUB1]](s64)
247 ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s64) = G_OR [[LSHR4]], [[SHL3]]
248 ; CHECK-NEXT: [[SHL4:%[0-9]+]]:_(s64) = G_SHL %hi1, [[SUB4]](s64)
249 ; CHECK-NEXT: [[SELECT5:%[0-9]+]]:_(s64) = G_SELECT [[ICMP6]](s64), [[SHL2]], [[C2]]
250 ; CHECK-NEXT: [[SELECT6:%[0-9]+]]:_(s64) = G_SELECT [[ICMP6]](s64), [[OR2]], [[SHL4]]
251 ; CHECK-NEXT: [[SELECT7:%[0-9]+]]:_(s64) = G_SELECT [[ICMP7]](s64), [[ASHR]], [[SELECT6]]
252 ; CHECK-NEXT: [[OR3:%[0-9]+]]:_(s64) = G_OR [[SELECT3]], [[SELECT5]]
253 ; CHECK-NEXT: [[OR4:%[0-9]+]]:_(s64) = G_OR [[SELECT4]], [[SELECT7]]
254 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[C]](s64)
255 ; CHECK-NEXT: [[SUB6:%[0-9]+]]:_(s64) = G_SUB [[SUB]], [[C3]]
256 ; CHECK-NEXT: [[SUB7:%[0-9]+]]:_(s64) = G_SUB [[C3]], [[SUB]]
257 ; CHECK-NEXT: [[ICMP8:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), [[SUB]](s64), [[C3]]
258 ; CHECK-NEXT: [[ICMP9:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), [[SUB]](s64), [[C2]]
259 ; CHECK-NEXT: [[ASHR3:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[SUB]](s64)
260 ; CHECK-NEXT: [[LSHR5:%[0-9]+]]:_(s64) = G_LSHR %hi1, [[SUB]](s64)
261 ; CHECK-NEXT: [[SHL5:%[0-9]+]]:_(s64) = G_SHL [[ASHR]], [[SUB7]](s64)
262 ; CHECK-NEXT: [[OR5:%[0-9]+]]:_(s64) = G_OR [[LSHR5]], [[SHL5]]
263 ; CHECK-NEXT: [[ASHR4:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[C]](s64)
264 ; CHECK-NEXT: [[ASHR5:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[SUB6]](s64)
265 ; CHECK-NEXT: [[SELECT8:%[0-9]+]]:_(s64) = G_SELECT [[ICMP8]](s64), [[OR5]], [[ASHR5]]
266 ; CHECK-NEXT: [[SELECT9:%[0-9]+]]:_(s64) = G_SELECT [[ICMP9]](s64), %hi1, [[SELECT8]]
267 ; CHECK-NEXT: [[SELECT10:%[0-9]+]]:_(s64) = G_SELECT [[ICMP8]](s64), [[ASHR3]], [[ASHR4]]
268 ; CHECK-NEXT: [[SELECT11:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[OR3]], [[SELECT9]]
269 ; CHECK-NEXT: [[SELECT12:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[OR4]], [[SELECT10]]
270 ; CHECK-NEXT: [[SELECT13:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s64), %lo1, [[SELECT11]]
271 ; CHECK-NEXT: [[SELECT14:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s64), %mid1, [[SELECT12]]
272 ; CHECK-NEXT: [[SELECT15:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[SELECT1]], [[ASHR2]]
273 ; CHECK-NEXT: $x10 = COPY [[SELECT13]](s64)
274 ; CHECK-NEXT: $x11 = COPY [[SELECT14]](s64)
275 ; CHECK-NEXT: $x12 = COPY [[SELECT15]](s64)
276 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11, implicit $x12
277 %lo1:_(s64) = COPY $x10
278 %mid1:_(s64) = COPY $x11
279 %hi1:_(s64) = COPY $x12
280 %lo2:_(s64) = COPY $x13
281 %mid2:_(s64) = COPY $x14
282 %hi2:_(s64) = COPY $x15
283 %x1:_(s192) = G_MERGE_VALUES %lo1(s64), %mid1(s64), %hi1(s64)
284 %x2:_(s192) = G_MERGE_VALUES %lo2(s64), %mid2(s64), %hi2(s64)
285 %y:_(s192) = G_ASHR %x1, %x2
286 %lo:_(s64), %mid:_(s64), %hi:_(s64) = G_UNMERGE_VALUES %y(s192)
288 $x11 = COPY %mid(s64)
290 PseudoRET implicit $x10, implicit $x11, implicit $x12
299 ; CHECK-LABEL: name: ashr_i48
300 ; CHECK: liveins: $x10, $x11
302 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
303 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
304 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
305 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)
306 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)
307 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 281474976710655
308 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C1]]
309 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[ASHR]], [[AND]](s64)
310 ; CHECK-NEXT: $x10 = COPY [[ASHR1]](s64)
311 ; CHECK-NEXT: PseudoRET implicit $x10
312 %2:_(s64) = COPY $x10
313 %0:_(s48) = G_TRUNC %2(s64)
314 %3:_(s64) = COPY $x11
315 %1:_(s48) = G_TRUNC %3(s64)
316 %4:_(s48) = G_ASHR %0, %1(s48)
317 %5:_(s64) = G_ANYEXT %4(s48)
319 PseudoRET implicit $x10