diff options
author | Dale Johannesen <dalej@apple.com> | 2007-09-28 01:08:20 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2007-09-28 01:08:20 +0000 |
commit | 0c81a52b0e13160103f3da0303f5d23a1551ee26 (patch) | |
tree | 212f900febeda8dca58c4b5bc7dfa6183aa24b08 /include | |
parent | 4c839d0736cfe4ef442a8626cc50fa9c95f51242 (diff) | |
download | external_llvm-0c81a52b0e13160103f3da0303f5d23a1551ee26.zip external_llvm-0c81a52b0e13160103f3da0303f5d23a1551ee26.tar.gz external_llvm-0c81a52b0e13160103f3da0303f5d23a1551ee26.tar.bz2 |
Add sqrt and powi intrinsics for long double.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42423 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/CodeGen/RuntimeLibcalls.h | 6 | ||||
-rw-r--r-- | include/llvm/Intrinsics.td | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/include/llvm/CodeGen/RuntimeLibcalls.h b/include/llvm/CodeGen/RuntimeLibcalls.h index 0b36c6d..80cc33a 100644 --- a/include/llvm/CodeGen/RuntimeLibcalls.h +++ b/include/llvm/CodeGen/RuntimeLibcalls.h @@ -18,7 +18,9 @@ namespace llvm { namespace RTLIB { /// RTLIB::Libcall enum - This enum defines all of the runtime library calls - /// the backend can emit. + /// the backend can emit. "LD" is used for all long double types, since + /// these functions will have the same interface on different targets even + /// though the data is not in the same format. /// enum Libcall { // Integer @@ -56,8 +58,10 @@ namespace RTLIB { NEG_F64, POWI_F32, POWI_F64, + POWI_LD, SQRT_F32, SQRT_F64, + SQRT_LD, SIN_F32, SIN_F64, COS_F32, diff --git a/include/llvm/Intrinsics.td b/include/llvm/Intrinsics.td index 9d3b180..4b1e419 100644 --- a/include/llvm/Intrinsics.td +++ b/include/llvm/Intrinsics.td @@ -76,6 +76,9 @@ def llvm_i32_ty : LLVMType<i32>; def llvm_i64_ty : LLVMType<i64>; def llvm_float_ty : LLVMType<f32>; def llvm_double_ty : LLVMType<f64>; +def llvm_f80_ty : LLVMType<f80>; +def llvm_f128_ty : LLVMType<f128>; +def llvm_ppcf128_ty : LLVMType<ppcf128>; def llvm_ptr_ty : LLVMPointerType<llvm_i8_ty>; // i8* def llvm_ptrptr_ty : LLVMPointerType<llvm_ptr_ty>; // i8** def llvm_empty_ty : LLVMType<OtherVT>; // { } @@ -177,9 +180,16 @@ let Properties = [IntrWriteArgMem] in { let Properties = [IntrNoMem] in { def int_sqrt_f32 : Intrinsic<[llvm_float_ty, llvm_float_ty]>; def int_sqrt_f64 : Intrinsic<[llvm_double_ty, llvm_double_ty]>; + def int_sqrt_f80 : Intrinsic<[llvm_f80_ty, llvm_f80_ty]>; + def int_sqrt_f128 : Intrinsic<[llvm_f128_ty, llvm_f128_ty]>; + def int_sqrt_ppcf128 : Intrinsic<[llvm_ppcf128_ty, llvm_ppcf128_ty]>; def int_powi_f32 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_i32_ty]>; def int_powi_f64 : Intrinsic<[llvm_double_ty, llvm_double_ty, llvm_i32_ty]>; + def int_powi_f80 : Intrinsic<[llvm_f80_ty, llvm_f80_ty, llvm_i32_ty]>; + def int_powi_f128 : Intrinsic<[llvm_f128_ty, llvm_f128_ty, llvm_i32_ty]>; + def int_powi_ppcf128 : Intrinsic<[llvm_ppcf128_ty, llvm_ppcf128_ty, + llvm_i32_ty]>; } // NOTE: these are internal interfaces. |