aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2007-09-28 01:08:20 +0000
committerDale Johannesen <dalej@apple.com>2007-09-28 01:08:20 +0000
commit317096ab3710fda0960be58804e9f80c800340f6 (patch)
tree212f900febeda8dca58c4b5bc7dfa6183aa24b08 /include
parentef0ab932ef3b07016ffb827cd529d4787d7ed12e (diff)
downloadexternal_llvm-317096ab3710fda0960be58804e9f80c800340f6.zip
external_llvm-317096ab3710fda0960be58804e9f80c800340f6.tar.gz
external_llvm-317096ab3710fda0960be58804e9f80c800340f6.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.h6
-rw-r--r--include/llvm/Intrinsics.td10
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.