brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.7 KiB · e818834 Raw
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