367 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -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]+]]:_(s32) = COPY $x1016 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3117 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)18 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)19 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)20 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)21 ; CHECK-NEXT: PseudoRET implicit $f10_f22 %1:_(s32) = COPY $x1023 %0:_(s1) = G_TRUNC %1(s32)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]+]]:_(s32) = COPY $x1040 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 141 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]42 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)43 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)44 ; CHECK-NEXT: PseudoRET implicit $f10_f45 %1:_(s32) = COPY $x1046 %0:_(s1) = G_TRUNC %1(s32)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]+]]:_(s32) = COPY $x1063 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2464 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)65 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)66 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)67 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)68 ; CHECK-NEXT: PseudoRET implicit $f10_f69 %1:_(s32) = COPY $x1070 %0:_(s8) = G_TRUNC %1(s32)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]+]]:_(s32) = COPY $x1087 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 25588 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]89 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)90 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)91 ; CHECK-NEXT: PseudoRET implicit $f10_f92 %1:_(s32) = COPY $x1093 %0:_(s8) = G_TRUNC %1(s32)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]+]]:_(s32) = COPY $x10110 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16111 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)112 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)113 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)114 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)115 ; CHECK-NEXT: PseudoRET implicit $f10_f116 %1:_(s32) = COPY $x10117 %0:_(s16) = G_TRUNC %1(s32)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]+]]:_(s32) = COPY $x10134 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535135 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]136 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)137 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)138 ; CHECK-NEXT: PseudoRET implicit $f10_f139 %1:_(s32) = COPY $x10140 %0:_(s16) = G_TRUNC %1(s32)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]+]]:_(s32) = COPY $x10157 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32)158 ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)159 ; CHECK-NEXT: PseudoRET implicit $f10_f160 %0:_(s32) = COPY $x10161 %1:_(s32) = G_SITOFP %0(s32)162 $f10_f = COPY %1(s32)163 PseudoRET implicit $f10_f164 165...166---167name: uitofp_s32_s32168tracksRegLiveness: true169body: |170 bb.1:171 liveins: $x10172 173 ; CHECK-LABEL: name: uitofp_s32_s32174 ; CHECK: liveins: $x10175 ; CHECK-NEXT: {{ $}}176 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10177 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s32)178 ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)179 ; CHECK-NEXT: PseudoRET implicit $f10_f180 %0:_(s32) = COPY $x10181 %1:_(s32) = G_UITOFP %0(s32)182 $f10_f = COPY %1(s32)183 PseudoRET implicit $f10_f184 185...186---187name: sitofp_s64_s1188tracksRegLiveness: true189body: |190 bb.1:191 liveins: $x10192 193 ; CHECK-LABEL: name: sitofp_s64_s1194 ; CHECK: liveins: $x10195 ; CHECK-NEXT: {{ $}}196 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10197 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31198 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)199 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)200 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)201 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)202 ; CHECK-NEXT: PseudoRET implicit $f10_d203 %1:_(s32) = COPY $x10204 %0:_(s1) = G_TRUNC %1(s32)205 %2:_(s64) = G_SITOFP %0(s1)206 $f10_d = COPY %2(s64)207 PseudoRET implicit $f10_d208 209...210---211name: uitofp_s64_s1212tracksRegLiveness: true213body: |214 bb.1:215 liveins: $x10216 217 ; CHECK-LABEL: name: uitofp_s64_s1218 ; CHECK: liveins: $x10219 ; CHECK-NEXT: {{ $}}220 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10221 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1222 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]223 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)224 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)225 ; CHECK-NEXT: PseudoRET implicit $f10_d226 %1:_(s32) = COPY $x10227 %0:_(s1) = G_TRUNC %1(s32)228 %2:_(s64) = G_UITOFP %0(s1)229 $f10_d = COPY %2(s64)230 PseudoRET implicit $f10_d231 232...233---234name: sitofp_s64_s8235tracksRegLiveness: true236body: |237 bb.1:238 liveins: $x10239 240 ; CHECK-LABEL: name: sitofp_s64_s8241 ; CHECK: liveins: $x10242 ; CHECK-NEXT: {{ $}}243 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10244 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24245 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)246 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)247 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)248 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)249 ; CHECK-NEXT: PseudoRET implicit $f10_d250 %1:_(s32) = COPY $x10251 %0:_(s8) = G_TRUNC %1(s32)252 %2:_(s64) = G_SITOFP %0(s8)253 $f10_d = COPY %2(s64)254 PseudoRET implicit $f10_d255 256...257---258name: uitofp_s64_s8259tracksRegLiveness: true260body: |261 bb.1:262 liveins: $x10263 264 ; CHECK-LABEL: name: uitofp_s64_s8265 ; CHECK: liveins: $x10266 ; CHECK-NEXT: {{ $}}267 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10268 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255269 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]270 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)271 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)272 ; CHECK-NEXT: PseudoRET implicit $f10_d273 %1:_(s32) = COPY $x10274 %0:_(s8) = G_TRUNC %1(s32)275 %2:_(s64) = G_UITOFP %0(s8)276 $f10_d = COPY %2(s64)277 PseudoRET implicit $f10_d278 279...280---281name: sitofp_s64_s16282tracksRegLiveness: true283body: |284 bb.1:285 liveins: $x10286 287 ; CHECK-LABEL: name: sitofp_s64_s16288 ; CHECK: liveins: $x10289 ; CHECK-NEXT: {{ $}}290 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10291 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16292 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)293 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)294 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)295 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)296 ; CHECK-NEXT: PseudoRET implicit $f10_d297 %1:_(s32) = COPY $x10298 %0:_(s16) = G_TRUNC %1(s32)299 %2:_(s64) = G_SITOFP %0(s16)300 $f10_d = COPY %2(s64)301 PseudoRET implicit $f10_d302 303...304---305name: uitofp_s64_s16306tracksRegLiveness: true307body: |308 bb.1:309 liveins: $x10310 311 ; CHECK-LABEL: name: uitofp_s64_s16312 ; CHECK: liveins: $x10313 ; CHECK-NEXT: {{ $}}314 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10315 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535316 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]317 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)318 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)319 ; CHECK-NEXT: PseudoRET implicit $f10_d320 %1:_(s32) = COPY $x10321 %0:_(s16) = G_TRUNC %1(s32)322 %2:_(s64) = G_UITOFP %0(s16)323 $f10_d = COPY %2(s64)324 PseudoRET implicit $f10_d325 326...327---328name: sitofp_s64_s32329tracksRegLiveness: true330body: |331 bb.1:332 liveins: $x10333 334 ; CHECK-LABEL: name: sitofp_s64_s32335 ; CHECK: liveins: $x10336 ; CHECK-NEXT: {{ $}}337 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10338 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32)339 ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)340 ; CHECK-NEXT: PseudoRET implicit $f10_d341 %0:_(s32) = COPY $x10342 %1:_(s64) = G_SITOFP %0(s32)343 $f10_d = COPY %1(s64)344 PseudoRET implicit $f10_d345 346...347---348name: uitofp_s64_s32349tracksRegLiveness: true350body: |351 bb.1:352 liveins: $x10353 354 ; CHECK-LABEL: name: uitofp_s64_s32355 ; CHECK: liveins: $x10356 ; CHECK-NEXT: {{ $}}357 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10358 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s32)359 ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)360 ; CHECK-NEXT: PseudoRET implicit $f10_d361 %0:_(s32) = COPY $x10362 %1:_(s64) = G_UITOFP %0(s32)363 $f10_d = COPY %1(s64)364 PseudoRET implicit $f10_d365 366...367