337 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mattr=+m -mtriple=riscv32 -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s4# RUN: llc -mattr=+zmmul -mtriple=riscv32 -run-pass=legalizer %s -o - \5# RUN: | FileCheck %s6# RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \7# RUN: | FileCheck %s --check-prefix=LIBCALL8 9---10name: smulo_i811body: |12 bb.1:13 liveins: $x10, $x1114 15 ; CHECK-LABEL: name: smulo_i816 ; CHECK: liveins: $x10, $x1117 ; CHECK-NEXT: {{ $}}18 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1019 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1120 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2421 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)22 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)23 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C]](s32)24 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)25 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[ASHR]], [[ASHR1]]26 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[MUL]], [[C]](s32)27 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SHL2]], [[C]](s32)28 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[MUL]](s32), [[ASHR2]]29 ; CHECK-NEXT: $x10 = COPY [[MUL]](s32)30 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)31 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x1132 ;33 ; LIBCALL-LABEL: name: smulo_i834 ; LIBCALL: liveins: $x10, $x1135 ; LIBCALL-NEXT: {{ $}}36 ; LIBCALL-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1037 ; LIBCALL-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1138 ; LIBCALL-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2439 ; LIBCALL-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)40 ; LIBCALL-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)41 ; LIBCALL-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C]](s32)42 ; LIBCALL-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)43 ; LIBCALL-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x244 ; LIBCALL-NEXT: $x10 = COPY [[ASHR]](s32)45 ; LIBCALL-NEXT: $x11 = COPY [[ASHR1]](s32)46 ; LIBCALL-NEXT: PseudoCALL target-flags(riscv-call) &__mulsi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x1047 ; LIBCALL-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x248 ; LIBCALL-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x1049 ; LIBCALL-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[COPY2]], [[C]](s32)50 ; LIBCALL-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SHL2]], [[C]](s32)51 ; LIBCALL-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[COPY2]](s32), [[ASHR2]]52 ; LIBCALL-NEXT: $x10 = COPY [[COPY2]](s32)53 ; LIBCALL-NEXT: $x11 = COPY [[ICMP]](s32)54 ; LIBCALL-NEXT: PseudoRET implicit $x10, implicit $x1155 %2:_(s32) = COPY $x1056 %0:_(s8) = G_TRUNC %2(s32)57 %3:_(s32) = COPY $x1158 %1:_(s8) = G_TRUNC %3(s32)59 %4:_(s8), %5:_(s1) = G_SMULO %0, %160 %6:_(s32) = G_ANYEXT %4(s8)61 %7:_(s32) = G_ANYEXT %5(s1)62 $x10 = COPY %6(s32)63 $x11 = COPY %7(s32)64 PseudoRET implicit $x10, implicit $x1165 66...67---68name: smulo_i1669body: |70 bb.1:71 liveins: $x10, $x1172 73 ; CHECK-LABEL: name: smulo_i1674 ; CHECK: liveins: $x10, $x1175 ; CHECK-NEXT: {{ $}}76 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1077 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1178 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1679 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)80 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)81 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C]](s32)82 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)83 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[ASHR]], [[ASHR1]]84 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[MUL]], [[C]](s32)85 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SHL2]], [[C]](s32)86 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[MUL]](s32), [[ASHR2]]87 ; CHECK-NEXT: $x10 = COPY [[MUL]](s32)88 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)89 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x1190 ;91 ; LIBCALL-LABEL: name: smulo_i1692 ; LIBCALL: liveins: $x10, $x1193 ; LIBCALL-NEXT: {{ $}}94 ; LIBCALL-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1095 ; LIBCALL-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1196 ; LIBCALL-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1697 ; LIBCALL-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)98 ; LIBCALL-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)99 ; LIBCALL-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C]](s32)100 ; LIBCALL-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)101 ; LIBCALL-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2102 ; LIBCALL-NEXT: $x10 = COPY [[ASHR]](s32)103 ; LIBCALL-NEXT: $x11 = COPY [[ASHR1]](s32)104 ; LIBCALL-NEXT: PseudoCALL target-flags(riscv-call) &__mulsi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10105 ; LIBCALL-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2106 ; LIBCALL-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x10107 ; LIBCALL-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[COPY2]], [[C]](s32)108 ; LIBCALL-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SHL2]], [[C]](s32)109 ; LIBCALL-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[COPY2]](s32), [[ASHR2]]110 ; LIBCALL-NEXT: $x10 = COPY [[COPY2]](s32)111 ; LIBCALL-NEXT: $x11 = COPY [[ICMP]](s32)112 ; LIBCALL-NEXT: PseudoRET implicit $x10, implicit $x11113 %2:_(s32) = COPY $x10114 %0:_(s16) = G_TRUNC %2(s32)115 %3:_(s32) = COPY $x11116 %1:_(s16) = G_TRUNC %3(s32)117 %4:_(s16), %5:_(s1) = G_SMULO %0, %1118 %6:_(s32) = G_ANYEXT %4(s16)119 %7:_(s32) = G_ANYEXT %5(s1)120 $x10 = COPY %6(s32)121 $x11 = COPY %7(s32)122 PseudoRET implicit $x10, implicit $x11123 124...125---126name: smulo_i32127body: |128 bb.1:129 liveins: $x10, $x11130 131 ; CHECK-LABEL: name: smulo_i32132 ; CHECK: liveins: $x10, $x11133 ; CHECK-NEXT: {{ $}}134 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10135 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11136 ; CHECK-NEXT: [[SMULH:%[0-9]+]]:_(s32) = G_SMULH [[COPY]], [[COPY1]]137 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[COPY]], [[COPY1]]138 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31139 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[MUL]], [[C]](s32)140 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[SMULH]](s32), [[ASHR]]141 ; CHECK-NEXT: $x10 = COPY [[MUL]](s32)142 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)143 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11144 ;145 ; LIBCALL-LABEL: name: smulo_i32146 ; LIBCALL: liveins: $x10, $x11147 ; LIBCALL-NEXT: {{ $}}148 ; LIBCALL-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10149 ; LIBCALL-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11150 ; LIBCALL-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31151 ; LIBCALL-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0152 ; LIBCALL-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[COPY]], [[C]](s32)153 ; LIBCALL-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[COPY1]], [[C]](s32)154 ; LIBCALL-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2155 ; LIBCALL-NEXT: $x10 = COPY [[COPY]](s32)156 ; LIBCALL-NEXT: $x11 = COPY [[ASHR]](s32)157 ; LIBCALL-NEXT: $x12 = COPY [[COPY1]](s32)158 ; LIBCALL-NEXT: $x13 = COPY [[ASHR1]](s32)159 ; LIBCALL-NEXT: PseudoCALL target-flags(riscv-call) &__muldi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11160 ; LIBCALL-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2161 ; LIBCALL-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x10162 ; LIBCALL-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $x11163 ; LIBCALL-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[COPY2]], [[C]](s32)164 ; LIBCALL-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[COPY2]]165 ; LIBCALL-NEXT: [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[COPY3]], [[ASHR2]]166 ; LIBCALL-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[XOR]], [[XOR1]]167 ; LIBCALL-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[OR]](s32), [[C1]]168 ; LIBCALL-NEXT: $x10 = COPY [[COPY2]](s32)169 ; LIBCALL-NEXT: $x11 = COPY [[ICMP]](s32)170 ; LIBCALL-NEXT: PseudoRET implicit $x10, implicit $x11171 %0:_(s32) = COPY $x10172 %1:_(s32) = COPY $x11173 %2:_(s32), %3:_(s1) = G_SMULO %0, %1174 %4:_(s32) = G_ANYEXT %3(s1)175 $x10 = COPY %2(s32)176 $x11 = COPY %4(s32)177 PseudoRET implicit $x10, implicit $x11178 179...180---181name: umulo_i8182body: |183 bb.1:184 liveins: $x10, $x11185 186 ; CHECK-LABEL: name: umulo_i8187 ; CHECK: liveins: $x10, $x11188 ; CHECK-NEXT: {{ $}}189 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10190 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11191 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255192 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]193 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]194 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[AND]], [[AND1]]195 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[MUL]], [[C]]196 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[MUL]](s32), [[AND2]]197 ; CHECK-NEXT: $x10 = COPY [[MUL]](s32)198 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)199 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11200 ;201 ; LIBCALL-LABEL: name: umulo_i8202 ; LIBCALL: liveins: $x10, $x11203 ; LIBCALL-NEXT: {{ $}}204 ; LIBCALL-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10205 ; LIBCALL-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11206 ; LIBCALL-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255207 ; LIBCALL-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]208 ; LIBCALL-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]209 ; LIBCALL-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2210 ; LIBCALL-NEXT: $x10 = COPY [[AND]](s32)211 ; LIBCALL-NEXT: $x11 = COPY [[AND1]](s32)212 ; LIBCALL-NEXT: PseudoCALL target-flags(riscv-call) &__mulsi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10213 ; LIBCALL-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2214 ; LIBCALL-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x10215 ; LIBCALL-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]216 ; LIBCALL-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[COPY2]](s32), [[AND2]]217 ; LIBCALL-NEXT: $x10 = COPY [[COPY2]](s32)218 ; LIBCALL-NEXT: $x11 = COPY [[ICMP]](s32)219 ; LIBCALL-NEXT: PseudoRET implicit $x10, implicit $x11220 %2:_(s32) = COPY $x10221 %0:_(s8) = G_TRUNC %2(s32)222 %3:_(s32) = COPY $x11223 %1:_(s8) = G_TRUNC %3(s32)224 %4:_(s8), %5:_(s1) = G_UMULO %0, %1225 %6:_(s32) = G_ANYEXT %4(s8)226 %7:_(s32) = G_ANYEXT %5(s1)227 $x10 = COPY %6(s32)228 $x11 = COPY %7(s32)229 PseudoRET implicit $x10, implicit $x11230 231...232---233name: umulo_i16234body: |235 bb.1:236 liveins: $x10, $x11237 238 ; CHECK-LABEL: name: umulo_i16239 ; CHECK: liveins: $x10, $x11240 ; CHECK-NEXT: {{ $}}241 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10242 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11243 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535244 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]245 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]246 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[AND]], [[AND1]]247 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[MUL]], [[C]]248 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[MUL]](s32), [[AND2]]249 ; CHECK-NEXT: $x10 = COPY [[MUL]](s32)250 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)251 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11252 ;253 ; LIBCALL-LABEL: name: umulo_i16254 ; LIBCALL: liveins: $x10, $x11255 ; LIBCALL-NEXT: {{ $}}256 ; LIBCALL-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10257 ; LIBCALL-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11258 ; LIBCALL-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535259 ; LIBCALL-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]260 ; LIBCALL-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]261 ; LIBCALL-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2262 ; LIBCALL-NEXT: $x10 = COPY [[AND]](s32)263 ; LIBCALL-NEXT: $x11 = COPY [[AND1]](s32)264 ; LIBCALL-NEXT: PseudoCALL target-flags(riscv-call) &__mulsi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10265 ; LIBCALL-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2266 ; LIBCALL-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x10267 ; LIBCALL-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]268 ; LIBCALL-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[COPY2]](s32), [[AND2]]269 ; LIBCALL-NEXT: $x10 = COPY [[COPY2]](s32)270 ; LIBCALL-NEXT: $x11 = COPY [[ICMP]](s32)271 ; LIBCALL-NEXT: PseudoRET implicit $x10, implicit $x11272 %2:_(s32) = COPY $x10273 %0:_(s16) = G_TRUNC %2(s32)274 %3:_(s32) = COPY $x11275 %1:_(s16) = G_TRUNC %3(s32)276 %4:_(s16), %5:_(s1) = G_UMULO %0, %1277 %6:_(s32) = G_ANYEXT %4(s16)278 %7:_(s32) = G_ANYEXT %5(s1)279 $x10 = COPY %6(s32)280 $x11 = COPY %7(s32)281 PseudoRET implicit $x10, implicit $x11282 283...284---285name: umulo_i32286body: |287 bb.1:288 liveins: $x10, $x11289 290 ; CHECK-LABEL: name: umulo_i32291 ; CHECK: liveins: $x10, $x11292 ; CHECK-NEXT: {{ $}}293 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10294 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11295 ; CHECK-NEXT: [[UMULH:%[0-9]+]]:_(s32) = G_UMULH [[COPY]], [[COPY1]]296 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0297 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[COPY]], [[COPY1]]298 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[UMULH]](s32), [[C]]299 ; CHECK-NEXT: $x10 = COPY [[MUL]](s32)300 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)301 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11302 ;303 ; LIBCALL-LABEL: name: umulo_i32304 ; LIBCALL: liveins: $x10, $x11305 ; LIBCALL-NEXT: {{ $}}306 ; LIBCALL-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10307 ; LIBCALL-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11308 ; LIBCALL-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0309 ; LIBCALL-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2310 ; LIBCALL-NEXT: $x10 = COPY [[COPY]](s32)311 ; LIBCALL-NEXT: $x11 = COPY [[C]](s32)312 ; LIBCALL-NEXT: $x12 = COPY [[COPY1]](s32)313 ; LIBCALL-NEXT: $x13 = COPY [[C]](s32)314 ; LIBCALL-NEXT: PseudoCALL target-flags(riscv-call) &__muldi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11315 ; LIBCALL-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2316 ; LIBCALL-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x10317 ; LIBCALL-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $x11318 ; LIBCALL-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1319 ; LIBCALL-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C1]]320 ; LIBCALL-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C]]321 ; LIBCALL-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[AND]]322 ; LIBCALL-NEXT: [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[COPY3]], [[AND1]]323 ; LIBCALL-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[XOR]], [[XOR1]]324 ; LIBCALL-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[OR]](s32), [[C]]325 ; LIBCALL-NEXT: $x10 = COPY [[COPY2]](s32)326 ; LIBCALL-NEXT: $x11 = COPY [[ICMP]](s32)327 ; LIBCALL-NEXT: PseudoRET implicit $x10, implicit $x11328 %0:_(s32) = COPY $x10329 %1:_(s32) = COPY $x11330 %2:_(s32), %3:_(s1) = G_UMULO %0, %1331 %4:_(s32) = G_ANYEXT %3(s1)332 $x10 = COPY %2(s32)333 $x11 = COPY %4(s32)334 PseudoRET implicit $x10, implicit $x11335 336...337