brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.4 KiB · 42de607 Raw
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