mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Added required libcalls for PIC16 (mostly floating points to integer casting operations).
llvm-svn: 73480
This commit is contained in:
parent
058f158de0
commit
00e60c0154
@ -153,6 +153,8 @@ namespace RTLIB {
|
||||
FPROUND_PPCF128_F32,
|
||||
FPROUND_F80_F64,
|
||||
FPROUND_PPCF128_F64,
|
||||
FPTOSINT_F32_I8,
|
||||
FPTOSINT_F32_I16,
|
||||
FPTOSINT_F32_I32,
|
||||
FPTOSINT_F32_I64,
|
||||
FPTOSINT_F32_I128,
|
||||
@ -165,6 +167,8 @@ namespace RTLIB {
|
||||
FPTOSINT_PPCF128_I32,
|
||||
FPTOSINT_PPCF128_I64,
|
||||
FPTOSINT_PPCF128_I128,
|
||||
FPTOUINT_F32_I8,
|
||||
FPTOUINT_F32_I16,
|
||||
FPTOUINT_F32_I32,
|
||||
FPTOUINT_F32_I64,
|
||||
FPTOUINT_F32_I128,
|
||||
@ -177,6 +181,8 @@ namespace RTLIB {
|
||||
FPTOUINT_PPCF128_I32,
|
||||
FPTOUINT_PPCF128_I64,
|
||||
FPTOUINT_PPCF128_I128,
|
||||
SINTTOFP_I32_F8,
|
||||
SINTTOFP_I32_F16,
|
||||
SINTTOFP_I32_F32,
|
||||
SINTTOFP_I32_F64,
|
||||
SINTTOFP_I32_F80,
|
||||
@ -189,6 +195,8 @@ namespace RTLIB {
|
||||
SINTTOFP_I128_F64,
|
||||
SINTTOFP_I128_F80,
|
||||
SINTTOFP_I128_PPCF128,
|
||||
UINTTOFP_I32_F8,
|
||||
UINTTOFP_I32_F16,
|
||||
UINTTOFP_I32_F32,
|
||||
UINTTOFP_I32_F64,
|
||||
UINTTOFP_I32_F80,
|
||||
|
@ -171,6 +171,8 @@ static void InitLibcallNames(const char **Names) {
|
||||
Names[RTLIB::FPROUND_PPCF128_F32] = "__trunctfsf2";
|
||||
Names[RTLIB::FPROUND_F80_F64] = "__truncxfdf2";
|
||||
Names[RTLIB::FPROUND_PPCF128_F64] = "__trunctfdf2";
|
||||
Names[RTLIB::FPTOSINT_F32_I8] = "__fixsfsi";
|
||||
Names[RTLIB::FPTOSINT_F32_I16] = "__fixsfsi";
|
||||
Names[RTLIB::FPTOSINT_F32_I32] = "__fixsfsi";
|
||||
Names[RTLIB::FPTOSINT_F32_I64] = "__fixsfdi";
|
||||
Names[RTLIB::FPTOSINT_F32_I128] = "__fixsfti";
|
||||
@ -183,6 +185,8 @@ static void InitLibcallNames(const char **Names) {
|
||||
Names[RTLIB::FPTOSINT_PPCF128_I32] = "__fixtfsi";
|
||||
Names[RTLIB::FPTOSINT_PPCF128_I64] = "__fixtfdi";
|
||||
Names[RTLIB::FPTOSINT_PPCF128_I128] = "__fixtfti";
|
||||
Names[RTLIB::FPTOUINT_F32_I8] = "__fixunssfsi";
|
||||
Names[RTLIB::FPTOUINT_F32_I16] = "__fixunssfsi";
|
||||
Names[RTLIB::FPTOUINT_F32_I32] = "__fixunssfsi";
|
||||
Names[RTLIB::FPTOUINT_F32_I64] = "__fixunssfdi";
|
||||
Names[RTLIB::FPTOUINT_F32_I128] = "__fixunssfti";
|
||||
@ -195,6 +199,8 @@ static void InitLibcallNames(const char **Names) {
|
||||
Names[RTLIB::FPTOUINT_PPCF128_I32] = "__fixunstfsi";
|
||||
Names[RTLIB::FPTOUINT_PPCF128_I64] = "__fixunstfdi";
|
||||
Names[RTLIB::FPTOUINT_PPCF128_I128] = "__fixunstfti";
|
||||
Names[RTLIB::SINTTOFP_I32_F8] = "__floatsisf";
|
||||
Names[RTLIB::SINTTOFP_I32_F16] = "__floatsisf";
|
||||
Names[RTLIB::SINTTOFP_I32_F32] = "__floatsisf";
|
||||
Names[RTLIB::SINTTOFP_I32_F64] = "__floatsidf";
|
||||
Names[RTLIB::SINTTOFP_I32_F80] = "__floatsixf";
|
||||
@ -207,6 +213,8 @@ static void InitLibcallNames(const char **Names) {
|
||||
Names[RTLIB::SINTTOFP_I128_F64] = "__floattidf";
|
||||
Names[RTLIB::SINTTOFP_I128_F80] = "__floattixf";
|
||||
Names[RTLIB::SINTTOFP_I128_PPCF128] = "__floattitf";
|
||||
Names[RTLIB::UINTTOFP_I32_F8] = "__floatunsisf";
|
||||
Names[RTLIB::UINTTOFP_I32_F16] = "__floatunsisf";
|
||||
Names[RTLIB::UINTTOFP_I32_F32] = "__floatunsisf";
|
||||
Names[RTLIB::UINTTOFP_I32_F64] = "__floatunsidf";
|
||||
Names[RTLIB::UINTTOFP_I32_F80] = "__floatunsixf";
|
||||
@ -271,6 +279,10 @@ RTLIB::Libcall RTLIB::getFPROUND(MVT OpVT, MVT RetVT) {
|
||||
/// UNKNOWN_LIBCALL if there is none.
|
||||
RTLIB::Libcall RTLIB::getFPTOSINT(MVT OpVT, MVT RetVT) {
|
||||
if (OpVT == MVT::f32) {
|
||||
if (RetVT == MVT::i8)
|
||||
return FPTOSINT_F32_I8;
|
||||
if (RetVT == MVT::i16)
|
||||
return FPTOSINT_F32_I16;
|
||||
if (RetVT == MVT::i32)
|
||||
return FPTOSINT_F32_I32;
|
||||
if (RetVT == MVT::i64)
|
||||
@ -306,6 +318,10 @@ RTLIB::Libcall RTLIB::getFPTOSINT(MVT OpVT, MVT RetVT) {
|
||||
/// UNKNOWN_LIBCALL if there is none.
|
||||
RTLIB::Libcall RTLIB::getFPTOUINT(MVT OpVT, MVT RetVT) {
|
||||
if (OpVT == MVT::f32) {
|
||||
if (RetVT == MVT::i8)
|
||||
return FPTOUINT_F32_I8;
|
||||
if (RetVT == MVT::i16)
|
||||
return FPTOUINT_F32_I16;
|
||||
if (RetVT == MVT::i32)
|
||||
return FPTOUINT_F32_I32;
|
||||
if (RetVT == MVT::i64)
|
||||
|
Loading…
Reference in New Issue
Block a user