brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.1 KiB · 533cf5e Raw
676 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 @f32toi64() {entry: ret void}7  define void @f32toi32() {entry: ret void}8  define void @f32toi16() {entry: ret void}9  define void @f32toi8() {entry: ret void}10  define void @f64toi64() {entry: ret void}11  define void @f64toi32() {entry: ret void}12  define void @f64toi16() {entry: ret void}13  define void @f64toi8() {entry: ret void}14  define void @f32tou64() {entry: ret void}15  define void @f32tou32() {entry: ret void}16  define void @f32tou16() {entry: ret void}17  define void @f32tou8() {entry: ret void}18  define void @f64tou64() {entry: ret void}19  define void @f64tou32() {entry: ret void}20  define void @f64tou16() {entry: ret void}21  define void @f64tou8() {entry: ret void}22 23...24---25name:            f32toi6426alignment:       427tracksRegLiveness: true28body:             |29  bb.1.entry:30    liveins: $f1231 32    ; FP32-LABEL: name: f32toi6433    ; FP32: liveins: $f1234    ; FP32-NEXT: {{  $}}35    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f1236    ; FP32-NEXT: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp37    ; FP32-NEXT: $f12 = COPY [[COPY]](s32)38    ; FP32-NEXT: JAL &__fixsfdi, csr_o32, implicit-def $ra, implicit-def $sp, implicit $f12, implicit-def $v0, implicit-def $v139    ; FP32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $v040    ; FP32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $v141    ; FP32-NEXT: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp42    ; FP32-NEXT: $v0 = COPY [[COPY1]](s32)43    ; FP32-NEXT: $v1 = COPY [[COPY2]](s32)44    ; FP32-NEXT: RetRA implicit $v0, implicit $v145    ;46    ; FP64-LABEL: name: f32toi6447    ; FP64: liveins: $f1248    ; FP64-NEXT: {{  $}}49    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f1250    ; FP64-NEXT: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp51    ; FP64-NEXT: $f12 = COPY [[COPY]](s32)52    ; FP64-NEXT: JAL &__fixsfdi, csr_o32_fp64, implicit-def $ra, implicit-def $sp, implicit $f12, implicit-def $v0, implicit-def $v153    ; FP64-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $v054    ; FP64-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $v155    ; FP64-NEXT: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp56    ; FP64-NEXT: $v0 = COPY [[COPY1]](s32)57    ; FP64-NEXT: $v1 = COPY [[COPY2]](s32)58    ; FP64-NEXT: RetRA implicit $v0, implicit $v159    %0:_(s32) = COPY $f1260    %1:_(s64) = G_FPTOSI %0(s32)61    %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %1(s64)62    $v0 = COPY %2(s32)63    $v1 = COPY %3(s32)64    RetRA implicit $v0, implicit $v165 66...67---68name:            f32toi3269alignment:       470tracksRegLiveness: true71body:             |72  bb.1.entry:73    liveins: $f1274 75    ; FP32-LABEL: name: f32toi3276    ; FP32: liveins: $f1277    ; FP32-NEXT: {{  $}}78    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f1279    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)80    ; FP32-NEXT: $v0 = COPY [[FPTOSI]](s32)81    ; FP32-NEXT: RetRA implicit $v082    ;83    ; FP64-LABEL: name: f32toi3284    ; FP64: liveins: $f1285    ; FP64-NEXT: {{  $}}86    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f1287    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)88    ; FP64-NEXT: $v0 = COPY [[FPTOSI]](s32)89    ; FP64-NEXT: RetRA implicit $v090    %0:_(s32) = COPY $f1291    %1:_(s32) = G_FPTOSI %0(s32)92    $v0 = COPY %1(s32)93    RetRA implicit $v094 95...96---97name:            f32toi1698alignment:       499tracksRegLiveness: true100body:             |101  bb.1.entry:102    liveins: $f12103 104    ; FP32-LABEL: name: f32toi16105    ; FP32: liveins: $f12106    ; FP32-NEXT: {{  $}}107    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12108    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)109    ; FP32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16110    ; FP32-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[FPTOSI]], [[C]](s32)111    ; FP32-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)112    ; FP32-NEXT: $v0 = COPY [[ASHR]](s32)113    ; FP32-NEXT: RetRA implicit $v0114    ;115    ; FP64-LABEL: name: f32toi16116    ; FP64: liveins: $f12117    ; FP64-NEXT: {{  $}}118    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12119    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)120    ; FP64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16121    ; FP64-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[FPTOSI]], [[C]](s32)122    ; FP64-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)123    ; FP64-NEXT: $v0 = COPY [[ASHR]](s32)124    ; FP64-NEXT: RetRA implicit $v0125    %0:_(s32) = COPY $f12126    %1:_(s16) = G_FPTOSI %0(s32)127    %2:_(s32) = G_SEXT %1(s16)128    $v0 = COPY %2(s32)129    RetRA implicit $v0130 131...132---133name:            f32toi8134alignment:       4135tracksRegLiveness: true136body:             |137  bb.1.entry:138    liveins: $f12139 140    ; FP32-LABEL: name: f32toi8141    ; FP32: liveins: $f12142    ; FP32-NEXT: {{  $}}143    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12144    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)145    ; FP32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24146    ; FP32-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[FPTOSI]], [[C]](s32)147    ; FP32-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)148    ; FP32-NEXT: $v0 = COPY [[ASHR]](s32)149    ; FP32-NEXT: RetRA implicit $v0150    ;151    ; FP64-LABEL: name: f32toi8152    ; FP64: liveins: $f12153    ; FP64-NEXT: {{  $}}154    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12155    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)156    ; FP64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24157    ; FP64-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[FPTOSI]], [[C]](s32)158    ; FP64-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)159    ; FP64-NEXT: $v0 = COPY [[ASHR]](s32)160    ; FP64-NEXT: RetRA implicit $v0161    %0:_(s32) = COPY $f12162    %1:_(s8) = G_FPTOSI %0(s32)163    %2:_(s32) = G_SEXT %1(s8)164    $v0 = COPY %2(s32)165    RetRA implicit $v0166 167...168---169name:            f64toi64170alignment:       4171tracksRegLiveness: true172body:             |173  bb.1.entry:174    liveins: $d6175 176    ; FP32-LABEL: name: f64toi64177    ; FP32: liveins: $d6178    ; FP32-NEXT: {{  $}}179    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6180    ; FP32-NEXT: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp181    ; FP32-NEXT: $d6 = COPY [[COPY]](s64)182    ; FP32-NEXT: JAL &__fixdfdi, csr_o32, implicit-def $ra, implicit-def $sp, implicit $d6, implicit-def $v0, implicit-def $v1183    ; FP32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $v0184    ; FP32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $v1185    ; FP32-NEXT: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp186    ; FP32-NEXT: $v0 = COPY [[COPY1]](s32)187    ; FP32-NEXT: $v1 = COPY [[COPY2]](s32)188    ; FP32-NEXT: RetRA implicit $v0, implicit $v1189    ;190    ; FP64-LABEL: name: f64toi64191    ; FP64: liveins: $d6192    ; FP64-NEXT: {{  $}}193    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6194    ; FP64-NEXT: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp195    ; FP64-NEXT: $d12_64 = COPY [[COPY]](s64)196    ; FP64-NEXT: JAL &__fixdfdi, csr_o32_fp64, implicit-def $ra, implicit-def $sp, implicit $d12_64, implicit-def $v0, implicit-def $v1197    ; FP64-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $v0198    ; FP64-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $v1199    ; FP64-NEXT: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp200    ; FP64-NEXT: $v0 = COPY [[COPY1]](s32)201    ; FP64-NEXT: $v1 = COPY [[COPY2]](s32)202    ; FP64-NEXT: RetRA implicit $v0, implicit $v1203    %0:_(s64) = COPY $d6204    %1:_(s64) = G_FPTOSI %0(s64)205    %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %1(s64)206    $v0 = COPY %2(s32)207    $v1 = COPY %3(s32)208    RetRA implicit $v0, implicit $v1209 210...211---212name:            f64toi32213alignment:       4214tracksRegLiveness: true215body:             |216  bb.1.entry:217    liveins: $d6218 219    ; FP32-LABEL: name: f64toi32220    ; FP32: liveins: $d6221    ; FP32-NEXT: {{  $}}222    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6223    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)224    ; FP32-NEXT: $v0 = COPY [[FPTOSI]](s32)225    ; FP32-NEXT: RetRA implicit $v0226    ;227    ; FP64-LABEL: name: f64toi32228    ; FP64: liveins: $d6229    ; FP64-NEXT: {{  $}}230    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6231    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)232    ; FP64-NEXT: $v0 = COPY [[FPTOSI]](s32)233    ; FP64-NEXT: RetRA implicit $v0234    %0:_(s64) = COPY $d6235    %1:_(s32) = G_FPTOSI %0(s64)236    $v0 = COPY %1(s32)237    RetRA implicit $v0238 239...240---241name:            f64toi16242alignment:       4243tracksRegLiveness: true244body:             |245  bb.1.entry:246    liveins: $d6247 248    ; FP32-LABEL: name: f64toi16249    ; FP32: liveins: $d6250    ; FP32-NEXT: {{  $}}251    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6252    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)253    ; FP32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16254    ; FP32-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[FPTOSI]], [[C]](s32)255    ; FP32-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)256    ; FP32-NEXT: $v0 = COPY [[ASHR]](s32)257    ; FP32-NEXT: RetRA implicit $v0258    ;259    ; FP64-LABEL: name: f64toi16260    ; FP64: liveins: $d6261    ; FP64-NEXT: {{  $}}262    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6263    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)264    ; FP64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16265    ; FP64-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[FPTOSI]], [[C]](s32)266    ; FP64-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)267    ; FP64-NEXT: $v0 = COPY [[ASHR]](s32)268    ; FP64-NEXT: RetRA implicit $v0269    %0:_(s64) = COPY $d6270    %1:_(s16) = G_FPTOSI %0(s64)271    %2:_(s32) = G_SEXT %1(s16)272    $v0 = COPY %2(s32)273    RetRA implicit $v0274 275...276---277name:            f64toi8278alignment:       4279tracksRegLiveness: true280body:             |281  bb.1.entry:282    liveins: $d6283 284    ; FP32-LABEL: name: f64toi8285    ; FP32: liveins: $d6286    ; FP32-NEXT: {{  $}}287    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6288    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)289    ; FP32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24290    ; FP32-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[FPTOSI]], [[C]](s32)291    ; FP32-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)292    ; FP32-NEXT: $v0 = COPY [[ASHR]](s32)293    ; FP32-NEXT: RetRA implicit $v0294    ;295    ; FP64-LABEL: name: f64toi8296    ; FP64: liveins: $d6297    ; FP64-NEXT: {{  $}}298    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6299    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)300    ; FP64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24301    ; FP64-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[FPTOSI]], [[C]](s32)302    ; FP64-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)303    ; FP64-NEXT: $v0 = COPY [[ASHR]](s32)304    ; FP64-NEXT: RetRA implicit $v0305    %0:_(s64) = COPY $d6306    %1:_(s8) = G_FPTOSI %0(s64)307    %2:_(s32) = G_SEXT %1(s8)308    $v0 = COPY %2(s32)309    RetRA implicit $v0310 311...312---313name:            f32tou64314alignment:       4315tracksRegLiveness: true316body:             |317  bb.1.entry:318    liveins: $f12319 320    ; FP32-LABEL: name: f32tou64321    ; FP32: liveins: $f12322    ; FP32-NEXT: {{  $}}323    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12324    ; FP32-NEXT: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp325    ; FP32-NEXT: $f12 = COPY [[COPY]](s32)326    ; FP32-NEXT: JAL &__fixunssfdi, csr_o32, implicit-def $ra, implicit-def $sp, implicit $f12, implicit-def $v0, implicit-def $v1327    ; FP32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $v0328    ; FP32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $v1329    ; FP32-NEXT: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp330    ; FP32-NEXT: $v0 = COPY [[COPY1]](s32)331    ; FP32-NEXT: $v1 = COPY [[COPY2]](s32)332    ; FP32-NEXT: RetRA implicit $v0, implicit $v1333    ;334    ; FP64-LABEL: name: f32tou64335    ; FP64: liveins: $f12336    ; FP64-NEXT: {{  $}}337    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12338    ; FP64-NEXT: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp339    ; FP64-NEXT: $f12 = COPY [[COPY]](s32)340    ; FP64-NEXT: JAL &__fixunssfdi, csr_o32_fp64, implicit-def $ra, implicit-def $sp, implicit $f12, implicit-def $v0, implicit-def $v1341    ; FP64-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $v0342    ; FP64-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $v1343    ; FP64-NEXT: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp344    ; FP64-NEXT: $v0 = COPY [[COPY1]](s32)345    ; FP64-NEXT: $v1 = COPY [[COPY2]](s32)346    ; FP64-NEXT: RetRA implicit $v0, implicit $v1347    %0:_(s32) = COPY $f12348    %1:_(s64) = G_FPTOUI %0(s32)349    %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %1(s64)350    $v0 = COPY %2(s32)351    $v1 = COPY %3(s32)352    RetRA implicit $v0, implicit $v1353 354...355---356name:            f32tou32357alignment:       4358tracksRegLiveness: true359body:             |360  bb.1.entry:361    liveins: $f12362 363    ; FP32-LABEL: name: f32tou32364    ; FP32: liveins: $f12365    ; FP32-NEXT: {{  $}}366    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12367    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)368    ; FP32-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x41E0000000000000369    ; FP32-NEXT: [[FSUB:%[0-9]+]]:_(s32) = G_FSUB [[COPY]], [[C]]370    ; FP32-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s32)371    ; FP32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648372    ; FP32-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]373    ; FP32-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s32), [[C]]374    ; FP32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]375    ; FP32-NEXT: $v0 = COPY [[SELECT]](s32)376    ; FP32-NEXT: RetRA implicit $v0377    ;378    ; FP64-LABEL: name: f32tou32379    ; FP64: liveins: $f12380    ; FP64-NEXT: {{  $}}381    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12382    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)383    ; FP64-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x41E0000000000000384    ; FP64-NEXT: [[FSUB:%[0-9]+]]:_(s32) = G_FSUB [[COPY]], [[C]]385    ; FP64-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s32)386    ; FP64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648387    ; FP64-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]388    ; FP64-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s32), [[C]]389    ; FP64-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]390    ; FP64-NEXT: $v0 = COPY [[SELECT]](s32)391    ; FP64-NEXT: RetRA implicit $v0392    %0:_(s32) = COPY $f12393    %1:_(s32) = G_FPTOUI %0(s32)394    $v0 = COPY %1(s32)395    RetRA implicit $v0396 397...398---399name:            f32tou16400alignment:       4401tracksRegLiveness: true402body:             |403  bb.1.entry:404    liveins: $f12405 406    ; FP32-LABEL: name: f32tou16407    ; FP32: liveins: $f12408    ; FP32-NEXT: {{  $}}409    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12410    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)411    ; FP32-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x41E0000000000000412    ; FP32-NEXT: [[FSUB:%[0-9]+]]:_(s32) = G_FSUB [[COPY]], [[C]]413    ; FP32-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s32)414    ; FP32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648415    ; FP32-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]416    ; FP32-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s32), [[C]]417    ; FP32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]418    ; FP32-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535419    ; FP32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SELECT]], [[C2]]420    ; FP32-NEXT: $v0 = COPY [[AND]](s32)421    ; FP32-NEXT: RetRA implicit $v0422    ;423    ; FP64-LABEL: name: f32tou16424    ; FP64: liveins: $f12425    ; FP64-NEXT: {{  $}}426    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12427    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)428    ; FP64-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x41E0000000000000429    ; FP64-NEXT: [[FSUB:%[0-9]+]]:_(s32) = G_FSUB [[COPY]], [[C]]430    ; FP64-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s32)431    ; FP64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648432    ; FP64-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]433    ; FP64-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s32), [[C]]434    ; FP64-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]435    ; FP64-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535436    ; FP64-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SELECT]], [[C2]]437    ; FP64-NEXT: $v0 = COPY [[AND]](s32)438    ; FP64-NEXT: RetRA implicit $v0439    %0:_(s32) = COPY $f12440    %1:_(s16) = G_FPTOUI %0(s32)441    %2:_(s32) = G_ZEXT %1(s16)442    $v0 = COPY %2(s32)443    RetRA implicit $v0444 445...446---447name:            f32tou8448alignment:       4449tracksRegLiveness: true450body:             |451  bb.1.entry:452    liveins: $f12453 454    ; FP32-LABEL: name: f32tou8455    ; FP32: liveins: $f12456    ; FP32-NEXT: {{  $}}457    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12458    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)459    ; FP32-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x41E0000000000000460    ; FP32-NEXT: [[FSUB:%[0-9]+]]:_(s32) = G_FSUB [[COPY]], [[C]]461    ; FP32-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s32)462    ; FP32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648463    ; FP32-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]464    ; FP32-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s32), [[C]]465    ; FP32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]466    ; FP32-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255467    ; FP32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SELECT]], [[C2]]468    ; FP32-NEXT: $v0 = COPY [[AND]](s32)469    ; FP32-NEXT: RetRA implicit $v0470    ;471    ; FP64-LABEL: name: f32tou8472    ; FP64: liveins: $f12473    ; FP64-NEXT: {{  $}}474    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f12475    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)476    ; FP64-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x41E0000000000000477    ; FP64-NEXT: [[FSUB:%[0-9]+]]:_(s32) = G_FSUB [[COPY]], [[C]]478    ; FP64-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s32)479    ; FP64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648480    ; FP64-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]481    ; FP64-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s32), [[C]]482    ; FP64-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]483    ; FP64-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255484    ; FP64-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SELECT]], [[C2]]485    ; FP64-NEXT: $v0 = COPY [[AND]](s32)486    ; FP64-NEXT: RetRA implicit $v0487    %0:_(s32) = COPY $f12488    %1:_(s8) = G_FPTOUI %0(s32)489    %2:_(s32) = G_ZEXT %1(s8)490    $v0 = COPY %2(s32)491    RetRA implicit $v0492 493...494---495name:            f64tou64496alignment:       4497tracksRegLiveness: true498body:             |499  bb.1.entry:500    liveins: $d6501 502    ; FP32-LABEL: name: f64tou64503    ; FP32: liveins: $d6504    ; FP32-NEXT: {{  $}}505    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6506    ; FP32-NEXT: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp507    ; FP32-NEXT: $d6 = COPY [[COPY]](s64)508    ; FP32-NEXT: JAL &__fixunsdfdi, csr_o32, implicit-def $ra, implicit-def $sp, implicit $d6, implicit-def $v0, implicit-def $v1509    ; FP32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $v0510    ; FP32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $v1511    ; FP32-NEXT: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp512    ; FP32-NEXT: $v0 = COPY [[COPY1]](s32)513    ; FP32-NEXT: $v1 = COPY [[COPY2]](s32)514    ; FP32-NEXT: RetRA implicit $v0, implicit $v1515    ;516    ; FP64-LABEL: name: f64tou64517    ; FP64: liveins: $d6518    ; FP64-NEXT: {{  $}}519    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6520    ; FP64-NEXT: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp521    ; FP64-NEXT: $d12_64 = COPY [[COPY]](s64)522    ; FP64-NEXT: JAL &__fixunsdfdi, csr_o32_fp64, implicit-def $ra, implicit-def $sp, implicit $d12_64, implicit-def $v0, implicit-def $v1523    ; FP64-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $v0524    ; FP64-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $v1525    ; FP64-NEXT: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp526    ; FP64-NEXT: $v0 = COPY [[COPY1]](s32)527    ; FP64-NEXT: $v1 = COPY [[COPY2]](s32)528    ; FP64-NEXT: RetRA implicit $v0, implicit $v1529    %0:_(s64) = COPY $d6530    %1:_(s64) = G_FPTOUI %0(s64)531    %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %1(s64)532    $v0 = COPY %2(s32)533    $v1 = COPY %3(s32)534    RetRA implicit $v0, implicit $v1535 536...537---538name:            f64tou32539alignment:       4540tracksRegLiveness: true541body:             |542  bb.1.entry:543    liveins: $d6544 545    ; FP32-LABEL: name: f64tou32546    ; FP32: liveins: $d6547    ; FP32-NEXT: {{  $}}548    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6549    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)550    ; FP32-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x41E0000000000000551    ; FP32-NEXT: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[COPY]], [[C]]552    ; FP32-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s64)553    ; FP32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648554    ; FP32-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]555    ; FP32-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s64), [[C]]556    ; FP32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]557    ; FP32-NEXT: $v0 = COPY [[SELECT]](s32)558    ; FP32-NEXT: RetRA implicit $v0559    ;560    ; FP64-LABEL: name: f64tou32561    ; FP64: liveins: $d6562    ; FP64-NEXT: {{  $}}563    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6564    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)565    ; FP64-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x41E0000000000000566    ; FP64-NEXT: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[COPY]], [[C]]567    ; FP64-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s64)568    ; FP64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648569    ; FP64-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]570    ; FP64-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s64), [[C]]571    ; FP64-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]572    ; FP64-NEXT: $v0 = COPY [[SELECT]](s32)573    ; FP64-NEXT: RetRA implicit $v0574    %0:_(s64) = COPY $d6575    %1:_(s32) = G_FPTOUI %0(s64)576    $v0 = COPY %1(s32)577    RetRA implicit $v0578 579...580---581name:            f64tou16582alignment:       4583tracksRegLiveness: true584body:             |585  bb.1.entry:586    liveins: $d6587 588    ; FP32-LABEL: name: f64tou16589    ; FP32: liveins: $d6590    ; FP32-NEXT: {{  $}}591    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6592    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)593    ; FP32-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x41E0000000000000594    ; FP32-NEXT: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[COPY]], [[C]]595    ; FP32-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s64)596    ; FP32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648597    ; FP32-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]598    ; FP32-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s64), [[C]]599    ; FP32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]600    ; FP32-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535601    ; FP32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SELECT]], [[C2]]602    ; FP32-NEXT: $v0 = COPY [[AND]](s32)603    ; FP32-NEXT: RetRA implicit $v0604    ;605    ; FP64-LABEL: name: f64tou16606    ; FP64: liveins: $d6607    ; FP64-NEXT: {{  $}}608    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6609    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)610    ; FP64-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x41E0000000000000611    ; FP64-NEXT: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[COPY]], [[C]]612    ; FP64-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s64)613    ; FP64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648614    ; FP64-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]615    ; FP64-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s64), [[C]]616    ; FP64-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]617    ; FP64-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535618    ; FP64-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SELECT]], [[C2]]619    ; FP64-NEXT: $v0 = COPY [[AND]](s32)620    ; FP64-NEXT: RetRA implicit $v0621    %0:_(s64) = COPY $d6622    %1:_(s16) = G_FPTOUI %0(s64)623    %2:_(s32) = G_ZEXT %1(s16)624    $v0 = COPY %2(s32)625    RetRA implicit $v0626 627...628---629name:            f64tou8630alignment:       4631tracksRegLiveness: true632body:             |633  bb.1.entry:634    liveins: $d6635 636    ; FP32-LABEL: name: f64tou8637    ; FP32: liveins: $d6638    ; FP32-NEXT: {{  $}}639    ; FP32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6640    ; FP32-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)641    ; FP32-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x41E0000000000000642    ; FP32-NEXT: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[COPY]], [[C]]643    ; FP32-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s64)644    ; FP32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648645    ; FP32-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]646    ; FP32-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s64), [[C]]647    ; FP32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]648    ; FP32-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255649    ; FP32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SELECT]], [[C2]]650    ; FP32-NEXT: $v0 = COPY [[AND]](s32)651    ; FP32-NEXT: RetRA implicit $v0652    ;653    ; FP64-LABEL: name: f64tou8654    ; FP64: liveins: $d6655    ; FP64-NEXT: {{  $}}656    ; FP64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6657    ; FP64-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)658    ; FP64-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x41E0000000000000659    ; FP64-NEXT: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[COPY]], [[C]]660    ; FP64-NEXT: [[FPTOSI1:%[0-9]+]]:_(s32) = G_FPTOSI [[FSUB]](s64)661    ; FP64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648662    ; FP64-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[FPTOSI1]], [[C1]]663    ; FP64-NEXT: [[FCMP:%[0-9]+]]:_(s32) = G_FCMP floatpred(ult), [[COPY]](s64), [[C]]664    ; FP64-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s32), [[FPTOSI]], [[XOR]]665    ; FP64-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255666    ; FP64-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SELECT]], [[C2]]667    ; FP64-NEXT: $v0 = COPY [[AND]](s32)668    ; FP64-NEXT: RetRA implicit $v0669    %0:_(s64) = COPY $d6670    %1:_(s8) = G_FPTOUI %0(s64)671    %2:_(s32) = G_ZEXT %1(s8)672    $v0 = COPY %2(s32)673    RetRA implicit $v0674 675...676