457 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 32# RUN: llc -mtriple=riscv64 -mattr=+d -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s4 5---6name: sitofp_s32_s17tracksRegLiveness: true8body: |9 bb.1:10 liveins: $x1011 12 ; CHECK-LABEL: name: sitofp_s32_s113 ; CHECK: liveins: $x1014 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1016 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 6317 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)18 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)19 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s64)20 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)21 ; CHECK-NEXT: PseudoRET implicit $f10_f22 %1:_(s64) = COPY $x1023 %0:_(s1) = G_TRUNC %1(s64)24 %2:_(s32) = G_SITOFP %0(s1)25 $f10_f = COPY %2(s32)26 PseudoRET implicit $f10_f27 28...29---30name: uitofp_s32_s131tracksRegLiveness: true32body: |33 bb.1:34 liveins: $x1035 36 ; CHECK-LABEL: name: uitofp_s32_s137 ; CHECK: liveins: $x1038 ; CHECK-NEXT: {{ $}}39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1040 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 141 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]42 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s64)43 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)44 ; CHECK-NEXT: PseudoRET implicit $f10_f45 %1:_(s64) = COPY $x1046 %0:_(s1) = G_TRUNC %1(s64)47 %2:_(s32) = G_UITOFP %0(s1)48 $f10_f = COPY %2(s32)49 PseudoRET implicit $f10_f50 51...52---53name: sitofp_s32_s854tracksRegLiveness: true55body: |56 bb.1:57 liveins: $x1058 59 ; CHECK-LABEL: name: sitofp_s32_s860 ; CHECK: liveins: $x1061 ; CHECK-NEXT: {{ $}}62 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1063 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 5664 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)65 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)66 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s64)67 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)68 ; CHECK-NEXT: PseudoRET implicit $f10_f69 %1:_(s64) = COPY $x1070 %0:_(s8) = G_TRUNC %1(s64)71 %2:_(s32) = G_SITOFP %0(s8)72 $f10_f = COPY %2(s32)73 PseudoRET implicit $f10_f74 75...76---77name: uitofp_s32_s878tracksRegLiveness: true79body: |80 bb.1:81 liveins: $x1082 83 ; CHECK-LABEL: name: uitofp_s32_s884 ; CHECK: liveins: $x1085 ; CHECK-NEXT: {{ $}}86 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1087 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 25588 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]89 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s64)90 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)91 ; CHECK-NEXT: PseudoRET implicit $f10_f92 %1:_(s64) = COPY $x1093 %0:_(s8) = G_TRUNC %1(s64)94 %2:_(s32) = G_UITOFP %0(s8)95 $f10_f = COPY %2(s32)96 PseudoRET implicit $f10_f97 98...99---100name: sitofp_s32_s16101tracksRegLiveness: true102body: |103 bb.1:104 liveins: $x10105 106 ; CHECK-LABEL: name: sitofp_s32_s16107 ; CHECK: liveins: $x10108 ; CHECK-NEXT: {{ $}}109 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10110 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 48111 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)112 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)113 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s64)114 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)115 ; CHECK-NEXT: PseudoRET implicit $f10_f116 %1:_(s64) = COPY $x10117 %0:_(s16) = G_TRUNC %1(s64)118 %2:_(s32) = G_SITOFP %0(s16)119 $f10_f = COPY %2(s32)120 PseudoRET implicit $f10_f121 122...123---124name: uitofp_s32_s16125tracksRegLiveness: true126body: |127 bb.1:128 liveins: $x10129 130 ; CHECK-LABEL: name: uitofp_s32_s16131 ; CHECK: liveins: $x10132 ; CHECK-NEXT: {{ $}}133 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10134 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535135 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]136 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s64)137 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)138 ; CHECK-NEXT: PseudoRET implicit $f10_f139 %1:_(s64) = COPY $x10140 %0:_(s16) = G_TRUNC %1(s64)141 %2:_(s32) = G_UITOFP %0(s16)142 $f10_f = COPY %2(s32)143 PseudoRET implicit $f10_f144 145...146---147name: sitofp_s32_s32148tracksRegLiveness: true149body: |150 bb.1:151 liveins: $x10152 153 ; CHECK-LABEL: name: sitofp_s32_s32154 ; CHECK: liveins: $x10155 ; CHECK-NEXT: {{ $}}156 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10157 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32158 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s64)159 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)160 ; CHECK-NEXT: PseudoRET implicit $f10_f161 %1:_(s64) = COPY $x10162 %0:_(s32) = G_TRUNC %1(s64)163 %2:_(s32) = G_SITOFP %0(s32)164 $f10_f = COPY %2(s32)165 PseudoRET implicit $f10_f166 167...168---169name: uitofp_s32_s32170tracksRegLiveness: true171body: |172 bb.1:173 liveins: $x10174 175 ; CHECK-LABEL: name: uitofp_s32_s32176 ; CHECK: liveins: $x10177 ; CHECK-NEXT: {{ $}}178 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10179 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295180 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]181 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s64)182 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)183 ; CHECK-NEXT: PseudoRET implicit $f10_f184 %1:_(s64) = COPY $x10185 %0:_(s32) = G_TRUNC %1(s64)186 %2:_(s32) = G_UITOFP %0(s32)187 $f10_f = COPY %2(s32)188 PseudoRET implicit $f10_f189 190...191---192name: sitofp_s32_s64193tracksRegLiveness: true194body: |195 bb.1:196 liveins: $x10197 198 ; CHECK-LABEL: name: sitofp_s32_s64199 ; CHECK: liveins: $x10200 ; CHECK-NEXT: {{ $}}201 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10202 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s64)203 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)204 ; CHECK-NEXT: PseudoRET implicit $f10_f205 %0:_(s64) = COPY $x10206 %1:_(s32) = G_SITOFP %0(s64)207 $f10_f = COPY %1(s32)208 PseudoRET implicit $f10_f209 210...211---212name: uitofp_s32_s64213tracksRegLiveness: true214body: |215 bb.1:216 liveins: $x10217 218 ; CHECK-LABEL: name: uitofp_s32_s64219 ; CHECK: liveins: $x10220 ; CHECK-NEXT: {{ $}}221 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10222 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s64)223 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)224 ; CHECK-NEXT: PseudoRET implicit $f10_f225 %0:_(s64) = COPY $x10226 %1:_(s32) = G_UITOFP %0(s64)227 $f10_f = COPY %1(s32)228 PseudoRET implicit $f10_f229 230...231---232name: sitofp_s64_s1233tracksRegLiveness: true234body: |235 bb.1:236 liveins: $x10237 238 ; CHECK-LABEL: name: sitofp_s64_s1239 ; CHECK: liveins: $x10240 ; CHECK-NEXT: {{ $}}241 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10242 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63243 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)244 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)245 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s64)246 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)247 ; CHECK-NEXT: PseudoRET implicit $f10_d248 %1:_(s64) = COPY $x10249 %0:_(s1) = G_TRUNC %1(s64)250 %2:_(s64) = G_SITOFP %0(s1)251 $f10_d = COPY %2(s64)252 PseudoRET implicit $f10_d253 254...255---256name: uitofp_s64_s1257tracksRegLiveness: true258body: |259 bb.1:260 liveins: $x10261 262 ; CHECK-LABEL: name: uitofp_s64_s1263 ; CHECK: liveins: $x10264 ; CHECK-NEXT: {{ $}}265 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10266 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1267 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]268 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s64)269 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)270 ; CHECK-NEXT: PseudoRET implicit $f10_d271 %1:_(s64) = COPY $x10272 %0:_(s1) = G_TRUNC %1(s64)273 %2:_(s64) = G_UITOFP %0(s1)274 $f10_d = COPY %2(s64)275 PseudoRET implicit $f10_d276 277...278---279name: sitofp_s64_s8280tracksRegLiveness: true281body: |282 bb.1:283 liveins: $x10284 285 ; CHECK-LABEL: name: sitofp_s64_s8286 ; CHECK: liveins: $x10287 ; CHECK-NEXT: {{ $}}288 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10289 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 56290 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)291 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)292 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s64)293 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)294 ; CHECK-NEXT: PseudoRET implicit $f10_d295 %1:_(s64) = COPY $x10296 %0:_(s8) = G_TRUNC %1(s64)297 %2:_(s64) = G_SITOFP %0(s8)298 $f10_d = COPY %2(s64)299 PseudoRET implicit $f10_d300 301...302---303name: uitofp_s64_s8304tracksRegLiveness: true305body: |306 bb.1:307 liveins: $x10308 309 ; CHECK-LABEL: name: uitofp_s64_s8310 ; CHECK: liveins: $x10311 ; CHECK-NEXT: {{ $}}312 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10313 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255314 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]315 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s64)316 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)317 ; CHECK-NEXT: PseudoRET implicit $f10_d318 %1:_(s64) = COPY $x10319 %0:_(s8) = G_TRUNC %1(s64)320 %2:_(s64) = G_UITOFP %0(s8)321 $f10_d = COPY %2(s64)322 PseudoRET implicit $f10_d323 324...325---326name: sitofp_s64_s16327tracksRegLiveness: true328body: |329 bb.1:330 liveins: $x10331 332 ; CHECK-LABEL: name: sitofp_s64_s16333 ; CHECK: liveins: $x10334 ; CHECK-NEXT: {{ $}}335 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10336 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 48337 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)338 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)339 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s64)340 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)341 ; CHECK-NEXT: PseudoRET implicit $f10_d342 %1:_(s64) = COPY $x10343 %0:_(s16) = G_TRUNC %1(s64)344 %2:_(s64) = G_SITOFP %0(s16)345 $f10_d = COPY %2(s64)346 PseudoRET implicit $f10_d347 348...349---350name: uitofp_s64_s16351tracksRegLiveness: true352body: |353 bb.1:354 liveins: $x10355 356 ; CHECK-LABEL: name: uitofp_s64_s16357 ; CHECK: liveins: $x10358 ; CHECK-NEXT: {{ $}}359 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10360 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535361 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]362 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s64)363 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)364 ; CHECK-NEXT: PseudoRET implicit $f10_d365 %1:_(s64) = COPY $x10366 %0:_(s16) = G_TRUNC %1(s64)367 %2:_(s64) = G_UITOFP %0(s16)368 $f10_d = COPY %2(s64)369 PseudoRET implicit $f10_d370 371...372---373name: sitofp_s64_s32374tracksRegLiveness: true375body: |376 bb.1:377 liveins: $x10378 379 ; CHECK-LABEL: name: sitofp_s64_s32380 ; CHECK: liveins: $x10381 ; CHECK-NEXT: {{ $}}382 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10383 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32384 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s64)385 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)386 ; CHECK-NEXT: PseudoRET implicit $f10_d387 %1:_(s64) = COPY $x10388 %0:_(s32) = G_TRUNC %1(s64)389 %2:_(s64) = G_SITOFP %0(s32)390 $f10_d = COPY %2(s64)391 PseudoRET implicit $f10_d392 393...394---395name: uitofp_s64_s32396tracksRegLiveness: true397body: |398 bb.1:399 liveins: $x10400 401 ; CHECK-LABEL: name: uitofp_s64_s32402 ; CHECK: liveins: $x10403 ; CHECK-NEXT: {{ $}}404 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10405 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295406 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]407 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s64)408 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)409 ; CHECK-NEXT: PseudoRET implicit $f10_d410 %1:_(s64) = COPY $x10411 %0:_(s32) = G_TRUNC %1(s64)412 %2:_(s64) = G_UITOFP %0(s32)413 $f10_d = COPY %2(s64)414 PseudoRET implicit $f10_d415 416...417---418name: sitofp_s64_s64419tracksRegLiveness: true420body: |421 bb.1:422 liveins: $x10423 424 ; CHECK-LABEL: name: sitofp_s64_s64425 ; CHECK: liveins: $x10426 ; CHECK-NEXT: {{ $}}427 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10428 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s64)429 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)430 ; CHECK-NEXT: PseudoRET implicit $f10_d431 %0:_(s64) = COPY $x10432 %1:_(s64) = G_SITOFP %0(s64)433 $f10_d = COPY %1(s64)434 PseudoRET implicit $f10_d435 436...437---438name: uitofp_s64_s64439tracksRegLiveness: true440body: |441 bb.1:442 liveins: $x10443 444 ; CHECK-LABEL: name: uitofp_s64_s64445 ; CHECK: liveins: $x10446 ; CHECK-NEXT: {{ $}}447 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10448 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s64)449 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)450 ; CHECK-NEXT: PseudoRET implicit $f10_d451 %0:_(s64) = COPY $x10452 %1:_(s64) = G_UITOFP %0(s64)453 $f10_d = COPY %1(s64)454 PseudoRET implicit $f10_d455 456...457