brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · e7f75cd Raw
160 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 --mattr=-f < %s | FileCheck %s --check-prefix=LA644 5define i32 @fptosi_i32_fp128(fp128 %X) nounwind {6; LA32-LABEL: fptosi_i32_fp128:7; LA32:       # %bb.0:8; LA32-NEXT:    addi.w $sp, $sp, -329; LA32-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill10; LA32-NEXT:    ld.w $a1, $a0, 011; LA32-NEXT:    ld.w $a2, $a0, 412; LA32-NEXT:    ld.w $a3, $a0, 813; LA32-NEXT:    ld.w $a0, $a0, 1214; LA32-NEXT:    st.w $a0, $sp, 2015; LA32-NEXT:    st.w $a3, $sp, 1616; LA32-NEXT:    st.w $a2, $sp, 1217; LA32-NEXT:    addi.w $a0, $sp, 818; LA32-NEXT:    st.w $a1, $sp, 819; LA32-NEXT:    bl __fixtfsi20; LA32-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload21; LA32-NEXT:    addi.w $sp, $sp, 3222; LA32-NEXT:    ret23;24; LA64-LABEL: fptosi_i32_fp128:25; LA64:       # %bb.0:26; LA64-NEXT:    addi.d $sp, $sp, -1627; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill28; LA64-NEXT:    pcaddu18i $ra, %call36(__fixtfsi)29; LA64-NEXT:    jirl $ra, $ra, 030; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload31; LA64-NEXT:    addi.d $sp, $sp, 1632; LA64-NEXT:    ret33  %tmp = fptosi fp128 %X to i3234  ret i32 %tmp35}36 37define i32 @fptosi_i32_double(double %X) nounwind {38; LA32-LABEL: fptosi_i32_double:39; LA32:       # %bb.0:40; LA32-NEXT:    addi.w $sp, $sp, -1641; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill42; LA32-NEXT:    bl __fixdfsi43; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload44; LA32-NEXT:    addi.w $sp, $sp, 1645; LA32-NEXT:    ret46;47; LA64-LABEL: fptosi_i32_double:48; LA64:       # %bb.0:49; LA64-NEXT:    addi.d $sp, $sp, -1650; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill51; LA64-NEXT:    pcaddu18i $ra, %call36(__fixdfsi)52; LA64-NEXT:    jirl $ra, $ra, 053; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload54; LA64-NEXT:    addi.d $sp, $sp, 1655; LA64-NEXT:    ret56  %tmp = fptosi double %X to i3257  ret i32 %tmp58}59 60define i32 @fptosi_i32_float(float %X) nounwind {61; LA32-LABEL: fptosi_i32_float:62; LA32:       # %bb.0:63; LA32-NEXT:    addi.w $sp, $sp, -1664; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill65; LA32-NEXT:    bl __fixsfsi66; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload67; LA32-NEXT:    addi.w $sp, $sp, 1668; LA32-NEXT:    ret69;70; LA64-LABEL: fptosi_i32_float:71; LA64:       # %bb.0:72; LA64-NEXT:    addi.d $sp, $sp, -1673; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill74; LA64-NEXT:    pcaddu18i $ra, %call36(__fixsfsi)75; LA64-NEXT:    jirl $ra, $ra, 076; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload77; LA64-NEXT:    addi.d $sp, $sp, 1678; LA64-NEXT:    ret79  %tmp = fptosi float %X to i3280  ret i32 %tmp81}82 83define i64 @fptosi_i64_fp128(fp128 %X) nounwind {84; LA32-LABEL: fptosi_i64_fp128:85; LA32:       # %bb.0:86; LA32-NEXT:    addi.w $sp, $sp, -3287; LA32-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill88; LA32-NEXT:    ld.w $a1, $a0, 089; LA32-NEXT:    ld.w $a2, $a0, 490; LA32-NEXT:    ld.w $a3, $a0, 891; LA32-NEXT:    ld.w $a0, $a0, 1292; LA32-NEXT:    st.w $a0, $sp, 1293; LA32-NEXT:    st.w $a3, $sp, 894; LA32-NEXT:    st.w $a2, $sp, 495; LA32-NEXT:    addi.w $a0, $sp, 096; LA32-NEXT:    st.w $a1, $sp, 097; LA32-NEXT:    bl __fixtfdi98; LA32-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload99; LA32-NEXT:    addi.w $sp, $sp, 32100; LA32-NEXT:    ret101;102; LA64-LABEL: fptosi_i64_fp128:103; LA64:       # %bb.0:104; LA64-NEXT:    addi.d $sp, $sp, -16105; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill106; LA64-NEXT:    pcaddu18i $ra, %call36(__fixtfdi)107; LA64-NEXT:    jirl $ra, $ra, 0108; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload109; LA64-NEXT:    addi.d $sp, $sp, 16110; LA64-NEXT:    ret111  %tmp = fptosi fp128 %X to i64112  ret i64 %tmp113}114 115define i64 @fptosi_i64_double(double %X) nounwind {116; LA32-LABEL: fptosi_i64_double:117; LA32:       # %bb.0:118; LA32-NEXT:    addi.w $sp, $sp, -16119; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill120; LA32-NEXT:    bl __fixdfdi121; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload122; LA32-NEXT:    addi.w $sp, $sp, 16123; LA32-NEXT:    ret124;125; LA64-LABEL: fptosi_i64_double:126; LA64:       # %bb.0:127; LA64-NEXT:    addi.d $sp, $sp, -16128; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill129; LA64-NEXT:    pcaddu18i $ra, %call36(__fixdfdi)130; LA64-NEXT:    jirl $ra, $ra, 0131; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload132; LA64-NEXT:    addi.d $sp, $sp, 16133; LA64-NEXT:    ret134  %tmp = fptosi double %X to i64135  ret i64 %tmp136}137 138define i64 @fptosi_i64_float(float %X) nounwind {139; LA32-LABEL: fptosi_i64_float:140; LA32:       # %bb.0:141; LA32-NEXT:    addi.w $sp, $sp, -16142; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill143; LA32-NEXT:    bl __fixsfdi144; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload145; LA32-NEXT:    addi.w $sp, $sp, 16146; LA32-NEXT:    ret147;148; LA64-LABEL: fptosi_i64_float:149; LA64:       # %bb.0:150; LA64-NEXT:    addi.d $sp, $sp, -16151; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill152; LA64-NEXT:    pcaddu18i $ra, %call36(__fixsfdi)153; LA64-NEXT:    jirl $ra, $ra, 0154; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload155; LA64-NEXT:    addi.d $sp, $sp, 16156; LA64-NEXT:    ret157  %tmp = fptosi float %X to i64158  ret i64 %tmp159}160