586 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=FP323# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=FP644--- |5 6 define void @i64tof32() {entry: ret void}7 define void @i32tof32() {entry: ret void}8 define void @i16tof32() {entry: ret void}9 define void @i8tof32() {entry: ret void}10 define void @i64tof64() {entry: ret void}11 define void @i32tof64() {entry: ret void}12 define void @i16tof64() {entry: ret void}13 define void @i8tof64() {entry: ret void}14 define void @u64tof32() {entry: ret void}15 define void @u32tof32() {entry: ret void}16 define void @u16tof32() {entry: ret void}17 define void @u8tof32() {entry: ret void}18 define void @u64tof64() {entry: ret void}19 define void @u32tof64() {entry: ret void}20 define void @u16tof64() {entry: ret void}21 define void @u8tof64() {entry: ret void}22 23...24---25name: i64tof3226alignment: 427tracksRegLiveness: true28body: |29 bb.1.entry:30 liveins: $a0, $a131 32 ; FP32-LABEL: name: i64tof3233 ; FP32: liveins: $a0, $a134 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a035 ; FP32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a136 ; FP32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp37 ; FP32: $a0 = COPY [[COPY]](s32)38 ; FP32: $a1 = COPY [[COPY1]](s32)39 ; FP32: JAL &__floatdisf, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $f040 ; FP32: [[COPY2:%[0-9]+]]:_(s32) = COPY $f041 ; FP32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp42 ; FP32: $f0 = COPY [[COPY2]](s32)43 ; FP32: RetRA implicit $f044 ; FP64-LABEL: name: i64tof3245 ; FP64: liveins: $a0, $a146 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a047 ; FP64: [[COPY1:%[0-9]+]]:_(s32) = COPY $a148 ; FP64: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp49 ; FP64: $a0 = COPY [[COPY]](s32)50 ; FP64: $a1 = COPY [[COPY1]](s32)51 ; FP64: JAL &__floatdisf, csr_o32_fp64, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $f052 ; FP64: [[COPY2:%[0-9]+]]:_(s32) = COPY $f053 ; FP64: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp54 ; FP64: $f0 = COPY [[COPY2]](s32)55 ; FP64: RetRA implicit $f056 %1:_(s32) = COPY $a057 %2:_(s32) = COPY $a158 %0:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)59 %3:_(s32) = G_SITOFP %0(s64)60 $f0 = COPY %3(s32)61 RetRA implicit $f062 63...64---65name: i32tof3266alignment: 467tracksRegLiveness: true68body: |69 bb.1.entry:70 liveins: $a071 72 ; FP32-LABEL: name: i32tof3273 ; FP32: liveins: $a074 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a075 ; FP32: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32)76 ; FP32: $f0 = COPY [[SITOFP]](s32)77 ; FP32: RetRA implicit $f078 ; FP64-LABEL: name: i32tof3279 ; FP64: liveins: $a080 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a081 ; FP64: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32)82 ; FP64: $f0 = COPY [[SITOFP]](s32)83 ; FP64: RetRA implicit $f084 %0:_(s32) = COPY $a085 %1:_(s32) = G_SITOFP %0(s32)86 $f0 = COPY %1(s32)87 RetRA implicit $f088 89...90---91name: i16tof3292alignment: 493tracksRegLiveness: true94body: |95 bb.1.entry:96 liveins: $a097 98 ; FP32-LABEL: name: i16tof3299 ; FP32: liveins: $a0100 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0101 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16102 ; FP32: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)103 ; FP32: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)104 ; FP32: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)105 ; FP32: $f0 = COPY [[SITOFP]](s32)106 ; FP32: RetRA implicit $f0107 ; FP64-LABEL: name: i16tof32108 ; FP64: liveins: $a0109 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0110 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16111 ; FP64: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)112 ; FP64: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)113 ; FP64: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)114 ; FP64: $f0 = COPY [[SITOFP]](s32)115 ; FP64: RetRA implicit $f0116 %1:_(s32) = COPY $a0117 %0:_(s16) = G_TRUNC %1(s32)118 %2:_(s32) = G_SITOFP %0(s16)119 $f0 = COPY %2(s32)120 RetRA implicit $f0121 122...123---124name: i8tof32125alignment: 4126tracksRegLiveness: true127body: |128 bb.1.entry:129 liveins: $a0130 131 ; FP32-LABEL: name: i8tof32132 ; FP32: liveins: $a0133 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0134 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24135 ; FP32: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)136 ; FP32: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)137 ; FP32: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)138 ; FP32: $f0 = COPY [[SITOFP]](s32)139 ; FP32: RetRA implicit $f0140 ; FP64-LABEL: name: i8tof32141 ; FP64: liveins: $a0142 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0143 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24144 ; FP64: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)145 ; FP64: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)146 ; FP64: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)147 ; FP64: $f0 = COPY [[SITOFP]](s32)148 ; FP64: RetRA implicit $f0149 %1:_(s32) = COPY $a0150 %0:_(s8) = G_TRUNC %1(s32)151 %2:_(s32) = G_SITOFP %0(s8)152 $f0 = COPY %2(s32)153 RetRA implicit $f0154 155...156---157name: i64tof64158alignment: 4159tracksRegLiveness: true160body: |161 bb.1.entry:162 liveins: $a0, $a1163 164 ; FP32-LABEL: name: i64tof64165 ; FP32: liveins: $a0, $a1166 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0167 ; FP32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1168 ; FP32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp169 ; FP32: $a0 = COPY [[COPY]](s32)170 ; FP32: $a1 = COPY [[COPY1]](s32)171 ; FP32: JAL &__floatdidf, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $d0172 ; FP32: [[COPY2:%[0-9]+]]:_(s64) = COPY $d0173 ; FP32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp174 ; FP32: $d0 = COPY [[COPY2]](s64)175 ; FP32: RetRA implicit $d0176 ; FP64-LABEL: name: i64tof64177 ; FP64: liveins: $a0, $a1178 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0179 ; FP64: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1180 ; FP64: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp181 ; FP64: $a0 = COPY [[COPY]](s32)182 ; FP64: $a1 = COPY [[COPY1]](s32)183 ; FP64: JAL &__floatdidf, csr_o32_fp64, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $d0_64184 ; FP64: [[COPY2:%[0-9]+]]:_(s64) = COPY $d0_64185 ; FP64: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp186 ; FP64: $d0 = COPY [[COPY2]](s64)187 ; FP64: RetRA implicit $d0188 %1:_(s32) = COPY $a0189 %2:_(s32) = COPY $a1190 %0:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)191 %3:_(s64) = G_SITOFP %0(s64)192 $d0 = COPY %3(s64)193 RetRA implicit $d0194 195...196---197name: i32tof64198alignment: 4199tracksRegLiveness: true200body: |201 bb.1.entry:202 liveins: $a0203 204 ; FP32-LABEL: name: i32tof64205 ; FP32: liveins: $a0206 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0207 ; FP32: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32)208 ; FP32: $d0 = COPY [[SITOFP]](s64)209 ; FP32: RetRA implicit $d0210 ; FP64-LABEL: name: i32tof64211 ; FP64: liveins: $a0212 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0213 ; FP64: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32)214 ; FP64: $d0 = COPY [[SITOFP]](s64)215 ; FP64: RetRA implicit $d0216 %0:_(s32) = COPY $a0217 %1:_(s64) = G_SITOFP %0(s32)218 $d0 = COPY %1(s64)219 RetRA implicit $d0220 221...222---223name: i16tof64224alignment: 4225tracksRegLiveness: true226body: |227 bb.1.entry:228 liveins: $a0229 230 ; FP32-LABEL: name: i16tof64231 ; FP32: liveins: $a0232 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0233 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16234 ; FP32: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)235 ; FP32: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)236 ; FP32: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)237 ; FP32: $d0 = COPY [[SITOFP]](s64)238 ; FP32: RetRA implicit $d0239 ; FP64-LABEL: name: i16tof64240 ; FP64: liveins: $a0241 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0242 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16243 ; FP64: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)244 ; FP64: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)245 ; FP64: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)246 ; FP64: $d0 = COPY [[SITOFP]](s64)247 ; FP64: RetRA implicit $d0248 %1:_(s32) = COPY $a0249 %0:_(s16) = G_TRUNC %1(s32)250 %2:_(s64) = G_SITOFP %0(s16)251 $d0 = COPY %2(s64)252 RetRA implicit $d0253 254...255---256name: i8tof64257alignment: 4258tracksRegLiveness: true259body: |260 bb.1.entry:261 liveins: $a0262 263 ; FP32-LABEL: name: i8tof64264 ; FP32: liveins: $a0265 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0266 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24267 ; FP32: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)268 ; FP32: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)269 ; FP32: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)270 ; FP32: $d0 = COPY [[SITOFP]](s64)271 ; FP32: RetRA implicit $d0272 ; FP64-LABEL: name: i8tof64273 ; FP64: liveins: $a0274 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0275 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24276 ; FP64: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)277 ; FP64: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)278 ; FP64: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)279 ; FP64: $d0 = COPY [[SITOFP]](s64)280 ; FP64: RetRA implicit $d0281 %1:_(s32) = COPY $a0282 %0:_(s8) = G_TRUNC %1(s32)283 %2:_(s64) = G_SITOFP %0(s8)284 $d0 = COPY %2(s64)285 RetRA implicit $d0286 287...288---289name: u64tof32290alignment: 4291tracksRegLiveness: true292body: |293 bb.1.entry:294 liveins: $a0, $a1295 296 ; FP32-LABEL: name: u64tof32297 ; FP32: liveins: $a0, $a1298 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0299 ; FP32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1300 ; FP32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp301 ; FP32: $a0 = COPY [[COPY]](s32)302 ; FP32: $a1 = COPY [[COPY1]](s32)303 ; FP32: JAL &__floatundisf, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $f0304 ; FP32: [[COPY2:%[0-9]+]]:_(s32) = COPY $f0305 ; FP32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp306 ; FP32: $f0 = COPY [[COPY2]](s32)307 ; FP32: RetRA implicit $f0308 ; FP64-LABEL: name: u64tof32309 ; FP64: liveins: $a0, $a1310 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0311 ; FP64: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1312 ; FP64: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp313 ; FP64: $a0 = COPY [[COPY]](s32)314 ; FP64: $a1 = COPY [[COPY1]](s32)315 ; FP64: JAL &__floatundisf, csr_o32_fp64, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $f0316 ; FP64: [[COPY2:%[0-9]+]]:_(s32) = COPY $f0317 ; FP64: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp318 ; FP64: $f0 = COPY [[COPY2]](s32)319 ; FP64: RetRA implicit $f0320 %1:_(s32) = COPY $a0321 %2:_(s32) = COPY $a1322 %0:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)323 %3:_(s32) = G_UITOFP %0(s64)324 $f0 = COPY %3(s32)325 RetRA implicit $f0326 327...328---329name: u32tof32330alignment: 4331tracksRegLiveness: true332body: |333 bb.1.entry:334 liveins: $a0335 336 ; FP32-LABEL: name: u32tof32337 ; FP32: liveins: $a0338 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0339 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200340 ; FP32: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32)341 ; FP32: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000342 ; FP32: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C1]]343 ; FP32: [[FPTRUNC:%[0-9]+]]:_(s32) = G_FPTRUNC [[FSUB]](s64)344 ; FP32: $f0 = COPY [[FPTRUNC]](s32)345 ; FP32: RetRA implicit $f0346 ; FP64-LABEL: name: u32tof32347 ; FP64: liveins: $a0348 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0349 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200350 ; FP64: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32)351 ; FP64: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000352 ; FP64: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C1]]353 ; FP64: [[FPTRUNC:%[0-9]+]]:_(s32) = G_FPTRUNC [[FSUB]](s64)354 ; FP64: $f0 = COPY [[FPTRUNC]](s32)355 ; FP64: RetRA implicit $f0356 %0:_(s32) = COPY $a0357 %1:_(s32) = G_UITOFP %0(s32)358 $f0 = COPY %1(s32)359 RetRA implicit $f0360 361...362---363name: u16tof32364alignment: 4365tracksRegLiveness: true366body: |367 bb.1.entry:368 liveins: $a0369 370 ; FP32-LABEL: name: u16tof32371 ; FP32: liveins: $a0372 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0373 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535374 ; FP32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]375 ; FP32: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200376 ; FP32: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[AND]](s32), [[C1]](s32)377 ; FP32: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000378 ; FP32: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C2]]379 ; FP32: [[FPTRUNC:%[0-9]+]]:_(s32) = G_FPTRUNC [[FSUB]](s64)380 ; FP32: $f0 = COPY [[FPTRUNC]](s32)381 ; FP32: RetRA implicit $f0382 ; FP64-LABEL: name: u16tof32383 ; FP64: liveins: $a0384 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0385 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535386 ; FP64: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]387 ; FP64: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200388 ; FP64: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[AND]](s32), [[C1]](s32)389 ; FP64: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000390 ; FP64: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C2]]391 ; FP64: [[FPTRUNC:%[0-9]+]]:_(s32) = G_FPTRUNC [[FSUB]](s64)392 ; FP64: $f0 = COPY [[FPTRUNC]](s32)393 ; FP64: RetRA implicit $f0394 %1:_(s32) = COPY $a0395 %0:_(s16) = G_TRUNC %1(s32)396 %2:_(s32) = G_UITOFP %0(s16)397 $f0 = COPY %2(s32)398 RetRA implicit $f0399 400...401---402name: u8tof32403alignment: 4404tracksRegLiveness: true405body: |406 bb.1.entry:407 liveins: $a0408 409 ; FP32-LABEL: name: u8tof32410 ; FP32: liveins: $a0411 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0412 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255413 ; FP32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]414 ; FP32: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200415 ; FP32: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[AND]](s32), [[C1]](s32)416 ; FP32: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000417 ; FP32: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C2]]418 ; FP32: [[FPTRUNC:%[0-9]+]]:_(s32) = G_FPTRUNC [[FSUB]](s64)419 ; FP32: $f0 = COPY [[FPTRUNC]](s32)420 ; FP32: RetRA implicit $f0421 ; FP64-LABEL: name: u8tof32422 ; FP64: liveins: $a0423 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0424 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255425 ; FP64: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]426 ; FP64: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200427 ; FP64: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[AND]](s32), [[C1]](s32)428 ; FP64: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000429 ; FP64: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C2]]430 ; FP64: [[FPTRUNC:%[0-9]+]]:_(s32) = G_FPTRUNC [[FSUB]](s64)431 ; FP64: $f0 = COPY [[FPTRUNC]](s32)432 ; FP64: RetRA implicit $f0433 %1:_(s32) = COPY $a0434 %0:_(s8) = G_TRUNC %1(s32)435 %2:_(s32) = G_UITOFP %0(s8)436 $f0 = COPY %2(s32)437 RetRA implicit $f0438 439...440---441name: u64tof64442alignment: 4443tracksRegLiveness: true444body: |445 bb.1.entry:446 liveins: $a0, $a1447 448 ; FP32-LABEL: name: u64tof64449 ; FP32: liveins: $a0, $a1450 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0451 ; FP32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1452 ; FP32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp453 ; FP32: $a0 = COPY [[COPY]](s32)454 ; FP32: $a1 = COPY [[COPY1]](s32)455 ; FP32: JAL &__floatundidf, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $d0456 ; FP32: [[COPY2:%[0-9]+]]:_(s64) = COPY $d0457 ; FP32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp458 ; FP32: $d0 = COPY [[COPY2]](s64)459 ; FP32: RetRA implicit $d0460 ; FP64-LABEL: name: u64tof64461 ; FP64: liveins: $a0, $a1462 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0463 ; FP64: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1464 ; FP64: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp465 ; FP64: $a0 = COPY [[COPY]](s32)466 ; FP64: $a1 = COPY [[COPY1]](s32)467 ; FP64: JAL &__floatundidf, csr_o32_fp64, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $d0_64468 ; FP64: [[COPY2:%[0-9]+]]:_(s64) = COPY $d0_64469 ; FP64: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp470 ; FP64: $d0 = COPY [[COPY2]](s64)471 ; FP64: RetRA implicit $d0472 %1:_(s32) = COPY $a0473 %2:_(s32) = COPY $a1474 %0:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)475 %3:_(s64) = G_UITOFP %0(s64)476 $d0 = COPY %3(s64)477 RetRA implicit $d0478 479...480---481name: u32tof64482alignment: 4483tracksRegLiveness: true484body: |485 bb.1.entry:486 liveins: $a0487 488 ; FP32-LABEL: name: u32tof64489 ; FP32: liveins: $a0490 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0491 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200492 ; FP32: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32)493 ; FP32: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000494 ; FP32: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C1]]495 ; FP32: $d0 = COPY [[FSUB]](s64)496 ; FP32: RetRA implicit $d0497 ; FP64-LABEL: name: u32tof64498 ; FP64: liveins: $a0499 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0500 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200501 ; FP64: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32)502 ; FP64: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000503 ; FP64: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C1]]504 ; FP64: $d0 = COPY [[FSUB]](s64)505 ; FP64: RetRA implicit $d0506 %0:_(s32) = COPY $a0507 %1:_(s64) = G_UITOFP %0(s32)508 $d0 = COPY %1(s64)509 RetRA implicit $d0510 511...512---513name: u16tof64514alignment: 4515tracksRegLiveness: true516body: |517 bb.1.entry:518 liveins: $a0519 520 ; FP32-LABEL: name: u16tof64521 ; FP32: liveins: $a0522 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0523 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535524 ; FP32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]525 ; FP32: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200526 ; FP32: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[AND]](s32), [[C1]](s32)527 ; FP32: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000528 ; FP32: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C2]]529 ; FP32: $d0 = COPY [[FSUB]](s64)530 ; FP32: RetRA implicit $d0531 ; FP64-LABEL: name: u16tof64532 ; FP64: liveins: $a0533 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0534 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535535 ; FP64: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]536 ; FP64: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200537 ; FP64: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[AND]](s32), [[C1]](s32)538 ; FP64: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000539 ; FP64: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C2]]540 ; FP64: $d0 = COPY [[FSUB]](s64)541 ; FP64: RetRA implicit $d0542 %1:_(s32) = COPY $a0543 %0:_(s16) = G_TRUNC %1(s32)544 %2:_(s64) = G_UITOFP %0(s16)545 $d0 = COPY %2(s64)546 RetRA implicit $d0547 548...549---550name: u8tof64551alignment: 4552tracksRegLiveness: true553body: |554 bb.1.entry:555 liveins: $a0556 557 ; FP32-LABEL: name: u8tof64558 ; FP32: liveins: $a0559 ; FP32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0560 ; FP32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255561 ; FP32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]562 ; FP32: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200563 ; FP32: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[AND]](s32), [[C1]](s32)564 ; FP32: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000565 ; FP32: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C2]]566 ; FP32: $d0 = COPY [[FSUB]](s64)567 ; FP32: RetRA implicit $d0568 ; FP64-LABEL: name: u8tof64569 ; FP64: liveins: $a0570 ; FP64: [[COPY:%[0-9]+]]:_(s32) = COPY $a0571 ; FP64: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255572 ; FP64: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]573 ; FP64: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1127219200574 ; FP64: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[AND]](s32), [[C1]](s32)575 ; FP64: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000576 ; FP64: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[MV]], [[C2]]577 ; FP64: $d0 = COPY [[FSUB]](s64)578 ; FP64: RetRA implicit $d0579 %1:_(s32) = COPY $a0580 %0:_(s8) = G_TRUNC %1(s32)581 %2:_(s64) = G_UITOFP %0(s8)582 $d0 = COPY %2(s64)583 RetRA implicit $d0584 585...586