summaryrefslogtreecommitdiff
path: root/gcc/builtins.def
diff options
context:
space:
mode:
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>2002-08-03 23:21:31 +0000
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>2002-08-03 23:21:31 +0000
commit42721db07c36e472f5eb5f9f356e55be2fb61f38 (patch)
tree43f230abfa5b65f3cb384df85d588543c32be03e /gcc/builtins.def
parente7971c005e1ef3c054f3e10f96642bca896411bf (diff)
downloadgcc-42721db07c36e472f5eb5f9f356e55be2fb61f38.tar.gz
* builtins.def: Define new builtin functions exp, expf, expl,
log, logf and logl (and their __builtin_* variants). * optabs.h (enum optab_index): Add new OTI_exp and OTI_log. Define exp_optab and log_optab. * optabs.c (init_optans): Initialize exp_optab and log_optab. * genopinit.c (optabs): Implement exp_optab and log_optab using exp?f2 and log?f2 patterns. * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_EXP* and BUILT_IN_LOG* using exp_optab and log_optab respectively. (expand_builtin): Ignore the new builtins (and all cos and sin variants) when not optimizing. Expand new builtins via expand_builtin_mathfn when flag_unsafe_math_optimizations. * doc/extend.texi: Document new exp and log builtins. * doc/md.texi: Document new exp?f2 and log?f2 patterns (and previously undocumented cos?f2 and sin?f2 patterns). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56010 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/builtins.def')
-rw-r--r--gcc/builtins.def42
1 files changed, 42 insertions, 0 deletions
diff --git a/gcc/builtins.def b/gcc/builtins.def
index 7be8fe14eb6..978b4a70d55 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -324,6 +324,20 @@ DEF_LIB_BUILTIN(BUILT_IN_COS,
BT_FN_DOUBLE_DOUBLE,
flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
: ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN(BUILT_IN_EXP,
+ "__builtin_exp",
+ BT_FN_DOUBLE_DOUBLE,
+ flag_errno_math ? ATTR_NOTHROW_LIST
+ : (flag_unsafe_math_optimizations
+ ? ATTR_CONST_NOTHROW_LIST
+ : ATTR_PURE_NOTHROW_LIST))
+DEF_LIB_BUILTIN(BUILT_IN_LOG,
+ "__builtin_log",
+ BT_FN_DOUBLE_DOUBLE,
+ flag_errno_math ? ATTR_NOTHROW_LIST
+ : (flag_unsafe_math_optimizations
+ ? ATTR_CONST_NOTHROW_LIST
+ : ATTR_PURE_NOTHROW_LIST))
DEF_LIB_BUILTIN(BUILT_IN_SQRTF,
"__builtin_sqrtf",
BT_FN_FLOAT_FLOAT,
@@ -341,6 +355,20 @@ DEF_LIB_BUILTIN(BUILT_IN_COSF,
BT_FN_FLOAT_FLOAT,
flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
: ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN(BUILT_IN_EXPF,
+ "__builtin_expf",
+ BT_FN_FLOAT_FLOAT,
+ flag_errno_math ? ATTR_NOTHROW_LIST
+ : (flag_unsafe_math_optimizations
+ ? ATTR_CONST_NOTHROW_LIST
+ : ATTR_PURE_NOTHROW_LIST))
+DEF_LIB_BUILTIN(BUILT_IN_LOGF,
+ "__builtin_logf",
+ BT_FN_FLOAT_FLOAT,
+ flag_errno_math ? ATTR_NOTHROW_LIST
+ : (flag_unsafe_math_optimizations
+ ? ATTR_CONST_NOTHROW_LIST
+ : ATTR_PURE_NOTHROW_LIST))
DEF_LIB_BUILTIN(BUILT_IN_SQRTL,
"__builtin_sqrtl",
BT_FN_LONG_DOUBLE_LONG_DOUBLE,
@@ -358,6 +386,20 @@ DEF_LIB_BUILTIN(BUILT_IN_COSL,
BT_FN_LONG_DOUBLE_LONG_DOUBLE,
flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
: ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN(BUILT_IN_EXPL,
+ "__builtin_expl",
+ BT_FN_LONG_DOUBLE_LONG_DOUBLE,
+ flag_errno_math ? ATTR_NOTHROW_LIST
+ : (flag_unsafe_math_optimizations
+ ? ATTR_CONST_NOTHROW_LIST
+ : ATTR_PURE_NOTHROW_LIST))
+DEF_LIB_BUILTIN(BUILT_IN_LOGL,
+ "__builtin_logl",
+ BT_FN_LONG_DOUBLE_LONG_DOUBLE,
+ flag_errno_math ? ATTR_NOTHROW_LIST
+ : (flag_unsafe_math_optimizations
+ ? ATTR_CONST_NOTHROW_LIST
+ : ATTR_PURE_NOTHROW_LIST))
DEF_UNUSED_BUILTIN(BUILT_IN_GETEXP)
DEF_UNUSED_BUILTIN(BUILT_IN_GETMAN)