699 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s -check-prefix=CHECK-I4# RUN: llc -mattr=+m -mtriple=riscv64 -run-pass=legalizer %s -o - \5# RUN: | FileCheck %s -check-prefix=CHECK-M6---7name: sdiv_i88body: |9 bb.0.entry:10 ; CHECK-I-LABEL: name: sdiv_i811 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x1012 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1113 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 5614 ; CHECK-I-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)15 ; CHECK-I-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)16 ; CHECK-I-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C]](s64)17 ; CHECK-I-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)18 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x219 ; CHECK-I-NEXT: $x10 = COPY [[ASHR]](s64)20 ; CHECK-I-NEXT: $x11 = COPY [[ASHR1]](s64)21 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__divdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x1022 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x223 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x1024 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)25 ; CHECK-I-NEXT: PseudoRET implicit $x1026 ;27 ; CHECK-M-LABEL: name: sdiv_i828 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x1029 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1130 ; CHECK-M-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 5631 ; CHECK-M-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)32 ; CHECK-M-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)33 ; CHECK-M-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C]](s64)34 ; CHECK-M-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)35 ; CHECK-M-NEXT: [[DIVW:%[0-9]+]]:_(s64) = G_DIVW [[ASHR]], [[ASHR1]]36 ; CHECK-M-NEXT: $x10 = COPY [[DIVW]](s64)37 ; CHECK-M-NEXT: PseudoRET implicit $x1038 %0:_(s64) = COPY $x1039 %1:_(s64) = COPY $x1140 %2:_(s8) = G_TRUNC %0(s64)41 %3:_(s8) = G_TRUNC %1(s64)42 %4:_(s8) = G_SDIV %2, %343 %5:_(s64) = G_ANYEXT %4(s8)44 $x10 = COPY %5(s64)45 PseudoRET implicit $x1046 47...48---49name: sdiv_i1550body: |51 bb.0.entry:52 ; CHECK-I-LABEL: name: sdiv_i1553 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x1054 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1155 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4956 ; CHECK-I-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)57 ; CHECK-I-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)58 ; CHECK-I-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C]](s64)59 ; CHECK-I-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)60 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x261 ; CHECK-I-NEXT: $x10 = COPY [[ASHR]](s64)62 ; CHECK-I-NEXT: $x11 = COPY [[ASHR1]](s64)63 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__divdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x1064 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x265 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x1066 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)67 ; CHECK-I-NEXT: PseudoRET implicit $x1068 ;69 ; CHECK-M-LABEL: name: sdiv_i1570 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x1071 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1172 ; CHECK-M-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4973 ; CHECK-M-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)74 ; CHECK-M-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)75 ; CHECK-M-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C]](s64)76 ; CHECK-M-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)77 ; CHECK-M-NEXT: [[DIVW:%[0-9]+]]:_(s64) = G_DIVW [[ASHR]], [[ASHR1]]78 ; CHECK-M-NEXT: $x10 = COPY [[DIVW]](s64)79 ; CHECK-M-NEXT: PseudoRET implicit $x1080 %0:_(s64) = COPY $x1081 %1:_(s64) = COPY $x1182 %2:_(s15) = G_TRUNC %0(s64)83 %3:_(s15) = G_TRUNC %1(s64)84 %4:_(s15) = G_SDIV %2, %385 %5:_(s64) = G_ANYEXT %4(s15)86 $x10 = COPY %5(s64)87 PseudoRET implicit $x1088 89...90---91name: sdiv_i1692body: |93 bb.0.entry:94 ; CHECK-I-LABEL: name: sdiv_i1695 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x1096 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1197 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4898 ; CHECK-I-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)99 ; CHECK-I-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)100 ; CHECK-I-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C]](s64)101 ; CHECK-I-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)102 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2103 ; CHECK-I-NEXT: $x10 = COPY [[ASHR]](s64)104 ; CHECK-I-NEXT: $x11 = COPY [[ASHR1]](s64)105 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__divdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10106 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2107 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10108 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)109 ; CHECK-I-NEXT: PseudoRET implicit $x10110 ;111 ; CHECK-M-LABEL: name: sdiv_i16112 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x10113 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11114 ; CHECK-M-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 48115 ; CHECK-M-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)116 ; CHECK-M-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)117 ; CHECK-M-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C]](s64)118 ; CHECK-M-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)119 ; CHECK-M-NEXT: [[DIVW:%[0-9]+]]:_(s64) = G_DIVW [[ASHR]], [[ASHR1]]120 ; CHECK-M-NEXT: $x10 = COPY [[DIVW]](s64)121 ; CHECK-M-NEXT: PseudoRET implicit $x10122 %0:_(s64) = COPY $x10123 %1:_(s64) = COPY $x11124 %2:_(s16) = G_TRUNC %0(s64)125 %3:_(s16) = G_TRUNC %1(s64)126 %4:_(s16) = G_SDIV %2, %3127 %5:_(s64) = G_ANYEXT %4(s16)128 $x10 = COPY %5(s64)129 PseudoRET implicit $x10130 131...132---133name: sdiv_i32134body: |135 bb.0.entry:136 ; CHECK-I-LABEL: name: sdiv_i32137 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x10138 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11139 ; CHECK-I-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32140 ; CHECK-I-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 32141 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2142 ; CHECK-I-NEXT: $x10 = COPY [[SEXT_INREG]](s64)143 ; CHECK-I-NEXT: $x11 = COPY [[SEXT_INREG1]](s64)144 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__divdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10145 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2146 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10147 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)148 ; CHECK-I-NEXT: PseudoRET implicit $x10149 ;150 ; CHECK-M-LABEL: name: sdiv_i32151 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x10152 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11153 ; CHECK-M-NEXT: [[DIVW:%[0-9]+]]:_(s64) = G_DIVW [[COPY]], [[COPY1]]154 ; CHECK-M-NEXT: $x10 = COPY [[DIVW]](s64)155 ; CHECK-M-NEXT: PseudoRET implicit $x10156 %0:_(s64) = COPY $x10157 %1:_(s64) = COPY $x11158 %2:_(s32) = G_TRUNC %0(s64)159 %3:_(s32) = G_TRUNC %1(s64)160 %4:_(s32) = G_SDIV %2, %3161 %5:_(s64) = G_ANYEXT %4(s32)162 $x10 = COPY %5(s64)163 PseudoRET implicit $x10164 165...166---167name: sdiv_i64168body: |169 bb.0.entry:170 ; CHECK-I-LABEL: name: sdiv_i64171 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x10172 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11173 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2174 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)175 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)176 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__divdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10177 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2178 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10179 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)180 ; CHECK-I-NEXT: PseudoRET implicit $x10181 ;182 ; CHECK-M-LABEL: name: sdiv_i64183 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x10184 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11185 ; CHECK-M-NEXT: [[SDIV:%[0-9]+]]:_(s64) = G_SDIV [[COPY]], [[COPY1]]186 ; CHECK-M-NEXT: $x10 = COPY [[SDIV]](s64)187 ; CHECK-M-NEXT: PseudoRET implicit $x10188 %0:_(s64) = COPY $x10189 %1:_(s64) = COPY $x11190 %2:_(s64) = G_SDIV %0, %1191 $x10 = COPY %2(s64)192 PseudoRET implicit $x10193 194...195---196name: sdiv_i72197body: |198 bb.0.entry:199 ; CHECK-I-LABEL: name: sdiv_i72200 ; CHECK-I: %xlo:_(s64) = COPY $x10201 ; CHECK-I-NEXT: %xhi:_(s64) = COPY $x11202 ; CHECK-I-NEXT: %ylo:_(s64) = COPY $x12203 ; CHECK-I-NEXT: %yhi:_(s64) = COPY $x13204 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 56205 ; CHECK-I-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL %xhi, [[C]](s64)206 ; CHECK-I-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)207 ; CHECK-I-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL %yhi, [[C]](s64)208 ; CHECK-I-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)209 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2210 ; CHECK-I-NEXT: $x10 = COPY %xlo(s64)211 ; CHECK-I-NEXT: $x11 = COPY [[ASHR]](s64)212 ; CHECK-I-NEXT: $x12 = COPY %ylo(s64)213 ; CHECK-I-NEXT: $x13 = COPY [[ASHR1]](s64)214 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__divti3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11215 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2216 ; CHECK-I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10217 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11218 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)219 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)220 ; CHECK-I-NEXT: PseudoRET implicit $x10, implicit $x11221 ;222 ; CHECK-M-LABEL: name: sdiv_i72223 ; CHECK-M: %xlo:_(s64) = COPY $x10224 ; CHECK-M-NEXT: %xhi:_(s64) = COPY $x11225 ; CHECK-M-NEXT: %ylo:_(s64) = COPY $x12226 ; CHECK-M-NEXT: %yhi:_(s64) = COPY $x13227 ; CHECK-M-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 56228 ; CHECK-M-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL %xhi, [[C]](s64)229 ; CHECK-M-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)230 ; CHECK-M-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL %yhi, [[C]](s64)231 ; CHECK-M-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)232 ; CHECK-M-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2233 ; CHECK-M-NEXT: $x10 = COPY %xlo(s64)234 ; CHECK-M-NEXT: $x11 = COPY [[ASHR]](s64)235 ; CHECK-M-NEXT: $x12 = COPY %ylo(s64)236 ; CHECK-M-NEXT: $x13 = COPY [[ASHR1]](s64)237 ; CHECK-M-NEXT: PseudoCALL target-flags(riscv-call) &__divti3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11238 ; CHECK-M-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2239 ; CHECK-M-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10240 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11241 ; CHECK-M-NEXT: $x10 = COPY [[COPY]](s64)242 ; CHECK-M-NEXT: $x11 = COPY [[COPY1]](s64)243 ; CHECK-M-NEXT: PseudoRET implicit $x10, implicit $x11244 %xlo:_(s64) = COPY $x10245 %xhi:_(s64) = COPY $x11246 %ylo:_(s64) = COPY $x12247 %yhi:_(s64) = COPY $x13248 %x0:_(s128) = G_MERGE_VALUES %xlo(s64), %xhi(s64)249 %y0:_(s128) = G_MERGE_VALUES %ylo(s64), %yhi(s64)250 %x:_(s72) = G_TRUNC %x0251 %y:_(s72) = G_TRUNC %y0252 %z:_(s72) = G_SDIV %x, %y253 %z0:_(s128) = G_ANYEXT %z254 %zlo:_(s64), %zhi:_(s64) = G_UNMERGE_VALUES %z0(s128)255 $x10 = COPY %zlo(s64)256 $x11 = COPY %zhi(s64)257 PseudoRET implicit $x10, implicit $x11258 259...260---261name: sdiv_i128262body: |263 bb.0.entry:264 ; CHECK-I-LABEL: name: sdiv_i128265 ; CHECK-I: %lo1:_(s64) = COPY $x10266 ; CHECK-I-NEXT: %hi1:_(s64) = COPY $x11267 ; CHECK-I-NEXT: %lo2:_(s64) = COPY $x12268 ; CHECK-I-NEXT: %hi2:_(s64) = COPY $x13269 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2270 ; CHECK-I-NEXT: $x10 = COPY %lo1(s64)271 ; CHECK-I-NEXT: $x11 = COPY %hi1(s64)272 ; CHECK-I-NEXT: $x12 = COPY %lo2(s64)273 ; CHECK-I-NEXT: $x13 = COPY %hi2(s64)274 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__divti3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11275 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2276 ; CHECK-I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10277 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11278 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)279 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)280 ; CHECK-I-NEXT: PseudoRET implicit $x10, implicit $x11281 ;282 ; CHECK-M-LABEL: name: sdiv_i128283 ; CHECK-M: %lo1:_(s64) = COPY $x10284 ; CHECK-M-NEXT: %hi1:_(s64) = COPY $x11285 ; CHECK-M-NEXT: %lo2:_(s64) = COPY $x12286 ; CHECK-M-NEXT: %hi2:_(s64) = COPY $x13287 ; CHECK-M-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2288 ; CHECK-M-NEXT: $x10 = COPY %lo1(s64)289 ; CHECK-M-NEXT: $x11 = COPY %hi1(s64)290 ; CHECK-M-NEXT: $x12 = COPY %lo2(s64)291 ; CHECK-M-NEXT: $x13 = COPY %hi2(s64)292 ; CHECK-M-NEXT: PseudoCALL target-flags(riscv-call) &__divti3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11293 ; CHECK-M-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2294 ; CHECK-M-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10295 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11296 ; CHECK-M-NEXT: $x10 = COPY [[COPY]](s64)297 ; CHECK-M-NEXT: $x11 = COPY [[COPY1]](s64)298 ; CHECK-M-NEXT: PseudoRET implicit $x10, implicit $x11299 %lo1:_(s64) = COPY $x10300 %hi1:_(s64) = COPY $x11301 %lo2:_(s64) = COPY $x12302 %hi2:_(s64) = COPY $x13303 %x1:_(s128) = G_MERGE_VALUES %lo1(s64), %hi1(s64)304 %x2:_(s128) = G_MERGE_VALUES %lo2(s64), %hi2(s64)305 %y:_(s128) = G_SDIV %x1, %x2306 %loy:_(s64), %hiy:_(s64) = G_UNMERGE_VALUES %y(s128)307 $x10 = COPY %loy(s64)308 $x11 = COPY %hiy(s64)309 PseudoRET implicit $x10, implicit $x11310 311...312---313name: udiv_i8314body: |315 bb.0.entry:316 ; CHECK-I-LABEL: name: udiv_i8317 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x10318 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11319 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255320 ; CHECK-I-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]321 ; CHECK-I-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]322 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2323 ; CHECK-I-NEXT: $x10 = COPY [[AND]](s64)324 ; CHECK-I-NEXT: $x11 = COPY [[AND1]](s64)325 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__udivdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10326 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2327 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10328 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)329 ; CHECK-I-NEXT: PseudoRET implicit $x10330 ;331 ; CHECK-M-LABEL: name: udiv_i8332 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x10333 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11334 ; CHECK-M-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255335 ; CHECK-M-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]336 ; CHECK-M-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]337 ; CHECK-M-NEXT: [[DIVUW:%[0-9]+]]:_(s64) = G_DIVUW [[AND]], [[AND1]]338 ; CHECK-M-NEXT: $x10 = COPY [[DIVUW]](s64)339 ; CHECK-M-NEXT: PseudoRET implicit $x10340 %0:_(s64) = COPY $x10341 %1:_(s64) = COPY $x11342 %2:_(s8) = G_TRUNC %0(s64)343 %3:_(s8) = G_TRUNC %1(s64)344 %4:_(s8) = G_UDIV %2, %3345 %5:_(s64) = G_ANYEXT %4(s8)346 $x10 = COPY %5(s64)347 PseudoRET implicit $x10348 349...350---351name: udiv_i15352body: |353 bb.0.entry:354 ; CHECK-I-LABEL: name: udiv_i15355 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x10356 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11357 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32767358 ; CHECK-I-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]359 ; CHECK-I-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]360 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2361 ; CHECK-I-NEXT: $x10 = COPY [[AND]](s64)362 ; CHECK-I-NEXT: $x11 = COPY [[AND1]](s64)363 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__udivdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10364 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2365 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10366 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)367 ; CHECK-I-NEXT: PseudoRET implicit $x10368 ;369 ; CHECK-M-LABEL: name: udiv_i15370 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x10371 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11372 ; CHECK-M-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32767373 ; CHECK-M-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]374 ; CHECK-M-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]375 ; CHECK-M-NEXT: [[DIVUW:%[0-9]+]]:_(s64) = G_DIVUW [[AND]], [[AND1]]376 ; CHECK-M-NEXT: $x10 = COPY [[DIVUW]](s64)377 ; CHECK-M-NEXT: PseudoRET implicit $x10378 %0:_(s64) = COPY $x10379 %1:_(s64) = COPY $x11380 %2:_(s15) = G_TRUNC %0(s64)381 %3:_(s15) = G_TRUNC %1(s64)382 %4:_(s15) = G_UDIV %2, %3383 %5:_(s64) = G_ANYEXT %4(s15)384 $x10 = COPY %5(s64)385 PseudoRET implicit $x10386 387...388---389name: udiv_i16390body: |391 bb.0.entry:392 ; CHECK-I-LABEL: name: udiv_i16393 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x10394 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11395 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535396 ; CHECK-I-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]397 ; CHECK-I-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]398 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2399 ; CHECK-I-NEXT: $x10 = COPY [[AND]](s64)400 ; CHECK-I-NEXT: $x11 = COPY [[AND1]](s64)401 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__udivdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10402 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2403 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10404 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)405 ; CHECK-I-NEXT: PseudoRET implicit $x10406 ;407 ; CHECK-M-LABEL: name: udiv_i16408 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x10409 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11410 ; CHECK-M-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535411 ; CHECK-M-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]412 ; CHECK-M-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]413 ; CHECK-M-NEXT: [[DIVUW:%[0-9]+]]:_(s64) = G_DIVUW [[AND]], [[AND1]]414 ; CHECK-M-NEXT: $x10 = COPY [[DIVUW]](s64)415 ; CHECK-M-NEXT: PseudoRET implicit $x10416 %0:_(s64) = COPY $x10417 %1:_(s64) = COPY $x11418 %2:_(s16) = G_TRUNC %0(s64)419 %3:_(s16) = G_TRUNC %1(s64)420 %4:_(s16) = G_UDIV %2, %3421 %5:_(s64) = G_ANYEXT %4(s16)422 $x10 = COPY %5(s64)423 PseudoRET implicit $x10424 425...426---427name: udiv_i32428body: |429 bb.0.entry:430 ; CHECK-I-LABEL: name: udiv_i32431 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x10432 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11433 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295434 ; CHECK-I-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]435 ; CHECK-I-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]436 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2437 ; CHECK-I-NEXT: $x10 = COPY [[AND]](s64)438 ; CHECK-I-NEXT: $x11 = COPY [[AND1]](s64)439 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__udivdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10440 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2441 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10442 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)443 ; CHECK-I-NEXT: PseudoRET implicit $x10444 ;445 ; CHECK-M-LABEL: name: udiv_i32446 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x10447 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11448 ; CHECK-M-NEXT: [[DIVUW:%[0-9]+]]:_(s64) = G_DIVUW [[COPY]], [[COPY1]]449 ; CHECK-M-NEXT: $x10 = COPY [[DIVUW]](s64)450 ; CHECK-M-NEXT: PseudoRET implicit $x10451 %0:_(s64) = COPY $x10452 %1:_(s64) = COPY $x11453 %2:_(s32) = G_TRUNC %0(s64)454 %3:_(s32) = G_TRUNC %1(s64)455 %4:_(s32) = G_UDIV %2, %3456 %5:_(s64) = G_ANYEXT %4(s32)457 $x10 = COPY %5(s64)458 PseudoRET implicit $x10459 460...461---462name: udiv_i64463body: |464 bb.0.entry:465 ; CHECK-I-LABEL: name: udiv_i64466 ; CHECK-I: [[COPY:%[0-9]+]]:_(s64) = COPY $x10467 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11468 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2469 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)470 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)471 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__udivdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10472 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2473 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10474 ; CHECK-I-NEXT: $x10 = COPY [[COPY2]](s64)475 ; CHECK-I-NEXT: PseudoRET implicit $x10476 ;477 ; CHECK-M-LABEL: name: udiv_i64478 ; CHECK-M: [[COPY:%[0-9]+]]:_(s64) = COPY $x10479 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11480 ; CHECK-M-NEXT: [[UDIV:%[0-9]+]]:_(s64) = G_UDIV [[COPY]], [[COPY1]]481 ; CHECK-M-NEXT: $x10 = COPY [[UDIV]](s64)482 ; CHECK-M-NEXT: PseudoRET implicit $x10483 %0:_(s64) = COPY $x10484 %1:_(s64) = COPY $x11485 %2:_(s64) = G_UDIV %0, %1486 $x10 = COPY %2(s64)487 PseudoRET implicit $x10488 489...490---491name: udiv_i72492body: |493 bb.0.entry:494 ; CHECK-I-LABEL: name: udiv_i72495 ; CHECK-I: %xlo:_(s64) = COPY $x10496 ; CHECK-I-NEXT: %xhi:_(s64) = COPY $x11497 ; CHECK-I-NEXT: %ylo:_(s64) = COPY $x12498 ; CHECK-I-NEXT: %yhi:_(s64) = COPY $x13499 ; CHECK-I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1500 ; CHECK-I-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 255501 ; CHECK-I-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND %xlo, [[C]]502 ; CHECK-I-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND %xhi, [[C1]]503 ; CHECK-I-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND %ylo, [[C]]504 ; CHECK-I-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND %yhi, [[C1]]505 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2506 ; CHECK-I-NEXT: $x10 = COPY [[AND]](s64)507 ; CHECK-I-NEXT: $x11 = COPY [[AND1]](s64)508 ; CHECK-I-NEXT: $x12 = COPY [[AND2]](s64)509 ; CHECK-I-NEXT: $x13 = COPY [[AND3]](s64)510 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__udivti3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11511 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2512 ; CHECK-I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10513 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11514 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)515 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)516 ; CHECK-I-NEXT: PseudoRET implicit $x10, implicit $x11517 ;518 ; CHECK-M-LABEL: name: udiv_i72519 ; CHECK-M: %xlo:_(s64) = COPY $x10520 ; CHECK-M-NEXT: %xhi:_(s64) = COPY $x11521 ; CHECK-M-NEXT: %ylo:_(s64) = COPY $x12522 ; CHECK-M-NEXT: %yhi:_(s64) = COPY $x13523 ; CHECK-M-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1524 ; CHECK-M-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 255525 ; CHECK-M-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND %xlo, [[C]]526 ; CHECK-M-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND %xhi, [[C1]]527 ; CHECK-M-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND %ylo, [[C]]528 ; CHECK-M-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND %yhi, [[C1]]529 ; CHECK-M-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2530 ; CHECK-M-NEXT: $x10 = COPY [[AND]](s64)531 ; CHECK-M-NEXT: $x11 = COPY [[AND1]](s64)532 ; CHECK-M-NEXT: $x12 = COPY [[AND2]](s64)533 ; CHECK-M-NEXT: $x13 = COPY [[AND3]](s64)534 ; CHECK-M-NEXT: PseudoCALL target-flags(riscv-call) &__udivti3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11535 ; CHECK-M-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2536 ; CHECK-M-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10537 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11538 ; CHECK-M-NEXT: $x10 = COPY [[COPY]](s64)539 ; CHECK-M-NEXT: $x11 = COPY [[COPY1]](s64)540 ; CHECK-M-NEXT: PseudoRET implicit $x10, implicit $x11541 %xlo:_(s64) = COPY $x10542 %xhi:_(s64) = COPY $x11543 %ylo:_(s64) = COPY $x12544 %yhi:_(s64) = COPY $x13545 %x0:_(s128) = G_MERGE_VALUES %xlo(s64), %xhi(s64)546 %y0:_(s128) = G_MERGE_VALUES %ylo(s64), %yhi(s64)547 %x:_(s72) = G_TRUNC %x0548 %y:_(s72) = G_TRUNC %y0549 %z:_(s72) = G_UDIV %x, %y550 %z0:_(s128) = G_ANYEXT %z551 %zlo:_(s64), %zhi:_(s64) = G_UNMERGE_VALUES %z0(s128)552 $x10 = COPY %zlo(s64)553 $x11 = COPY %zhi(s64)554 PseudoRET implicit $x10, implicit $x11555 556...557---558name: udiv_i128559body: |560 bb.0.entry:561 ; CHECK-I-LABEL: name: udiv_i128562 ; CHECK-I: %lo1:_(s64) = COPY $x10563 ; CHECK-I-NEXT: %hi1:_(s64) = COPY $x11564 ; CHECK-I-NEXT: %lo2:_(s64) = COPY $x12565 ; CHECK-I-NEXT: %hi2:_(s64) = COPY $x13566 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2567 ; CHECK-I-NEXT: $x10 = COPY %lo1(s64)568 ; CHECK-I-NEXT: $x11 = COPY %hi1(s64)569 ; CHECK-I-NEXT: $x12 = COPY %lo2(s64)570 ; CHECK-I-NEXT: $x13 = COPY %hi2(s64)571 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__udivti3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11572 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2573 ; CHECK-I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10574 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11575 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)576 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)577 ; CHECK-I-NEXT: PseudoRET implicit $x10, implicit $x11578 ;579 ; CHECK-M-LABEL: name: udiv_i128580 ; CHECK-M: %lo1:_(s64) = COPY $x10581 ; CHECK-M-NEXT: %hi1:_(s64) = COPY $x11582 ; CHECK-M-NEXT: %lo2:_(s64) = COPY $x12583 ; CHECK-M-NEXT: %hi2:_(s64) = COPY $x13584 ; CHECK-M-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2585 ; CHECK-M-NEXT: $x10 = COPY %lo1(s64)586 ; CHECK-M-NEXT: $x11 = COPY %hi1(s64)587 ; CHECK-M-NEXT: $x12 = COPY %lo2(s64)588 ; CHECK-M-NEXT: $x13 = COPY %hi2(s64)589 ; CHECK-M-NEXT: PseudoCALL target-flags(riscv-call) &__udivti3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit-def $x10, implicit-def $x11590 ; CHECK-M-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2591 ; CHECK-M-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10592 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11593 ; CHECK-M-NEXT: $x10 = COPY [[COPY]](s64)594 ; CHECK-M-NEXT: $x11 = COPY [[COPY1]](s64)595 ; CHECK-M-NEXT: PseudoRET implicit $x10, implicit $x11596 %lo1:_(s64) = COPY $x10597 %hi1:_(s64) = COPY $x11598 %lo2:_(s64) = COPY $x12599 %hi2:_(s64) = COPY $x13600 %x1:_(s128) = G_MERGE_VALUES %lo1(s64), %hi1(s64)601 %x2:_(s128) = G_MERGE_VALUES %lo2(s64), %hi2(s64)602 %y:_(s128) = G_UDIV %x1, %x2603 %loy:_(s64), %hiy:_(s64) = G_UNMERGE_VALUES %y(s128)604 $x10 = COPY %loy(s64)605 $x11 = COPY %hiy(s64)606 PseudoRET implicit $x10, implicit $x11607 608...609---610name: udivrem_i64611body: |612 bb.1.entry:613 liveins: $x10, $x11614 615 ; CHECK-I-LABEL: name: udivrem_i64616 ; CHECK-I: liveins: $x10, $x11617 ; CHECK-I-NEXT: {{ $}}618 ; CHECK-I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10619 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11620 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2621 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)622 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)623 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__udivdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10624 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2625 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10626 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2627 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)628 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)629 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__umoddi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10630 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2631 ; CHECK-I-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x10632 ; CHECK-I-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY2]], [[COPY3]]633 ; CHECK-I-NEXT: $x10 = COPY [[ADD]](s64)634 ; CHECK-I-NEXT: PseudoRET implicit $x10635 ;636 ; CHECK-M-LABEL: name: udivrem_i64637 ; CHECK-M: liveins: $x10, $x11638 ; CHECK-M-NEXT: {{ $}}639 ; CHECK-M-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10640 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11641 ; CHECK-M-NEXT: [[UDIV:%[0-9]+]]:_(s64) = G_UDIV [[COPY]], [[COPY1]]642 ; CHECK-M-NEXT: [[UREM:%[0-9]+]]:_(s64) = G_UREM [[COPY]], [[COPY1]]643 ; CHECK-M-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[UDIV]], [[UREM]]644 ; CHECK-M-NEXT: $x10 = COPY [[ADD]](s64)645 ; CHECK-M-NEXT: PseudoRET implicit $x10646 %0:_(s64) = COPY $x10647 %1:_(s64) = COPY $x11648 %2:_(s64), %3:_(s64) = G_UDIVREM %0, %1649 %4:_(s64) = G_ADD %2, %3650 $x10 = COPY %4(s64)651 PseudoRET implicit $x10652 653...654---655name: sdivrem_i64656body: |657 bb.1.entry:658 liveins: $x10, $x11659 660 ; CHECK-I-LABEL: name: sdivrem_i64661 ; CHECK-I: liveins: $x10, $x11662 ; CHECK-I-NEXT: {{ $}}663 ; CHECK-I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10664 ; CHECK-I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11665 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2666 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)667 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)668 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__divdi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10669 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2670 ; CHECK-I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10671 ; CHECK-I-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2672 ; CHECK-I-NEXT: $x10 = COPY [[COPY]](s64)673 ; CHECK-I-NEXT: $x11 = COPY [[COPY1]](s64)674 ; CHECK-I-NEXT: PseudoCALL target-flags(riscv-call) &__moddi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10675 ; CHECK-I-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2676 ; CHECK-I-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x10677 ; CHECK-I-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY2]], [[COPY3]]678 ; CHECK-I-NEXT: $x10 = COPY [[ADD]](s64)679 ; CHECK-I-NEXT: PseudoRET implicit $x10680 ;681 ; CHECK-M-LABEL: name: sdivrem_i64682 ; CHECK-M: liveins: $x10, $x11683 ; CHECK-M-NEXT: {{ $}}684 ; CHECK-M-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10685 ; CHECK-M-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11686 ; CHECK-M-NEXT: [[SDIV:%[0-9]+]]:_(s64) = G_SDIV [[COPY]], [[COPY1]]687 ; CHECK-M-NEXT: [[SREM:%[0-9]+]]:_(s64) = G_SREM [[COPY]], [[COPY1]]688 ; CHECK-M-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[SDIV]], [[SREM]]689 ; CHECK-M-NEXT: $x10 = COPY [[ADD]](s64)690 ; CHECK-M-NEXT: PseudoRET implicit $x10691 %0:_(s64) = COPY $x10692 %1:_(s64) = COPY $x11693 %2:_(s64), %3:_(s64) = G_SDIVREM %0, %1694 %4:_(s64) = G_ADD %2, %3695 $x10 = COPY %4(s64)696 PseudoRET implicit $x10697 698...699