xref: /llvm-project/llvm/test/CodeGen/LoongArch/libcall-extend.ll (revision bf1d4172335689f62e4f7368446f0026c595330b)
196d2db4bSwanglei; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
296d2db4bSwanglei; RUN: llc --mtriple=loongarch64 --target-abi=lp64s --mattr=-f < %s | FileCheck %s
396d2db4bSwanglei
496d2db4bSwangleidefine signext i32 @convert_float_to_i32(i32 %tmp, float %a) nounwind {
596d2db4bSwanglei; CHECK-LABEL: convert_float_to_i32:
696d2db4bSwanglei; CHECK:       # %bb.0:
796d2db4bSwanglei; CHECK-NEXT:    addi.d $sp, $sp, -16
896d2db4bSwanglei; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
9*bf1d4172Swanglei; CHECK-NEXT:    move $a0, $a1
1096d2db4bSwanglei; CHECK-NEXT:    bl %plt(__fixsfsi)
1196d2db4bSwanglei; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
1296d2db4bSwanglei; CHECK-NEXT:    addi.d $sp, $sp, 16
1396d2db4bSwanglei; CHECK-NEXT:    ret
1496d2db4bSwanglei  %1 = fptosi float %a to i32
1596d2db4bSwanglei  ret i32 %1
1696d2db4bSwanglei}
1796d2db4bSwanglei
1896d2db4bSwangleidefine signext i32 @convert_double_to_i32(i32 %tmp, double %a) nounwind {
1996d2db4bSwanglei; CHECK-LABEL: convert_double_to_i32:
2096d2db4bSwanglei; CHECK:       # %bb.0:
2196d2db4bSwanglei; CHECK-NEXT:    addi.d $sp, $sp, -16
2296d2db4bSwanglei; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
2396d2db4bSwanglei; CHECK-NEXT:    move $a0, $a1
2496d2db4bSwanglei; CHECK-NEXT:    bl %plt(__fixdfsi)
2596d2db4bSwanglei; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
2696d2db4bSwanglei; CHECK-NEXT:    addi.d $sp, $sp, 16
2796d2db4bSwanglei; CHECK-NEXT:    ret
2896d2db4bSwanglei  %1 = fptosi double %a to i32
2996d2db4bSwanglei  ret i32 %1
3096d2db4bSwanglei}
3196d2db4bSwanglei
3296d2db4bSwangleidefine signext i32 @convert_fp128_to_i32(i32 %tmp, fp128 %a) nounwind {
3396d2db4bSwanglei; CHECK-LABEL: convert_fp128_to_i32:
3496d2db4bSwanglei; CHECK:       # %bb.0:
3596d2db4bSwanglei; CHECK-NEXT:    addi.d $sp, $sp, -16
3696d2db4bSwanglei; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
3796d2db4bSwanglei; CHECK-NEXT:    move $a0, $a1
3896d2db4bSwanglei; CHECK-NEXT:    move $a1, $a2
3996d2db4bSwanglei; CHECK-NEXT:    bl %plt(__fixtfsi)
4096d2db4bSwanglei; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
4196d2db4bSwanglei; CHECK-NEXT:    addi.d $sp, $sp, 16
4296d2db4bSwanglei; CHECK-NEXT:    ret
4396d2db4bSwanglei  %1 = fptosi fp128 %a to i32
4496d2db4bSwanglei  ret i32 %1
4596d2db4bSwanglei}
46